[AIX][llvm-ar] Use the Correct Kind for Bitcode File Inputs
On AIX, when the input files are LLVM bitcode files, `llvm-ar` should set the archive kind to `K_AIXBIG` as well, instead of leaving it to the default `K_GNU`. Reviewed By: daltenty Differential Revision: https://reviews.llvm.org/D149377
This commit is contained in:
@@ -76,9 +76,11 @@ object::Archive::Kind NewArchiveMember::detectKindFromObject() const {
|
||||
if (auto ObjOrErr = object::SymbolicFile::createSymbolicFile(
|
||||
MemBufferRef, file_magic::bitcode, &Context)) {
|
||||
auto &IRObject = cast<object::IRObjectFile>(**ObjOrErr);
|
||||
return Triple(IRObject.getTargetTriple()).isOSDarwin()
|
||||
auto TargetTriple = Triple(IRObject.getTargetTriple());
|
||||
return TargetTriple.isOSDarwin()
|
||||
? object::Archive::K_DARWIN
|
||||
: object::Archive::K_GNU;
|
||||
: (TargetTriple.isOSAIX() ? object::Archive::K_AIXBIG
|
||||
: object::Archive::K_GNU);
|
||||
} else {
|
||||
// Squelch the error in case this was not a SymbolicFile.
|
||||
consumeError(ObjOrErr.takeError());
|
||||
|
||||
8
llvm/test/tools/llvm-ar/Inputs/aix-foo.ll
Normal file
8
llvm/test/tools/llvm-ar/Inputs/aix-foo.ll
Normal file
@@ -0,0 +1,8 @@
|
||||
target datalayout = "E-m:a-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512"
|
||||
target triple = "powerpc64-ibm-aix7.2.0.0"
|
||||
|
||||
define signext i32 @foo() {
|
||||
entry:
|
||||
ret i32 42
|
||||
}
|
||||
|
||||
7
llvm/test/tools/llvm-ar/aix-bitcode.test
Normal file
7
llvm/test/tools/llvm-ar/aix-bitcode.test
Normal file
@@ -0,0 +1,7 @@
|
||||
# Check if llvm-ar correctly archives bitcode files for AIX.
|
||||
# RUN: rm -rf %t && mkdir -p %t
|
||||
# RUN: llvm-as %S/Inputs/aix-foo.ll -o %t/aix-foo.bc
|
||||
# RUN: llvm-ar qc %t/aix-foo.a %t/aix-foo.bc
|
||||
# RUN: FileCheck %s --input-file=%t/aix-foo.a
|
||||
|
||||
# CHECK: bigaf
|
||||
Reference in New Issue
Block a user