Commit 84e192c88b

Alex Rønne Petersen <alex@alexrp.com>
2024-10-05 15:13:37
std.Target: Introduce Abi.ohoseabi to distinguish the soft float case.
For the same reason as #21504.
1 parent 043b1ad
Changed files (5)
lib
compiler
aro
std
src
lib/compiler/aro/aro/target.zig
@@ -699,7 +699,8 @@ pub fn toLLVMTriple(target: std.Target, buf: []u8) []const u8 {
         .cygnus => "cygnus",
         .simulator => "simulator",
         .macabi => "macabi",
-        .ohos => "openhos",
+        .ohos => "ohos",
+        .ohoseabi => "ohoseabi",
     };
     writer.writeAll(llvm_abi) catch unreachable;
     return stream.getWritten();
lib/std/zig/LibCDirs.zig
@@ -242,6 +242,7 @@ fn libCGenericName(target: std.Target) [:0]const u8 {
         .muslx32,
         .none,
         .ohos,
+        .ohoseabi,
         => return "musl",
         .code16,
         .eabi,
lib/std/Target.zig
@@ -677,6 +677,7 @@ pub const Abi = enum {
     simulator,
     macabi,
     ohos,
+    ohoseabi,
 
     // LLVM tags deliberately omitted:
     // - amplification
@@ -766,8 +767,18 @@ pub const Abi = enum {
 
     pub inline fn isMusl(abi: Abi) bool {
         return switch (abi) {
-            .musl, .musleabi, .musleabihf, .muslx32 => true,
-            .ohos => true,
+            .musl,
+            .musleabi,
+            .musleabihf,
+            .muslx32,
+            => true,
+            else => abi.isOpenHarmony(),
+        };
+    }
+
+    pub inline fn isOpenHarmony(abi: Abi) bool {
+        return switch (abi) {
+            .ohos, .ohoseabi => true,
             else => false,
         };
     }
@@ -786,7 +797,7 @@ pub const Abi = enum {
             .gnueabi,
             .musleabi,
             .gnusf,
-            .ohos,
+            .ohoseabi,
             => .soft,
             else => .hard,
         };
src/codegen/llvm.zig
@@ -185,6 +185,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
         .simulator => "simulator",
         .macabi => "macabi",
         .ohos => "ohos",
+        .ohoseabi => "ohoseabi",
     };
     try llvm_triple.appendSlice(llvm_abi);
 
src/target.zig
@@ -46,7 +46,7 @@ pub fn requiresPIC(target: std.Target, linking_libc: bool) bool {
         target.os.tag == .windows or target.os.tag == .uefi or
         osRequiresLibC(target) or
         (linking_libc and target.isGnuLibC()) or
-        (target.abi == .ohos and target.cpu.arch == .aarch64);
+        (target.cpu.arch == .aarch64 and target.abi == .ohos);
 }
 
 pub fn picLevel(target: std.Target) u32 {