## Check how obj2yaml dumps the SHT_ARM_EXIDX section. ## For a valid section, obj2yaml emits the "Entries" key. ## This checks that we respect data endianness and recognize the ## EXIDX_CANTUNWIND (0x1) special value properly. # RUN: yaml2obj --docnum=1 -DENCODE=LSB %s -o %t.le.so # RUN: obj2yaml %t.le.so | FileCheck %s --check-prefix=LE # RUN: yaml2obj --docnum=1 -DENCODE=MSB %s -o %t.be.so # RUN: obj2yaml %t.be.so | FileCheck %s --check-prefix=BE # LE: - Name: .ARM.exidx # LE-NEXT: Type: SHT_ARM_EXIDX # LE-NEXT: Entries: # LE-NEXT: - Offset: 0xDDCCBBAA # LE-NEXT: Value: 0x1000000 # LE-NEXT: - Offset: 0x9988FFEE # LE-NEXT: Value: EXIDX_CANTUNWIND # LE-NEXT: ... # BE: - Name: .ARM.exidx # BE-NEXT: Type: SHT_ARM_EXIDX # BE-NEXT: Entries: # BE-NEXT: - Offset: 0xAABBCCDD # BE-NEXT: Value: EXIDX_CANTUNWIND # BE-NEXT: - Offset: 0xEEFF8899 # BE-NEXT: Value: 0x1000000 # BE-NEXT: ... --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2[[ENCODE=LSB]] Type: ET_DYN Machine: EM_ARM Sections: - Name: .ARM.exidx Type: SHT_ARM_EXIDX ## 4 words: , EXIDX_CANTUNWIND in big-endian, ## and EXIDX_CANTUNWIND in little-endian. Content: "AABBCCDD00000001EEFF889901000000" Size: [[SIZE=]] ## Check that we dump the content of a truncated SHT_ARM_EXIDX section ## using the "Content" key. # RUN: yaml2obj --docnum=1 -DSIZE=17 %s -o %t.invalid-size.so # RUN: obj2yaml %t.invalid-size.so | FileCheck %s --check-prefix=INVALID-SIZE # INVALID-SIZE: - Name: .ARM.exidx # INVALID-SIZE-NEXT: Type: SHT_ARM_EXIDX # INVALID-SIZE-NEXT: Content: AABBCCDD00000001EEFF88990100000000 # INVALID-SIZE-NEXT: ... ## Check how we dump an empty SHT_ARM_EXIDX section. # RUN: yaml2obj --docnum=2 %s -o %t.empty.so # RUN: obj2yaml %t.empty.so | FileCheck %s --check-prefix=EMPTY # EMPTY: - Name: .ARM.exidx # EMPTY-NEXT: Type: SHT_ARM_EXIDX # EMPTY-NEXT: Entries: [] # EMPTY-NEXT: ... --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Machine: EM_ARM Sections: - Name: .ARM.exidx Type: SHT_ARM_EXIDX ## Check how we dump the SHT_ARM_EXIDX (0x70000001) section when ## the machine type is not EM_ARM. It is dumped as a regular ## section of an unknown type. # RUN: yaml2obj --docnum=3 %s -o %t.not-arm.so # RUN: obj2yaml %t.not-arm.so | FileCheck %s --check-prefix=NOT-ARM # RUN: yaml2obj --docnum=3 -DMACHINE=EM_ARM %s -o %t.arm.so # RUN: obj2yaml %t.arm.so | FileCheck %s --check-prefix=ARM # NOT-ARM: Sections: # NOT-ARM-NEXT: - Name: .ARM.exidx # NOT-ARM-NEXT: Type: 0x70000001 # NOT-ARM-NEXT: Content: AABBCCDD11223344 # NOT-ARM-NEXT: ... # ARM: - Name: .ARM.exidx # ARM-NEXT: Type: SHT_ARM_EXIDX # ARM-NEXT: Entries: # ARM-NEXT: - Offset: 0xDDCCBBAA # ARM-NEXT: Value: 0x44332211 # ARM-NEXT: ... --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Machine: [[MACHINE=]] Sections: - Name: .ARM.exidx Type: SHT_PROGBITS ShType: 0x70000001 ## SHT_ARM_EXIDX ## An arbitrary valid content. Content: "AABBCCDD11223344"