113 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
# RUN: llvm-readelf --hash-symbols %p/Inputs/dynamic-table-exe.x86 \
 | 
						|
# RUN:   | FileCheck %s --check-prefix HASH
 | 
						|
 | 
						|
# HASH:     Symbol table of .hash for image:
 | 
						|
# HASH-NEXT:   Num Buc:    Value  Size   Type   Bind Vis      Ndx Name
 | 
						|
# HASH-NEXT:     9   0: 00000000     0 FUNC    GLOBAL DEFAULT UND __gxx_personality_v0@CXXABI_1.3
 | 
						|
# HASH-NEXT:    13   0: 00001b64     0 NOTYPE  GLOBAL DEFAULT ABS _edata{{$}}
 | 
						|
# HASH-NEXT:     7   0: 00000000     0 FUNC    GLOBAL DEFAULT UND _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4
 | 
						|
# HASH-NEXT:     2   0: 00000000     0 NOTYPE  WEAK   DEFAULT UND _Jv_RegisterClasses{{$}}
 | 
						|
# HASH-NEXT:     1   0: 00000000     0 NOTYPE  WEAK   DEFAULT UND __gmon_start__{{$}}
 | 
						|
# HASH-NEXT:    16   1: 00000850    81 FUNC    GLOBAL DEFAULT  14 main{{$}}
 | 
						|
# HASH-NEXT:    10   1: 00000000     0 FUNC    GLOBAL DEFAULT UND _Unwind_Resume@GCC_3.0
 | 
						|
# HASH-NEXT:     8   1: 00000000     0 FUNC    GLOBAL DEFAULT UND puts@GLIBC_2.0
 | 
						|
# HASH-NEXT:    12   1: 00001b68     0 NOTYPE  GLOBAL DEFAULT ABS _end{{$}}
 | 
						|
# HASH-NEXT:     6   1: 00000000     0 FUNC    GLOBAL DEFAULT UND _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev@GLIBCXX_3.4
 | 
						|
# HASH-NEXT:     5   1: 00000000     0 NOTYPE  WEAK   DEFAULT UND _ITM_registerTMCloneTable{{$}}
 | 
						|
# HASH-NEXT:     4   1: 00000000     0 NOTYPE  WEAK   DEFAULT UND _ITM_deregisterTMCloneTable{{$}}
 | 
						|
# HASH-NEXT:     3   1: 00000000     0 FUNC    GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.0
 | 
						|
# HASH-NEXT:    11   2: 00000000     0 FUNC    WEAK   DEFAULT UND __cxa_finalize@GLIBC_2.1.3
 | 
						|
# HASH-NEXT:    15   2: 00001b64     0 NOTYPE  GLOBAL DEFAULT ABS __bss_start{{$}}
 | 
						|
# HASH-NEXT:    14   2: 0000093c     4 OBJECT  GLOBAL DEFAULT  16 _IO_stdin_used{{$}}
 | 
						|
# HASH:     Symbol table of .gnu.hash for image:
 | 
						|
# HASH-NEXT:   Num Buc:    Value  Size   Type   Bind Vis      Ndx Name
 | 
						|
# HASH-NEXT:    12   0: 00001b68     0 NOTYPE  GLOBAL DEFAULT ABS _end{{$}}
 | 
						|
# HASH-NEXT:    13   0: 00001b64     0 NOTYPE  GLOBAL DEFAULT ABS _edata{{$}}
 | 
						|
# HASH-NEXT:    14   1: 0000093c     4 OBJECT  GLOBAL DEFAULT  16 _IO_stdin_used{{$}}
 | 
						|
# HASH-NEXT:    15   1: 00001b64     0 NOTYPE  GLOBAL DEFAULT ABS __bss_start{{$}}
 | 
						|
# HASH-NEXT:    16   1: 00000850    81 FUNC    GLOBAL DEFAULT  14 main{{$}}
 | 
						|
 | 
						|
## Show that if there are no hash sections, we do not print anything.
 | 
						|
# RUN: yaml2obj %s -o %t.o
 | 
						|
# RUN: llvm-readelf --hash-symbols %t.o \
 | 
						|
# RUN:   | FileCheck %s --check-prefix NO-HASH --allow-empty
 | 
						|
 | 
						|
# NO-HASH-NOT: {{.}}
 | 
						|
 | 
						|
## Sanity check that we can still find the dynamic symbols (i.e. the above test
 | 
						|
## doesn't pass due to a mistake in the dynamic section).
 | 
						|
# RUN: llvm-readelf --dyn-symbols %t.o | FileCheck %s --check-prefix DYNSYMS
 | 
						|
 | 
						|
# DYNSYMS: Symbol table '.dynsym' contains 2 entries:
 | 
						|
 | 
						|
!ELF
 | 
						|
FileHeader:
 | 
						|
  Class:           ELFCLASS64
 | 
						|
  Data:            ELFDATA2LSB
 | 
						|
  Type:            ET_DYN
 | 
						|
  Machine:         EM_X86_64
 | 
						|
Sections:
 | 
						|
  ## TODO:  Replace the raw section contents with more meaningful dynamic
 | 
						|
  ## tags/symbols/etc, once yaml2obj supports it.
 | 
						|
  ## FIXME: yaml2obj does not currently allow custom addresses for .dynstr and
 | 
						|
  ## .dynsym if DynamicSymbols are specified.
 | 
						|
  ## See https://bugs.llvm.org/show_bug.cgi?id=40339
 | 
						|
  - Name:         .dynstr
 | 
						|
    Type:         SHT_STRTAB
 | 
						|
    Flags:        [ SHF_ALLOC ]
 | 
						|
    AddressAlign: 0x100
 | 
						|
    EntSize:      0x1
 | 
						|
    ## "\0_Z3fooi\0"
 | 
						|
    Content: "005f5a33666f6f6900"
 | 
						|
  - Name:         .dynsym
 | 
						|
    Type:         SHT_DYNSYM
 | 
						|
    Flags:        [ SHF_ALLOC ]
 | 
						|
    Link:         .dynstr
 | 
						|
    Address:      0x100
 | 
						|
    AddressAlign: 0x100
 | 
						|
    EntSize:      0x18
 | 
						|
    ## Null symbol;
 | 
						|
    ## st_name: 1; st_info: Global | Func; st_other: 0;
 | 
						|
    ##   st_shndx: .text.foo; st_value: 0x2000; st_size: 0
 | 
						|
    Content: "000000000000000000000000000000000000000000000000010000001200040000200000000000000000000000000000"
 | 
						|
  - Name:            .dynamic
 | 
						|
    Type:            SHT_DYNAMIC
 | 
						|
    Flags:           [ SHF_ALLOC ]
 | 
						|
    Address:         0x0000000000001000
 | 
						|
    Link:            .dynstr
 | 
						|
    AddressAlign:    0x0000000000001000
 | 
						|
    EntSize:         0x0000000000000010
 | 
						|
    Entries:
 | 
						|
      - Tag:             DT_STRTAB
 | 
						|
        Value:           0x0000000000000000
 | 
						|
      - Tag:             DT_STRSZ
 | 
						|
        Value:           0x0000000000000009
 | 
						|
      - Tag:             DT_SYMTAB
 | 
						|
        Value:           0x0000000000000100
 | 
						|
      - Tag:             DT_SYMENT
 | 
						|
        Value:           0x0000000000000018
 | 
						|
      - Tag:             DT_NULL
 | 
						|
        Value:           0x0000000000000000
 | 
						|
  - Name:  .text.foo
 | 
						|
    Type:  SHT_PROGBITS
 | 
						|
    Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ]
 | 
						|
    Size:  0x40
 | 
						|
    Address: 0x2000
 | 
						|
    AddressAlign: 0x2000
 | 
						|
ProgramHeaders:
 | 
						|
  - Type:  PT_LOAD
 | 
						|
    Flags: [ PF_R, PF_X ]
 | 
						|
    VAddr: 0x0
 | 
						|
    PAddr: 0x0
 | 
						|
    Sections:
 | 
						|
      - Section: .dynsym
 | 
						|
      - Section: .dynstr
 | 
						|
      - Section: .dynamic
 | 
						|
      - Section: .text.foo
 | 
						|
  - Type:  PT_DYNAMIC
 | 
						|
    Flags: [ PF_R ]
 | 
						|
    VAddr: 0x1000
 | 
						|
    PAddr: 0x1000
 | 
						|
    Sections:
 | 
						|
      - Section: .dynamic
 |