| ## Check how obj2yaml dumps the SHT_LLVM_ADDRSIG section. |
| |
| ## Check that when possible obj2yaml tries to produce the "Name" tag when |
| ## dumping entries of the SHT_LLVM_ADDRSIG section. It falls back to producing |
| ## the "Index" tag when it can't match a symbol index with a symbol table entry. |
| |
| # RUN: yaml2obj --docnum=1 %s -o %t1 |
| # RUN: obj2yaml %t1 | FileCheck %s --check-prefix=NAME |
| |
| # NAME: - Name: .llvm_addrsig |
| # NAME-NEXT: Type: SHT_LLVM_ADDRSIG |
| # NAME-NEXT: Link: .symtab |
| # NAME-NEXT: Symbols: |
| # NAME-NEXT: - Name: foo |
| # NAME-NEXT: - Name: bar |
| # NAME-NEXT: - Index: 0x00000003 |
| # NAME-NEXT: - Index: 0xFFFFFFFF |
| # NAME: - Name: .llvm_addrsig_unlinked |
| # NAME-NEXT: Type: SHT_LLVM_ADDRSIG |
| # NAME-NEXT: Symbols: |
| # NAME-NEXT: - Index: 0x00000001 |
| # NAME-NEXT: - Index: 0x00000002 |
| # NAME-NEXT: - Index: 0x00000003 |
| # NAME-NEXT: - Index: 0xFFFFFFFF |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .llvm_addrsig |
| Type: SHT_LLVM_ADDRSIG |
| Symbols: |
| - Index: 1 |
| - Index: 2 |
| - Index: 3 |
| - Index: 0xFFFFFFFF |
| - Name: .llvm_addrsig_unlinked |
| Type: SHT_LLVM_ADDRSIG |
| Link: 0 |
| Symbols: |
| - Index: 1 |
| - Index: 2 |
| - Index: 3 |
| - Index: 0xFFFFFFFF |
| Symbols: |
| - Name: foo |
| Type: STT_FUNC |
| Binding: STB_GLOBAL |
| - Name: bar |
| Type: STT_FUNC |
| Binding: STB_GLOBAL |
| |
| ## Check that obj2yaml dumps the SHT_LLVM_ADDRSIG section |
| ## data using the "Content" tag when at least one of the entries is broken, |
| ## e.g. because the entry contains a malformed uleb128 value. |
| |
| # RUN: yaml2obj --docnum=2 %s -o %t2 |
| # RUN: obj2yaml %t2 | FileCheck %s --check-prefix=INVALID-ENTRY |
| |
| # INVALID-ENTRY: - Name: .llvm_addrsig |
| # INVALID-ENTRY-NEXT: Type: SHT_LLVM_ADDRSIG |
| # INVALID-ENTRY-NEXT: Link: .symtab |
| # INVALID-ENTRY-NEXT: Content: FFFFFFFFFF |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .llvm_addrsig |
| Type: SHT_LLVM_ADDRSIG |
| Content: "FFFFFFFFFF" |
| |
| ## obj2yaml produces a "Symbols" tag when describing an empty SHT_LLVM_ADDRSIG section. |
| |
| # RUN: yaml2obj --docnum=3 %s -o %t3 |
| # RUN: obj2yaml %t3 | FileCheck %s --check-prefix=EMPTY |
| |
| # EMPTY: - Name: .llvm_addrsig |
| # EMPTY-NEXT: Type: SHT_LLVM_ADDRSIG |
| # EMPTY-NEXT: Link: .symtab |
| # EMPTY-NEXT: Symbols: [] |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .llvm_addrsig |
| Type: SHT_LLVM_ADDRSIG |
| Content: "" |