-
Notifications
You must be signed in to change notification settings - Fork 12.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
release/18.x: [llvm-objcopy] Add SystemZ support (#81841) #82324
Conversation
@jh7370 What do you think about merging this PR to the release branch? |
@llvm/pr-subscribers-llvm-binary-utilities Author: None (llvmbot) ChangesBackport 3c02cb7 Requested by: @uweigand Full diff: https://github.com/llvm/llvm-project/pull/82324.diff 3 Files Affected:
diff --git a/llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test b/llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test
index fc5856691f8dca..f88b7575002a94 100644
--- a/llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test
+++ b/llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test
@@ -48,6 +48,9 @@
# RUN: llvm-objcopy -I binary -O elf64-loongarch %t.txt %t.la64.o
# RUN: llvm-readobj --file-headers %t.la64.o | FileCheck %s --check-prefixes=CHECK,LE,LA64,64
+# RUN: llvm-objcopy -I binary -O elf64-s390 %t.txt %t.s390x.o
+# RUN: llvm-readobj --file-headers %t.s390x.o | FileCheck %s --check-prefixes=CHECK,BE,S390X,64
+
# CHECK: Format:
# 32-SAME: elf32-
# 64-SAME: elf64-
@@ -64,6 +67,7 @@
# PPCLE-SAME: powerpcle{{$}}
# SPARC-SAME: sparc
# SPARCEL-SAME: sparc
+# S390X-SAME: s390
# X86-64-SAME: x86-64
# AARCH64-NEXT: Arch: aarch64
@@ -81,6 +85,7 @@
# RISCV64-NEXT: Arch: riscv64
# SPARC-NEXT: Arch: sparc{{$}}
# SPARCEL-NEXT: Arch: sparcel
+# S390X-NEXT: Arch: s390x
# X86-64-NEXT: Arch: x86_64
# 32-NEXT: AddressSize: 32bit
@@ -116,6 +121,7 @@
# RISCV64-NEXT: Machine: EM_RISCV (0xF3)
# SPARC-NEXT: Machine: EM_SPARC (0x2)
# SPARCEL-NEXT: Machine: EM_SPARC (0x2)
+# S390X-NEXT: Machine: EM_S390 (0x16)
# X86-64-NEXT: Machine: EM_X86_64 (0x3E)
# CHECK-NEXT: Version: 1
diff --git a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
index 882940c05e19c2..9a8128611792d5 100644
--- a/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+++ b/llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
@@ -117,6 +117,10 @@
# RUN: llvm-readobj --file-headers %t.elf64_loongarch.o | FileCheck %s --check-prefixes=CHECK,LE,LA64,64,SYSV
# RUN: llvm-readobj --file-headers %t.elf64_loongarch.dwo | FileCheck %s --check-prefixes=CHECK,LE,LA64,64,SYSV
+# RUN: llvm-objcopy %t.o -O elf64-s390 %t.elf64_s390.o --split-dwo=%t.elf64_s390.dwo
+# RUN: llvm-readobj --file-headers %t.elf64_s390.o | FileCheck %s --check-prefixes=CHECK,BE,S390X,64,SYSV
+# RUN: llvm-readobj --file-headers %t.elf64_s390.dwo | FileCheck %s --check-prefixes=CHECK,BE,S390X,64,SYSV
+
!ELF
FileHeader:
Class: ELFCLASS32
@@ -160,6 +164,7 @@ Symbols:
# RISCV32-SAME: riscv{{$}}
# RISCV64-SAME: riscv{{$}}
# SPARC-SAME: sparc
+# S390X-SAME: s390
# X86-64-SAME: x86-64
# DEFAULT-SAME: unknown
@@ -182,6 +187,7 @@ Symbols:
# RISCV64-NEXT: Arch: riscv64
# SPARC-NEXT: Arch: sparc{{$}}
# SPARCEL-NEXT: Arch: sparcel
+# S390X-NEXT: Arch: s390x
# X86-64-NEXT: Arch: x86_64
# DEFAULT-NEXT: Arch: unknown
@@ -210,6 +216,7 @@ Symbols:
# RISCV32: Machine: EM_RISCV (0xF3)
# RISCV64: Machine: EM_RISCV (0xF3)
# SPARC: Machine: EM_SPARC (0x2)
+# S390X: Machine: EM_S390 (0x16)
# X86-64: Machine: EM_X86_64 (0x3E)
# 32: HeaderSize: 52
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
index f15307181fad61..f63e5c61e802c8 100644
--- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
+++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
@@ -299,6 +299,8 @@ static const StringMap<MachineInfo> TargetMap{
// LoongArch
{"elf32-loongarch", {ELF::EM_LOONGARCH, false, true}},
{"elf64-loongarch", {ELF::EM_LOONGARCH, true, true}},
+ // SystemZ
+ {"elf64-s390", {ELF::EM_S390, true, false}},
};
static Expected<TargetInfo>
|
Functionally, I'm confident this is safe, but I don't know whether it's too late in the cycle to be picking additional non-bug fix commits. @tstellar? Also, as noted in the original PR, the corresponding doc change needs picking too. |
I'll add a cherry-pick for the doc PR if and when this PR is approved. |
@MaskRay What do you think about this? |
This is fairly safe to cherry pick and it will help ClangBuiltLinux and users who want to use llvm-objcopy on Linux s390x. I'm in favor of merging this PR if there is still time. |
This is also necessary for enabling ClangBuiltLinux: ClangBuiltLinux/linux#1530 (cherry picked from commit 3c02cb7)
|
Backport 3c02cb7
Requested by: @uweigand