Rename usesLargePIC to picLevel and return the PIC level

This commit is contained in:
antlilja
2024-09-01 15:09:25 +02:00
parent 76908da3ac
commit 15b4c01ab1
2 changed files with 5 additions and 5 deletions

View File

@@ -1107,12 +1107,12 @@ pub const Object = struct {
const behavior_max = try o.builder.metadataConstant(try o.builder.intConst(.i32, 7));
const behavior_min = try o.builder.metadataConstant(try o.builder.intConst(.i32, 8));
const large_pic = target_util.usesLargePIC(comp.root_mod.resolved_target.result);
const pic_level = target_util.picLevel(comp.root_mod.resolved_target.result);
if (comp.root_mod.pic) {
module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
behavior_min,
try o.builder.metadataString("PIC Level"),
try o.builder.metadataConstant(try o.builder.intConst(.i32, @as(i32, if (large_pic) 2 else 1))),
try o.builder.metadataConstant(try o.builder.intConst(.i32, pic_level)),
));
}
@@ -1120,7 +1120,7 @@ pub const Object = struct {
module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
behavior_max,
try o.builder.metadataString("PIE Level"),
try o.builder.metadataConstant(try o.builder.intConst(.i32, @as(i32, if (large_pic) 2 else 1))),
try o.builder.metadataConstant(try o.builder.intConst(.i32, pic_level)),
));
}

View File

@@ -49,10 +49,10 @@ pub fn requiresPIC(target: std.Target, linking_libc: bool) bool {
(target.abi == .ohos and target.cpu.arch == .aarch64);
}
pub fn usesLargePIC(target: std.Target) bool {
pub fn picLevel(target: std.Target) u32 {
// MIPS always uses PIC level 1; other platforms vary in their default PIC levels, but they
// support both level 1 and 2, in which case we prefer 2.
return !target.cpu.arch.isMIPS();
return if (target.cpu.arch.isMIPS()) 1 else 2;
}
/// This is not whether the target supports Position Independent Code, but whether the -fPIC