1 |
commit: b6f74df7a23d7e90bdb6adb4ef6fb05e4896fc7f |
2 |
Author: Mike Frysinger <vapier <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Sep 1 04:14:17 2015 +0000 |
4 |
Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Sep 1 04:14:17 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b6f74df7 |
7 |
|
8 |
flag-o-matic.eclass: all-flag-vars: rewrite to use bash arrays |
9 |
|
10 |
This makes quoting much saner. |
11 |
|
12 |
eclass/flag-o-matic.eclass | 85 ++++++++++++++++++++++++---------------------- |
13 |
1 file changed, 44 insertions(+), 41 deletions(-) |
14 |
|
15 |
diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass |
16 |
index 408aa47..aad71a8 100644 |
17 |
--- a/eclass/flag-o-matic.eclass |
18 |
+++ b/eclass/flag-o-matic.eclass |
19 |
@@ -23,48 +23,50 @@ all-flag-vars() { |
20 |
# {C,CPP,CXX,CCAS,F,FC,LD}FLAGS that we allow in strip-flags |
21 |
# Note: shell globs and character lists are allowed |
22 |
setup-allowed-flags() { |
23 |
- ALLOWED_FLAGS="-pipe" |
24 |
- ALLOWED_FLAGS+=" -O -O1 -O2 -Os -Og -mcpu -march -mtune" |
25 |
- ALLOWED_FLAGS+=" -fstack-protector* -fsanitize*" |
26 |
- ALLOWED_FLAGS+=" -fbounds-check -fbounds-checking -fno-strict-overflow" |
27 |
- ALLOWED_FLAGS+=" -fno-PIE -fno-pie -nopie -fno-unit-at-a-time" |
28 |
- ALLOWED_FLAGS+=" -g -g[0-9] -ggdb -ggdb[0-9] -gdwarf-* gstabs -gstabs+" |
29 |
- ALLOWED_FLAGS+=" -fno-ident -fpermissive -frecord-gcc-switches" |
30 |
- ALLOWED_FLAGS+=" -fdiagnostics*" |
31 |
- ALLOWED_FLAGS+=" -W* -w" |
32 |
+ ALLOWED_FLAGS=( |
33 |
+ -pipe -O '-O[12sg]' -mcpu -march -mtune |
34 |
+ '-fstack-protector*' '-fsanitize*' |
35 |
+ -fbounds-check -fbounds-checking -fno-strict-overflow |
36 |
+ -fno-PIE -fno-pie -nopie -fno-unit-at-a-time |
37 |
+ -g '-g[0-9]' -ggdb '-ggdb[0-9]' '-gdwarf-*' gstabs -gstabs+ |
38 |
+ -fno-ident -fpermissive -frecord-gcc-switches |
39 |
+ '-fdiagnostics*' |
40 |
+ '-W*' -w |
41 |
+ |
42 |
+ # CPPFLAGS and LDFLAGS |
43 |
+ '-[DUILR]*' '-Wl,*' |
44 |
+ ) |
45 |
|
46 |
# allow a bunch of flags that negate features / control ABI |
47 |
- ALLOWED_FLAGS+=" -fno-stack-protector* -fabi-version=* \ |
48 |
- -fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow \ |
49 |
- -fno-omit-frame-pointer -fno-builtin*" |
50 |
- ALLOWED_FLAGS+=" -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse \ |
51 |
- -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 \ |
52 |
- -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt \ |
53 |
- -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt \ |
54 |
- -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \ |
55 |
- -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe \ |
56 |
- -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat \ |
57 |
- -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi \ |
58 |
- -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel \ |
59 |
- -mstack-bias -mno-stack-bias -msecure-plt -m*-toc -mfloat-abi \ |
60 |
- -mfix-r10000 -mno-fix-r10000 -D* -U*" |
61 |
- |
62 |
- # 4.5 |
63 |
- ALLOWED_FLAGS+=" -mno-fma4 -mno-movbe -mno-xop -mno-lwp" |
64 |
- # 4.6 |
65 |
- ALLOWED_FLAGS+=" -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm" |
66 |
- # 4.7 |
67 |
- ALLOWED_FLAGS+=" -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt" |
68 |
- # 4.8 |
69 |
- ALLOWED_FLAGS+=" -mno-fxsr -mno-rtm -mno-xsave -mno-xsaveopt" |
70 |
- # 4.9 |
71 |
- ALLOWED_FLAGS+=" -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha" |
72 |
- |
73 |
- # CPPFLAGS and LDFLAGS |
74 |
- ALLOWED_FLAGS+=" -I* -L* -R* -Wl,*" |
75 |
- |
76 |
- export ALLOWED_FLAGS |
77 |
- return 0 |
78 |
+ ALLOWED_FLAGS+=( |
79 |
+ '-fno-stack-protector*' '-fabi-version=*' |
80 |
+ -fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow |
81 |
+ -fno-omit-frame-pointer '-fno-builtin*' |
82 |
+ ) |
83 |
+ ALLOWED_FLAGS+=( |
84 |
+ -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse |
85 |
+ -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 |
86 |
+ -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt |
87 |
+ -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt |
88 |
+ -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu |
89 |
+ -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe |
90 |
+ -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat |
91 |
+ -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi |
92 |
+ -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel |
93 |
+ -mstack-bias -mno-stack-bias -msecure-plt '-m*-toc' -mfloat-abi |
94 |
+ -mfix-r10000 -mno-fix-r10000 |
95 |
+ |
96 |
+ # gcc 4.5 |
97 |
+ -mno-fma4 -mno-movbe -mno-xop -mno-lwp |
98 |
+ # gcc 4.6 |
99 |
+ -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm |
100 |
+ # gcc 4.7 |
101 |
+ -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt |
102 |
+ # gcc 4.8 |
103 |
+ -mno-fxsr -mno-rtm -mno-xsave -mno-xsaveopt |
104 |
+ # gcc 4.9 |
105 |
+ -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha |
106 |
+ ) |
107 |
} |
108 |
|
109 |
# inverted filters for hardened compiler. This is trying to unpick |
110 |
@@ -375,6 +377,7 @@ filter-mfpmath() { |
111 |
strip-flags() { |
112 |
local x y var |
113 |
|
114 |
+ local ALLOWED_FLAGS |
115 |
setup-allowed-flags |
116 |
|
117 |
set -f # disable pathname expansion |
118 |
@@ -384,7 +387,7 @@ strip-flags() { |
119 |
|
120 |
for x in ${!var} ; do |
121 |
local flag=${x%%=*} |
122 |
- for y in ${ALLOWED_FLAGS} ; do |
123 |
+ for y in "${ALLOWED_FLAGS[@]}" ; do |
124 |
if [[ -z ${flag%%${y}} ]] ; then |
125 |
new+=( "${x}" ) |
126 |
break |