mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
Fix text relocations in linux-user targets
There is a link hack in linux-user which produces an executable that looks like PIE, but always has text relocations since all object files isn't position-independent (compiled without -fpic/-fpie). Dynamic loader has to do more work to load a binary with text relocations. The best way to keep this functionality is to build a true PIE without text relocations. Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
5791f45b58
commit
df70204db5
2 changed files with 1 additions and 37 deletions
12
configure
vendored
12
configure
vendored
|
@ -2376,16 +2376,6 @@ fi
|
|||
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
|
||||
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
|
||||
case "$ARCH" in
|
||||
i386)
|
||||
if test "$gprof" = "yes" -o "$static" = "yes" ; then
|
||||
ldflags="$linker_script $ldflags"
|
||||
else
|
||||
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
|
||||
# that the kernel ELF loader considers as an executable. I think this
|
||||
# is the simplest way to make it self virtualizable!
|
||||
ldflags="-Wl,-shared $ldflags"
|
||||
fi
|
||||
;;
|
||||
sparc)
|
||||
# -static is used to avoid g1/g3 usage by the dynamic linker
|
||||
ldflags="$linker_script -static $ldflags"
|
||||
|
@ -2393,7 +2383,7 @@ if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
|
|||
ia64)
|
||||
ldflags="-Wl,-G0 $linker_script -static $ldflags"
|
||||
;;
|
||||
x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
|
||||
i386|x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
|
||||
ldflags="$linker_script $ldflags"
|
||||
;;
|
||||
esac
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue