|
From: | Paul Eggert |
Subject: | bug#24892: {s, }brk removed from FreeBSD 11.x and later, arm64 architecture |
Date: | Thu, 10 Nov 2016 08:23:40 -0800 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 |
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; #endifwould 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.)
[Prev in Thread] | Current Thread | [Next in Thread] |