Skip to contentSkip to conversation

Need to do a full rebuild if you are on Linux x86 host

FYI Anthony Liguori 4 participants 4 messages Nov 22, 2011 KVM

lore
Share & tools
lore
#0 lore raw

Due to this commit:

commit 40d6444e91c6ab17e5e8ab01d4eece90cbc4afed

Author: Avi Kivity <[email protected]>
Date:   Tue Nov 15 20:12:17 2011 +0200

configure: build position independent executables on x86-Linux hosts

PIE binaries cannot be linked with non-PIE binaries and make is not smart enough to rebuild when the CFLAGS have changed.

Regards,

Anthony Liguori

#1 lore raw
Quoted 10 lines · Anthony Liguori

Due to this commit:

commit 40d6444e91c6ab17e5e8ab01d4eece90cbc4afed

Author: Avi Kivity <[email protected]>
Date:   Tue Nov 15 20:12:17 2011 +0200

configure: build position independent executables on x86-Linux hosts

PIE binaries cannot be linked with non-PIE binaries and make is not smart enough to rebuild when the CFLAGS have changed.

Breaks build on RHEL-5 and probably also other not-so-recent linux distros.

[ ... ]
CC i386-softmmu/exec.o
[ ... ]
LINK i386-softmmu/qemu-system-i386
/usr/bin/ld: exec.o: relocation R_X86_64_TPOFF32 against `tls__cpu_single_env' can not be used when making a shared object; recompile with -fPIC
exec.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [qemu-system-i386] Error 1
make: *** [subdir-i386-softmmu] Error 2

cheers,
Gerd

PS: for those with ipv6 connectivity the full log is available at
http://spunk.home.kraxel.org/bb/builders/rhel5-default/builds/98/steps/compile/logs/stdio

maintainer
#2 lore raw
Quoted 14 lines · Gerd Hoffmann
Quoted 10 lines · Anthony Liguori

Due to this commit:

commit 40d6444e91c6ab17e5e8ab01d4eece90cbc4afed

Author: Avi Kivity<[email protected]>
Date:   Tue Nov 15 20:12:17 2011 +0200

configure: build position independent executables on x86-Linux hosts

PIE binaries cannot be linked with non-PIE binaries and make is not smart enough to rebuild when the CFLAGS have changed.

Breaks build on RHEL-5 and probably also other not-so-recent linux distros.

Quoted 11 lines

[ ... ]
CC i386-softmmu/exec.o
[ ... ]
LINK i386-softmmu/qemu-system-i386
/usr/bin/ld: exec.o: relocation R_X86_64_TPOFF32 against `tls__cpu_single_env' can not be used when making a shared object; recompile with -fPIC
exec.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [qemu-system-i386] Error 1
make: *** [subdir-i386-softmmu] Error 2

It can be worked around by replacing "-fpie" with "-fpic" or (to avoid a rather bad performance degradation) "-fpic -ftls-model=initial-exec" but it's a bug in the linker and it should be fixed in RHEL:

http://sourceware.org/bugzilla/show_bug.cgi?id=10434 (upstream BZ)
https://bugzilla.redhat.com/show_bug.cgi?id=755872 (RHEL BZ)

Paolo

#3 lore raw
Quoted 29 lines · Paolo Bonzini
Quoted 16 lines · Gerd Hoffmann
Quoted 11 lines · Anthony Liguori

Due to this commit:

commit 40d6444e91c6ab17e5e8ab01d4eece90cbc4afed

Author: Avi Kivity<[email protected]>
Date:   Tue Nov 15 20:12:17 2011 +0200

configure: build position independent executables on x86-Linux
hosts

PIE binaries cannot be linked with non-PIE binaries and make is not smart enough to rebuild when the CFLAGS have changed.

Breaks build on RHEL-5 and probably also other not-so-recent linux distros.

Quoted 11 lines

[ ... ]
CC i386-softmmu/exec.o
[ ... ]
LINK i386-softmmu/qemu-system-i386
/usr/bin/ld: exec.o: relocation R_X86_64_TPOFF32 against `tls__cpu_single_env' can not be used when making a shared object; recompile with -fPIC
exec.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[1]: *** [qemu-system-i386] Error 1
make: *** [subdir-i386-softmmu] Error 2

Quoted 6 lines

It can be worked around by replacing "-fpie" with "-fpic" or (to avoid a rather bad performance degradation) "-fpic -ftls-model=initial-exec" but it's a bug in the linker and it should be fixed in RHEL:

http://sourceware.org/bugzilla/show_bug.cgi?id=10434 (upstream BZ)
https://bugzilla.redhat.com/show_bug.cgi?id=755872 (RHEL BZ)

I'll extend the configure build test to include a tls variable. If anyone's interested in tweaking it for older distros, that's for 1.1.

Signature · 1 line
error compiling committee.c: too many arguments to function