| ## 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: <arbitrary>, EXIDX_CANTUNWIND in big-endian, |
| ## <arbitrary> and EXIDX_CANTUNWIND in little-endian. |
| Content: "AABBCCDD00000001EEFF889901000000" |
| Size: [[SIZE=<none>]] |
| |
| ## 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=<none>]] |
| Sections: |
| - Name: .ARM.exidx |
| Type: SHT_PROGBITS |
| ShType: 0x70000001 ## SHT_ARM_EXIDX |
| ## An arbitrary valid content. |
| Content: "AABBCCDD11223344" |