Skip to content

Commit 3c02cb7

Browse files
authored
[llvm-objcopy] Add SystemZ support (#81841)
This is also necessary for enabling ClangBuiltLinux: ClangBuiltLinux/linux#1530
1 parent 8c20337 commit 3c02cb7

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test

+6
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@
4848
# RUN: llvm-objcopy -I binary -O elf64-loongarch %t.txt %t.la64.o
4949
# RUN: llvm-readobj --file-headers %t.la64.o | FileCheck %s --check-prefixes=CHECK,LE,LA64,64
5050

51+
# RUN: llvm-objcopy -I binary -O elf64-s390 %t.txt %t.s390x.o
52+
# RUN: llvm-readobj --file-headers %t.s390x.o | FileCheck %s --check-prefixes=CHECK,BE,S390X,64
53+
5154
# CHECK: Format:
5255
# 32-SAME: elf32-
5356
# 64-SAME: elf64-
@@ -64,6 +67,7 @@
6467
# PPCLE-SAME: powerpcle{{$}}
6568
# SPARC-SAME: sparc
6669
# SPARCEL-SAME: sparc
70+
# S390X-SAME: s390
6771
# X86-64-SAME: x86-64
6872

6973
# AARCH64-NEXT: Arch: aarch64
@@ -81,6 +85,7 @@
8185
# RISCV64-NEXT: Arch: riscv64
8286
# SPARC-NEXT: Arch: sparc{{$}}
8387
# SPARCEL-NEXT: Arch: sparcel
88+
# S390X-NEXT: Arch: s390x
8489
# X86-64-NEXT: Arch: x86_64
8590

8691
# 32-NEXT: AddressSize: 32bit
@@ -116,6 +121,7 @@
116121
# RISCV64-NEXT: Machine: EM_RISCV (0xF3)
117122
# SPARC-NEXT: Machine: EM_SPARC (0x2)
118123
# SPARCEL-NEXT: Machine: EM_SPARC (0x2)
124+
# S390X-NEXT: Machine: EM_S390 (0x16)
119125
# X86-64-NEXT: Machine: EM_X86_64 (0x3E)
120126

121127
# CHECK-NEXT: Version: 1

llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test

+7
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@
117117
# RUN: llvm-readobj --file-headers %t.elf64_loongarch.o | FileCheck %s --check-prefixes=CHECK,LE,LA64,64,SYSV
118118
# RUN: llvm-readobj --file-headers %t.elf64_loongarch.dwo | FileCheck %s --check-prefixes=CHECK,LE,LA64,64,SYSV
119119

120+
# RUN: llvm-objcopy %t.o -O elf64-s390 %t.elf64_s390.o --split-dwo=%t.elf64_s390.dwo
121+
# RUN: llvm-readobj --file-headers %t.elf64_s390.o | FileCheck %s --check-prefixes=CHECK,BE,S390X,64,SYSV
122+
# RUN: llvm-readobj --file-headers %t.elf64_s390.dwo | FileCheck %s --check-prefixes=CHECK,BE,S390X,64,SYSV
123+
120124
!ELF
121125
FileHeader:
122126
Class: ELFCLASS32
@@ -160,6 +164,7 @@ Symbols:
160164
# RISCV32-SAME: riscv{{$}}
161165
# RISCV64-SAME: riscv{{$}}
162166
# SPARC-SAME: sparc
167+
# S390X-SAME: s390
163168
# X86-64-SAME: x86-64
164169
# DEFAULT-SAME: unknown
165170

@@ -182,6 +187,7 @@ Symbols:
182187
# RISCV64-NEXT: Arch: riscv64
183188
# SPARC-NEXT: Arch: sparc{{$}}
184189
# SPARCEL-NEXT: Arch: sparcel
190+
# S390X-NEXT: Arch: s390x
185191
# X86-64-NEXT: Arch: x86_64
186192
# DEFAULT-NEXT: Arch: unknown
187193

@@ -210,6 +216,7 @@ Symbols:
210216
# RISCV32: Machine: EM_RISCV (0xF3)
211217
# RISCV64: Machine: EM_RISCV (0xF3)
212218
# SPARC: Machine: EM_SPARC (0x2)
219+
# S390X: Machine: EM_S390 (0x16)
213220
# X86-64: Machine: EM_X86_64 (0x3E)
214221

215222
# 32: HeaderSize: 52

llvm/tools/llvm-objcopy/ObjcopyOptions.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,8 @@ static const StringMap<MachineInfo> TargetMap{
299299
// LoongArch
300300
{"elf32-loongarch", {ELF::EM_LOONGARCH, false, true}},
301301
{"elf64-loongarch", {ELF::EM_LOONGARCH, true, true}},
302+
// SystemZ
303+
{"elf64-s390", {ELF::EM_S390, true, false}},
302304
};
303305

304306
static Expected<TargetInfo>

0 commit comments

Comments
 (0)