aboutsummaryrefslogtreecommitdiff
path: root/src/zig_llvm-ar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zig_llvm-ar.cpp')
-rw-r--r--src/zig_llvm-ar.cpp42
1 files changed, 10 insertions, 32 deletions
diff --git a/src/zig_llvm-ar.cpp b/src/zig_llvm-ar.cpp
index 093350e15a..75f2ef2fff 100644
--- a/src/zig_llvm-ar.cpp
+++ b/src/zig_llvm-ar.cpp
@@ -13,20 +13,11 @@
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSwitch.h"
-#include "llvm/ADT/Triple.h"
#include "llvm/BinaryFormat/Magic.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/Object/Archive.h"
#include "llvm/Object/ArchiveWriter.h"
-#include "llvm/Object/COFFImportFile.h"
-#include "llvm/Object/ELFObjectFile.h"
-#include "llvm/Object/IRObjectFile.h"
-#include "llvm/Object/MachO.h"
-#include "llvm/Object/ObjectFile.h"
#include "llvm/Object/SymbolicFile.h"
-#include "llvm/Object/TapiFile.h"
-#include "llvm/Object/Wasm.h"
-#include "llvm/Object/XCOFFObjectFile.h"
#include "llvm/Support/Chrono.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ConvertUTF.h"
@@ -34,8 +25,8 @@
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/FormatVariadic.h"
-#include "llvm/Support/Host.h"
#include "llvm/Support/InitLLVM.h"
+#include "llvm/Support/LLVMDriver.h"
#include "llvm/Support/LineIterator.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
@@ -45,6 +36,8 @@
#include "llvm/Support/ToolOutputFile.h"
#include "llvm/Support/WithColor.h"
#include "llvm/Support/raw_ostream.h"
+#include "llvm/TargetParser/Host.h"
+#include "llvm/TargetParser/Triple.h"
#include "llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h"
#include "llvm/ToolDrivers/llvm-lib/LibDriver.h"
@@ -646,31 +639,12 @@ static bool shouldCreateArchive(ArchiveOperation Op) {
llvm_unreachable("Missing entry in covered switch.");
}
-static bool is64BitSymbolicFile(SymbolicFile &Obj) {
- if (auto *IRObj = dyn_cast<IRObjectFile>(&Obj))
- return Triple(IRObj->getTargetTriple()).isArch64Bit();
- if (isa<COFFObjectFile>(Obj) || isa<COFFImportFile>(Obj))
- return false;
- if (XCOFFObjectFile *XCOFFObj = dyn_cast<XCOFFObjectFile>(&Obj))
- return XCOFFObj->is64Bit();
- if (isa<WasmObjectFile>(Obj))
- return false;
- if (TapiFile *Tapi = dyn_cast<TapiFile>(&Obj))
- return Tapi->is64Bit();
- if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(&Obj))
- return MachO->is64Bit();
- if (ELFObjectFileBase *ElfO = dyn_cast<ELFObjectFileBase>(&Obj))
- return ElfO->getBytesInAddress() == 8;
-
- fail("unsupported file format");
-}
-
static bool isValidInBitMode(Binary &Bin) {
if (BitMode == BitModeTy::Bit32_64 || BitMode == BitModeTy::Any)
return true;
if (SymbolicFile *SymFile = dyn_cast<SymbolicFile>(&Bin)) {
- bool Is64Bit = is64BitSymbolicFile(*SymFile);
+ bool Is64Bit = SymFile->is64Bit();
if ((Is64Bit && (BitMode == BitModeTy::Bit32)) ||
(!Is64Bit && (BitMode == BitModeTy::Bit64)))
return false;
@@ -1452,8 +1426,7 @@ static int ranlib_main(int argc, char **argv) {
return 0;
}
-extern "C" int ZigLlvmAr_main(int argc, char **argv);
-int ZigLlvmAr_main(int argc, char **argv) {
+static int llvm_ar_main(int argc, char **argv, const llvm::ToolContext &) {
// ZIG PATCH: On Windows, InitLLVM calls GetCommandLineW(),
// and overwrites the args. We don't want it to do that,
// and we also don't need the signal handlers it installs
@@ -1491,3 +1464,8 @@ int ZigLlvmAr_main(int argc, char **argv) {
fail("not ranlib, ar, lib or dlltool");
}
+
+extern "C" int ZigLlvmAr_main(int, char **);
+int ZigLlvmAr_main(int argc, char **argv) {
+ return llvm_ar_main(argc, argv, {argv[0], nullptr, false});
+}