authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-08-10 18:14:09-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-09-19 09:37:30-07:00
logcd8234c3ba6a624fa9d21c66d7999459f51b4969
tree8b10460ec87944afe05e12e93aeb65a967618c3f
parentdbf8fb78430895b0c96109754f27f5990212881e

update for LLVM 17 new target data

New OSs: * UEFI * LiteOS New ABI: * OpenHOS Also update the LLD driver API wrappers.

4 files changed, 50 insertions(+), 12 deletions(-)

lib/std/target.zig+2-1
...@@ -28,6 +28,7 @@ pub const Target = struct {...@@ -28,6 +28,7 @@ pub const Target = struct {
28 netbsd,28 netbsd,
29 openbsd,29 openbsd,
30 solaris,30 solaris,
31 uefi,
31 windows,32 windows,
32 zos,33 zos,
33 haiku,34 haiku,
...@@ -52,7 +53,7 @@ pub const Target = struct {...@@ -52,7 +53,7 @@ pub const Target = struct {
52 wasi,53 wasi,
53 emscripten,54 emscripten,
54 shadermodel,55 shadermodel,
55 uefi,56 liteos,
56 opencl,57 opencl,
57 glsl450,58 glsl450,
58 vulkan,59 vulkan,
src/codegen/llvm/bindings.zig+2
...@@ -1167,6 +1167,7 @@ pub const OSType = enum(c_int) {...@@ -1167,6 +1167,7 @@ pub const OSType = enum(c_int) {
1167 NetBSD,1167 NetBSD,
1168 OpenBSD,1168 OpenBSD,
1169 Solaris,1169 Solaris,
1170 UEFI,
1170 Win32,1171 Win32,
1171 ZOS,1172 ZOS,
1172 Haiku,1173 Haiku,
...@@ -1191,6 +1192,7 @@ pub const OSType = enum(c_int) {...@@ -1191,6 +1192,7 @@ pub const OSType = enum(c_int) {
1191 WASI,1192 WASI,
1192 Emscripten,1193 Emscripten,
1193 ShaderModel,1194 ShaderModel,
1195 LiteOS,
1194};1196};
11951197
1196pub const ArchType = enum(c_int) {1198pub const ArchType = enum(c_int) {
src/zig_llvm.cpp+39-6
...@@ -35,7 +35,6 @@...@@ -35,7 +35,6 @@
35#include <llvm/IR/PassManager.h>35#include <llvm/IR/PassManager.h>
36#include <llvm/IR/Verifier.h>36#include <llvm/IR/Verifier.h>
37#include <llvm/InitializePasses.h>37#include <llvm/InitializePasses.h>
38#include <llvm/MC/SubtargetFeature.h>
39#include <llvm/MC/TargetRegistry.h>38#include <llvm/MC/TargetRegistry.h>
40#include <llvm/Passes/OptimizationLevel.h>39#include <llvm/Passes/OptimizationLevel.h>
41#include <llvm/Passes/PassBuilder.h>40#include <llvm/Passes/PassBuilder.h>
...@@ -47,10 +46,8 @@...@@ -47,10 +46,8 @@
47#include <llvm/Object/COFFModuleDefinition.h>46#include <llvm/Object/COFFModuleDefinition.h>
48#include <llvm/PassRegistry.h>47#include <llvm/PassRegistry.h>
49#include <llvm/Support/CommandLine.h>48#include <llvm/Support/CommandLine.h>
50#include <llvm/Support/Host.h>
51#include <llvm/Support/FileSystem.h>49#include <llvm/Support/FileSystem.h>
52#include <llvm/Support/Process.h>50#include <llvm/Support/Process.h>
53#include <llvm/Support/TargetParser.h>
54#include <llvm/Support/TimeProfiler.h>51#include <llvm/Support/TimeProfiler.h>
55#include <llvm/Support/Timer.h>52#include <llvm/Support/Timer.h>
56#include <llvm/Support/raw_ostream.h>53#include <llvm/Support/raw_ostream.h>
...@@ -58,7 +55,6 @@...@@ -58,7 +55,6 @@
58#include <llvm/Target/CodeGenCWrappers.h>55#include <llvm/Target/CodeGenCWrappers.h>
59#include <llvm/Transforms/IPO.h>56#include <llvm/Transforms/IPO.h>
60#include <llvm/Transforms/IPO/AlwaysInliner.h>57#include <llvm/Transforms/IPO/AlwaysInliner.h>
61#include <llvm/Transforms/IPO/PassManagerBuilder.h>
62#include <llvm/Transforms/Instrumentation/ThreadSanitizer.h>58#include <llvm/Transforms/Instrumentation/ThreadSanitizer.h>
63#include <llvm/Transforms/Scalar.h>59#include <llvm/Transforms/Scalar.h>
64#include <llvm/Transforms/Utils.h>60#include <llvm/Transforms/Utils.h>
...@@ -1103,6 +1099,24 @@ bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size...@@ -1103,6 +1099,24 @@ bool ZigLLVMWriteArchive(const char *archive_name, const char **file_names, size
1103 return false;1099 return false;
1104}1100}
11051101
1102// The header file in LLD 16 exposed these functions. As of 17 they are only
1103// exposed via a macro ("LLD_HAS_DRIVER") which I have copied and pasted the
1104// body of here so that you don't have to wonder what it is doing.
1105namespace lld {
1106 namespace coff {
1107 bool link(llvm::ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS,
1108 llvm::raw_ostream &stderrOS, bool exitEarly, bool disableOutput);
1109 }
1110 namespace elf {
1111 bool link(llvm::ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS,
1112 llvm::raw_ostream &stderrOS, bool exitEarly, bool disableOutput);
1113 }
1114 namespace wasm {
1115 bool link(llvm::ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS,
1116 llvm::raw_ostream &stderrOS, bool exitEarly, bool disableOutput);
1117 }
1118}
1119
1106bool ZigLLDLinkCOFF(int argc, const char **argv, bool can_exit_early, bool disable_output) {1120bool ZigLLDLinkCOFF(int argc, const char **argv, bool can_exit_early, bool disable_output) {
1107 std::vector<const char *> args(argv, argv + argc);1121 std::vector<const char *> args(argv, argv + argc);
1108 return lld::coff::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output);1122 return lld::coff::link(args, llvm::outs(), llvm::errs(), can_exit_early, disable_output);
...@@ -1249,6 +1263,7 @@ static_assert((Triple::OSType)ZigLLVM_MacOSX == Triple::MacOSX, "");...@@ -1249,6 +1263,7 @@ static_assert((Triple::OSType)ZigLLVM_MacOSX == Triple::MacOSX, "");
1249static_assert((Triple::OSType)ZigLLVM_NetBSD == Triple::NetBSD, "");1263static_assert((Triple::OSType)ZigLLVM_NetBSD == Triple::NetBSD, "");
1250static_assert((Triple::OSType)ZigLLVM_OpenBSD == Triple::OpenBSD, "");1264static_assert((Triple::OSType)ZigLLVM_OpenBSD == Triple::OpenBSD, "");
1251static_assert((Triple::OSType)ZigLLVM_Solaris == Triple::Solaris, "");1265static_assert((Triple::OSType)ZigLLVM_Solaris == Triple::Solaris, "");
1266static_assert((Triple::OSType)ZigLLVM_UEFI == Triple::UEFI, "");
1252static_assert((Triple::OSType)ZigLLVM_Win32 == Triple::Win32, "");1267static_assert((Triple::OSType)ZigLLVM_Win32 == Triple::Win32, "");
1253static_assert((Triple::OSType)ZigLLVM_ZOS == Triple::ZOS, "");1268static_assert((Triple::OSType)ZigLLVM_ZOS == Triple::ZOS, "");
1254static_assert((Triple::OSType)ZigLLVM_Haiku == Triple::Haiku, "");1269static_assert((Triple::OSType)ZigLLVM_Haiku == Triple::Haiku, "");
...@@ -1270,6 +1285,8 @@ static_assert((Triple::OSType)ZigLLVM_HermitCore == Triple::HermitCore, "");...@@ -1270,6 +1285,8 @@ static_assert((Triple::OSType)ZigLLVM_HermitCore == Triple::HermitCore, "");
1270static_assert((Triple::OSType)ZigLLVM_Hurd == Triple::Hurd, "");1285static_assert((Triple::OSType)ZigLLVM_Hurd == Triple::Hurd, "");
1271static_assert((Triple::OSType)ZigLLVM_WASI == Triple::WASI, "");1286static_assert((Triple::OSType)ZigLLVM_WASI == Triple::WASI, "");
1272static_assert((Triple::OSType)ZigLLVM_Emscripten == Triple::Emscripten, "");1287static_assert((Triple::OSType)ZigLLVM_Emscripten == Triple::Emscripten, "");
1288static_assert((Triple::OSType)ZigLLVM_ShaderModel == Triple::ShaderModel, "");
1289static_assert((Triple::OSType)ZigLLVM_LiteOS == Triple::LiteOS, "");
1273static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, "");1290static_assert((Triple::OSType)ZigLLVM_LastOSType == Triple::LastOSType, "");
12741291
1275static_assert((Triple::EnvironmentType)ZigLLVM_UnknownEnvironment == Triple::UnknownEnvironment, "");1292static_assert((Triple::EnvironmentType)ZigLLVM_UnknownEnvironment == Triple::UnknownEnvironment, "");
...@@ -1297,6 +1314,22 @@ static_assert((Triple::EnvironmentType)ZigLLVM_Cygnus == Triple::Cygnus, "");...@@ -1297,6 +1314,22 @@ static_assert((Triple::EnvironmentType)ZigLLVM_Cygnus == Triple::Cygnus, "");
1297static_assert((Triple::EnvironmentType)ZigLLVM_CoreCLR == Triple::CoreCLR, "");1314static_assert((Triple::EnvironmentType)ZigLLVM_CoreCLR == Triple::CoreCLR, "");
1298static_assert((Triple::EnvironmentType)ZigLLVM_Simulator == Triple::Simulator, "");1315static_assert((Triple::EnvironmentType)ZigLLVM_Simulator == Triple::Simulator, "");
1299static_assert((Triple::EnvironmentType)ZigLLVM_MacABI == Triple::MacABI, "");1316static_assert((Triple::EnvironmentType)ZigLLVM_MacABI == Triple::MacABI, "");
1317static_assert((Triple::EnvironmentType)ZigLLVM_Pixel == Triple::Pixel, "");
1318static_assert((Triple::EnvironmentType)ZigLLVM_Vertex == Triple::Vertex, "");
1319static_assert((Triple::EnvironmentType)ZigLLVM_Geometry == Triple::Geometry, "");
1320static_assert((Triple::EnvironmentType)ZigLLVM_Hull == Triple::Hull, "");
1321static_assert((Triple::EnvironmentType)ZigLLVM_Domain == Triple::Domain, "");
1322static_assert((Triple::EnvironmentType)ZigLLVM_Compute == Triple::Compute, "");
1323static_assert((Triple::EnvironmentType)ZigLLVM_Library == Triple::Library, "");
1324static_assert((Triple::EnvironmentType)ZigLLVM_RayGeneration == Triple::RayGeneration, "");
1325static_assert((Triple::EnvironmentType)ZigLLVM_Intersection == Triple::Intersection, "");
1326static_assert((Triple::EnvironmentType)ZigLLVM_AnyHit == Triple::AnyHit, "");
1327static_assert((Triple::EnvironmentType)ZigLLVM_ClosestHit == Triple::ClosestHit, "");
1328static_assert((Triple::EnvironmentType)ZigLLVM_Miss == Triple::Miss, "");
1329static_assert((Triple::EnvironmentType)ZigLLVM_Callable == Triple::Callable, "");
1330static_assert((Triple::EnvironmentType)ZigLLVM_Mesh == Triple::Mesh, "");
1331static_assert((Triple::EnvironmentType)ZigLLVM_Amplification == Triple::Amplification, "");
1332static_assert((Triple::EnvironmentType)ZigLLVM_OpenHOS == Triple::OpenHOS, "");
1300static_assert((Triple::EnvironmentType)ZigLLVM_LastEnvironmentType == Triple::LastEnvironmentType, "");1333static_assert((Triple::EnvironmentType)ZigLLVM_LastEnvironmentType == Triple::LastEnvironmentType, "");
13011334
1302static_assert((Triple::ObjectFormatType)ZigLLVM_UnknownObjectFormat == Triple::UnknownObjectFormat, "");1335static_assert((Triple::ObjectFormatType)ZigLLVM_UnknownObjectFormat == Triple::UnknownObjectFormat, "");
...@@ -1334,8 +1367,8 @@ static_assert((CallingConv::ID)ZigLLVM_Intel_OCL_BI == llvm::CallingConv::Intel_...@@ -1334,8 +1367,8 @@ static_assert((CallingConv::ID)ZigLLVM_Intel_OCL_BI == llvm::CallingConv::Intel_
1334static_assert((CallingConv::ID)ZigLLVM_X86_64_SysV == llvm::CallingConv::X86_64_SysV, "");1367static_assert((CallingConv::ID)ZigLLVM_X86_64_SysV == llvm::CallingConv::X86_64_SysV, "");
1335static_assert((CallingConv::ID)ZigLLVM_Win64 == llvm::CallingConv::Win64, "");1368static_assert((CallingConv::ID)ZigLLVM_Win64 == llvm::CallingConv::Win64, "");
1336static_assert((CallingConv::ID)ZigLLVM_X86_VectorCall == llvm::CallingConv::X86_VectorCall, "");1369static_assert((CallingConv::ID)ZigLLVM_X86_VectorCall == llvm::CallingConv::X86_VectorCall, "");
1337static_assert((CallingConv::ID)ZigLLVM_HHVM == llvm::CallingConv::HHVM, "");1370static_assert((CallingConv::ID)ZigLLVM_DUMMY_HHVM == llvm::CallingConv::DUMMY_HHVM, "");
1338static_assert((CallingConv::ID)ZigLLVM_HHVM_C == llvm::CallingConv::HHVM_C, "");1371static_assert((CallingConv::ID)ZigLLVM_DUMMY_HHVM_C == llvm::CallingConv::DUMMY_HHVM_C, "");
1339static_assert((CallingConv::ID)ZigLLVM_X86_INTR == llvm::CallingConv::X86_INTR, "");1372static_assert((CallingConv::ID)ZigLLVM_X86_INTR == llvm::CallingConv::X86_INTR, "");
1340static_assert((CallingConv::ID)ZigLLVM_AVR_INTR == llvm::CallingConv::AVR_INTR, "");1373static_assert((CallingConv::ID)ZigLLVM_AVR_INTR == llvm::CallingConv::AVR_INTR, "");
1341static_assert((CallingConv::ID)ZigLLVM_AVR_SIGNAL == llvm::CallingConv::AVR_SIGNAL, "");1374static_assert((CallingConv::ID)ZigLLVM_AVR_SIGNAL == llvm::CallingConv::AVR_SIGNAL, "");
src/zig_llvm.h+7-5
...@@ -13,7 +13,6 @@...@@ -13,7 +13,6 @@
13#include <llvm-c/Core.h>13#include <llvm-c/Core.h>
14#include <llvm-c/Analysis.h>14#include <llvm-c/Analysis.h>
15#include <llvm-c/Target.h>15#include <llvm-c/Target.h>
16#include <llvm-c/Initialization.h>
17#include <llvm-c/TargetMachine.h>16#include <llvm-c/TargetMachine.h>
1817
19#ifdef __cplusplus18#ifdef __cplusplus
...@@ -102,8 +101,8 @@ enum ZigLLVM_CallingConv {...@@ -102,8 +101,8 @@ enum ZigLLVM_CallingConv {
102 ZigLLVM_X86_64_SysV = 78,101 ZigLLVM_X86_64_SysV = 78,
103 ZigLLVM_Win64 = 79,102 ZigLLVM_Win64 = 79,
104 ZigLLVM_X86_VectorCall = 80,103 ZigLLVM_X86_VectorCall = 80,
105 ZigLLVM_HHVM = 81,104 ZigLLVM_DUMMY_HHVM = 81,
106 ZigLLVM_HHVM_C = 82,105 ZigLLVM_DUMMY_HHVM_C = 82,
107 ZigLLVM_X86_INTR = 83,106 ZigLLVM_X86_INTR = 83,
108 ZigLLVM_AVR_INTR = 84,107 ZigLLVM_AVR_INTR = 84,
109 ZigLLVM_AVR_SIGNAL = 85,108 ZigLLVM_AVR_SIGNAL = 85,
...@@ -402,6 +401,7 @@ enum ZigLLVM_OSType {...@@ -402,6 +401,7 @@ enum ZigLLVM_OSType {
402 ZigLLVM_NetBSD,401 ZigLLVM_NetBSD,
403 ZigLLVM_OpenBSD,402 ZigLLVM_OpenBSD,
404 ZigLLVM_Solaris,403 ZigLLVM_Solaris,
404 ZigLLVM_UEFI,
405 ZigLLVM_Win32,405 ZigLLVM_Win32,
406 ZigLLVM_ZOS,406 ZigLLVM_ZOS,
407 ZigLLVM_Haiku,407 ZigLLVM_Haiku,
...@@ -426,7 +426,8 @@ enum ZigLLVM_OSType {...@@ -426,7 +426,8 @@ enum ZigLLVM_OSType {
426 ZigLLVM_WASI, // Experimental WebAssembly OS426 ZigLLVM_WASI, // Experimental WebAssembly OS
427 ZigLLVM_Emscripten,427 ZigLLVM_Emscripten,
428 ZigLLVM_ShaderModel, // DirectX ShaderModel428 ZigLLVM_ShaderModel, // DirectX ShaderModel
429 ZigLLVM_LastOSType = ZigLLVM_ShaderModel429 ZigLLVM_LiteOS,
430 ZigLLVM_LastOSType = ZigLLVM_LiteOS
430};431};
431432
432// Synchronize with target.cpp::abi_list433// Synchronize with target.cpp::abi_list
...@@ -474,8 +475,9 @@ enum ZigLLVM_EnvironmentType {...@@ -474,8 +475,9 @@ enum ZigLLVM_EnvironmentType {
474 ZigLLVM_Callable,475 ZigLLVM_Callable,
475 ZigLLVM_Mesh,476 ZigLLVM_Mesh,
476 ZigLLVM_Amplification,477 ZigLLVM_Amplification,
478 ZigLLVM_OpenHOS,
477479
478 ZigLLVM_LastEnvironmentType = ZigLLVM_Amplification480 ZigLLVM_LastEnvironmentType = ZigLLVM_OpenHOS
479};481};
480482
481enum ZigLLVM_ObjectFormatType {483enum ZigLLVM_ObjectFormatType {