authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-11-05 14:47:36+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-11-05 22:41:09+01:00
log796d4845ff6747611c0061f8fe5c3c1c5b967226
tree3e15bd1068c7531faab19a2de8280856c93bf68c
parent7fef0b4a23ae616ebfec978d6af8e9f716a63555
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

musl: Pass -fomit-frame-pointer via CrtFileOptions.


2 files changed, 9 insertions(+), 2 deletions(-)

src/Compilation.zig+3-1
...@@ -6264,6 +6264,7 @@ fn buildOutputFromZig(...@@ -6264,6 +6264,7 @@ fn buildOutputFromZig(
6264pub const CrtFileOptions = struct {6264pub const CrtFileOptions = struct {
6265 function_sections: ?bool = null,6265 function_sections: ?bool = null,
6266 data_sections: ?bool = null,6266 data_sections: ?bool = null,
6267 omit_frame_pointer: ?bool = null,
6267 pic: ?bool = null,6268 pic: ?bool = null,
6268 no_builtin: ?bool = null,6269 no_builtin: ?bool = null,
6269};6270};
...@@ -6322,7 +6323,8 @@ pub fn build_crt_file(...@@ -6322,7 +6323,8 @@ pub fn build_crt_file(
6322 .sanitize_c = false,6323 .sanitize_c = false,
6323 .sanitize_thread = false,6324 .sanitize_thread = false,
6324 .red_zone = comp.root_mod.red_zone,6325 .red_zone = comp.root_mod.red_zone,
6325 .omit_frame_pointer = comp.root_mod.omit_frame_pointer,6326 // Some libcs (e.g. musl) are opinionated about -fomit-frame-pointer.
6327 .omit_frame_pointer = options.omit_frame_pointer orelse comp.root_mod.omit_frame_pointer,
6326 .valgrind = false,6328 .valgrind = false,
6327 .unwind_tables = false,6329 .unwind_tables = false,
6328 // Some CRT objects (e.g. musl's rcrt1.o and Scrt1.o) are opinionated about PIC.6330 // Some CRT objects (e.g. musl's rcrt1.o and Scrt1.o) are opinionated about PIC.
src/musl.zig+6-1
...@@ -41,6 +41,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro...@@ -41,6 +41,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro
41 return comp.build_crt_file("crti", .Obj, .@"musl crti.o", prog_node, &files, .{41 return comp.build_crt_file("crti", .Obj, .@"musl crti.o", prog_node, &files, .{
42 .function_sections = true,42 .function_sections = true,
43 .data_sections = true,43 .data_sections = true,
44 .omit_frame_pointer = true,
44 .no_builtin = true,45 .no_builtin = true,
45 });46 });
46 },47 },
...@@ -57,6 +58,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro...@@ -57,6 +58,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro
57 return comp.build_crt_file("crtn", .Obj, .@"musl crtn.o", prog_node, &files, .{58 return comp.build_crt_file("crtn", .Obj, .@"musl crtn.o", prog_node, &files, .{
58 .function_sections = true,59 .function_sections = true,
59 .data_sections = true,60 .data_sections = true,
61 .omit_frame_pointer = true,
60 .no_builtin = true,62 .no_builtin = true,
61 });63 });
62 },64 },
...@@ -76,6 +78,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro...@@ -76,6 +78,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro
76 return comp.build_crt_file("crt1", .Obj, .@"musl crt1.o", prog_node, &files, .{78 return comp.build_crt_file("crt1", .Obj, .@"musl crt1.o", prog_node, &files, .{
77 .function_sections = true,79 .function_sections = true,
78 .data_sections = true,80 .data_sections = true,
81 .omit_frame_pointer = true,
79 .no_builtin = true,82 .no_builtin = true,
80 });83 });
81 },84 },
...@@ -95,6 +98,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro...@@ -95,6 +98,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro
95 return comp.build_crt_file("rcrt1", .Obj, .@"musl rcrt1.o", prog_node, &files, .{98 return comp.build_crt_file("rcrt1", .Obj, .@"musl rcrt1.o", prog_node, &files, .{
96 .function_sections = true,99 .function_sections = true,
97 .data_sections = true,100 .data_sections = true,
101 .omit_frame_pointer = true,
98 .pic = true,102 .pic = true,
99 .no_builtin = true,103 .no_builtin = true,
100 });104 });
...@@ -115,6 +119,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro...@@ -115,6 +119,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro
115 return comp.build_crt_file("Scrt1", .Obj, .@"musl Scrt1.o", prog_node, &files, .{119 return comp.build_crt_file("Scrt1", .Obj, .@"musl Scrt1.o", prog_node, &files, .{
116 .function_sections = true,120 .function_sections = true,
117 .data_sections = true,121 .data_sections = true,
122 .omit_frame_pointer = true,
118 .pic = true,123 .pic = true,
119 .no_builtin = true,124 .no_builtin = true,
120 });125 });
...@@ -213,6 +218,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro...@@ -213,6 +218,7 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro
213 return comp.build_crt_file("c", .Lib, .@"musl libc.a", prog_node, c_source_files.items, .{218 return comp.build_crt_file("c", .Lib, .@"musl libc.a", prog_node, c_source_files.items, .{
214 .function_sections = true,219 .function_sections = true,
215 .data_sections = true,220 .data_sections = true,
221 .omit_frame_pointer = true,
216 .no_builtin = true,222 .no_builtin = true,
217 });223 });
218 },224 },
...@@ -457,7 +463,6 @@ fn addCcArgs(...@@ -457,7 +463,6 @@ fn addCcArgs(
457463
458 o_arg,464 o_arg,
459465
460 "-fomit-frame-pointer",
461 "-fno-unwind-tables",466 "-fno-unwind-tables",
462 "-fno-asynchronous-unwind-tables",467 "-fno-asynchronous-unwind-tables",
463468