[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

changed behaviour of _end symbol



Package: binutils
Version: 2.23.52.20130612-1
Severity: important
User: debian-bsd@lists.debian.org
Usertags: kfreebsd

Hi,

compared to binutils 2.22-8, there is a significant change of
_end symbol behaviour.


glibc built by binutils 2.22-8:

readelf -a 6/lib/x86_64-kfreebsd-gnu/libc.so.0.1 | grep _end
000000352fa8  03ee00000006 R_X86_64_GLOB_DAT 0000000000358e28 _end + 0
000000354ab8  03ee00000001 R_X86_64_64       0000000000358e28 _end + 0
  1006: 0000000000358e28     0 NOTYPE  GLOBAL DEFAULT  ABS _end@@GLIBC_PRIVATE


glibc built by binutils binutils_2.23.52.20130612-1
readelf -a 7/lib/x86_64-kfreebsd-gnu/libc.so.0.1 | grep _end
000000352fb8  03ee00000006 R_X86_64_GLOB_DAT 0000000000358e08 _end + 0
000000354ab8  03ee00000001 R_X86_64_64       0000000000358e08 _end + 0
  1006: 0000000000358e08     0 NOTYPE  GLOBAL DEFAULT   33 _end@@GLIBC_PRIVATE


The _end symbol used to resolve to the end of main binary.
It is used internally as initial brk value.
The FreeBSD kernel does not return new brk value,
only whether brk() syscall succeed or not.

As a result of this changed behaviour,
brk() and sbrk() fails everytime for kfreebsd-*.

I do not know, whether this binutils change is intentional
or how to workaround it.

Petr



Reply to: