71
71
72
72
# Frame Pointer flags used for making profiling more useful at a slight hit to performance
73
73
# See https://fedoraproject.org/wiki/Changes/fno-omit-frame-pointer
74
- FRAME_POINTER_FLAGS = ["-fno-omit-frame-pointer" , "-mno-omit-leaf-frame-pointer" ]
74
+ FRAME_POINTER_FLAGS = ["-fno-omit-frame-pointer" , "-mno-omit-leaf-frame-pointer" ,
75
+ "-Cforce-frame-pointers" ] # The equivalent Rust flag
75
76
76
77
# Clang can handle parameters to the args unlike GCC
77
78
PGO_GEN_FLAGS_CLANG = "-fprofile-generate=\" {}/default-%m.profraw\" "
@@ -97,6 +98,7 @@ class Flags:
97
98
C = 0
98
99
CXX = 1
99
100
LD = 2
101
+ RUST = 3
100
102
101
103
@staticmethod
102
104
def get_desc (f ):
@@ -107,6 +109,8 @@ def get_desc(f):
107
109
return "CXXFLAGS"
108
110
elif f == Flags .LD :
109
111
return "LDFLAGS"
112
+ elif f == Flags .RUST :
113
+ return "RUSTFLAGS"
110
114
else :
111
115
return "UNKNOWN_FLAG_SET_CHECK_IT"
112
116
@@ -204,6 +208,7 @@ class BuildConfig:
204
208
cflags = None
205
209
cxxflags = None
206
210
ldflags = None
211
+ rustflags = None
207
212
208
213
cc = None
209
214
cxx = None
@@ -220,6 +225,8 @@ def get_flags(self, t):
220
225
return self .cxxflags
221
226
if t == Flags .LD :
222
227
return self .ldflags
228
+ if t == Flags .RUST :
229
+ return self .rustflags
223
230
return set ([])
224
231
225
232
@@ -358,6 +365,7 @@ def init_config(self):
358
365
self .build .cflags = list (conf .values .build .cflags .split (" " ))
359
366
self .build .cxxflags = list (conf .values .build .cxxflags .split (" " ))
360
367
self .build .ldflags = list (conf .values .build .ldflags .split (" " ))
368
+ self .build .rustflags = list (conf .values .build .rustflags .split (" " ))
361
369
if conf .values .build .buildhelper :
362
370
self .build .ccache = "ccache" in conf .values .build .buildhelper
363
371
else :
@@ -427,6 +435,10 @@ def init_optimize(self):
427
435
self .build .cxxflags = Flags .optimize_flags (self .build .cxxflags ,
428
436
opt ,
429
437
self .spec .pkg_clang )
438
+ if opt == "no-frame-pointer" :
439
+ self .build .rustflags = Flags .optimize_flags (self .build .rustflags ,
440
+ opt ,
441
+ self .spec .pkg_clang )
430
442
if opt == "no-bind-now" or opt == "no-symbolic" \
431
443
or opt == "runpath" or opt == "icf-safe" \
432
444
or opt == "icf-all" or opt == "emit-relocs" :
0 commit comments