diff --git a/llvm/test/tools/llvm-lipo/Inputs/arm64-asm.ll b/llvm/test/tools/llvm-lipo/Inputs/arm64-asm.ll new file mode 100644 --- /dev/null +++ b/llvm/test/tools/llvm-lipo/Inputs/arm64-asm.ll @@ -0,0 +1,7 @@ +target triple = "arm64-apple-macosx11.0.0" + +module asm ".desc ___crashreporter_info__, 0x10" + +define void @somesymbol() { + ret void +} diff --git a/llvm/test/tools/llvm-lipo/Inputs/x86_64-asm.ll b/llvm/test/tools/llvm-lipo/Inputs/x86_64-asm.ll new file mode 100644 --- /dev/null +++ b/llvm/test/tools/llvm-lipo/Inputs/x86_64-asm.ll @@ -0,0 +1,7 @@ +target triple = "x86_64-apple-macosx11.0.0" + +module asm ".desc ___crashreporter_info__, 0x10" + +define void @somesymbol() { + ret void +} diff --git a/llvm/test/tools/llvm-lipo/create-arch-asm.test b/llvm/test/tools/llvm-lipo/create-arch-asm.test new file mode 100644 --- /dev/null +++ b/llvm/test/tools/llvm-lipo/create-arch-asm.test @@ -0,0 +1,8 @@ +# RUN: llvm-as %p/Inputs/arm64-asm.ll -o %t-arm64-asm.o +# RUN: llvm-as %p/Inputs/x86_64-asm.ll -o %t-x86_64-asm.o + +# RUN: llvm-lipo %t-arm64-asm.o %t-x86_64-asm.o -create -output %t-universal.o +# RUN: llvm-lipo %t-arm64-asm.o -arch x86_64 %t-x86_64-asm.o -create -output %t-universal-1.o +# RUN: cmp %t-universal.o %t-universal-1.o +# RUN: llvm-lipo -arch arm64 %t-arm64-asm.o -arch x86_64 %t-x86_64-asm.o -create -output %t-universal-2.o +# RUN: cmp %t-universal.o %t-universal-2.o diff --git a/llvm/tools/llvm-lipo/llvm-lipo.cpp b/llvm/tools/llvm-lipo/llvm-lipo.cpp --- a/llvm/tools/llvm-lipo/llvm-lipo.cpp +++ b/llvm/tools/llvm-lipo/llvm-lipo.cpp @@ -28,6 +28,7 @@ #include "llvm/Support/Error.h" #include "llvm/Support/FileOutputBuffer.h" #include "llvm/Support/InitLLVM.h" +#include "llvm/Support/TargetSelect.h" #include "llvm/Support/WithColor.h" #include "llvm/TextAPI/Architecture.h" @@ -425,7 +426,7 @@ Expected SliceOrErr = createSliceFromIR(*IR, 0); if (!SliceOrErr) reportError(IR->getFileName(), SliceOrErr.takeError()); - + OS << SliceOrErr->getArchString() << " \n"; } @@ -720,6 +721,10 @@ int main(int argc, char **argv) { InitLLVM X(argc, argv); + llvm::InitializeAllTargetInfos(); + llvm::InitializeAllTargetMCs(); + llvm::InitializeAllAsmParsers(); + Config C = parseLipoOptions(makeArrayRef(argv + 1, argc - 1)); LLVMContext LLVMCtx; SmallVector, 1> InputBinaries =