Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 1 | # RUN: echo abcd > %t.txt |
| 2 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 3 | # RUN: llvm-objcopy -I binary -O elf64-littleaarch64 %t.txt %t.aarch64.o |
Jordan Rupprecht | 2b32902 | 2019-04-18 14:22:37 +0000 | [diff] [blame] | 4 | # RUN: llvm-readobj --file-headers %t.aarch64.o | FileCheck %s --check-prefixes=CHECK,LE,AARCH64,64 |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 5 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 6 | # RUN: llvm-objcopy -I binary -O elf32-littlearm %t.txt %t.arm.o |
Jordan Rupprecht | 2b32902 | 2019-04-18 14:22:37 +0000 | [diff] [blame] | 7 | # RUN: llvm-readobj --file-headers %t.arm.o | FileCheck %s --check-prefixes=CHECK,LE,ARM,32 |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 8 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 9 | # RUN: llvm-objcopy -I binary -O elf32-i386 %t.txt %t.i386.o |
Jordan Rupprecht | 2b32902 | 2019-04-18 14:22:37 +0000 | [diff] [blame] | 10 | # RUN: llvm-readobj --file-headers %t.i386.o | FileCheck %s --check-prefixes=CHECK,LE,I386,32 |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 11 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 12 | # RUN: llvm-objcopy -I binary -O elf64-x86-64 %t.txt %t.x86-64.o |
| 13 | # RUN: llvm-readobj --file-headers %t.x86-64.o | FileCheck %s --check-prefixes=CHECK,LE,X86-64,64 |
Jordan Rupprecht | 2b32902 | 2019-04-18 14:22:37 +0000 | [diff] [blame] | 14 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 15 | # RUN: llvm-objcopy -I binary -O elf32-bigmips %t.txt %t.mips.o |
Jordan Rupprecht | 2b32902 | 2019-04-18 14:22:37 +0000 | [diff] [blame] | 16 | # RUN: llvm-readobj --file-headers %t.mips.o | FileCheck %s --check-prefixes=CHECK,BE,MIPS,32 |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 17 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 18 | # RUN: llvm-objcopy -I binary -O elf64-powerpcle %t.txt %t.ppc64le.o |
| 19 | # RUN: llvm-readobj --file-headers %t.ppc64le.o | FileCheck %s --check-prefixes=CHECK,LE,PPC64,64 |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 20 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 21 | # RUN: llvm-objcopy -I binary -O elf32-littleriscv %t.txt %t.rv32.o |
Jordan Rupprecht | 96bbb1d | 2019-04-30 15:21:36 +0000 | [diff] [blame] | 22 | # RUN: llvm-readobj --file-headers %t.rv32.o | FileCheck %s --check-prefixes=CHECK,LE,RISCV32,32 |
| 23 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 24 | # RUN: llvm-objcopy -I binary -O elf64-littleriscv %t.txt %t.rv64.o |
Jordan Rupprecht | 96bbb1d | 2019-04-30 15:21:36 +0000 | [diff] [blame] | 25 | # RUN: llvm-readobj --file-headers %t.rv64.o | FileCheck %s --check-prefixes=CHECK,LE,RISCV64,64 |
| 26 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 27 | # RUN: llvm-objcopy -I binary -O elf32-sparc %t.txt %t.sparc.o |
Seiya Nuta | b1027a4 | 2019-06-13 23:24:12 +0000 | [diff] [blame] | 28 | # RUN: llvm-readobj --file-headers %t.sparc.o | FileCheck %s --check-prefixes=CHECK,BE,SPARC,32 |
| 29 | |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 30 | # RUN: llvm-objcopy -I binary -O elf32-sparcel %t.txt %t.sparcel.o |
Seiya Nuta | b1027a4 | 2019-06-13 23:24:12 +0000 | [diff] [blame] | 31 | # RUN: llvm-readobj --file-headers %t.sparcel.o | FileCheck %s --check-prefixes=CHECK,LE,SPARCEL,32 |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 32 | |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 33 | # CHECK: Format: |
Jordan Rupprecht | 96bbb1d | 2019-04-30 15:21:36 +0000 | [diff] [blame] | 34 | # 32-SAME: ELF32- |
| 35 | # 64-SAME: ELF64- |
| 36 | # AARCH64-SAME: aarch64-little |
| 37 | # ARM-SAME: arm-little |
| 38 | # I386-SAME: i386 |
| 39 | # MIPS-SAME: mips{{$}} |
| 40 | # RISCV32-SAME: riscv{{$}} |
| 41 | # RISCV64-SAME: riscv{{$}} |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 42 | # PPC-SAME: ppc{{$}} |
| 43 | # PPC64le-SAME: ppc64 |
Jordan Rupprecht | 96bbb1d | 2019-04-30 15:21:36 +0000 | [diff] [blame] | 44 | # SPARC-SAME: sparc |
Seiya Nuta | b1027a4 | 2019-06-13 23:24:12 +0000 | [diff] [blame] | 45 | # SPARCEL-SAME: sparc |
Jordan Rupprecht | 96bbb1d | 2019-04-30 15:21:36 +0000 | [diff] [blame] | 46 | # X86-64-SAME: x86-64 |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 47 | |
| 48 | # AARCH64-NEXT: Arch: aarch64 |
| 49 | # ARM-NEXT: Arch: arm |
| 50 | # I386-NEXT: Arch: i386 |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 51 | # MIPS-NEXT: Arch: mips{{$}} |
| 52 | # PPC-NEXT: Arch: powerpc{{$}} |
| 53 | # PPC64-NEXT: Arch: powerpc64le |
Jordan Rupprecht | 96bbb1d | 2019-04-30 15:21:36 +0000 | [diff] [blame] | 54 | # RISCV32-NEXT: Arch: riscv32 |
| 55 | # RISCV64-NEXT: Arch: riscv64 |
Seiya Nuta | b1027a4 | 2019-06-13 23:24:12 +0000 | [diff] [blame] | 56 | # SPARC-NEXT: Arch: sparc{{$}} |
| 57 | # SPARCEL-NEXT: Arch: sparcel |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 58 | # X86-64-NEXT: Arch: x86_64 |
| 59 | |
| 60 | # 32-NEXT: AddressSize: 32bit |
| 61 | # 64-NEXT: AddressSize: 64bit |
| 62 | |
| 63 | # CHECK: ElfHeader { |
| 64 | # CHECK-NEXT: Ident { |
| 65 | # CHECK-NEXT: Magic: (7F 45 4C 46) |
| 66 | # 32-NEXT: Class: 32-bit (0x1) |
| 67 | # 64-NEXT: Class: 64-bit (0x2) |
Jordan Rupprecht | 2b32902 | 2019-04-18 14:22:37 +0000 | [diff] [blame] | 68 | # LE-NEXT: DataEncoding: LittleEndian (0x1) |
| 69 | # BE-NEXT: DataEncoding: BigEndian (0x2) |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 70 | # CHECK-NEXT: FileVersion: 1 |
| 71 | # CHECK-NEXT: OS/ABI: SystemV (0x0) |
| 72 | # CHECK-NEXT: ABIVersion: 0 |
| 73 | # CHECK-NEXT: Unused: (00 00 00 00 00 00 00) |
| 74 | # CHECK-NEXT: } |
| 75 | # CHECK-NEXT: Type: Relocatable (0x1) |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 76 | |
| 77 | ## In GNU objcopy, e_machine is EM_NONE unless -B is specifid. |
| 78 | ## It is not very clear why it behaves this way. |
| 79 | ## We fill in the field regardless of -B. |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 80 | # AARCH64-NEXT: Machine: EM_AARCH64 (0xB7) |
| 81 | # ARM-NEXT: Machine: EM_ARM (0x28) |
| 82 | # I386-NEXT: Machine: EM_386 (0x3) |
Jordan Rupprecht | 2b32902 | 2019-04-18 14:22:37 +0000 | [diff] [blame] | 83 | # MIPS-NEXT: Machine: EM_MIPS (0x8) |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 84 | # PPC-NEXT: Machine: EM_PPC (0x14) |
| 85 | # PPC64-NEXT: Machine: EM_PPC64 (0x15) |
Jordan Rupprecht | 96bbb1d | 2019-04-30 15:21:36 +0000 | [diff] [blame] | 86 | # RISCV32-NEXT: Machine: EM_RISCV (0xF3) |
| 87 | # RISCV64-NEXT: Machine: EM_RISCV (0xF3) |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 88 | # SPARC-NEXT: Machine: EM_SPARC (0x2) |
Seiya Nuta | b1027a4 | 2019-06-13 23:24:12 +0000 | [diff] [blame] | 89 | # SPARCEL-NEXT: Machine: EM_SPARC (0x2) |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 90 | # X86-64-NEXT: Machine: EM_X86_64 (0x3E) |
Fangrui Song | ba53030 | 2019-09-14 01:36:16 +0000 | [diff] [blame] | 91 | |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 92 | # CHECK-NEXT: Version: 1 |
| 93 | # CHECK-NEXT: Entry: 0x0 |
| 94 | # CHECK-NEXT: ProgramHeaderOffset: |
| 95 | # CHECK-NEXT: SectionHeaderOffset: |
| 96 | # CHECK-NEXT: Flags [ (0x0) |
| 97 | # CHECK-NEXT: ] |
| 98 | # 32-NEXT: HeaderSize: 52 |
| 99 | # 64-NEXT: HeaderSize: 64 |
Julie Hockett | 468722e | 2018-09-12 17:56:31 +0000 | [diff] [blame] | 100 | # 32-NEXT: ProgramHeaderEntrySize: 0 |
| 101 | # 64-NEXT: ProgramHeaderEntrySize: 0 |
Jordan Rupprecht | cf67633 | 2018-08-17 18:51:11 +0000 | [diff] [blame] | 102 | # CHECK-NEXT: ProgramHeaderCount: 0 |
| 103 | # 32-NEXT: SectionHeaderEntrySize: 40 |
| 104 | # 64-NEXT: SectionHeaderEntrySize: 64 |
| 105 | # CHECK-NEXT: SectionHeaderCount: 4 |
| 106 | # CHECK-NEXT: StringTableSectionIndex: |
| 107 | # CHECK-NEXT: } |
Fangrui Song | f2bbfa0 | 2019-09-25 03:41:01 +0000 | [diff] [blame] | 108 | |
| 109 | ## ELFOSABI_NONE = ELFOSABI_SYSV = 0 is the default. |
| 110 | ## "-freebsd" suffixed target name can change the field to ELFOSABI_FREEBSD. |
| 111 | |
| 112 | ## Many uses of objcopy use no spaces in the flags, make sure that also works. |
| 113 | # RUN: llvm-objcopy -Ibinary -O elf64-x86-64-freebsd %t.txt %t.freebsd.o |
| 114 | # RUN: llvm-readobj --file-headers %t.freebsd.o | FileCheck %s --check-prefixes=FREEBSD |
| 115 | |
| 116 | # FREEBSD: OS/ABI: FreeBSD |