xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/rename-section-flag-preserved.test (revision 1562e4552cd1b3d2eadd956c966f8a60e928b8ca)
155c81d42SFangrui Song# RUN: yaml2obj %s -o %t
26e4dc6f2SAlexander Shaposhnikov
36e4dc6f2SAlexander Shaposhnikov# Single flags on a section with all flags:
46e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,alloc %t %t.alloc
5298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.alloc | FileCheck %s --check-prefixes=CHECK,ALLOC,WRITE
66e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,load %t %t.load
7298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.load | FileCheck %s --check-prefixes=CHECK,WRITE
86e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,noload %t %t.noload
9298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.noload | FileCheck %s --check-prefixes=CHECK,WRITE
106e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,readonly %t %t.readonly
11298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.readonly | FileCheck %s --check-prefixes=CHECK
126e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,debug %t %t.debug
13298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.debug | FileCheck %s --check-prefixes=CHECK,WRITE
146e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,code %t %t.code
15298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.code | FileCheck %s --check-prefixes=CHECK,EXEC,WRITE
166e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,data %t %t.data
17298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.data | FileCheck %s --check-prefixes=CHECK,WRITE
186e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,rom %t %t.rom
19298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.rom | FileCheck %s --check-prefixes=CHECK,WRITE
206e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,contents %t %t.contents
21298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.contents | FileCheck %s --check-prefixes=CHECK,WRITE
226e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,merge %t %t.merge
23298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.merge | FileCheck %s --check-prefixes=CHECK,MERGE,WRITE
246e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,strings %t %t.strings
25298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.strings | FileCheck %s --check-prefixes=CHECK,STRINGS,WRITE
266e4dc6f2SAlexander Shaposhnikov# RUN: llvm-objcopy --rename-section=.foo=.bar,share %t %t.share
27298ea3f5SJordan Rupprecht# RUN: llvm-readobj --sections %t.share | FileCheck %s --check-prefixes=CHECK,WRITE
28e446322fSSergey Dmitriev# RUN: llvm-objcopy --rename-section=.foo=.bar,exclude %t %t.exclude
29e446322fSSergey Dmitriev# RUN: llvm-readobj --sections %t.exclude | FileCheck %s --check-prefixes=CHECK,WRITE,EXCLUDE
306e4dc6f2SAlexander Shaposhnikov
31*1562e455SJames Henderson## Show that if no flags are specified, all existing flags are preserved.
32*1562e455SJames Henderson## Note: GNU objcopy does not preserve the SHF_OS_NONCONFORMING flag.
33*1562e455SJames Henderson# RUN: llvm-objcopy --rename-section=.foo=.bar %t %t.none
34*1562e455SJames Henderson# RUN: llvm-readobj --sections %t.none | FileCheck %s --check-prefixes=CHECK,ALLOC,EXCLUDE,EXEC,MERGE,NONCONFORMING,STRINGS,WRITE
35*1562e455SJames Henderson
366e4dc6f2SAlexander Shaposhnikov!ELF
376e4dc6f2SAlexander ShaposhnikovFileHeader:
386e4dc6f2SAlexander Shaposhnikov  Class:           ELFCLASS64
396e4dc6f2SAlexander Shaposhnikov  Data:            ELFDATA2LSB
406e4dc6f2SAlexander Shaposhnikov  Type:            ET_REL
416e4dc6f2SAlexander Shaposhnikov  Machine:         EM_X86_64
426e4dc6f2SAlexander ShaposhnikovSections:
436e4dc6f2SAlexander Shaposhnikov  - Name:            .infolink
446e4dc6f2SAlexander Shaposhnikov    Type:            SHT_NOBITS
456e4dc6f2SAlexander Shaposhnikov  - Name:            .group
466e4dc6f2SAlexander Shaposhnikov    Type:            SHT_GROUP
476e4dc6f2SAlexander Shaposhnikov    Link:            .symtab
486e4dc6f2SAlexander Shaposhnikov    Flags:           [ ]
496e4dc6f2SAlexander Shaposhnikov    Info:            dummy
506e4dc6f2SAlexander Shaposhnikov    Members:
516e4dc6f2SAlexander Shaposhnikov      - SectionOrType: GRP_COMDAT
526e4dc6f2SAlexander Shaposhnikov      - SectionOrType: .foo
536e4dc6f2SAlexander Shaposhnikov  - Name:            .foo
546e4dc6f2SAlexander Shaposhnikov    Type:            SHT_PROGBITS
556e4dc6f2SAlexander Shaposhnikov    Link:            .infolink
566e4dc6f2SAlexander Shaposhnikov    Flags:           [ SHF_ALLOC, SHF_COMPRESSED, SHF_EXCLUDE, SHF_EXECINSTR,
576e4dc6f2SAlexander Shaposhnikov                       SHF_GROUP, SHF_INFO_LINK, SHF_LINK_ORDER, SHF_MERGE,
586e4dc6f2SAlexander Shaposhnikov                       SHF_OS_NONCONFORMING, SHF_STRINGS, SHF_TLS, SHF_WRITE ]
596e4dc6f2SAlexander Shaposhnikov    Content:        "a4a4a4a4"
606e4dc6f2SAlexander ShaposhnikovSymbols:
616e4dc6f2SAlexander Shaposhnikov  - Name:            dummy
626e4dc6f2SAlexander Shaposhnikov    Section:         .group
636e4dc6f2SAlexander Shaposhnikov
646e4dc6f2SAlexander Shaposhnikov# CHECK:              Name: .bar
656e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:         Type: SHT_PROGBITS
666e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:         Flags [
676e4dc6f2SAlexander Shaposhnikov# ALLOC-NEXT:           SHF_ALLOC (0x2)
686e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:           SHF_COMPRESSED (0x800)
69e446322fSSergey Dmitriev# EXCLUDE-NEXT:         SHF_EXCLUDE (0x80000000)
706e4dc6f2SAlexander Shaposhnikov# EXEC-NEXT:            SHF_EXECINSTR (0x4)
716e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:           SHF_GROUP (0x200)
726e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:           SHF_INFO_LINK (0x40)
736e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:           SHF_LINK_ORDER (0x80)
746e4dc6f2SAlexander Shaposhnikov# MERGE-NEXT:           SHF_MERGE (0x10)
75*1562e455SJames Henderson# NONCONFORMING-NEXT:   SHF_OS_NONCONFORMING (0x100)
766e4dc6f2SAlexander Shaposhnikov# STRINGS-NEXT:         SHF_STRINGS (0x20)
776e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:           SHF_TLS (0x400)
786e4dc6f2SAlexander Shaposhnikov# WRITE-NEXT:           SHF_WRITE (0x1)
796e4dc6f2SAlexander Shaposhnikov# CHECK-NEXT:         ]
80