diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2024-12-09 10:46:31 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-09 10:46:31 +0100 |
| commit | 589f4e91708366ddff9ee6793d5f88b05a260959 (patch) | |
| tree | 2f0b4d594e6758af98bb3752d8aded9f8be3753d /src | |
| parent | a221b2fbf2829e2e8ba5ecd2d7569e619a66d69b (diff) | |
| parent | 6951ee43bf2cb7802cb71ddeb74bf5ab7bee8857 (diff) | |
| download | zig-589f4e91708366ddff9ee6793d5f88b05a260959.tar.gz zig-589f4e91708366ddff9ee6793d5f88b05a260959.zip | |
Merge pull request #22190 from alexrp/cc-args
`Compilation`: Don't rely on Clang defaults for options that are user-facing.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Compilation.zig | 29 | ||||
| -rw-r--r-- | src/target.zig | 10 |
2 files changed, 16 insertions, 23 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig index a7d3b6b437..369d886f24 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -5254,17 +5254,10 @@ pub fn addCCArgs( try argv.append("-fno-caret-diagnostics"); } - if (comp.function_sections) { - try argv.append("-ffunction-sections"); - } - - if (comp.data_sections) { - try argv.append("-fdata-sections"); - } + try argv.append(if (comp.function_sections) "-ffunction-sections" else "-fno-function-sections"); + try argv.append(if (comp.data_sections) "-fdata-sections" else "-fno-data-sections"); - if (mod.no_builtin) { - try argv.append("-fno-builtin"); - } + try argv.append(if (mod.no_builtin) "-fno-builtin" else "-fbuiltin"); if (comp.config.link_libcpp) { const libcxx_include_path = try std.fs.path.join(arena, &[_][]const u8{ @@ -5482,17 +5475,11 @@ pub fn addCCArgs( } } - if (mod.red_zone) { - try argv.append("-mred-zone"); - } else if (target_util.hasRedZone(target)) { - try argv.append("-mno-red-zone"); + if (target_util.hasRedZone(target)) { + try argv.append(if (mod.red_zone) "-mred-zone" else "-mno-red-zone"); } - if (mod.omit_frame_pointer) { - try argv.append("-fomit-frame-pointer"); - } else { - try argv.append("-fno-omit-frame-pointer"); - } + try argv.append(if (mod.omit_frame_pointer) "-fomit-frame-pointer" else "-fno-omit-frame-pointer"); const ssp_buf_size = mod.stack_protector; if (ssp_buf_size != 0) { @@ -5629,8 +5616,8 @@ pub fn addCCArgs( try argv.append("-municode"); } - if (target.cpu.arch.isThumb()) { - try argv.append("-mthumb"); + if (target.cpu.arch.isArm()) { + try argv.append(if (target.cpu.arch.isThumb()) "-mthumb" else "-mno-thumb"); } if (target_util.supports_fpic(target)) { diff --git a/src/target.zig b/src/target.zig index e796b8e271..a1c9a19724 100644 --- a/src/target.zig +++ b/src/target.zig @@ -305,10 +305,16 @@ pub fn defaultCompilerRtOptimizeMode(target: std.Target) std.builtin.OptimizeMod pub fn hasRedZone(target: std.Target) bool { return switch (target.cpu.arch) { - .x86_64, - .x86, .aarch64, .aarch64_be, + .powerpc, + .powerpcle, + .powerpc64, + .powerpc64le, + .wasm32, + .wasm64, + .x86_64, + .x86, => true, else => false, |
