diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2024-08-28 03:02:04 +0200 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2024-08-28 06:18:06 +0200 |
| commit | 7d9edff11d4c0dd6793bfd4bb2d7e3c2d32c88cd (patch) | |
| tree | 82c547eab6f1cd93cef5905e88c14b0438cc5a12 /src/codegen | |
| parent | 93cb44c80582dd02b63b02e7bb7e54d7ad8a4ebc (diff) | |
| download | zig-7d9edff11d4c0dd6793bfd4bb2d7e3c2d32c88cd.tar.gz zig-7d9edff11d4c0dd6793bfd4bb2d7e3c2d32c88cd.zip | |
llvm: Set PIC level 1 for MIPS.
For hysterical raisins, MIPS always uses 1, regardless of `-fpic` vs `-fPIC`.
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/llvm.zig | 7 | ||||
| -rw-r--r-- | src/codegen/llvm/bindings.zig | 4 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index eec46b8379..57ee1c8a67 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -1259,8 +1259,11 @@ pub const Object = struct { ); errdefer target_machine.dispose(); - if (pic) module.setModulePICLevel(); - if (comp.config.pie) module.setModulePIELevel(); + const large_pic = target_util.usesLargePIC(comp.root_mod.resolved_target.result); + + if (pic) module.setModulePICLevel(large_pic); + if (comp.config.pie) module.setModulePIELevel(large_pic); + if (code_model != .Default) module.setModuleCodeModel(code_model); if (comp.llvm_opt_bisect_limit >= 0) { diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig index ebab18f68a..a5017568e5 100644 --- a/src/codegen/llvm/bindings.zig +++ b/src/codegen/llvm/bindings.zig @@ -53,10 +53,10 @@ pub const Module = opaque { extern fn LLVMDisposeModule(*Module) void; pub const setModulePICLevel = ZigLLVMSetModulePICLevel; - extern fn ZigLLVMSetModulePICLevel(module: *Module) void; + extern fn ZigLLVMSetModulePICLevel(module: *Module, big: bool) void; pub const setModulePIELevel = ZigLLVMSetModulePIELevel; - extern fn ZigLLVMSetModulePIELevel(module: *Module) void; + extern fn ZigLLVMSetModulePIELevel(module: *Module, large: bool) void; pub const setModuleCodeModel = ZigLLVMSetModuleCodeModel; extern fn ZigLLVMSetModuleCodeModel(module: *Module, code_model: CodeModel) void; |
