Subject: Re: bug#24892: {s, }brk removed from FreeBSD 11.x and later, arm64 architecture

From: Paul Eggert <[email-masked]>
Date: Thu, 10 Nov 2016 08:23:40 -0800

On 11/10/2016 01:52 AM, Andreas Schwab wrote:
>> I'm curious about what the difference actually is,
> 17851608 bytes.

Thanks, and now I'm curious about where that difference comes from. I 
assume that unexelf.c code like this:

   #ifdef HAVE_SBRK
     new_break = sbrk (0);
   #else
     new_break = (byte *) old_bss_addr + old_bss_size + 17851608;
   #endif

would not be a good idea, even if it happens to work on this particular 
ARM64 build, as the number 17851608 must be specific to the platform 
and/or the build. (The number is 0 on x86-64, for example.) But how can 
I compute the number?

Would it work if we copied the old sbrk.S from the ARM64 C library, 
assemble and linked that, and then just call sbrk? (I don't have easy 
access to this platform so I can't try tricks like this myself.)