| ## Show the disassembly behaviour when dynamic symbols are present. |
| # RUN: yaml2obj %s -o %t |
| |
| ## Case 1: Both static and dynamic symbols are present. Only static |
| ## symbols are displayed. |
| # RUN: llvm-objdump -d %t | FileCheck %s --check-prefixes=CHECK,STATIC |
| |
| ## Case 2: Only the dynamic symbols are present. These should be displayed, if |
| ## they meet the necessary criteria. |
| # RUN: llvm-objcopy --strip-all %t %t2 |
| # RUN: llvm-objdump -d %t2 | FileCheck %s --check-prefixes=CHECK,DYN |
| |
| # CHECK: Disassembly of section .text: |
| # CHECK-EMPTY: |
| # STATIC-NEXT: 0000000000001000 <.text>: |
| # DYN-NEXT: 0000000000001000 <only_dyn>: |
| # CHECK-NEXT: 1000: |
| # CHECK-EMPTY: |
| # STATIC-NEXT: 0000000000001001 <both_static>: |
| # DYN-NEXT: 0000000000001001 <both_dyn>: |
| # CHECK-NEXT: 1001: |
| # STATIC-EMPTY: |
| # STATIC-NEXT: 0000000000001002 <only_static>: |
| # CHECK-NEXT: 1002: |
| # DYN-EMPTY: |
| # DYN-NEXT: 0000000000001003 <object>: |
| # CHECK-NEXT: 1003: |
| # DYN-EMPTY: |
| # DYN-NEXT: 0000000000001004 <zero_sized>: |
| # CHECK-NEXT: 1004: |
| # DYN-EMPTY: |
| # DYN-NEXT: 0000000000001005 <common>: |
| # CHECK-NEXT: 1005: |
| # DYN-EMPTY: |
| # DYN-NEXT: 0000000000001006 <loos>: |
| # CHECK-NEXT: 1006: |
| # DYN-EMPTY: |
| # DYN-NEXT: 0000000000001007 <loproc>: |
| # CHECK-NEXT: 1007: |
| # CHECK-NEXT: 1008: |
| # CHECK-NEXT: 1009: |
| # CHECK-NEXT: 100a: |
| # CHECK-NEXT: 100b:{{.*}} |
| # CHECK-NOT: {{.}} |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .text |
| Type: SHT_PROGBITS |
| Flags: [SHF_ALLOC, SHF_EXECINSTR] |
| Address: 0x1000 |
| Content: 909090909090909090909090 |
| ProgramHeaders: |
| - Type: PT_LOAD |
| VAddr: 0x1000 |
| FirstSec: .text |
| LastSec: .text |
| Symbols: |
| - Name: both_static |
| Value: 0x1001 |
| Section: .text |
| Binding: STB_GLOBAL |
| - Name: only_static |
| Value: 0x1002 |
| Section: .text |
| Binding: STB_GLOBAL |
| DynamicSymbols: |
| - Name: only_dyn |
| Value: 0x1000 |
| Section: .text |
| Size: 1 |
| Type: STT_FUNC |
| Binding: STB_GLOBAL |
| - Name: both_dyn |
| Value: 0x1001 |
| Section: .text |
| Size: 1 |
| Type: STT_NOTYPE |
| Binding: STB_GLOBAL |
| - Name: object |
| Value: 0x1003 |
| Section: .text |
| Size: 1 |
| Type: STT_OBJECT |
| Binding: STB_GLOBAL |
| - Name: zero_sized |
| Value: 0x1004 |
| Section: .text |
| Type: STT_FUNC |
| Binding: STB_GLOBAL |
| - Name: common |
| Value: 0x1005 |
| Section: .text |
| Size: 1 |
| Type: STT_COMMON |
| Binding: STB_GLOBAL |
| - Name: loos |
| Value: 0x1006 |
| Section: .text |
| Size: 1 |
| Type: 10 |
| Binding: STB_GLOBAL |
| - Name: loproc |
| Value: 0x1007 |
| Section: .text |
| Size: 1 |
| Type: 13 |
| Binding: STB_GLOBAL |
| ## The rest of the dynamic symbols won't be used for various reasons. |
| - Name: section |
| Value: 0x1008 |
| Section: .text |
| Size: 1 |
| Type: STT_SECTION |
| Binding: STB_GLOBAL |
| - Name: '' # No name |
| Value: 0x1009 |
| Section: .text |
| Size: 1 |
| Type: STT_FUNC |
| Binding: STB_GLOBAL |
| - Name: absolute |
| Value: 0x100a |
| Index: SHN_ABS |
| Size: 1 |
| Type: STT_FUNC |
| Binding: STB_GLOBAL |
| - Name: undefined |
| Value: 0x100b |
| Index: SHN_UNDEF |
| Size: 1 |
| Type: STT_FUNC |
| Binding: STB_GLOBAL |