## Ensures that implicitly added sections can be ordered within Sections. # RUN: yaml2obj --docnum=1 %s -o %t1 # RUN: llvm-readobj --sections %t1 | FileCheck %s --check-prefix=SECTION # RUN: llvm-nm --dynamic %t1 | FileCheck %s --check-prefix=SYMBOL --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Sections: - Name: .data Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_WRITE ] DynamicSymbols: - Name: dynlocal Type: STT_OBJECT Section: .data Binding: STB_LOCAL - Name: dynglobal Type: STT_OBJECT Section: .data Binding: STB_GLOBAL - Name: dynweak Type: STT_OBJECT Section: .data Binding: STB_WEAK # SECTION: Name: .dynsym # SECTION-NEXT: Type: SHT_DYNSYM # SECTION-NEXT: Flags # SECTION-NEXT: SHF_ALLOC # SECTION: Name: .dynstr # SECTION-NEXT: Type: SHT_STRTAB # SECTION-NEXT: Flags # SECTION-NEXT: SHF_ALLOC # SYMBOL-DAG: d dynlocal # SYMBOL-DAG: D dynglobal # SYMBOL-DAG: V dynweak ## Check we can use numeric values to refer to sections. # RUN: yaml2obj --docnum=2 -DSEC=0xff %s -o %t2 # RUN: llvm-readobj --dyn-symbols %t2 2>&1 | FileCheck -DFILE=%t2 %s --check-prefix=NUM # NUM: Name: foo # NUM: Section: # NUM-SAME: .data (0x1) # NUM: Name: bar # NUM: Section: # NUM-SAME: .dynsym (0x2) # NUM: Name: zed1 # NUM: warning: '[[FILE]]': invalid section index: 255 # NUM: Section: # NUM-SAME: (0xFF) # NUM: Name: zed2 # NUM: Section: # NUM-SAME: Undefined (0x0) --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Sections: - Name: .data Type: SHT_PROGBITS DynamicSymbols: - Name: foo Section: 1 - Name: bar Section: 2 - Name: zed1 Section: [[SEC=]] ## The case when no "Section" key is set. - Name: zed2 ## Check that by default no section is set. # RUN: yaml2obj --docnum=2 %s -o %t2.none # RUN: llvm-readobj --dyn-symbols %t2.none 2>&1 | \ # RUN: FileCheck -DFILE=%t2.none %s --check-prefix=NONE # NONE: Name: zed1 # NONE: Section: # NONE-SAME: Undefined (0x0) # NONE: Name: zed2 # NONE: Section: # NONE-SAME: Undefined (0x0) ## Check we report errors when unknown sections are referenced by dynamic symbols. # RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck -DFILE=%t3 %s --check-prefix=ERR # ERR: error: unknown section referenced: '.sec1' by YAML symbol 'foo' # ERR: error: unknown section referenced: '.sec2' by YAML symbol 'bar' # ERR: error: unknown section referenced: '' by YAML symbol 'zed' --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_DYN Sections: - Name: .data Type: SHT_PROGBITS DynamicSymbols: - Name: foo Section: .sec1 - Name: bar Section: .sec2 - Name: zed Section: ''