[ipxe-devel] [PATCH 1/1] [build] Fix no-PIE workaround for i386 builds

Christian Hesse list at eworm.de
Wed Feb 24 08:29:21 GMT 2016


Christian Hesse <list at eworm.de> on Fri, 2015/04/24 19:23:
> Michael Brown <mcb30 at ipxe.org> on Fri, 2015/04/24 17:41:
> > On 08/04/15 09:13, Christian Hesse wrote:  
> > > diff --git a/src/arch/i386/Makefile b/src/arch/i386/Makefile
> > > index 99f8753..897081b 100644
> > > --- a/src/arch/i386/Makefile
> > > +++ b/src/arch/i386/Makefile
> > > @@ -75,8 +75,8 @@ CFLAGS			+= -Ui386
> > >   # output on stderr instead of checking the exit status.
> > >   #
> > >   ifeq ($(CCTYPE),gcc)
> > > -PIE_TEST = [ -z "`$(CC) -fno-PIE -nopie -x c -c /dev/null
> > > -o /dev/null  
> > > 2>&1`" ] -PIE_FLAGS := $(shell $(PIE_TEST) && $(ECHO) '-fno-PIE
> > > 2>-nopie')  
> > > +PIE_TEST = $(CC) -dM -E - < /dev/null | grep -q '__PIE__'
> > > +PIE_FLAGS := $(shell $(PIE_TEST) && $(ECHO) '-fno-PIE')
> > >   WORKAROUND_CFLAGS += $(PIE_FLAGS)
> > >   endif  
> > 
> > The original fix (in http://git.ipxe.org/ipxe.git/commitdiff/fe61f6d) 
> > added both -fno-PIE and -nopie if it detected that the workaround was 
> > necessary: the -fno-PIE is for compilation and the -nopie is to instruct 
> > gcc to not pass "-pie" to the linker (i.e. not to default to -Wl,-pie).
> > 
> > Since we (I think) always invoke the linker directly via $(LD), it's 
> > plausible that the -nopie was never needed.  Is this the case?  (I don't 
> > have any systems on which the workaround is necessary, so can't test 
> > this for myself.)  
> 
> The problem is that gcc does not know the command option -nopie here:
> 
> % gcc -fno-PIE -nopie -x c -c /dev/null -o /dev/null
> gcc: error: unrecognized command line option ‘-nopie’
> % echo $?
> 1
> 
> So the check always fails and the workaround is never applied.

Any news about this one? Still having trouble with the PIE stuff.
-- 
main(a){char*c=/*    Schoene Gruesse                         */"B?IJj;MEH"
"CX:;",b;for(a/*    Best regards             my address:    */=0;b=c[a++];)
putchar(b-1/(/*    Chris            cc -ox -xc - && ./x    */b/42*2-3)*42);}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 473 bytes
Desc: OpenPGP digital signature
URL: <http://lists.ipxe.org/pipermail/ipxe-devel/attachments/20160224/b231043c/attachment.asc>


More information about the ipxe-devel mailing list