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 c96f0ee6a6
("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…
Reference in New Issue
Block a user