@@ -1429,30 +1429,36 @@ pub fn compactUnwindToDwarfRegNumber(unwind_reg_number: u3) !u16 {
1429
1429
/// Returns `null` for CPU architectures without an instruction pointer register.
1430
1430
pub fn ipRegNum (arch : std.Target.Cpu.Arch ) ? u16 {
1431
1431
return switch (arch ) {
1432
+ .aarch64 , .aarch64_be = > 32 ,
1433
+ .arm , .armeb , .thumb , .thumbeb = > 15 ,
1434
+ .loongarch32 , .loongarch64 = > 32 ,
1435
+ .riscv32 , .riscv32be , .riscv64 , .riscv64be = > 32 ,
1432
1436
.x86 = > 8 ,
1433
1437
.x86_64 = > 16 ,
1434
- .arm , .armeb , .thumb , .thumbeb = > 15 ,
1435
- .aarch64 , .aarch64_be = > 32 ,
1436
1438
else = > null ,
1437
1439
};
1438
1440
}
1439
1441
1440
1442
pub fn fpRegNum (arch : std.Target.Cpu.Arch ) u16 {
1441
1443
return switch (arch ) {
1444
+ .aarch64 , .aarch64_be = > 29 ,
1445
+ .arm , .armeb , .thumb , .thumbeb = > 11 ,
1446
+ .loongarch32 , .loongarch64 = > 22 ,
1447
+ .riscv32 , .riscv32be , .riscv64 , .riscv64be = > 8 ,
1442
1448
.x86 = > 5 ,
1443
1449
.x86_64 = > 6 ,
1444
- .arm , .armeb , .thumb , .thumbeb = > 11 ,
1445
- .aarch64 , .aarch64_be = > 29 ,
1446
1450
else = > unreachable ,
1447
1451
};
1448
1452
}
1449
1453
1450
1454
pub fn spRegNum (arch : std.Target.Cpu.Arch ) u16 {
1451
1455
return switch (arch ) {
1456
+ .aarch64 , .aarch64_be = > 31 ,
1457
+ .arm , .armeb , .thumb , .thumbeb = > 13 ,
1458
+ .loongarch32 , .loongarch64 = > 3 ,
1459
+ .riscv32 , .riscv32be , .riscv64 , .riscv64be = > 2 ,
1452
1460
.x86 = > 4 ,
1453
1461
.x86_64 = > 7 ,
1454
- .arm , .armeb , .thumb , .thumbeb = > 13 ,
1455
- .aarch64 , .aarch64_be = > 31 ,
1456
1462
else = > unreachable ,
1457
1463
};
1458
1464
}
@@ -1470,10 +1476,6 @@ pub fn supportsUnwinding(target: *const std.Target) bool {
1470
1476
.spirv64 ,
1471
1477
= > false ,
1472
1478
1473
- // Enabling this causes relocation errors such as:
1474
- // error: invalid relocation type R_RISCV_SUB32 at offset 0x20
1475
- .riscv64 , .riscv64be , .riscv32 , .riscv32be = > false ,
1476
-
1477
1479
// Conservative guess. Feel free to update this logic with any targets
1478
1480
// that are known to not support Dwarf unwinding.
1479
1481
else = > true ,
0 commit comments