authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-12-09 10:46:31+01:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-12-09 10:46:31+01:00
log589f4e91708366ddff9ee6793d5f88b05a260959
tree2f0b4d594e6758af98bb3752d8aded9f8be3753d
parenta221b2fbf2829e2e8ba5ecd2d7569e619a66d69b
parent6951ee43bf2cb7802cb71ddeb74bf5ab7bee8857
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #22190 from alexrp/cc-args

`Compilation`: Don't rely on Clang defaults for options that are user-facing.

2 files changed, 16 insertions(+), 23 deletions(-)

src/Compilation.zig+8-21
...@@ -5254,17 +5254,10 @@ pub fn addCCArgs(...@@ -5254,17 +5254,10 @@ pub fn addCCArgs(
5254 try argv.append("-fno-caret-diagnostics");5254 try argv.append("-fno-caret-diagnostics");
5255 }5255 }
52565256
5257 if (comp.function_sections) {5257 try argv.append(if (comp.function_sections) "-ffunction-sections" else "-fno-function-sections");
5258 try argv.append("-ffunction-sections");5258 try argv.append(if (comp.data_sections) "-fdata-sections" else "-fno-data-sections");
5259 }
5260
5261 if (comp.data_sections) {
5262 try argv.append("-fdata-sections");
5263 }
52645259
5265 if (mod.no_builtin) {5260 try argv.append(if (mod.no_builtin) "-fno-builtin" else "-fbuiltin");
5266 try argv.append("-fno-builtin");
5267 }
52685261
5269 if (comp.config.link_libcpp) {5262 if (comp.config.link_libcpp) {
5270 const libcxx_include_path = try std.fs.path.join(arena, &[_][]const u8{5263 const libcxx_include_path = try std.fs.path.join(arena, &[_][]const u8{
...@@ -5482,17 +5475,11 @@ pub fn addCCArgs(...@@ -5482,17 +5475,11 @@ pub fn addCCArgs(
5482 }5475 }
5483 }5476 }
54845477
5485 if (mod.red_zone) {5478 if (target_util.hasRedZone(target)) {
5486 try argv.append("-mred-zone");5479 try argv.append(if (mod.red_zone) "-mred-zone" else "-mno-red-zone");
5487 } else if (target_util.hasRedZone(target)) {
5488 try argv.append("-mno-red-zone");
5489 }5480 }
54905481
5491 if (mod.omit_frame_pointer) {5482 try argv.append(if (mod.omit_frame_pointer) "-fomit-frame-pointer" else "-fno-omit-frame-pointer");
5492 try argv.append("-fomit-frame-pointer");
5493 } else {
5494 try argv.append("-fno-omit-frame-pointer");
5495 }
54965483
5497 const ssp_buf_size = mod.stack_protector;5484 const ssp_buf_size = mod.stack_protector;
5498 if (ssp_buf_size != 0) {5485 if (ssp_buf_size != 0) {
...@@ -5629,8 +5616,8 @@ pub fn addCCArgs(...@@ -5629,8 +5616,8 @@ pub fn addCCArgs(
5629 try argv.append("-municode");5616 try argv.append("-municode");
5630 }5617 }
56315618
5632 if (target.cpu.arch.isThumb()) {5619 if (target.cpu.arch.isArm()) {
5633 try argv.append("-mthumb");5620 try argv.append(if (target.cpu.arch.isThumb()) "-mthumb" else "-mno-thumb");
5634 }5621 }
56355622
5636 if (target_util.supports_fpic(target)) {5623 if (target_util.supports_fpic(target)) {
src/target.zig+8-2
...@@ -305,10 +305,16 @@ pub fn defaultCompilerRtOptimizeMode(target: std.Target) std.builtin.OptimizeMod...@@ -305,10 +305,16 @@ pub fn defaultCompilerRtOptimizeMode(target: std.Target) std.builtin.OptimizeMod
305305
306pub fn hasRedZone(target: std.Target) bool {306pub fn hasRedZone(target: std.Target) bool {
307 return switch (target.cpu.arch) {307 return switch (target.cpu.arch) {
308 .x86_64,
309 .x86,
310 .aarch64,308 .aarch64,
311 .aarch64_be,309 .aarch64_be,
310 .powerpc,
311 .powerpcle,
312 .powerpc64,
313 .powerpc64le,
314 .wasm32,
315 .wasm64,
316 .x86_64,
317 .x86,
312 => true,318 => true,
313319
314 else => false,320 else => false,