From 720480934ab9107714f1ffc29222dfb5d3bc5b1d Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 26 Jun 2020 16:06:49 -0300 Subject: linux: Consolidate brk implementation It removes all the arch-specific assembly implementation. The outliers are alpha, where its kernel ABI explict return -ENOMEM in case of failure; and i686, where it can't use "call *%gs:SYSINFO_OFFSET" during statup in static PIE. Also some ABIs exports an additional ___brk_addr symbol and to handle it an internal HAVE_INTERNAL_BRK_ADDR_SYMBOL is added. Checked on x86_64-linux-gnu, i686-linux-gnu, adn with builsd for the affected ABIs. Reviewed-by: Tulio Magno Quites Machado Filho --- sysdeps/unix/sysv/linux/i386/brk.c | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) (limited to 'sysdeps/unix/sysv/linux/i386/brk.c') diff --git a/sysdeps/unix/sysv/linux/i386/brk.c b/sysdeps/unix/sysv/linux/i386/brk.c index 021b6d37a0..8d7b7d42cc 100644 --- a/sysdeps/unix/sysv/linux/i386/brk.c +++ b/sysdeps/unix/sysv/linux/i386/brk.c @@ -21,25 +21,4 @@ # define I386_USE_SYSENTER 0 #endif -#include -#include -#include - -/* This must be initialized data because commons can't have aliases. */ -void *__curbrk = 0; - -/* Old braindamage in GCC's crtstuff.c requires this symbol in an attempt - to work around different old braindamage in the old Linux ELF dynamic - linker. */ -weak_alias (__curbrk, ___brk_addr) - -int -__brk (void *addr) -{ - void *newbrk = (void *) INTERNAL_SYSCALL_CALL (brk, addr); - __curbrk = newbrk; - if (newbrk < addr) - return INLINE_SYSCALL_ERROR_RETURN_VALUE (ENOMEM); - return 0; -} -weak_alias (__brk, brk) +#include -- cgit 1.4.1