shrinkers: wake_waiters should be called when target is zero

__do_reclaim calls byte_until_normal() to get the target (amount
of memory to be freed), however, when there is no pressure in the
system, zero will be returned.

Going further, either ballooning or registered shrinkers will be
used to aliviate pressure, respectively.

On the latter case, _shrinker_loop will be called to go through
all the registered shrinkers asking each of them to release memory.
The problem is that our code currently assumes target being greater
than zero to wake the waiters after memory has been released, and
that will eventually block everything.

My solution is to call _oom_blocked.wake_waiters() even when target
is zero given that __do_reclaim wakes up even when there is no
memory pressure. Change was tested on memory-hog, which is a good
project to test and play with the shrinker infrastructure.
For those interested, follow: https://github.com/dmarti/memory-hog/

Reviewed-by: Glauber Costa <glommer@cloudius-systems.com>
Reported-by: Don Marti <dmarti@cloudius-systems.com>
Signed-off-by: Raphael S. Carvalho <raphaelsc@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
XXX x86 check

Signed-off-by: Claudio Fontana <claudio.fontana@huawei.com>
elf: move arch-specific object rela relocs to arch

Signed-off-by: Claudio Fontana <claudio.fontana@huawei.com>
elf: move arch-specific object jump slot relocs to arch

Signed-off-by: Claudio Fontana <claudio.fontana@huawei.com>
elf: move arch-specific initial dynamic segment relocs

move the initial arch-specific relocations done in get_init
into the arch-specific directories.

Signed-off-by: Claudio Fontana <claudio.fontana@huawei.com>