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
					
				| 
						 | 
					@ -4723,8 +4723,14 @@ EOF
 | 
				
			||||||
if ! compile_object ""; then
 | 
					if ! compile_object ""; then
 | 
				
			||||||
  error_exit "Failed to compile object file for LD_REL_FLAGS test"
 | 
					  error_exit "Failed to compile object file for LD_REL_FLAGS test"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
if do_cc -nostdlib -Wl,-r -Wl,--no-relax -o $TMPMO $TMPO; then
 | 
					for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
 | 
				
			||||||
  LD_REL_FLAGS="-Wl,--no-relax"
 | 
					  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
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##########################################
 | 
					##########################################
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -93,7 +93,7 @@ module-common.o: CFLAGS += $(DSO_OBJ_CFLAGS)
 | 
				
			||||||
	$(if $(findstring /,$@),$(call quiet-command,cp $@ $(subst /,-,$@),"CP","$(subst /,-,$@)"))
 | 
						$(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:
 | 
					%.mo:
 | 
				
			||||||
	$(call quiet-command,$(LD_REL) -o $@ $^,"LD","$(TARGET_DIR)$@")
 | 
						$(call quiet-command,$(LD_REL) -o $@ $^,"LD","$(TARGET_DIR)$@")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue