xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/basic-archive-copy.test (revision 55c81d4282c5da0189711261a11537bc8a7fe85c)
1*55c81d42SFangrui Song# RUN: yaml2obj %s -o %t
26e4dc6f2SAlexander Shaposhnikov
36e4dc6f2SAlexander Shaposhnikov# RUN: rm -f %t.a
46e4dc6f2SAlexander Shaposhnikov# RUN: llvm-ar crs %t.a %t
56e4dc6f2SAlexander Shaposhnikov# RUN: cp %t.a %t.copy.a
66e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy %t.a %t2.a
76e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy %t %t2
86e4dc6f2SAlexander Shaposhnikov# RUN: llvm-ar p %t2.a > %t3
96e4dc6f2SAlexander Shaposhnikov# RUN: cmp %t2 %t3
106e4dc6f2SAlexander Shaposhnikov
11298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t2 | FileCheck %s
12298ea3f5SJordan Rupprecht# RUN: llvm-nm --print-armap %t.a | FileCheck --check-prefix=INDEX-TABLE %s
13298ea3f5SJordan Rupprecht# RUN: llvm-nm --print-armap %t2.a | FileCheck --check-prefix=INDEX-TABLE %s
146e4dc6f2SAlexander Shaposhnikov# Verify that llvm-objcopy has not modifed the input.
156e4dc6f2SAlexander Shaposhnikov# RUN: cmp %t.copy.a %t.a
166e4dc6f2SAlexander Shaposhnikov
176e4dc6f2SAlexander Shaposhnikov# INDEX-TABLE: Archive map
186e4dc6f2SAlexander Shaposhnikov# INDEX-TABLE-NEXT: foo in
196e4dc6f2SAlexander Shaposhnikov
206e4dc6f2SAlexander Shaposhnikov# RUN: rm -f %t.no.index.a
216e4dc6f2SAlexander Shaposhnikov# RUN: llvm-ar crS %t.no.index.a %t
226e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy %t.no.index.a %t2.no.index.a
236e4dc6f2SAlexander Shaposhnikov# RUN: llvm-ar p %t2.no.index.a > %t4
246e4dc6f2SAlexander Shaposhnikov
25298ea3f5SJordan Rupprecht# RUN: llvm-nm --print-armap %t.no.index.a | FileCheck --check-prefix=NO-INDEX-TABLE %s
26298ea3f5SJordan Rupprecht# RUN: llvm-nm --print-armap %t2.no.index.a | FileCheck --check-prefix=NO-INDEX-TABLE %s
276e4dc6f2SAlexander Shaposhnikov# RUN: cmp %t2 %t4
286e4dc6f2SAlexander Shaposhnikov
296e4dc6f2SAlexander Shaposhnikov# NO-INDEX-TABLE-NOT: Archive map
306e4dc6f2SAlexander Shaposhnikov# NO-INDEX-TABLE-NOT: foo in
316e4dc6f2SAlexander Shaposhnikov
326e4dc6f2SAlexander Shaposhnikov!ELF
336e4dc6f2SAlexander ShaposhnikovFileHeader:
346e4dc6f2SAlexander Shaposhnikov  Class:           ELFCLASS64
356e4dc6f2SAlexander Shaposhnikov  Data:            ELFDATA2LSB
366e4dc6f2SAlexander Shaposhnikov  Type:            ET_EXEC
376e4dc6f2SAlexander Shaposhnikov  Machine:         EM_X86_64
386e4dc6f2SAlexander ShaposhnikovSections:
396e4dc6f2SAlexander Shaposhnikov  - Name:            .bss
406e4dc6f2SAlexander Shaposhnikov    Type:            SHT_NOBITS
416e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC ]
426e4dc6f2SAlexander Shaposhnikov    AddressAlign:    0x0000000000000010
436e4dc6f2SAlexander Shaposhnikov    Size:            64
446e4dc6f2SAlexander Shaposhnikov  - Name:            .text
456e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
466e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
476e4dc6f2SAlexander Shaposhnikov    AddressAlign:    0x0000000000000010
486e4dc6f2SAlexander Shaposhnikov    Content:         "00000000"
496e4dc6f2SAlexander ShaposhnikovSymbols:
506e4dc6f2SAlexander Shaposhnikov  - Name:     foo
516e4dc6f2SAlexander Shaposhnikov    Type:     STT_FUNC
526e4dc6f2SAlexander Shaposhnikov    Section:  .text
536e4dc6f2SAlexander Shaposhnikov    Value:    0x1004
546da44ad7SGeorge Rimar    Binding:  STB_GLOBAL
556e4dc6f2SAlexander Shaposhnikov
566e4dc6f2SAlexander Shaposhnikov# CHECK: Type: SHT_NULL
576e4dc6f2SAlexander Shaposhnikov
586e4dc6f2SAlexander Shaposhnikov# CHECK:      Name: .bss
596e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_NOBITS
606e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [
616e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   SHF_ALLOC
626e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ]
636e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address:
646e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset:
656e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 64
666e4dc6f2SAlexander Shaposhnikov
676e4dc6f2SAlexander Shaposhnikov# CHECK:      Name: .text
686e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_PROGBITS
696e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [
706e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   SHF_ALLOC
716e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:   SHF_EXECINSTR
726e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ]
736e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address:
746e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset:
756e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 4
766e4dc6f2SAlexander Shaposhnikov
776e4dc6f2SAlexander Shaposhnikov# CHECK:      Name: .symtab
786e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_SYMTAB
796e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0)
806e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ]
816e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address:
826e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset:
836e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 48
846e4dc6f2SAlexander Shaposhnikov
856e4dc6f2SAlexander Shaposhnikov# CHECK:      Name: .strtab
866e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_STRTAB
876e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [ (0x0)
886e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ]
896e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address:
906e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset:
91faf308b1SGeorge Rimar# CHECK-NEXT: Size: 5
926e4dc6f2SAlexander Shaposhnikov
936e4dc6f2SAlexander Shaposhnikov# CHECK:      Name: .shstrtab
946e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Type: SHT_STRTAB
956e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Flags [
966e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: ]
976e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Address:
986e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Offset:
996e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT: Size: 38
100