rules.mak: Also try -r to build modules
Building qemu fails in distributions where gcc enables PIE by default (e.g. Debian unstable) with: /usr/bin/ld: -r and -pie may not be used together You have to use -r instead of -Wl,-r to avoid gcc passing -pie to the linker when PIE is enabled and a relocatable object is passed. However, clang does not know about -r, so try -Wl,-r first. [This is a fix for commit c96f0ee6a67ca6277366e78ce5d84d5c20dd596f ("rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default") which mostly worked but broke the ./configure --enable-modules build with clang. --Stefan] Reported-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 20161129153720.29747-1-pbonzini@redhat.com Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
51cd8ef8ad
commit
7ecf44a579
10
configure
vendored
10
configure
vendored
@ -4723,8 +4723,14 @@ EOF
|
||||
if ! compile_object ""; then
|
||||
error_exit "Failed to compile object file for LD_REL_FLAGS test"
|
||||
fi
|
||||
if do_cc -nostdlib -Wl,-r -Wl,--no-relax -o $TMPMO $TMPO; then
|
||||
LD_REL_FLAGS="-Wl,--no-relax"
|
||||
for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
|
||||
if do_cc -nostdlib $i -o $TMPMO $TMPO; then
|
||||
LD_REL_FLAGS=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
|
||||
feature_not_found "modules" "Cannot find how to build relocatable objects"
|
||||
fi
|
||||
|
||||
##########################################
|
||||
|
@ -93,7 +93,7 @@ module-common.o: CFLAGS += $(DSO_OBJ_CFLAGS)
|
||||
$(if $(findstring /,$@),$(call quiet-command,cp $@ $(subst /,-,$@),"CP","$(subst /,-,$@)"))
|
||||
|
||||
|
||||
LD_REL := $(CC) -nostdlib -r $(LD_REL_FLAGS)
|
||||
LD_REL := $(CC) -nostdlib $(LD_REL_FLAGS)
|
||||
|
||||
%.mo:
|
||||
$(call quiet-command,$(LD_REL) -o $@ $^,"LD","$(TARGET_DIR)$@")
|
||||
|
Loading…
x
Reference in New Issue
Block a user