158 lines · plain
1# RUN: echo abcd > %t.txt2 3# RUN: llvm-objcopy -I binary -O elf64-littleaarch64 %t.txt %t.aarch64.o4# RUN: llvm-readobj --file-headers %t.aarch64.o | FileCheck %s --check-prefixes=CHECK,LE,AARCH64,645 6# RUN: llvm-objcopy -I binary -O elf32-littlearm %t.txt %t.arm.o7# RUN: llvm-readobj --file-headers %t.arm.o | FileCheck %s --check-prefixes=CHECK,LE,ARM,328 9# RUN: llvm-objcopy -I binary -O elf32-i386 %t.txt %t.i386.o10# RUN: llvm-readobj --file-headers %t.i386.o | FileCheck %s --check-prefixes=CHECK,LE,I386,3211 12# RUN: llvm-objcopy -I binary -O elf64-x86-64 %t.txt %t.x86-64.o13# RUN: llvm-readobj --file-headers %t.x86-64.o | FileCheck %s --check-prefixes=CHECK,LE,X86-64,6414 15# RUN: llvm-objcopy -I binary -O elf32-bigmips %t.txt %t.mips.o16# RUN: llvm-readobj --file-headers %t.mips.o | FileCheck %s --check-prefixes=CHECK,BE,MIPS,3217 18# RUN: llvm-objcopy -I binary -O elf32-powerpc %t.txt %t.ppc32be.o19# RUN: llvm-readobj --file-headers %t.ppc32be.o | FileCheck %s --check-prefixes=CHECK,BE,PPC32,PPC32BE,3220 21# RUN: llvm-objcopy -I binary -O elf32-powerpcle %t.txt %t.ppc32le.o22# RUN: llvm-readobj --file-headers %t.ppc32le.o | FileCheck %s --check-prefixes=CHECK,LE,PPC32,PPC32LE,3223 24# RUN: llvm-objcopy -I binary -O elf64-powerpc %t.txt %t.ppc64be.o25# RUN: llvm-readobj --file-headers %t.ppc64be.o | FileCheck %s --check-prefixes=CHECK,BE,PPC64,PPC64BE,6426 27# RUN: llvm-objcopy -I binary -O elf64-powerpcle %t.txt %t.ppc64le.o28# RUN: llvm-readobj --file-headers %t.ppc64le.o | FileCheck %s --check-prefixes=CHECK,LE,PPC64,PPC64LE,6429 30# RUN: llvm-objcopy -I binary -O elf32-littleriscv %t.txt %t.rv32.o31# RUN: llvm-readobj --file-headers %t.rv32.o | FileCheck %s --check-prefixes=CHECK,LE,RISCV32,3232 33# RUN: llvm-objcopy -I binary -O elf64-littleriscv %t.txt %t.rv64.o34# RUN: llvm-readobj --file-headers %t.rv64.o | FileCheck %s --check-prefixes=CHECK,LE,RISCV64,6435 36# RUN: llvm-objcopy -I binary -O elf32-bigriscv %t.txt %t.rv32.o37# RUN: llvm-readobj --file-headers %t.rv32.o | FileCheck %s --check-prefixes=CHECK,BE,RISCV32,3238 39# RUN: llvm-objcopy -I binary -O elf64-bigriscv %t.txt %t.rv64.o40# RUN: llvm-readobj --file-headers %t.rv64.o | FileCheck %s --check-prefixes=CHECK,BE,RISCV64,6441 42# RUN: llvm-objcopy -I binary -O elf32-sparc %t.txt %t.sparc.o43# RUN: llvm-readobj --file-headers %t.sparc.o | FileCheck %s --check-prefixes=CHECK,BE,SPARC,3244 45# RUN: llvm-objcopy -I binary -O elf32-sparcel %t.txt %t.sparcel.o46# RUN: llvm-readobj --file-headers %t.sparcel.o | FileCheck %s --check-prefixes=CHECK,LE,SPARCEL,3247 48# RUN: llvm-objcopy -I binary -O elf32-hexagon %t.txt %t.hexagon.o49# RUN: llvm-readobj --file-headers %t.hexagon.o | FileCheck %s --check-prefixes=CHECK,LE,HEXAGON,3250 51# RUN: llvm-objcopy -I binary -O elf32-loongarch %t.txt %t.la32.o52# RUN: llvm-readobj --file-headers %t.la32.o | FileCheck %s --check-prefixes=CHECK,LE,LA32,3253 54# RUN: llvm-objcopy -I binary -O elf64-loongarch %t.txt %t.la64.o55# RUN: llvm-readobj --file-headers %t.la64.o | FileCheck %s --check-prefixes=CHECK,LE,LA64,6456 57# RUN: llvm-objcopy -I binary -O elf64-s390 %t.txt %t.s390x.o58# RUN: llvm-readobj --file-headers %t.s390x.o | FileCheck %s --check-prefixes=CHECK,BE,S390X,6459 60# CHECK: Format:61# 32-SAME: elf32-62# 64-SAME: elf64-63# AARCH64-SAME: littleaarch6464# ARM-SAME: littlearm65# HEXAGON-SAME: hexagon66# I386-SAME: i38667# LA32-SAME: loongarch{{$}}68# LA64-SAME: loongarch{{$}}69# MIPS-SAME: mips{{$}}70# RISCV32-SAME: riscv{{$}}71# RISCV64-SAME: riscv{{$}}72# PPCBE-SAME: powerpc{{$}}73# PPCLE-SAME: powerpcle{{$}}74# SPARC-SAME: sparc75# SPARCEL-SAME: sparc76# S390X-SAME: s39077# X86-64-SAME: x86-6478 79# AARCH64-NEXT: Arch: aarch6480# ARM-NEXT: Arch: arm81# HEXAGON-NEXT: Arch: hexagon82# I386-NEXT: Arch: i38683# LA32-NEXT: Arch: loongarch3284# LA64-NEXT: Arch: loongarch6485# MIPS-NEXT: Arch: mips{{$}}86# PPC32BE-NEXT: Arch: powerpc{{$}}87# PPC32LE-NEXT: Arch: powerpcle{{$}}88# PPC64BE-NEXT: Arch: powerpc64{{$}}89# PPC64LE-NEXT: Arch: powerpc64le{{$}}90# RISCV32-NEXT: Arch: riscv3291# RISCV64-NEXT: Arch: riscv6492# SPARC-NEXT: Arch: sparc{{$}}93# SPARCEL-NEXT: Arch: sparcel94# S390X-NEXT: Arch: s390x95# X86-64-NEXT: Arch: x86_6496 97# 32-NEXT: AddressSize: 32bit98# 64-NEXT: AddressSize: 64bit99 100# CHECK: ElfHeader {101# CHECK-NEXT: Ident {102# CHECK-NEXT: Magic: (7F 45 4C 46)103# 32-NEXT: Class: 32-bit (0x1)104# 64-NEXT: Class: 64-bit (0x2)105# LE-NEXT: DataEncoding: LittleEndian (0x1)106# BE-NEXT: DataEncoding: BigEndian (0x2)107# CHECK-NEXT: FileVersion: 1108# CHECK-NEXT: OS/ABI: SystemV (0x0)109# CHECK-NEXT: ABIVersion: 0110# CHECK-NEXT: Unused: (00 00 00 00 00 00 00)111# CHECK-NEXT: }112# CHECK-NEXT: Type: Relocatable (0x1)113 114## In GNU objcopy, e_machine is EM_NONE unless -B is specifid.115## It is not very clear why it behaves this way.116## We fill in the field regardless of -B.117# AARCH64-NEXT: Machine: EM_AARCH64 (0xB7)118# ARM-NEXT: Machine: EM_ARM (0x28)119# HEXAGON-NEXT: Machine: EM_HEXAGON (0xA4)120# I386-NEXT: Machine: EM_386 (0x3)121# LA32-NEXT: Machine: EM_LOONGARCH (0x102)122# LA64-NEXT: Machine: EM_LOONGARCH (0x102)123# MIPS-NEXT: Machine: EM_MIPS (0x8)124# PPC32-NEXT: Machine: EM_PPC (0x14)125# PPC64-NEXT: Machine: EM_PPC64 (0x15)126# RISCV32-NEXT: Machine: EM_RISCV (0xF3)127# RISCV64-NEXT: Machine: EM_RISCV (0xF3)128# SPARC-NEXT: Machine: EM_SPARC (0x2)129# SPARCEL-NEXT: Machine: EM_SPARC (0x2)130# S390X-NEXT: Machine: EM_S390 (0x16)131# X86-64-NEXT: Machine: EM_X86_64 (0x3E)132 133# CHECK-NEXT: Version: 1134# CHECK-NEXT: Entry: 0x0135# CHECK-NEXT: ProgramHeaderOffset:136# CHECK-NEXT: SectionHeaderOffset:137# CHECK-NEXT: Flags [ (0x0)138# CHECK-NEXT: ]139# 32-NEXT: HeaderSize: 52140# 64-NEXT: HeaderSize: 64141# 32-NEXT: ProgramHeaderEntrySize: 0142# 64-NEXT: ProgramHeaderEntrySize: 0143# CHECK-NEXT: ProgramHeaderCount: 0144# 32-NEXT: SectionHeaderEntrySize: 40145# 64-NEXT: SectionHeaderEntrySize: 64146# CHECK-NEXT: SectionHeaderCount: 4147# CHECK-NEXT: StringTableSectionIndex:148# CHECK-NEXT: }149 150## ELFOSABI_NONE = ELFOSABI_SYSV = 0 is the default.151## "-freebsd" suffixed target name can change the field to ELFOSABI_FREEBSD.152 153## Many uses of objcopy use no spaces in the flags, make sure that also works.154# RUN: llvm-objcopy -Ibinary -O elf64-x86-64-freebsd %t.txt %t.freebsd.o155# RUN: llvm-readobj --file-headers %t.freebsd.o | FileCheck %s --check-prefixes=FREEBSD156 157# FREEBSD: OS/ABI: FreeBSD158