flag-o-matic.eclass: handle gcc-6 -no-pie option #596584
authorMike Frysinger <vapier@gentoo.org>
Fri, 11 Nov 2016 22:17:37 +0000 (17:17 -0500)
committerMike Frysinger <vapier@gentoo.org>
Fri, 11 Nov 2016 22:17:37 +0000 (17:17 -0500)
Reported-by: Laine Gholson <laine.gholson@gmail.com>
eclass/flag-o-matic.eclass

index 69f613f43737ebe29438ebfef40a9859691bcebb..d2f504b34fa09ed8643a2663051308b18b871308 100644 (file)
@@ -27,7 +27,7 @@ setup-allowed-flags() {
                -pipe -O '-O[12sg]' -mcpu -march -mtune
                '-fstack-protector*' '-fsanitize*'
                -fbounds-check -fbounds-checking -fno-strict-overflow
-               -fno-PIE -fno-pie -nopie -fno-unit-at-a-time
+               -fno-PIE -fno-pie -nopie -no-pie -fno-unit-at-a-time
                -g '-g[0-9]' -ggdb '-ggdb[0-9]' '-gdwarf-*' gstabs -gstabs+
                -fno-ident -fpermissive -frecord-gcc-switches
                '-fdiagnostics*' '-fplugin*'
@@ -80,7 +80,16 @@ _filter-hardened() {
                        # thinking about -fPIE.
                        -fPIC|-fpic|-fPIE|-fpie|-Wl,pie|-pie)
                                gcc-specs-pie || continue
-                               is-flagq -nopie || append-flags -nopie;;
+                               if ! is-flagq -nopie && ! is-flagq -no-pie ; then
+                                       # Support older Gentoo form first (-nopie) before falling
+                                       # back to the official gcc-6+ form (-no-pie).
+                                       if test-flags -nopie >/dev/null ; then
+                                               append-flags -nopie
+                                       else
+                                               append-flags -no-pie
+                                       fi
+                               fi
+                               ;;
                        -fstack-protector)
                                gcc-specs-ssp || continue
                                is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector);;