[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [XTF PATCH] build: disable PIE during linking if necessary
On 01/02/17 16:21, Wei Liu wrote: > Starting from ee3e265688, $(CC) is used for linking. That means all > default $(CC) flags coming from distro takes effect. > > On Debian Stretch, gcc contains -pie by default, which makes the final > object fail to link. We need to explicitly disable PIE when linking. > Since not all versions of gcc support -no-pie, test its availability > before adding. > > Example error message: > > /usr/bin/ld: /local/work/xtf.git/arch/x86/boot/head_pv64.o: relocation > R_X86_64_32S against symbol `start_info' can not be used when making a shared > object; > recompile with -fPIC > /usr/bin/ld: /local/work/xtf.git/arch/x86/entry_64-pv64.o: relocation > R_X86_64_32S against `.text' can not be used when making a shared object; > recompile with > -fPIC > /usr/bin/ld: final link failed: Nonrepresentable section on output > collect2: error: ld returned 1 exit status > > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> LGTM. Any objection if I s/DISABLE_PIE_LDFLAGS/COMMON_LDFLAGS/ on commit? I don't think the name needs to be that specific. ~Andrew > --- > build/common.mk | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/build/common.mk b/build/common.mk > index 7c4870e..8e08c7e 100644 > --- a/build/common.mk > +++ b/build/common.mk > @@ -50,6 +50,15 @@ obj-perarch := > obj-perenv := > include $(ROOT)/build/files.mk > > + > +cc-option = $(shell if [ -z "`echo 'int p=1;' | $(CC) $(1) -S -o /dev/null > -x c - 2>&1`" ]; \ > + then echo y; else echo n; fi) > + > +# Disable PIE, but need to check if compiler supports it > +ifeq ($(call cc-option,-no-pie),y) > +DISABLE_PIE_LDFLAGS := -no-pie > +endif > + > # Run once per environment to set up some common bits & pieces > define PERENV_setup > > @@ -61,7 +70,7 @@ CFLAGS_$(1) := $$(CFLAGS_$($(1)_arch)) > $$(COMMON_CFLAGS-$(1)) -DCONFIG_ENV_$(1) > > link-$(1) := $(ROOT)/arch/x86/link-$(1).lds > > -LDFLAGS_$(1) := -Wl,-T,$$(link-$(1)) -nostdlib > +LDFLAGS_$(1) := -Wl,-T,$$(link-$(1)) -nostdlib $(DISABLE_PIE_LDFLAGS) > > # Needs to pick up test-provided obj-perenv and obj-perarch > DEPS-$(1) = $(head-$(1)) \ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |