On 06/18/2013 07:29 PM, Ed Maste wrote: > if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then > + textseg_addr= > case "$ARCH" in > - alpha | s390x | aarch64) > - # The default placement of the application is fine. > + arm | hppa | i386 | ia64 | m68k | ppc | ppc64 | s390 | sparc | sparc64 | > x86_64) > + default_textseg_addr=0x400000 > + textseg_addr=0x60000000 > ;; > - *) > - ldflags="$linker_script $ldflags" > + mips) > + default_textseg_addr=0x120000000 > + textseg_addr=0x400000
Correct defaults, from current binutils sources: arm: 0x8000 hppa: 0x10000 i386: 0x08048000 ia64: 0x4000000000000000 m68k: 0x80000000 mips: 0x0400000 ppc: 0x10000000 (linux), 0x01800000 (other) ppc64: 0x10000000 s390: 0x00400000 s390x: 0x80000000 sparc: 0x100000 sparc64: 0x100000000 (solaris), 0x100000 (other) x86_64: 0x400000 I can't imagine that the defaults have changed significantly from previous binutils releases. So... what you've got is correct for x86_64 only, which means that the sed won't actually be effective. Given the large variance in the true default, I wonder if we shouldn't ignore it entirely. I wonder if we can't edit more like this: s/[.] = .* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/ I note that the current mips.ld file, from whence you took your "new" address, is the same as the real default. I.e. no movement. I suspect that we can actually move the binary to 0x60000000 with the rest of the targets. Failing that, we should move mips to the "don't change" category. I also suggest that ia64 be moved to the "don't change" category. It's default text address is 0x4000000000000000, which is as far out of the way of the guest address space as we can get. r~