]> xenbits.xensource.com Git - osstest/rumprun.git/commitdiff
Add further -no-pie checks to Rumprun build tools
authorKent McLeod <Kent.Mcleod@data61.csiro.au>
Wed, 14 Feb 2018 05:43:16 +0000 (16:43 +1100)
committerKent McLeod <Kent.Mcleod@data61.csiro.au>
Thu, 15 Feb 2018 06:35:02 +0000 (17:35 +1100)
This builds upon the previous commit to add -no-pie anywhere the
relocatable flag (-Wl,-r) is used to handle compilers that enable -pie
by default (Such as Debian Stretch).

app-tools/Makefile
app-tools/cc.in
app-tools/cookfs.in
app-tools/rumprun-bake.in
build-rr.sh

index beb39b817b29b58ebe6b9e756e9821179b5ad6ac..e355e058429ce7e40da8c10a3231900c10ea0840 100644 (file)
@@ -83,6 +83,7 @@ ${TOOLOBJ}/${2}: ${1} Makefile ${TOOLOBJ}
                -e 's#!PLATFORM!#$(PLATFORM)#g;'                        \
                -e 's#!CPPFLAGS!#$(BUILDRUMP_TOOL_CPPFLAGS)#g;'         \
                -e 's#!CFLAGS!#$(BUILDRUMP_TOOL_CFLAGS)#g;'             \
+               -e 's#!EXTRACCFLAGS!#$(EXTRACCFLAGS)#g;'                \
                -e 's#!CXXFLAGS!#$(BUILDRUMP_TOOL_CXXFLAGS)#g;'         \
                -e 's#!LDFLAGS_BAKE!#$(LDFLAGS_BAKE)#g;'
        chmod 755 $$@
index ef0db9a2dc10bd5c2996cc33c1a644b7f3387737..4ea20a8475e6fd94aebfbe8a319d7e49bc975d72 100644 (file)
@@ -96,7 +96,7 @@ ferment)
        ${CC} ${CFLAGS} -no-integrated-cpp \
            --sysroot !DESTDIR!/rumprun-!MACHINE_GNU_ARCH! \
            -specs=!DESTDIR!/rumprun-!MACHINE_GNU_ARCH!/lib/specs-compile_or_ferment \
-           -Wl,-r -Wl,-u,main \
+           !EXTRACCFLAGS! -Wl,-r -Wl,-u,main \
            "$@" !DESTDIR!/rumprun-!MACHINE_GNU_ARCH!/share/!TOOLTUPLE!-recipe.s ${EXTRALIBS} || die
 
        # If the presumed output file did not change, and the compiler
index 4972b3fd8fbf31525975eb09c25f28f7a905ef92..16d8b2bc5293f33ea56f2bd86fe4715ed751cb4c 100644 (file)
@@ -164,7 +164,7 @@ processonefile ()
        ln -sf -- "${fabs}" ${LINKPATH}
 
        ${RUMPRUN_COOKFS_CC} !CFLAGS! !CPPFLAGS! -nostdlib              \
-           -Wl,-r,-b,binary -o ${TMPDIR}/d${fn}.o ${LINKPATH}
+           !EXTRACCFLAGS! -Wl,-r,-b,binary -o ${TMPDIR}/d${fn}.o ${LINKPATH}
 
        ${RUMPRUN_COOKFS_OBJCOPY}                                       \
            --redefine-sym ${LINKPATH_BIN}_start=${rf}_start            \
@@ -233,7 +233,7 @@ exec 1>&3 3>&-
 unset IFS
 
 ${RUMPRUN_COOKFS_CC} !CFLAGS! !CPPFLAGS! -I${RUMPRUN_COOKFS_INCDIR}    \
-    -nostdlib -Wl,-r -o ${TMPDIR}/fin.o ${TMPDIR}/d*.o ${TMPDIR}/constr.c
+    -nostdlib !EXTRACCFLAGS! -Wl,-r -o ${TMPDIR}/fin.o ${TMPDIR}/d*.o ${TMPDIR}/constr.c
 ${RUMPRUN_COOKFS_OBJCOPY} ${LSYM} ${TMPDIR}/fin.o ${OUTFILE}
 
 totsize=$(${RUMPRUN_COOKFS_SIZE} ${OUTFILE} | awk 'NR == 2{print $4}')
index b43195a2f0b663ae5ae1f09be107d319225022ba..3d82bae278d0472fd5acd71dbdb121800bf59098 100644 (file)
@@ -397,8 +397,9 @@ done
 
 MACHINE_GNU_ARCH=${RUMPBAKE_TUPLE%%-*}
 
+
 # Final link using cc to produce the unikernel image.
-${runcmd} ${RUMPBAKE_BACKINGCC} ${RUMPBAKE_CFLAGS}                     \
+${runcmd} ${RUMPBAKE_BACKINGCC} ${RUMPBAKE_CFLAGS} !EXTRACCFLAGS!      \
     --sysroot ${RUMPBAKE_TOOLDIR}/rumprun-${MACHINE_GNU_ARCH}          \
     -specs=${RUMPBAKE_TOOLDIR}/rumprun-${MACHINE_GNU_ARCH}/lib/rumprun-${PLATFORM}/specs-bake \
     -o ${OUTPUT} ${allobjs}                                            \
index e361c327ddda7da9c8a42485e371256897790a1f..832a9176a9fb9087ecc212d084dbc809f7bd498b 100755 (executable)
@@ -493,6 +493,14 @@ makeconfig ()
        else
                echo "CONFIG_CXX=no" >> ${1}
        fi
+
+       # Check for if compiler supports -no-pie and save to EXTRACCFLAGS
+       gccnopie=
+       if [ -z "`echo 'int p=1;' | ${CC} -no-pie -S -o /dev/null -x c - 2>&1`" ]; then
+               gccnopie=-no-pie
+       fi
+       echo "EXTRACCFLAGS=${quote}${gccnopie}${quote}" >> ${1}
+
 }
 
 dobuild ()