Index: include/llvm/ObjectYAML/ELFYAML.h =================================================================== --- include/llvm/ObjectYAML/ELFYAML.h +++ include/llvm/ObjectYAML/ELFYAML.h @@ -52,6 +52,7 @@ // Just use 64, since it can hold 32-bit values too. LLVM_YAML_STRONG_TYPEDEF(uint64_t, ELF_SHF) LLVM_YAML_STRONG_TYPEDEF(uint16_t, ELF_SHN) +LLVM_YAML_STRONG_TYPEDEF(uint8_t, ELF_STB) LLVM_YAML_STRONG_TYPEDEF(uint8_t, ELF_STT) LLVM_YAML_STRONG_TYPEDEF(uint8_t, ELF_STV) LLVM_YAML_STRONG_TYPEDEF(uint8_t, ELF_STO) @@ -97,18 +98,12 @@ ELF_STT Type; StringRef Section; Optional Index; + ELF_STB Binding; llvm::yaml::Hex64 Value; llvm::yaml::Hex64 Size; uint8_t Other; }; -struct SymbolsDef { - std::vector Local; - std::vector Global; - std::vector Weak; - std::vector GNUUnique; -}; - struct SectionOrType { StringRef sectionNameOrType; }; @@ -289,8 +284,8 @@ // cleaner and nicer if we read them from the YAML as a separate // top-level key, which automatically ensures that invariants like there // being a single SHT_SYMTAB section are upheld. - SymbolsDef Symbols; - SymbolsDef DynamicSymbols; + std::vector Symbols; + std::vector DynamicSymbols; }; } // end namespace ELFYAML @@ -362,6 +357,10 @@ static void enumeration(IO &IO, ELFYAML::ELF_SHN &Value); }; +template <> struct ScalarEnumerationTraits { + static void enumeration(IO &IO, ELFYAML::ELF_STB &Value); +}; + template <> struct ScalarEnumerationTraits { static void enumeration(IO &IO, ELFYAML::ELF_STT &Value); @@ -437,10 +436,6 @@ static StringRef validate(IO &IO, ELFYAML::Symbol &Symbol); }; -template <> struct MappingTraits { - static void mapping(IO &IO, ELFYAML::SymbolsDef &Symbols); -}; - template <> struct MappingTraits { static void mapping(IO &IO, ELFYAML::DynamicEntry &Rel); }; Index: lib/ObjectYAML/ELFYAML.cpp =================================================================== --- lib/ObjectYAML/ELFYAML.cpp +++ lib/ObjectYAML/ELFYAML.cpp @@ -560,6 +560,17 @@ IO.enumFallback(Value); } +void ScalarEnumerationTraits::enumeration( + IO &IO, ELFYAML::ELF_STB &Value) { +#define ECase(X) IO.enumCase(Value, #X, ELF::X) + ECase(STB_LOCAL); + ECase(STB_GLOBAL); + ECase(STB_WEAK); + ECase(STB_GNU_UNIQUE); +#undef ECase + IO.enumFallback(Value); +} + void ScalarEnumerationTraits::enumeration( IO &IO, ELFYAML::ELF_STT &Value) { #define ECase(X) IO.enumCase(Value, #X, ELF::X) @@ -845,9 +856,9 @@ IO.mapOptional("Type", Symbol.Type, ELFYAML::ELF_STT(0)); IO.mapOptional("Section", Symbol.Section, StringRef()); IO.mapOptional("Index", Symbol.Index); + IO.mapOptional("Binding", Symbol.Binding, ELFYAML::ELF_STB(0)); IO.mapOptional("Value", Symbol.Value, Hex64(0)); IO.mapOptional("Size", Symbol.Size, Hex64(0)); - MappingNormalization Keys(IO, Symbol.Other); IO.mapOptional("Visibility", Keys->Visibility, ELFYAML::ELF_STV(0)); IO.mapOptional("Other", Keys->Other, ELFYAML::ELF_STO(0)); @@ -864,14 +875,6 @@ return StringRef(); } -void MappingTraits::mapping(IO &IO, - ELFYAML::SymbolsDef &Symbols) { - IO.mapOptional("Local", Symbols.Local); - IO.mapOptional("Global", Symbols.Global); - IO.mapOptional("Weak", Symbols.Weak); - IO.mapOptional("GNUUnique", Symbols.GNUUnique); -} - static void commonSectionMapping(IO &IO, ELFYAML::Section &Section) { IO.mapOptional("Name", Section.Name, StringRef()); IO.mapRequired("Type", Section.Type); Index: test/DebugInfo/invalid-relocations.test =================================================================== --- test/DebugInfo/invalid-relocations.test +++ test/DebugInfo/invalid-relocations.test @@ -28,8 +28,8 @@ Symbol: _start Type: 0xFF Symbols: - Global: - - Name: _start - Type: STT_FUNC - Section: .text - Value: 0x0 + - Name: _start + Type: STT_FUNC + Section: .text + Value: 0x0 + Binding: STB_GLOBAL Index: test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml =================================================================== --- test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml +++ test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml @@ -43,13 +43,11 @@ Addend: 0 Symbols: - Local: - - Name: .text - Type: STT_SECTION - Section: .text - - Global: - - Name: main - Type: STT_FUNC - Section: .text - Size: 0x08 + - Name: .text + Type: STT_SECTION + Section: .text + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x08 + Binding: STB_GLOBAL Index: test/Object/AMDGPU/elf64-relocs.yaml =================================================================== --- test/Object/AMDGPU/elf64-relocs.yaml +++ test/Object/AMDGPU/elf64-relocs.yaml @@ -65,13 +65,11 @@ Type: R_AMDGPU_RELATIVE64 Symbols: - Local: - - Name: .text - Type: STT_SECTION - Section: .text - - Global: - - Name: main - Type: STT_FUNC - Section: .text - Size: 0x08 + - Name: .text + Type: STT_SECTION + Section: .text + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x08 + Binding: STB_GLOBAL Index: test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml =================================================================== --- test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml +++ test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml @@ -49,13 +49,11 @@ Symbols: - Local: - - Name: .text - Type: STT_SECTION - Section: .text - - Global: - - Name: main - Type: STT_FUNC - Section: .text - Size: 0x08 + - Name: .text + Type: STT_SECTION + Section: .text + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x08 + Binding: STB_GLOBAL Index: test/Object/Mips/abi-flags.yaml =================================================================== --- test/Object/Mips/abi-flags.yaml +++ test/Object/Mips/abi-flags.yaml @@ -59,7 +59,6 @@ Flags2: 0x0 Symbols: - Local: - - Name: .MIPS.abiflags - Type: STT_SECTION - Section: .MIPS.abiflags + - Name: .MIPS.abiflags + Type: STT_SECTION + Section: .MIPS.abiflags Index: test/Object/Mips/elf-abi.yaml =================================================================== --- test/Object/Mips/elf-abi.yaml +++ test/Object/Mips/elf-abi.yaml @@ -62,11 +62,11 @@ Size: 4 Symbols: - Global: - - Name: T1 - Section: .text - Value: 0 - Size: 4 + - Name: T1 + Section: .text + Value: 0 + Size: 4 + Binding: STB_GLOBAL # o64 --- !ELF @@ -84,11 +84,11 @@ Size: 4 Symbols: - Global: - - Name: T1 - Section: .text - Value: 0 - Size: 4 + - Name: T1 + Section: .text + Value: 0 + Size: 4 + Binding: STB_GLOBAL # eabio32 --- !ELF @@ -106,11 +106,11 @@ Size: 4 Symbols: - Global: - - Name: T1 - Section: .text - Value: 0 - Size: 4 + - Name: T1 + Section: .text + Value: 0 + Size: 4 + Binding: STB_GLOBAL # eabi64 --- !ELF @@ -128,9 +128,9 @@ Size: 4 Symbols: - Global: - - Name: T1 - Section: .text - Value: 0 - Size: 4 + - Name: T1 + Section: .text + Value: 0 + Size: 4 + Binding: STB_GLOBAL ... Index: test/Object/Mips/elf-flags.yaml =================================================================== --- test/Object/Mips/elf-flags.yaml +++ test/Object/Mips/elf-flags.yaml @@ -44,9 +44,9 @@ Size: 4 Symbols: - Global: - - Name: T1 - Section: .text - Value: 0 - Size: 4 + - Name: T1 + Section: .text + Value: 0 + Size: 4 + Binding: STB_GLOBAL ... Index: test/Object/Mips/elf-mips64-rel.yaml =================================================================== --- test/Object/Mips/elf-mips64-rel.yaml +++ test/Object/Mips/elf-mips64-rel.yaml @@ -98,17 +98,17 @@ Size: 0x0F Symbols: - Local: - - Name: .text - Type: STT_SECTION - Section: .text - - Name: .rodata - Type: STT_SECTION - Section: .rodata - Global: - - Name: main - Type: STT_FUNC - Section: .text - Size: 0x58 - - Name: printf + - Name: .text + Type: STT_SECTION + Section: .text + - Name: .rodata + Type: STT_SECTION + Section: .rodata + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x58 + Binding: STB_GLOBAL + - Name: printf + Binding: STB_GLOBAL ... Index: test/Object/X86/yaml-elf-x86-rel-broken.yaml =================================================================== --- test/Object/X86/yaml-elf-x86-rel-broken.yaml +++ test/Object/X86/yaml-elf-x86-rel-broken.yaml @@ -28,5 +28,5 @@ Symbol: main Type: 0xFF Symbols: - Global: - - Name: main + - Name: main + Binding: STB_GLOBAL Index: test/Object/X86/yaml2obj-elf-x86-rel.yaml =================================================================== --- test/Object/X86/yaml2obj-elf-x86-rel.yaml +++ test/Object/X86/yaml2obj-elf-x86-rel.yaml @@ -30,13 +30,11 @@ Type: R_386_32 Symbols: - Local: - - Name: .text - Type: STT_SECTION - Section: .text - - Global: - - Name: main - Type: STT_FUNC - Section: .text - Size: 0x08 + - Name: .text + Type: STT_SECTION + Section: .text + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x08 + Binding: STB_GLOBAL Index: test/Object/obj2yaml-invalid-reloc.test =================================================================== --- test/Object/obj2yaml-invalid-reloc.test +++ test/Object/obj2yaml-invalid-reloc.test @@ -24,16 +24,16 @@ CHECK-NEXT: Symbol: '' CHECK-NEXT: Type: R_X86_64_NONE CHECK-NEXT: Symbols: -CHECK-NEXT: Local: CHECK-NEXT: - Name: rb_ary_new_capa CHECK-NEXT: Type: STT_FUNC CHECK-NEXT: Section: .text CHECK-NEXT: Size: 0x0000000000000005 -CHECK-NEXT: Global: CHECK-NEXT: - Name: __dtraceenabled_ruby___array-create CHECK-NEXT: Index: SHN_ABS +CHECK-NEXT: Binding: STB_GLOBAL CHECK-NEXT: - Name: '$dtrace1316529.rb_ary_new_capa' CHECK-NEXT: Type: STT_FUNC CHECK-NEXT: Section: .text +CHECK-NEXT: Binding: STB_GLOBAL CHECK-NEXT: Size: 0x0000000000000005 CHECK-NEXT: Visibility: STV_HIDDEN Index: test/Object/obj2yaml.test =================================================================== --- test/Object/obj2yaml.test +++ test/Object/obj2yaml.test @@ -421,7 +421,6 @@ ELF-MIPSEL-NEXT: CPR1Size: REG_32 ELF-MIPSEL-NEXT: Flags1: [ ODDSPREG ] ELF-MIPSEL-NEXT: Symbols: -ELF-MIPSEL-NEXT: Local: ELF-MIPSEL-NEXT: - Name: trivial.ll ELF-MIPSEL-NEXT: Type: STT_FILE ELF-MIPSEL-NEXT: Index: SHN_ABS @@ -450,18 +449,22 @@ ELF-MIPSEL-NEXT: - Name: .MIPS.abiflags ELF-MIPSEL-NEXT: Type: STT_SECTION ELF-MIPSEL-NEXT: Section: .MIPS.abiflags -ELF-MIPSEL-NEXT: Global: ELF-MIPSEL-NEXT: - Name: main ELF-MIPSEL-NEXT: Type: STT_FUNC ELF-MIPSEL-NEXT: Section: .text +ELF-MIPSEL-NEXT: Binding: STB_GLOBAL ELF-MIPSEL-NEXT: Size: 0x000000000000004C ELF-MIPSEL-NEXT: - Name: var ELF-MIPSEL-NEXT: Type: STT_OBJECT ELF-MIPSEL-NEXT: Section: .bss +ELF-MIPSEL-NEXT: Binding: STB_GLOBAL ELF-MIPSEL-NEXT: Size: 0x0000000000000004 ELF-MIPSEL-NEXT: - Name: SomeOtherFunction +ELF-MIPSEL-NEXT: Binding: STB_GLOBAL ELF-MIPSEL-NEXT: - Name: _gp_disp +ELF-MIPSEL-NEXT: Binding: STB_GLOBAL ELF-MIPSEL-NEXT: - Name: puts +ELF-MIPSEL-NEXT: Binding: STB_GLOBAL ELF-MIPS64EL: FileHeader: ELF-MIPS64EL-NEXT: Class: ELFCLASS64 @@ -505,7 +508,6 @@ ELF-MIPS64EL-NEXT: AddressAlign: 0x0000000000000004 ELF-MIPS64EL-NEXT: Content: '' ELF-MIPS64EL-NEXT: Symbols: -ELF-MIPS64EL-NEXT: Local: ELF-MIPS64EL-NEXT: - Name: .text ELF-MIPS64EL-NEXT: Type: STT_SECTION ELF-MIPS64EL-NEXT: Section: .text @@ -523,8 +525,8 @@ ELF-MIPS64EL-NEXT: - Name: .pdr ELF-MIPS64EL-NEXT: Type: STT_SECTION ELF-MIPS64EL-NEXT: Section: .pdr -ELF-MIPS64EL-NEXT: Global: ELF-MIPS64EL-NEXT: - Name: zed +ELF-MIPS64EL-NEXT: Binding: STB_GLOBAL ELF-X86-64: FileHeader: ELF-X86-64-NEXT: Class: ELFCLASS64 @@ -569,7 +571,6 @@ ELF-X86-64-NEXT: Type: R_X86_64_PC32 ELF-X86-64-NEXT: Addend: -4 ELF-X86-64-NEXT: Symbols: -ELF-X86-64-NEXT: Local: ELF-X86-64-NEXT: - Name: trivial-object-test.s ELF-X86-64-NEXT: Type: STT_FILE ELF-X86-64-NEXT: Index: SHN_ABS @@ -582,14 +583,15 @@ ELF-X86-64-NEXT: - Name: .note.GNU-stack ELF-X86-64-NEXT: Type: STT_SECTION ELF-X86-64-NEXT: Section: .note.GNU-stack -ELF-X86-64-NEXT: Global: ELF-X86-64-NEXT: - Name: main ELF-X86-64-NEXT: Type: STT_FUNC ELF-X86-64-NEXT: Section: .text +ELF-X86-64-NEXT: Binding: STB_GLOBAL ELF-X86-64-NEXT: Size: 0x0000000000000026 ELF-X86-64-NEXT: - Name: SomeOtherFunction +ELF-X86-64-NEXT: Binding: STB_GLOBAL ELF-X86-64-NEXT: - Name: puts - +ELF-X86-64-NEXT: Binding: STB_GLOBAL ELF-AVR: FileHeader: ELF-AVR-NEXT: Class: ELFCLASS32 @@ -610,7 +612,6 @@ ELF-AVR-NEXT: AddressAlign: 0x0000000000000001 ELF-AVR-NEXT: Content: '' ELF-AVR-NEXT: Symbols: -ELF-AVR-NEXT: Local: ELF-AVR-NEXT: - Name: .text ELF-AVR-NEXT: Type: STT_SECTION ELF-AVR-NEXT: Section: .text @@ -623,39 +624,49 @@ ELF-AVR-NEXT: Index: SHN_ABS ELF-AVR-NEXT: - Name: main ELF-AVR-NEXT: Section: .text -ELF-AVR-NEXT: Global: ELF-AVR-NEXT: - Name: __trampolines_start ELF-AVR-NEXT: Section: .text +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: - Name: _etext ELF-AVR-NEXT: Section: .text +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: Value: 0x0000000000000004 ELF-AVR-NEXT: - Name: __data_load_end ELF-AVR-NEXT: Index: SHN_ABS +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: Value: 0x0000000000000004 ELF-AVR-NEXT: - Name: __trampolines_end ELF-AVR-NEXT: Section: .text +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: - Name: __data_load_start ELF-AVR-NEXT: Index: SHN_ABS +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: Value: 0x0000000000000004 ELF-AVR-NEXT: - Name: __dtors_end ELF-AVR-NEXT: Section: .text +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: - Name: __eeprom_end ELF-AVR-NEXT: Section: .data +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: Value: 0x0000000000810000 ELF-AVR-NEXT: - Name: __ctors_start ELF-AVR-NEXT: Section: .text +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: - Name: __dtors_start ELF-AVR-NEXT: Section: .text +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: - Name: __ctors_end ELF-AVR-NEXT: Section: .text +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: - Name: _edata ELF-AVR-NEXT: Section: .data +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: Value: 0x0000000000800060 ELF-AVR-NEXT: - Name: _end ELF-AVR-NEXT: Section: .data +ELF-AVR-NEXT: Binding: STB_GLOBAL ELF-AVR-NEXT: Value: 0x0000000000800060 - WASM: --- !WASM WASM-NEXT: FileHeader: WASM-NEXT: Version: 0x00000001 Index: test/Object/yaml2obj-elf-alignment.yaml =================================================================== --- test/Object/yaml2obj-elf-alignment.yaml +++ test/Object/yaml2obj-elf-alignment.yaml @@ -41,13 +41,14 @@ Size: 4 Symbols: - Global: - - Name: T0 - Type: STT_FUNC - Section: .text - Size: 4 - - Name: D0 - Type: STT_OBJECT - Section: .data - Size: 4 + - Name: T0 + Type: STT_FUNC + Section: .text + Size: 4 + Binding: STB_GLOBAL + - Name: D0 + Type: STT_OBJECT + Section: .data + Size: 4 + Binding: STB_GLOBAL ... Index: test/Object/yaml2obj-elf-multi-doc.test =================================================================== --- test/Object/yaml2obj-elf-multi-doc.test +++ test/Object/yaml2obj-elf-multi-doc.test @@ -25,12 +25,12 @@ Flags: [SHF_EXECINSTR, SHF_ALLOC] Symbols: - Global: - - Name: T1 - Section: .text - Type: STT_FUNC - Value: 0x0 - Size: 8 +- Name: T1 + Section: .text + Type: STT_FUNC + Value: 0x0 + Size: 8 + Binding: STB_GLOBAL --- !ELF FileHeader: !FileHeader @@ -47,10 +47,10 @@ Flags: [SHF_EXECINSTR, SHF_ALLOC] Symbols: - Global: - - Name: T2 - Section: .text - Type: STT_FUNC - Value: 0x0 - Size: 4 +- Name: T2 + Section: .text + Type: STT_FUNC + Value: 0x0 + Size: 4 + Binding: STB_GLOBAL ... Index: test/Object/yaml2obj-elf-rel-noref.yaml =================================================================== --- test/Object/yaml2obj-elf-rel-noref.yaml +++ test/Object/yaml2obj-elf-rel-noref.yaml @@ -36,25 +36,24 @@ Type: SHT_ARM_ATTRIBUTES AddressAlign: 0x0000000000000001 Content: 4115000000616561626900010B000000060208010901 -Symbols: - Local: - - Name: .text - Type: STT_SECTION - Section: .text - - Name: .data - Type: STT_SECTION - Section: .data - - Name: .bss - Type: STT_SECTION - Section: .bss - - Name: '$a' - Section: .text - - Name: call_weak_fn - Type: STT_FUNC - Section: .text - - Name: .ARM.attributes - Type: STT_SECTION - Section: .ARM.attributes +Symbols: + - Name: .text + Type: STT_SECTION + Section: .text + - Name: .data + Type: STT_SECTION + Section: .data + - Name: .bss + Type: STT_SECTION + Section: .bss + - Name: '$a' + Section: .text + - Name: call_weak_fn + Type: STT_FUNC + Section: .text + - Name: .ARM.attributes + Type: STT_SECTION + Section: .ARM.attributes # CHECK: Section { # CHECK-NEXT: Index: 0 Index: test/Object/yaml2obj-elf-rel.yaml =================================================================== --- test/Object/yaml2obj-elf-rel.yaml +++ test/Object/yaml2obj-elf-rel.yaml @@ -49,17 +49,17 @@ Type: R_MIPS_LO16 Symbols: - Local: - - Name: loc1 - - Name: loc2 - Global: - - Name: glob1 - Section: .text - Value: 0x0 - Size: 4 - - Name: glob2 - Weak: - - Name: weak1 + - Name: loc1 + - Name: loc2 + - Name: glob1 + Section: .text + Value: 0x0 + Size: 4 + Binding: STB_GLOBAL + - Name: glob2 + Binding: STB_GLOBAL + - Name: weak1 + Binding: STB_WEAK # CHECK: Section { # CHECK-NEXT: Index: 0 Index: test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml =================================================================== --- test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml +++ test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml @@ -11,18 +11,17 @@ Flags: [ SHF_ALLOC, SHF_WRITE ] Content: "DEADBEEF" Symbols: - Local: - - Name: local_symbol - Type: STT_OBJECT - Section: .data - Global: - - Name: global_symbol - Type: STT_OBJECT - Section: .data - Weak: - - Name: weak_symbol - Type: STT_OBJECT - Section: .data + - Name: local_symbol + Type: STT_OBJECT + Section: .data + - Name: global_symbol + Type: STT_OBJECT + Section: .data + Binding: STB_GLOBAL + - Name: weak_symbol + Type: STT_OBJECT + Section: .data + Binding: STB_WEAK # CHECK: Symbol { # CHECK: Name: (0) Index: test/Object/yaml2obj-elf-symbol-basic.yaml =================================================================== --- test/Object/yaml2obj-elf-symbol-basic.yaml +++ test/Object/yaml2obj-elf-symbol-basic.yaml @@ -18,13 +18,14 @@ # when linked and run on x86_64, will go into an # infloop. Symbols: - Global: - - Name: main - Type: STT_FUNC - Section: .text - Value: 0x1 - Size: 2 - - Name: undefined_symbol + - Name: main + Type: STT_FUNC + Section: .text + Value: 0x1 + Size: 2 + Binding: STB_GLOBAL + - Name: undefined_symbol + Binding: STB_GLOBAL # CHECK: Symbols [ # CHECK-NEXT: Symbol { Index: test/Object/yaml2obj-elf-symbol-visibility.yaml =================================================================== --- test/Object/yaml2obj-elf-symbol-visibility.yaml +++ test/Object/yaml2obj-elf-symbol-visibility.yaml @@ -57,35 +57,39 @@ # OBJ-NEXT: } # YAML: Symbols: -# YAML-NEXT: Global: -# YAML-NEXT: - Name: default1 -# YAML-NEXT: Type: STT_OBJECT -# YAML-NEXT: Section: .data -# YAML-NEXT: Size: 0x0000000000000004 -# YAML-NEXT: - Name: default2 -# YAML-NEXT: Type: STT_OBJECT -# YAML-NEXT: Section: .data -# YAML-NEXT: Value: 0x0000000000000004 -# YAML-NEXT: Size: 0x0000000000000004 -# YAML-NEXT: - Name: internal -# YAML-NEXT: Type: STT_OBJECT -# YAML-NEXT: Section: .data -# YAML-NEXT: Value: 0x0000000000000008 -# YAML-NEXT: Size: 0x0000000000000004 -# YAML-NEXT: Visibility: STV_INTERNAL -# YAML-NEXT: - Name: hidden -# YAML-NEXT: Type: STT_OBJECT -# YAML-NEXT: Section: .data -# YAML-NEXT: Value: 0x000000000000000C -# YAML-NEXT: Size: 0x0000000000000004 -# YAML-NEXT: Visibility: STV_HIDDEN -# YAML-NEXT: - Name: protected -# YAML-NEXT: Type: STT_OBJECT -# YAML-NEXT: Section: .data -# YAML-NEXT: Value: 0x0000000000000010 -# YAML-NEXT: Size: 0x0000000000000004 -# YAML-NEXT: Visibility: STV_PROTECTED -# YAML-NEXT: Other: [ STO_MIPS_PIC, STO_MIPS_MICROMIPS ] +# YAML-NEXT: - Name: default1 +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Binding: STB_GLOBAL +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: - Name: default2 +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Binding: STB_GLOBAL +# YAML-NEXT: Value: 0x0000000000000004 +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: - Name: internal +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Binding: STB_GLOBAL +# YAML-NEXT: Value: 0x0000000000000008 +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: Visibility: STV_INTERNAL +# YAML-NEXT: - Name: hidden +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Binding: STB_GLOBAL +# YAML-NEXT: Value: 0x000000000000000C +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: Visibility: STV_HIDDEN +# YAML-NEXT: - Name: protected +# YAML-NEXT: Type: STT_OBJECT +# YAML-NEXT: Section: .data +# YAML-NEXT: Binding: STB_GLOBAL +# YAML-NEXT: Value: 0x0000000000000010 +# YAML-NEXT: Size: 0x0000000000000004 +# YAML-NEXT: Visibility: STV_PROTECTED +# YAML-NEXT: Other: [ STO_MIPS_PIC, STO_MIPS_MICROMIPS ] --- !ELF FileHeader: @@ -103,34 +107,38 @@ Size: 0x14 Symbols: - Global: - - Name: default1 - Type: STT_OBJECT - Visibility: STV_DEFAULT - Section: .data - Value: 0x00 - Size: 0x04 - - Name: default2 - Type: STT_OBJECT - Section: .data - Value: 0x04 - Size: 0x04 - - Name: internal - Type: STT_OBJECT - Visibility: STV_INTERNAL - Section: .data - Value: 0x08 - Size: 0x04 - - Name: hidden - Type: STT_OBJECT - Visibility: STV_HIDDEN - Section: .data - Value: 0x0C - Size: 0x04 - - Name: protected - Type: STT_OBJECT - Visibility: STV_PROTECTED - Other: [ STO_MIPS_MICROMIPS, STO_MIPS_PIC ] - Section: .data - Value: 0x10 - Size: 0x04 + - Name: default1 + Type: STT_OBJECT + Visibility: STV_DEFAULT + Section: .data + Value: 0x00 + Size: 0x04 + Binding: STB_GLOBAL + - Name: default2 + Type: STT_OBJECT + Section: .data + Value: 0x04 + Size: 0x04 + Binding: STB_GLOBAL + - Name: internal + Type: STT_OBJECT + Visibility: STV_INTERNAL + Section: .data + Value: 0x08 + Size: 0x04 + Binding: STB_GLOBAL + - Name: hidden + Type: STT_OBJECT + Visibility: STV_HIDDEN + Section: .data + Value: 0x0C + Size: 0x04 + Binding: STB_GLOBAL + - Name: protected + Type: STT_OBJECT + Visibility: STV_PROTECTED + Other: [ STO_MIPS_MICROMIPS, STO_MIPS_PIC ] + Section: .data + Value: 0x10 + Size: 0x04 + Binding: STB_GLOBAL Index: test/tools/llvm-ar/Inputs/add-lib1.yaml =================================================================== --- test/tools/llvm-ar/Inputs/add-lib1.yaml +++ test/tools/llvm-ar/Inputs/add-lib1.yaml @@ -20,11 +20,10 @@ AddressAlign: 0x0000000000000001 Content: '' Symbols: - Global: - - Name: lib1 - Index: SHN_ABS - Value: 0x1234 - Local: - - Name: '-' - Type: STT_FILE + - Name: '-' + Type: STT_FILE + - Name: lib1 + Index: SHN_ABS + Value: 0x1234 + Binding: STB_GLOBAL ... Index: test/tools/llvm-ar/Inputs/add-lib2.yaml =================================================================== --- test/tools/llvm-ar/Inputs/add-lib2.yaml +++ test/tools/llvm-ar/Inputs/add-lib2.yaml @@ -20,11 +20,10 @@ AddressAlign: 0x0000000000000001 Content: '' Symbols: - Global: - - Name: lib2 - Index: SHN_ABS - Value: 0x1234 - Local: - - Name: '-' - Type: STT_FILE + - Name: '-' + Type: STT_FILE + - Name: lib2 + Index: SHN_ABS + Value: 0x1234 + Binding: STB_GLOBAL ... Index: test/tools/llvm-ar/Inputs/add-lib3.yaml =================================================================== --- test/tools/llvm-ar/Inputs/add-lib3.yaml +++ test/tools/llvm-ar/Inputs/add-lib3.yaml @@ -20,11 +20,10 @@ AddressAlign: 0x0000000000000001 Content: '' Symbols: - Global: - - Name: lib3 - Index: SHN_ABS - Value: 0x1234 - Local: - - Name: '-' - Type: STT_FILE + - Name: '-' + Type: STT_FILE + - Name: lib3 + Index: SHN_ABS + Value: 0x1234 + Binding: STB_GLOBAL ... Index: test/tools/llvm-ar/Inputs/elf.yaml =================================================================== --- test/tools/llvm-ar/Inputs/elf.yaml +++ test/tools/llvm-ar/Inputs/elf.yaml @@ -20,7 +20,6 @@ AddressAlign: 0x0000000000000001 Content: '' Symbols: - Local: - - Name: '-' - Type: STT_FILE + - Name: '-' + Type: STT_FILE ... Index: test/tools/llvm-objcopy/ELF/Inputs/compress-debug-sections.yaml =================================================================== --- test/tools/llvm-objcopy/ELF/Inputs/compress-debug-sections.yaml +++ test/tools/llvm-objcopy/ELF/Inputs/compress-debug-sections.yaml @@ -44,15 +44,18 @@ Flags: [ SHF_GROUP ] Content: '00' Symbols: - Global: - - Name: .debug_foo - Type: STT_SECTION - Section: .debug_foo - - Name: .notdebug_foo - Type: STT_SECTION - Section: .notdebug_foo - - Name: .Linfo_string0 - Section: .debug_bar - - Name: groupname - Section: .group + - Name: .debug_foo + Type: STT_SECTION + Section: .debug_foo + Binding: STB_GLOBAL + - Name: .notdebug_foo + Type: STT_SECTION + Section: .notdebug_foo + Binding: STB_GLOBAL + - Name: .Linfo_string0 + Section: .debug_bar + Binding: STB_GLOBAL + - Name: groupname + Section: .group + Binding: STB_GLOBAL ... Index: test/tools/llvm-objcopy/ELF/abs-symbol.test =================================================================== --- test/tools/llvm-objcopy/ELF/abs-symbol.test +++ test/tools/llvm-objcopy/ELF/abs-symbol.test @@ -9,10 +9,10 @@ Type: ET_EXEC Machine: EM_X86_64 Symbols: - Global: - - Name: test - Index: SHN_ABS - Value: 0x1234 + - Name: test + Index: SHN_ABS + Value: 0x1234 + Binding: STB_GLOBAL #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/armexidx-link.test =================================================================== --- test/tools/llvm-objcopy/ELF/armexidx-link.test +++ test/tools/llvm-objcopy/ELF/armexidx-link.test @@ -36,13 +36,12 @@ AddressAlign: 0x0000000000000004 Content: '' Symbols: - Local: - - Name: .text.bar - Type: STT_SECTION - Section: .text.bar - - Name: .text.foo - Type: STT_SECTION - Section: .text.foo - - Name: .ARM.exidx.text.foo - Type: STT_SECTION - Section: .ARM.exidx.text.foo + - Name: .text.bar + Type: STT_SECTION + Section: .text.bar + - Name: .text.foo + Type: STT_SECTION + Section: .text.foo + - Name: .ARM.exidx.text.foo + Type: STT_SECTION + Section: .ARM.exidx.text.foo Index: test/tools/llvm-objcopy/ELF/basic-archive-copy.test =================================================================== --- test/tools/llvm-objcopy/ELF/basic-archive-copy.test +++ test/tools/llvm-objcopy/ELF/basic-archive-copy.test @@ -47,11 +47,11 @@ AddressAlign: 0x0000000000000010 Content: "00000000" Symbols: - Global: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1004 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1004 + Binding: STB_GLOBAL # CHECK: Type: SHT_NULL Index: test/tools/llvm-objcopy/ELF/basic-relocations.test =================================================================== --- test/tools/llvm-objcopy/ELF/basic-relocations.test +++ test/tools/llvm-objcopy/ELF/basic-relocations.test @@ -56,24 +56,28 @@ Type: R_X86_64_PC32 Addend: 0x13 Symbols: - Global: - - Name: _start - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 4 - - Name: foo - Type: STT_FUNC - Size: 4 - - Name: fooA - Type: STT_FUNC - Size: 4 - - Name: bar - Type: STT_OBJECT - Size: 4 - - Name: barA - Type: STT_OBJECT - Size: 4 + - Name: _start + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 4 + Binding: STB_GLOBAL + - Name: foo + Type: STT_FUNC + Size: 4 + Binding: STB_GLOBAL + - Name: fooA + Type: STT_FUNC + Size: 4 + Binding: STB_GLOBAL + - Name: bar + Type: STT_OBJECT + Size: 4 + Binding: STB_GLOBAL + - Name: barA + Type: STT_OBJECT + Size: 4 + Binding: STB_GLOBAL # CHECK: Relocations [ # CHECK-NEXT: Section (2) .rel.text { Index: test/tools/llvm-objcopy/ELF/common-symbol.test =================================================================== --- test/tools/llvm-objcopy/ELF/common-symbol.test +++ test/tools/llvm-objcopy/ELF/common-symbol.test @@ -9,22 +9,26 @@ Type: ET_EXEC Machine: EM_HEXAGON Symbols: - Global: - - Name: test - Index: SHN_COMMON - Value: 0x1234 - - Name: test2 - Index: SHN_HEXAGON_SCOMMON - Value: 0x1235 - - Name: test3 - Index: SHN_HEXAGON_SCOMMON_2 - Value: 0x1236 - - Name: test4 - Index: SHN_HEXAGON_SCOMMON_4 - Value: 0x1237 - - Name: test5 - Index: SHN_HEXAGON_SCOMMON_8 - Value: 0x1238 + - Name: test + Index: SHN_COMMON + Value: 0x1234 + Binding: STB_GLOBAL + - Name: test2 + Index: SHN_HEXAGON_SCOMMON + Value: 0x1235 + Binding: STB_GLOBAL + - Name: test3 + Index: SHN_HEXAGON_SCOMMON_2 + Value: 0x1236 + Binding: STB_GLOBAL + - Name: test4 + Index: SHN_HEXAGON_SCOMMON_4 + Value: 0x1237 + Binding: STB_GLOBAL + - Name: test5 + Index: SHN_HEXAGON_SCOMMON_8 + Value: 0x1238 + Binding: STB_GLOBAL #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/cross-arch-headers.test =================================================================== --- test/tools/llvm-objcopy/ELF/cross-arch-headers.test +++ test/tools/llvm-objcopy/ELF/cross-arch-headers.test @@ -53,15 +53,16 @@ Type: SHT_PROGBITS Flags: [ SHF_ALLOC ] Symbols: - Global: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1234 - - Name: bar - Type: STT_OBJECT - Section: .data - Value: 0xabcd + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1234 + Binding: STB_GLOBAL + - Name: bar + Type: STT_OBJECT + Section: .data + Value: 0xabcd + Binding: STB_GLOBAL # CHECK: Format: # 32-SAME: ELF32- Index: test/tools/llvm-objcopy/ELF/cross-arch-sections-symbols.test =================================================================== --- test/tools/llvm-objcopy/ELF/cross-arch-sections-symbols.test +++ test/tools/llvm-objcopy/ELF/cross-arch-sections-symbols.test @@ -22,16 +22,17 @@ Content: DEADBEEF Size: 16 Symbols: - Global: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 16 - Size: 8 - - Name: bar - Type: STT_OBJECT - Section: .data - Size: 16 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 16 + Size: 8 + Binding: STB_GLOBAL + - Name: bar + Type: STT_OBJECT + Section: .data + Size: 16 + Binding: STB_GLOBAL # CHECK: Sections [ # CHECK-NEXT: Section { Index: test/tools/llvm-objcopy/ELF/discard-all.test =================================================================== --- test/tools/llvm-objcopy/ELF/discard-all.test +++ test/tools/llvm-objcopy/ELF/discard-all.test @@ -33,29 +33,28 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Local: - - Name: Local - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 - - Name: LocalSection - Type: STT_SECTION - Section: .text - - Name: LocalFile - Type: STT_FILE - Weak: - - Name: Weak - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1008 - Global: - - Name: Global - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1010 + - Name: Local + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 + - Name: LocalSection + Type: STT_SECTION + Section: .text + - Name: LocalFile + Type: STT_FILE + - Name: Global + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1010 + Binding: STB_GLOBAL + - Name: Weak + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1008 + Binding: STB_WEAK #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/discard-locals-rel.test =================================================================== --- test/tools/llvm-objcopy/ELF/discard-locals-rel.test +++ test/tools/llvm-objcopy/ELF/discard-locals-rel.test @@ -19,9 +19,8 @@ Symbol: .L.rel Type: R_X86_64_PC32 Symbols: - Local: - - Name: .L.rel - Type: STT_FUNC - Section: .text + - Name: .L.rel + Type: STT_FUNC + Section: .text # CHECK: not stripping symbol '.L.rel' because it is named in a relocation. Index: test/tools/llvm-objcopy/ELF/discard-locals.test =================================================================== --- test/tools/llvm-objcopy/ELF/discard-locals.test +++ test/tools/llvm-objcopy/ELF/discard-locals.test @@ -32,27 +32,26 @@ - Name: .LLVM.Custom.Section Type: SHT_PROGBITS Symbols: - Local: - - Name: Local - Type: STT_FUNC - Section: .text - - Name: .L.LocalSection - Type: STT_SECTION - Section: .text - - Type: STT_SECTION - Section: .LLVM.Custom.Section - - Name: .L.LocalFile - Type: STT_FILE - - Name: .L.str - Type: STT_OBJECT - Section: .text - - Name: .L.undefined - - Name: .L.abs - Index: SHN_ABS - Global: - - Name: .L.Global - Type: STT_FUNC - Section: .text + - Name: Local + Type: STT_FUNC + Section: .text + - Name: .L.LocalSection + Type: STT_SECTION + Section: .text + - Type: STT_SECTION + Section: .LLVM.Custom.Section + - Name: .L.LocalFile + Type: STT_FILE + - Name: .L.str + Type: STT_OBJECT + Section: .text + - Name: .L.undefined + - Name: .L.abs + Index: SHN_ABS + - Name: .L.Global + Type: STT_FUNC + Section: .text + Binding: STB_GLOBAL # CHECK: Symbols [ # CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/discard-mix-local-and-all.test =================================================================== --- test/tools/llvm-objcopy/ELF/discard-mix-local-and-all.test +++ test/tools/llvm-objcopy/ELF/discard-mix-local-and-all.test @@ -55,17 +55,16 @@ - Name: .text Type: SHT_PROGBITS Symbols: - Local: - - Name: Local - Type: STT_FUNC - Section: .text - - Name: .L.str - Type: STT_OBJECT - Section: .text - Global: - - Name: Global - Type: STT_FUNC - Section: .text + - Name: Local + Type: STT_FUNC + Section: .text + - Name: .L.str + Type: STT_OBJECT + Section: .text + - Name: Global + Type: STT_FUNC + Section: .text + Binding: STB_GLOBAL # CHECK: Symbols [ # CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/globalize.test =================================================================== --- test/tools/llvm-objcopy/ELF/globalize.test +++ test/tools/llvm-objcopy/ELF/globalize.test @@ -31,25 +31,25 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Local: - - Name: Local - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 - Weak: - - Name: Weak - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1008 - - Name: WeakUndef - Global: - - Name: Global - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1010 + - Name: Local + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 + - Name: Global + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1010 + Binding: STB_GLOBAL + - Name: Weak + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1008 + Binding: STB_WEAK + - Name: WeakUndef + Binding: STB_WEAK #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/group-addr-misaligned.test =================================================================== --- test/tools/llvm-objcopy/ELF/group-addr-misaligned.test +++ test/tools/llvm-objcopy/ELF/group-addr-misaligned.test @@ -33,6 +33,5 @@ Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ] AddressAlign: 0x0000000000000001 Symbols: - Local: - - Name: foo - Section: .group + - Name: foo + Section: .group Index: test/tools/llvm-objcopy/ELF/group-big-endian.test =================================================================== --- test/tools/llvm-objcopy/ELF/group-big-endian.test +++ test/tools/llvm-objcopy/ELF/group-big-endian.test @@ -38,19 +38,19 @@ Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ] AddressAlign: 0x0000000000000010 Symbols: - Local: - - Name: .text.bar - Type: STT_SECTION - Section: .text.bar - - Name: .text.foo - Type: STT_SECTION - Section: .text.foo - Weak: - - Name: bar - Type: STT_FUNC - Section: .text.bar - Size: 0x0000000000000000 - - Name: foo - Type: STT_FUNC - Section: .text.foo - Size: 0x0000000000000000 + - Name: .text.bar + Type: STT_SECTION + Section: .text.bar + - Name: .text.foo + Type: STT_SECTION + Section: .text.foo + - Name: bar + Type: STT_FUNC + Section: .text.bar + Size: 0x0000000000000000 + Binding: STB_WEAK + - Name: foo + Type: STT_FUNC + Section: .text.foo + Size: 0x0000000000000000 + Binding: STB_WEAK Index: test/tools/llvm-objcopy/ELF/group-unchanged.test =================================================================== --- test/tools/llvm-objcopy/ELF/group-unchanged.test +++ test/tools/llvm-objcopy/ELF/group-unchanged.test @@ -38,19 +38,19 @@ Flags: [ SHF_ALLOC, SHF_EXECINSTR ] AddressAlign: 0x0000000000000010 Symbols: - Local: - - Name: .text.foo - Type: STT_SECTION - Section: .text.foo - - Name: .text.bar - Type: STT_SECTION - Section: .text.bar - Weak: - - Name: foo - Type: STT_FUNC - Section: .text.foo - Size: 0x0000000000000000 - - Name: bar - Type: STT_FUNC - Section: .text.bar - Size: 0x0000000000000000 + - Name: .text.foo + Type: STT_SECTION + Section: .text.foo + - Name: .text.bar + Type: STT_SECTION + Section: .text.bar + - Name: foo + Type: STT_FUNC + Section: .text.foo + Size: 0x0000000000000000 + Binding: STB_WEAK + - Name: bar + Type: STT_FUNC + Section: .text.bar + Size: 0x0000000000000000 + Binding: STB_WEAK Index: test/tools/llvm-objcopy/ELF/group.test =================================================================== --- test/tools/llvm-objcopy/ELF/group.test +++ test/tools/llvm-objcopy/ELF/group.test @@ -38,19 +38,19 @@ Flags: [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ] AddressAlign: 0x0000000000000010 Symbols: - Local: - - Name: .text.bar - Type: STT_SECTION - Section: .text.bar - - Name: .text.foo - Type: STT_SECTION - Section: .text.foo - Weak: - - Name: bar - Type: STT_FUNC - Section: .text.bar - Size: 0x0000000000000000 - - Name: foo - Type: STT_FUNC - Section: .text.foo - Size: 0x0000000000000000 + - Name: .text.bar + Type: STT_SECTION + Section: .text.bar + - Name: .text.foo + Type: STT_SECTION + Section: .text.foo + - Name: bar + Type: STT_FUNC + Section: .text.bar + Size: 0x0000000000000000 + Binding: STB_WEAK + - Name: foo + Type: STT_FUNC + Section: .text.foo + Size: 0x0000000000000000 + Binding: STB_WEAK Index: test/tools/llvm-objcopy/ELF/hexagon-unsupported-on-x86.test =================================================================== --- test/tools/llvm-objcopy/ELF/hexagon-unsupported-on-x86.test +++ test/tools/llvm-objcopy/ELF/hexagon-unsupported-on-x86.test @@ -8,8 +8,8 @@ Type: ET_EXEC Machine: EM_X86_64 Symbols: - Global: - - Name: test - Index: SHN_HEXAGON_SCOMMON + - Name: test + Index: SHN_HEXAGON_SCOMMON + Binding: STB_GLOBAL # CHECK: Symbol 'test' has unsupported value greater than or equal to SHN_LORESERVE: 65280 Index: test/tools/llvm-objcopy/ELF/keep-file-symbols.test =================================================================== --- test/tools/llvm-objcopy/ELF/keep-file-symbols.test +++ test/tools/llvm-objcopy/ELF/keep-file-symbols.test @@ -23,14 +23,13 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Local: - - Name: foo - Type: STT_FILE - Section: .text - Global: - - Name: bar - Type: STT_FUNC - Section: .text + - Name: foo + Type: STT_FILE + Section: .text + - Name: bar + Type: STT_FUNC + Section: .text + Binding: STB_GLOBAL #STRIPALL: Symbols [ #STRIPALL-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/keep-global-symbols-mix-globalize.test =================================================================== --- test/tools/llvm-objcopy/ELF/keep-global-symbols-mix-globalize.test +++ test/tools/llvm-objcopy/ELF/keep-global-symbols-mix-globalize.test @@ -24,21 +24,22 @@ Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Symbols: - Local: - - Name: Local1 - Section: .text - - Name: Local2 - Section: .text - Weak: - - Name: Weak1 - Section: .text - - Name: Weak2 - Section: .text - Global: - - Name: Global1 - Section: .text - - Name: Global2 - Section: .text + - Name: Local1 + Section: .text + - Name: Local2 + Section: .text + - Name: Global1 + Section: .text + Binding: STB_GLOBAL + - Name: Global2 + Section: .text + Binding: STB_GLOBAL + - Name: Weak1 + Section: .text + Binding: STB_WEAK + - Name: Weak2 + Section: .text + Binding: STB_WEAK # CHECK: Symbol table '.symtab' contains 7 entries: # CHECK-NEXT: Num: Value Size Type Bind Vis Ndx Name Index: test/tools/llvm-objcopy/ELF/keep-global-symbols.test =================================================================== --- test/tools/llvm-objcopy/ELF/keep-global-symbols.test +++ test/tools/llvm-objcopy/ELF/keep-global-symbols.test @@ -56,34 +56,42 @@ Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Symbols: - Local: - - Name: Local1 - Section: .text - - Name: Local2 - Section: .text - Weak: - - Name: Weak1 - Section: .text - - Name: Weak2 - Section: .text - - Name: Weak3 - Section: .text - Global: - - Name: Global1 - Section: .text - - Name: Global2 - Section: .text - - Name: Global3 - Section: .text - - Name: Global4 - Section: .text - - Name: Global5 - Section: .text - - Name: Global6 - Section: .text - - Name: "Global5 Global6" - Section: .text - - Name: Global7 + - Name: Local1 + Section: .text + - Name: Local2 + Section: .text + - Name: Global1 + Section: .text + Binding: STB_GLOBAL + - Name: Global2 + Section: .text + Binding: STB_GLOBAL + - Name: Global3 + Section: .text + Binding: STB_GLOBAL + - Name: Global4 + Section: .text + Binding: STB_GLOBAL + - Name: Global5 + Section: .text + Binding: STB_GLOBAL + - Name: Global6 + Section: .text + Binding: STB_GLOBAL + - Name: "Global5 Global6" + Section: .text + Binding: STB_GLOBAL + - Name: Global7 + Binding: STB_GLOBAL + - Name: Weak1 + Section: .text + Binding: STB_WEAK + - Name: Weak2 + Section: .text + Binding: STB_WEAK + - Name: Weak3 + Section: .text + Binding: STB_WEAK # CHECK: Symbol table '.symtab' contains 14 entries: # CHECK-NEXT: Num: Value Size Type Bind Vis Ndx Name Index: test/tools/llvm-objcopy/ELF/keep-symbol-remove-section.test =================================================================== --- test/tools/llvm-objcopy/ELF/keep-symbol-remove-section.test +++ test/tools/llvm-objcopy/ELF/keep-symbol-remove-section.test @@ -16,12 +16,11 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Local: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/keep-symbol.test =================================================================== --- test/tools/llvm-objcopy/ELF/keep-symbol.test +++ test/tools/llvm-objcopy/ELF/keep-symbol.test @@ -27,22 +27,21 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Local: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 - - Name: bar - Type: STT_FUNC - Section: .text - Value: 0x1008 - Size: 8 - - Name: baz - Type: STT_FUNC - Section: .text - Value: 0x1010 - Size: 8 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 + - Name: bar + Type: STT_FUNC + Section: .text + Value: 0x1008 + Size: 8 + - Name: baz + Type: STT_FUNC + Section: .text + Value: 0x1010 + Size: 8 #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/localize-hidden.test =================================================================== --- test/tools/llvm-objcopy/ELF/localize-hidden.test +++ test/tools/llvm-objcopy/ELF/localize-hidden.test @@ -29,53 +29,57 @@ Symbol: undefGlobal Type: R_X86_64_PC32 Symbols: - Local: - - Name: hiddenLocal - Type: STT_FUNC - Section: .text - Value: 0x1008 - Size: 8 - Visibility: STV_HIDDEN - Weak: - - Name: hiddenWeak - Type: STT_FUNC - Section: .text - Value: 0x1010 - Size: 8 - Visibility: STV_HIDDEN - Global: - - Name: defaultGlobal - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1000 - - Name: hiddenGlobal - Type: STT_OBJECT - Section: .data - Value: 0x2006 - Size: 2 - Visibility: STV_HIDDEN - - Name: hiddenGlobalCommon - Type: STT_OBJECT - Index: SHN_COMMON - Value: 0x2006 - Size: 2 - Visibility: STV_HIDDEN - - Name: undefGlobal - Type: STT_FUNC - Size: 8 - - Name: internalGlobal - Type: STT_OBJECT - Section: .data - Value: 0x2002 - Size: 2 - Visibility: STV_INTERNAL - - Name: protectedGlobal - Type: STT_OBJECT - Section: .data - Value: 0x2000 - Size: 4 - Visibility: STV_PROTECTED + - Name: hiddenLocal + Type: STT_FUNC + Section: .text + Value: 0x1008 + Size: 8 + Visibility: STV_HIDDEN + - Name: defaultGlobal + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1000 + Binding: STB_GLOBAL + - Name: hiddenGlobal + Type: STT_OBJECT + Section: .data + Value: 0x2006 + Size: 2 + Visibility: STV_HIDDEN + Binding: STB_GLOBAL + - Name: hiddenGlobalCommon + Type: STT_OBJECT + Index: SHN_COMMON + Value: 0x2006 + Size: 2 + Visibility: STV_HIDDEN + Binding: STB_GLOBAL + - Name: undefGlobal + Type: STT_FUNC + Size: 8 + Binding: STB_GLOBAL + - Name: internalGlobal + Type: STT_OBJECT + Section: .data + Value: 0x2002 + Size: 2 + Visibility: STV_INTERNAL + Binding: STB_GLOBAL + - Name: protectedGlobal + Type: STT_OBJECT + Section: .data + Value: 0x2000 + Size: 4 + Visibility: STV_PROTECTED + Binding: STB_GLOBAL + - Name: hiddenWeak + Type: STT_FUNC + Section: .text + Value: 0x1010 + Size: 8 + Visibility: STV_HIDDEN + Binding: STB_WEAK #CHECK: Relocations [ #CHECK-NEXT: Section (3) .rel.text { Index: test/tools/llvm-objcopy/ELF/localize.test =================================================================== --- test/tools/llvm-objcopy/ELF/localize.test +++ test/tools/llvm-objcopy/ELF/localize.test @@ -42,31 +42,32 @@ AddressAlign: 0x0000000000000010 Content: "0000000000000000" Symbols: - Local: - - Name: Local - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 - Weak: - - Name: Weak - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1008 - Global: - - Name: Global - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1010 - - Name: GlobalUndef - Type: STT_FUNC - - Name: GlobalCommon - Type: STT_OBJECT - Index: SHN_COMMON - Value: 0x2006 - Size: 2 + - Name: Local + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 + - Name: Global + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1010 + Binding: STB_GLOBAL + - Name: GlobalUndef + Type: STT_FUNC + Binding: STB_GLOBAL + - Name: GlobalCommon + Type: STT_OBJECT + Index: SHN_COMMON + Value: 0x2006 + Size: 2 + Binding: STB_GLOBAL + - Name: Weak + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1008 + Binding: STB_WEAK #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/prefix-symbols.test =================================================================== --- test/tools/llvm-objcopy/ELF/prefix-symbols.test +++ test/tools/llvm-objcopy/ELF/prefix-symbols.test @@ -18,17 +18,16 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Local: - - Name: foo - Type: STT_SECTION - Section: .text - - Name: bar - Type: STT_FILE - Section: .text - Global: - - Name: foobar - Type: STT_FUNC - Section: .text + - Name: foo + Type: STT_SECTION + Section: .text + - Name: bar + Type: STT_FILE + Section: .text + - Name: foobar + Type: STT_FUNC + Section: .text + Binding: STB_GLOBAL # COMMON: Symbols [ # COMMON-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/redefine-symbol.test =================================================================== --- test/tools/llvm-objcopy/ELF/redefine-symbol.test +++ test/tools/llvm-objcopy/ELF/redefine-symbol.test @@ -33,20 +33,22 @@ AddressAlign: 0x0000000000000010 Content: "0000000000000000" Symbols: - Global: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1004 - - Name: bar - Type: STT_OBJECT - Section: .data - Value: 0x2000 - Size: 4 - - Name: empty - Type: STT_FUNC - Section: .text - Value: 0x1008 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1004 + Binding: STB_GLOBAL + - Name: bar + Type: STT_OBJECT + Section: .data + Value: 0x2000 + Size: 4 + Binding: STB_GLOBAL + - Name: empty + Type: STT_FUNC + Section: .text + Value: 0x1008 + Binding: STB_GLOBAL #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/regex.test =================================================================== --- test/tools/llvm-objcopy/ELF/regex.test +++ test/tools/llvm-objcopy/ELF/regex.test @@ -30,22 +30,21 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Local: - - Name: foobaz - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 - - Name: bar - Type: STT_FUNC - Section: .text - Value: 0x1008 - Size: 8 - - Name: rebar - Type: STT_FUNC - Section: .text - Value: 0x1010 - Size: 8 + - Name: foobaz + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 + - Name: bar + Type: STT_FUNC + Section: .text + Value: 0x1008 + Size: 8 + - Name: rebar + Type: STT_FUNC + Section: .text + Value: 0x1010 + Size: 8 #REGEX1-NOT: foobaz #REGEX1-NOT: bar Index: test/tools/llvm-objcopy/ELF/reloc-error-remove-symtab.test =================================================================== --- test/tools/llvm-objcopy/ELF/reloc-error-remove-symtab.test +++ test/tools/llvm-objcopy/ELF/reloc-error-remove-symtab.test @@ -24,9 +24,9 @@ Type: R_X86_64_PC32 Symbols: - Global: - - Name: foo - Type: STT_FUNC - Size: 4 + - Name: foo + Type: STT_FUNC + Size: 4 + Binding: STB_GLOBAL # CHECK: Symbol table .symtab cannot be removed because it is referenced by the relocation section .rel.text. Index: test/tools/llvm-objcopy/ELF/remove-section-with-symbol.test =================================================================== --- test/tools/llvm-objcopy/ELF/remove-section-with-symbol.test +++ test/tools/llvm-objcopy/ELF/remove-section-with-symbol.test @@ -16,17 +16,18 @@ Type: SHT_PROGBITS Flags: [ SHF_ALLOC ] Symbols: - Global: - - Name: test - Type: STT_FUNC - Section: .test - Value: 0x1000 - Size: 4 - - Name: test2 - Type: STT_FUNC - Section: .test2 - Value: 0x1000 - Size: 4 + - Name: test + Type: STT_FUNC + Section: .test + Value: 0x1000 + Size: 4 + Binding: STB_GLOBAL + - Name: test2 + Type: STT_FUNC + Section: .test2 + Value: 0x1000 + Size: 4 + Binding: STB_GLOBAL # The sections counted here should be .test, .symtab, .strtab, and .shstrtab. # The 5th section is the null section. Index: test/tools/llvm-objcopy/ELF/rename-section-flag-preserved.test =================================================================== --- test/tools/llvm-objcopy/ELF/rename-section-flag-preserved.test +++ test/tools/llvm-objcopy/ELF/rename-section-flag-preserved.test @@ -51,7 +51,6 @@ SHF_OS_NONCONFORMING, SHF_STRINGS, SHF_TLS, SHF_WRITE ] Content: "a4a4a4a4" Symbols: - Local: - Name: dummy Section: .group Index: test/tools/llvm-objcopy/ELF/section-index-unsupported.test =================================================================== --- test/tools/llvm-objcopy/ELF/section-index-unsupported.test +++ test/tools/llvm-objcopy/ELF/section-index-unsupported.test @@ -8,8 +8,8 @@ Type: ET_EXEC Machine: EM_X86_64 Symbols: - Global: - - Name: test - Index: 0xff05 + - Name: test + Index: 0xff05 + Binding: STB_GLOBAL # CHECK: Symbol 'test' has unsupported value greater than or equal to SHN_LORESERVE: 65285 Index: test/tools/llvm-objcopy/ELF/strip-all-and-keep-symbol.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-all-and-keep-symbol.test +++ test/tools/llvm-objcopy/ELF/strip-all-and-keep-symbol.test @@ -32,22 +32,21 @@ - Name: .debug_bar Type: SHT_PROGBITS Symbols: - Local: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 - - Name: bar - Type: STT_FUNC - Section: .text - Value: 0x1008 - Size: 8 - - Name: baz - Type: STT_FUNC - Section: .text - Value: 0x1010 - Size: 8 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 + - Name: bar + Type: STT_FUNC + Section: .text + Value: 0x1008 + Size: 8 + - Name: baz + Type: STT_FUNC + Section: .text + Value: 0x1010 + Size: 8 # CHECK: Name: .text # CHECK: Name: .gnu.warning.foo Index: test/tools/llvm-objcopy/ELF/strip-all-and-remove.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-all-and-remove.test +++ test/tools/llvm-objcopy/ELF/strip-all-and-remove.test @@ -28,14 +28,16 @@ AddressAlign: 0x0000000000000010 Content: "00000000" Symbols: - Global: - - Name: debugfoo - Section: .debug_foo - - Name: foo - Section: .text - - Name: bar - Section: .text.bar - + - Name: debugfoo + Section: .debug_foo + Binding: STB_GLOBAL + - Name: foo + Section: .text + Binding: STB_GLOBAL + - Name: bar + Section: .text.bar + Binding: STB_GLOBAL + # CHECK: SectionHeaderCount: 3 # CHECK: Name: .text Index: test/tools/llvm-objcopy/ELF/strip-debug-and-remove.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-debug-and-remove.test +++ test/tools/llvm-objcopy/ELF/strip-debug-and-remove.test @@ -28,14 +28,16 @@ AddressAlign: 0x0000000000000010 Content: "00000000" Symbols: - Global: - - Name: debugfoo - Section: .debug_foo - - Name: foo - Section: .text - - Name: bar - Section: .text.bar - + - Name: debugfoo + Section: .debug_foo + Binding: STB_GLOBAL + - Name: foo + Section: .text + Binding: STB_GLOBAL + - Name: bar + Section: .text.bar + Binding: STB_GLOBAL + # CHECK: SectionHeaderCount: 5 # CHECK: Name: .text Index: test/tools/llvm-objcopy/ELF/strip-debug.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-debug.test +++ test/tools/llvm-objcopy/ELF/strip-debug.test @@ -110,11 +110,12 @@ AddressAlign: 0x0000000000000010 Content: "00000000" Symbols: - Global: - - Name: foo - Section: .text - - Name: debugfoo - Section: .debugfoo + - Name: foo + Section: .text + Binding: STB_GLOBAL + - Name: debugfoo + Section: .debugfoo + Binding: STB_GLOBAL # CHECK: SectionHeaderCount: 5 Index: test/tools/llvm-objcopy/ELF/strip-group-symbol.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-group-symbol.test +++ test/tools/llvm-objcopy/ELF/strip-group-symbol.test @@ -23,9 +23,9 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Weak: - - Name: foo - Type: STT_FUNC - Section: .text + - Name: foo + Type: STT_FUNC + Section: .text + Binding: STB_WEAK #CHECK: Symbol foo cannot be removed because it is referenced by the section .group[1]. Index: test/tools/llvm-objcopy/ELF/strip-multiple-files.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-multiple-files.test +++ test/tools/llvm-objcopy/ELF/strip-multiple-files.test @@ -39,17 +39,16 @@ Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Symbols: - Local: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1234 - Size: 8 - - Name: bar - Type: STT_FUNC - Section: .text - Value: 0x5678 - Size: 8 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1234 + Size: 8 + - Name: bar + Type: STT_FUNC + Section: .text + Value: 0x5678 + Size: 8 # CHECK: Symbols [ # CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/strip-reloc-symbol.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-reloc-symbol.test +++ test/tools/llvm-objcopy/ELF/strip-reloc-symbol.test @@ -22,11 +22,10 @@ Symbol: foo Type: R_X86_64_PC32 Symbols: - Local: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 #CHECK: not stripping symbol 'foo' because it is named in a relocation. Index: test/tools/llvm-objcopy/ELF/strip-section-err.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-section-err.test +++ test/tools/llvm-objcopy/ELF/strip-section-err.test @@ -43,9 +43,7 @@ AddressAlign: 0x0000000000000001 Content: '0102' Symbols: - Local: - - Name: foo - Section: .data - Value: 0x0000000000000001 -DynamicSymbols: {} + - Name: foo + Section: .data + Value: 0x0000000000000001 ... Index: test/tools/llvm-objcopy/ELF/strip-symbol-and-relocation.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-symbol-and-relocation.test +++ test/tools/llvm-objcopy/ELF/strip-symbol-and-relocation.test @@ -43,6 +43,6 @@ Symbol: bar Type: R_X86_64_32S Symbols: - Global: - - Name: bar - Section: .text + - Name: bar + Section: .text + Binding: STB_GLOBAL Index: test/tools/llvm-objcopy/ELF/strip-symbol.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-symbol.test +++ test/tools/llvm-objcopy/ELF/strip-symbol.test @@ -28,24 +28,23 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Local: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 - Weak: - - Name: bar - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1008 - Global: - - Name: baz - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1010 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 + - Name: bar + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1008 + Binding: STB_WEAK + - Name: baz + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1010 + Binding: STB_GLOBAL #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/strip-unneeded.test =================================================================== --- test/tools/llvm-objcopy/ELF/strip-unneeded.test +++ test/tools/llvm-objcopy/ELF/strip-unneeded.test @@ -57,42 +57,43 @@ Symbol: foo Type: R_X86_64_PC32 Symbols: - Local: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 - - Name: bar - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1008 - - Name: barfoo - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1010 - - Name: fileSymbol - Type: STT_FILE - - Name: sectionSymbol - Type: STT_SECTION - Weak: - - Name: baz - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1018 - - Name: foobaz - Type: STT_FUNC - Global: - - Name: foobar - Type: STT_FUNC - - Name: barbaz - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1020 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 + - Name: bar + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1008 + - Name: barfoo + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1010 + - Name: fileSymbol + Type: STT_FILE + - Name: sectionSymbol + Type: STT_SECTION + - Name: foobar + Type: STT_FUNC + Binding: STB_GLOBAL + - Name: barbaz + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1020 + Binding: STB_GLOBAL + - Name: baz + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1018 + Binding: STB_WEAK + - Name: foobaz + Type: STT_FUNC + Binding: STB_WEAK #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/symbol-copy.test =================================================================== --- test/tools/llvm-objcopy/ELF/symbol-copy.test +++ test/tools/llvm-objcopy/ELF/symbol-copy.test @@ -22,38 +22,43 @@ AddressAlign: 0x0000000000000010 Content: "0000000000000000" Symbols: - Global: - - Name: _start - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 4 - - Name: bam - Type: STT_FUNC - Section: .text - Value: 0x1001 - Size: 4 - Visibility: STV_HIDDEN - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1004 - - Name: faz - Type: STT_OBJECT - Section: .data - Value: 0x2002 - Size: 2 - Visibility: STV_INTERNAL - - Name: bar - Type: STT_OBJECT - Section: .data - Value: 0x2000 - Size: 4 - - Name: baz - Type: STT_OBJECT - Section: .data - Value: 0x2004 - Size: 4 + - Name: _start + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 4 + Binding: STB_GLOBAL + - Name: bam + Type: STT_FUNC + Section: .text + Value: 0x1001 + Size: 4 + Visibility: STV_HIDDEN + Binding: STB_GLOBAL + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1004 + Binding: STB_GLOBAL + - Name: faz + Type: STT_OBJECT + Section: .data + Value: 0x2002 + Size: 2 + Visibility: STV_INTERNAL + Binding: STB_GLOBAL + - Name: bar + Type: STT_OBJECT + Section: .data + Value: 0x2000 + Size: 4 + Binding: STB_GLOBAL + - Name: baz + Type: STT_OBJECT + Section: .data + Value: 0x2004 + Size: 4 + Binding: STB_GLOBAL #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/symbol-empty-name.test =================================================================== --- test/tools/llvm-objcopy/ELF/symbol-empty-name.test +++ test/tools/llvm-objcopy/ELF/symbol-empty-name.test @@ -37,11 +37,10 @@ Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Symbols: - Local: - - Name: "" - Type: STT_SECTION - Section: .text - Global: - # We need to have a named symbol, otherwise the original - # issue that was fixed is not reproduced by this test. - - Name: foo + - Name: "" + Type: STT_SECTION + Section: .text +# We need to have a named symbol, otherwise the original +# issue that was fixed is not reproduced by this test. + - Name: foo + Binding: STB_GLOBAL Index: test/tools/llvm-objcopy/ELF/weaken-all.test =================================================================== --- test/tools/llvm-objcopy/ELF/weaken-all.test +++ test/tools/llvm-objcopy/ELF/weaken-all.test @@ -23,27 +23,27 @@ Symbol: undefGlobal Type: R_X86_64_PC32 Symbols: - Local: - - Name: Local - Type: STT_FUNC - Section: .text - Value: 0x1008 - Size: 8 - Weak: - - Name: Weak - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1010 - Global: - - Name: Global - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1018 - - Name: undefGlobal - Type: STT_FUNC - Size: 8 + - Name: Local + Type: STT_FUNC + Section: .text + Value: 0x1008 + Size: 8 + - Name: Global + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1018 + Binding: STB_GLOBAL + - Name: undefGlobal + Type: STT_FUNC + Size: 8 + Binding: STB_GLOBAL + - Name: Weak + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1010 + Binding: STB_WEAK #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objcopy/ELF/weaken.test =================================================================== --- test/tools/llvm-objcopy/ELF/weaken.test +++ test/tools/llvm-objcopy/ELF/weaken.test @@ -28,24 +28,23 @@ AddressAlign: 0x0000000000000010 Size: 64 Symbols: - Local: - - Name: Local - Type: STT_FUNC - Section: .text - Value: 0x1000 - Size: 8 - Weak: - - Name: Weak - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1008 - Global: - - Name: Global - Type: STT_FUNC - Size: 8 - Section: .text - Value: 0x1010 + - Name: Local + Type: STT_FUNC + Section: .text + Value: 0x1000 + Size: 8 + - Name: Global + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1010 + Binding: STB_GLOBAL + - Name: Weak + Type: STT_FUNC + Size: 8 + Section: .text + Value: 0x1008 + Binding: STB_WEAK #CHECK: Symbols [ #CHECK-NEXT: Symbol { Index: test/tools/llvm-objdump/X86/Inputs/simple-executable-x86_64.yaml =================================================================== --- test/tools/llvm-objdump/X86/Inputs/simple-executable-x86_64.yaml +++ test/tools/llvm-objdump/X86/Inputs/simple-executable-x86_64.yaml @@ -33,41 +33,43 @@ Flags: [ SHF_MERGE, SHF_STRINGS ] AddressAlign: 0x0000000000000001 Content: 5562756E747520636C616E672076657273696F6E20332E352D317562756E74753120287472756E6B2920286261736564206F6E204C4C564D20332E352900 -Symbols: - Local: - - Type: STT_SECTION - Section: .text - - Type: STT_SECTION - Section: .anothertext - Value: 0x0000000000000010 - - Type: STT_SECTION - Section: .eh_frame - Value: 0x0000000000000050 - - Type: STT_SECTION - Section: .data - Value: 0x00000000000000A8 - - Type: STT_SECTION - Section: .comment - - Name: /tmp/a.c - Type: STT_FILE - - Type: STT_FILE - Global: - - Name: somedata - Type: STT_OBJECT - Section: .anothertext - Value: 0x0000000000000045 - - Name: main - Type: STT_FUNC - Section: .anothertext - Value: 0x0000000000000010 - Size: 0x000000000000003F - - Name: foo - Type: STT_FUNC - Section: .text - Size: 0x000000000000000D - - Name: a - Type: STT_OBJECT - Section: .data - Value: 0x00000000000000A8 - Size: 0x0000000000000004 +Symbols: + - Type: STT_SECTION + Section: .text + - Type: STT_SECTION + Section: .anothertext + Value: 0x0000000000000010 + - Type: STT_SECTION + Section: .eh_frame + Value: 0x0000000000000050 + - Type: STT_SECTION + Section: .data + Value: 0x00000000000000A8 + - Type: STT_SECTION + Section: .comment + - Name: /tmp/a.c + Type: STT_FILE + - Type: STT_FILE + - Name: somedata + Type: STT_OBJECT + Section: .anothertext + Value: 0x0000000000000045 + Binding: STB_GLOBAL + - Name: main + Type: STT_FUNC + Section: .anothertext + Value: 0x0000000000000010 + Size: 0x000000000000003F + Binding: STB_GLOBAL + - Name: foo + Type: STT_FUNC + Section: .text + Size: 0x000000000000000D + Binding: STB_GLOBAL + - Name: a + Type: STT_OBJECT + Section: .data + Value: 0x00000000000000A8 + Size: 0x0000000000000004 + Binding: STB_GLOBAL ... Index: test/tools/llvm-objdump/X86/adjust-vma.test =================================================================== --- test/tools/llvm-objdump/X86/adjust-vma.test +++ test/tools/llvm-objdump/X86/adjust-vma.test @@ -119,13 +119,12 @@ Symbol: .text Type: R_X86_64_32 Symbols: - Local: - - Name: func - Type: STT_FUNC - Section: .text - Value: 0x0000000000000001 - - Name: sym - Section: .text - - Name: .text - Type: STT_SECTION - Section: .text + - Name: func + Type: STT_FUNC + Section: .text + Value: 0x0000000000000001 + - Name: sym + Section: .text + - Name: .text + Type: STT_SECTION + Section: .text Index: test/tools/llvm-objdump/X86/disasm-zeroes-relocations.test =================================================================== --- test/tools/llvm-objdump/X86/disasm-zeroes-relocations.test +++ test/tools/llvm-objdump/X86/disasm-zeroes-relocations.test @@ -51,5 +51,5 @@ Symbol: x Type: R_X86_64_64 Symbols: - Global: - - Name: x + - Name: x + Binding: STB_GLOBAL Index: test/tools/llvm-objdump/X86/disassemble-demangle.test =================================================================== --- test/tools/llvm-objdump/X86/disassemble-demangle.test +++ test/tools/llvm-objdump/X86/disassemble-demangle.test @@ -23,15 +23,14 @@ AddressAlign: 0x0000000000000010 Content: "0000000000000000" Symbols: - Local: - - Name: _Z3fooi - Type: STT_FUNC - Section: .text1 - Value: 0x1000 - - Name: _Z3foov - Type: STT_FUNC - Section: .text2 - Value: 0x1010 + - Name: _Z3fooi + Type: STT_FUNC + Section: .text1 + Value: 0x1000 + - Name: _Z3foov + Type: STT_FUNC + Section: .text2 + Value: 0x1010 # We just want to check that the symbols are demangled # DEMANGLE: foo(int) Index: test/tools/llvm-objdump/relocations-elf.test =================================================================== --- test/tools/llvm-objdump/relocations-elf.test +++ test/tools/llvm-objdump/relocations-elf.test @@ -63,13 +63,12 @@ Type: R_X86_64_64 Symbols: - Local: - - Name: loc1 - - Name: loc2 - Global: - - Name: glob1 - Section: .text - Value: 0x0 - Size: 4 - - Name: glob2 - + - Name: loc1 + - Name: loc2 + - Name: glob1 + Section: .text + Value: 0x0 + Size: 4 + Binding: STB_GLOBAL + - Name: glob2 + Binding: STB_GLOBAL Index: test/tools/llvm-objdump/symbol-table-elf.test =================================================================== --- test/tools/llvm-objdump/symbol-table-elf.test +++ test/tools/llvm-objdump/symbol-table-elf.test @@ -28,22 +28,22 @@ AddressAlign: 0x0000000000000010 Content: "00000000" Symbols: - Global: - - Name: foo - Type: STT_FUNC - Section: .text - Value: 0x1004 - - Name: bar - Type: STT_OBJECT - Section: .text - Value: 0x1008 - Local: - - Name: lfoo - Type: STT_FUNC - Section: .text - Value: 0x1004 - - Name: lbar - Type: STT_OBJECT - Section: .text - Value: 0x1008 + - Name: lfoo + Type: STT_FUNC + Section: .text + Value: 0x1004 + - Name: lbar + Type: STT_OBJECT + Section: .text + Value: 0x1008 + - Name: foo + Type: STT_FUNC + Section: .text + Value: 0x1004 + Binding: STB_GLOBAL + - Name: bar + Type: STT_OBJECT + Section: .text + Value: 0x1008 + Binding: STB_GLOBAL Index: test/tools/llvm-objdump/verdef-elf.test =================================================================== --- test/tools/llvm-objdump/verdef-elf.test +++ test/tools/llvm-objdump/verdef-elf.test @@ -36,6 +36,6 @@ - VERSION_1 - VERSION_2 DynamicSymbols: - Global: - - Name: bar + - Name: bar + Binding: STB_GLOBAL ... Index: test/tools/llvm-objdump/verneed-elf.test =================================================================== --- test/tools/llvm-objdump/verneed-elf.test +++ test/tools/llvm-objdump/verneed-elf.test @@ -43,5 +43,5 @@ Flags: 12 Other: 2 DynamicSymbols: - Global: - - Name: f1 + - Name: f1 + Binding: STB_GLOBAL Index: test/tools/llvm-objdump/verneed-wrong-info.test =================================================================== --- test/tools/llvm-objdump/verneed-wrong-info.test +++ test/tools/llvm-objdump/verneed-wrong-info.test @@ -46,5 +46,5 @@ Flags: 12 Other: 2 DynamicSymbols: - Global: - - Name: f1 + - Name: f1 + Binding: STB_GLOBAL Index: test/tools/llvm-readobj/Inputs/dwarf-exprs.exe-x86-64.yaml =================================================================== --- test/tools/llvm-readobj/Inputs/dwarf-exprs.exe-x86-64.yaml +++ test/tools/llvm-readobj/Inputs/dwarf-exprs.exe-x86-64.yaml @@ -25,11 +25,11 @@ AddressAlign: 8 Content: 1400000000000000017A5200017810011B0C070890010710140000001C000000B0F0FFFF2A00000000000000000000001400000000000000017A5200017810011B0C070890010000240000001C00000050F0FFFF20000000000E10460E184A0F0B770880003F1A3B2A332422000000001C000000440000003EF1FFFF1000000000410E108602430D064B0C07080000002C0000006400000038F1FFFF7F0C000000450C0A00491006027600450F0376780603660C0C0A00450C070800000000002C0000009400000088FDFFFF6600000000410E108602430D06428F03458E04478D058C06488307024B0C07080000000014000000C4000000C8FDFFFF01000000000000000000000000000000 Symbols: - Global: - - Name: myfunc - Type: STT_FUNC - Section: .text - Value: 0x0000000000400000 + - Name: myfunc + Type: STT_FUNC + Section: .text + Value: 0x0000000000400000 + Binding: STB_GLOBAL ProgramHeaders: - Type: PT_LOAD Flags: [ PF_X, PF_R ] Index: test/tools/llvm-readobj/broken-group.test =================================================================== --- test/tools/llvm-readobj/broken-group.test +++ test/tools/llvm-readobj/broken-group.test @@ -73,9 +73,8 @@ Members: - SectionOrType: GRP_COMDAT - SectionOrType: .foo -Symbols: - Local: - - Name: bar - Section: .group - - Name: zed - Section: .group1 +Symbols: + - Name: bar + Section: .group + - Name: zed + Section: .group1 Index: test/tools/llvm-readobj/demangle.test =================================================================== --- test/tools/llvm-readobj/demangle.test +++ test/tools/llvm-readobj/demangle.test @@ -210,13 +210,14 @@ Link: .symtab Content: "0102" Symbols: - Global: - - Name: _Z3fooc - Type: STT_FUNC - Section: .text.foo - - Name: _Z4blahf - Type: STT_FUNC - Section: .text.foo + - Name: _Z3fooc + Type: STT_FUNC + Section: .text.foo + Binding: STB_GLOBAL + - Name: _Z4blahf + Type: STT_FUNC + Section: .text.foo + Binding: STB_GLOBAL ProgramHeaders: - Type: PT_LOAD Flags: [ PF_R, PF_X ] Index: test/tools/llvm-readobj/elf-no-shdrs.test =================================================================== --- test/tools/llvm-readobj/elf-no-shdrs.test +++ test/tools/llvm-readobj/elf-no-shdrs.test @@ -28,6 +28,6 @@ - Name: .text Type: SHT_PROGBITS Symbols: - Global: - - Name: foobar - Section: .text + - Name: foobar + Section: .text + Binding: STB_GLOBAL Index: test/tools/llvm-readobj/elf-packed-relocs.test =================================================================== --- test/tools/llvm-readobj/elf-packed-relocs.test +++ test/tools/llvm-readobj/elf-packed-relocs.test @@ -41,9 +41,10 @@ AddressAlign: 0x0000000000000001 Content: 41505332088020020108800280010202088180808010818080802002080181808080100802818080802004020C7E048180808010088180808020 Symbols: - Global: - - Name: sym1 - - Name: sym2 + - Name: sym1 + Binding: STB_GLOBAL + - Name: sym2 + Binding: STB_GLOBAL ... # RUN: yaml2obj -docnum 2 %s | llvm-readobj -elf-output-style=LLVM -relocations - | FileCheck --check-prefix=LLVM2 %s @@ -90,9 +91,10 @@ AddressAlign: 0x0000000000000001 Content: 415053320A80200202088102830408037C08 Symbols: - Global: - - Name: sym1 - - Name: sym2 + - Name: sym1 + Binding: STB_GLOBAL + - Name: sym2 + Binding: STB_GLOBAL ... # RUN: yaml2obj -docnum 3 %s | llvm-readobj -elf-output-style=LLVM -relocations - | FileCheck --check-prefix=LLVM3 %s @@ -132,7 +134,8 @@ AddressAlign: 0x0000000000000001 Content: 415053320680200208800208008001080802008001818080801008818080802002080881808080100008818080802008 Symbols: - Global: - - Name: sym1 - - Name: sym2 + - Name: sym1 + Binding: STB_GLOBAL + - Name: sym2 + Binding: STB_GLOBAL ... Index: test/tools/llvm-readobj/elf-reloc-negative-addend-no-sym.test =================================================================== --- test/tools/llvm-readobj/elf-reloc-negative-addend-no-sym.test +++ test/tools/llvm-readobj/elf-reloc-negative-addend-no-sym.test @@ -60,8 +60,8 @@ Type: R_X86_64_NONE Addend: -1 DynamicSymbols: - Global: - - Name: force_dynsym + - Name: force_dynsym + Binding: STB_GLOBAL ProgramHeaders: - Type: PT_LOAD VAddr: 0x1000 Index: test/tools/llvm-readobj/elf-reloc-symbol-with-versioning.test =================================================================== --- test/tools/llvm-readobj/elf-reloc-symbol-with-versioning.test +++ test/tools/llvm-readobj/elf-reloc-symbol-with-versioning.test @@ -84,17 +84,25 @@ Symbol: f3 Type: R_X86_64_JUMP_SLOT Symbols: - Global: - - Name: f1 - - Name: f2 - - Name: g1 - - Name: _Z2f1v - - Name: f3 + - Name: f1 + Binding: STB_GLOBAL + - Name: f2 + Binding: STB_GLOBAL + - Name: g1 + Binding: STB_GLOBAL + - Name: _Z2f1v + Binding: STB_GLOBAL + - Name: f3 + Binding: STB_GLOBAL DynamicSymbols: - Global: - - Name: f1 - - Name: f2 - - Name: g1 - - Name: _Z2f1v - - Name: f3 + - Name: f1 + Binding: STB_GLOBAL + - Name: f2 + Binding: STB_GLOBAL + - Name: g1 + Binding: STB_GLOBAL + - Name: _Z2f1v + Binding: STB_GLOBAL + - Name: f3 + Binding: STB_GLOBAL ... Index: test/tools/llvm-readobj/elf-reloc-zero-name-or-value.test =================================================================== --- test/tools/llvm-readobj/elf-reloc-zero-name-or-value.test +++ test/tools/llvm-readobj/elf-reloc-zero-name-or-value.test @@ -74,15 +74,15 @@ Addend: 1 Symbol: sym Symbols: - Global: - - Name: sym - Value: 0 - Section: .text + - Name: sym + Value: 0 + Section: .text + Binding: STB_GLOBAL DynamicSymbols: - Global: - - Name: sym - Value: 0 - Section: .text + - Name: sym + Value: 0 + Section: .text + Binding: STB_GLOBAL ProgramHeaders: - Type: PT_LOAD VAddr: 0x1000 Index: test/tools/llvm-readobj/elf-section-types.test =================================================================== --- test/tools/llvm-readobj/elf-section-types.test +++ test/tools/llvm-readobj/elf-section-types.test @@ -218,5 +218,5 @@ - Name: hiuser Type: 0xffffffff Symbols: - Global: - - Name: foo + - Name: foo + Binding: STB_GLOBAL Index: test/tools/llvm-readobj/elf-symbol-64bit.test =================================================================== --- test/tools/llvm-readobj/elf-symbol-64bit.test +++ test/tools/llvm-readobj/elf-symbol-64bit.test @@ -18,7 +18,6 @@ Type: ET_REL Machine: EM_X86_64 Symbols: - Local: - - Name: a_sym - Value: 0xfedcba9876543210 - Size: 0x0123456789abcdef + - Name: a_sym + Value: 0xfedcba9876543210 + Size: 0x0123456789abcdef Index: test/tools/llvm-readobj/elf-symbol-binding.test =================================================================== --- test/tools/llvm-readobj/elf-symbol-binding.test +++ test/tools/llvm-readobj/elf-symbol-binding.test @@ -52,9 +52,8 @@ # Symbol with st_name = 19, binding = 0xf Content: "0000000000000000000000000000000001000000000000000000000030000000090000000000000000000000a0000000100000000000000000000000b0000000130000000000000000000000f0000000" Symbols: - Local: - - Name: local - Global: - - Name: global - Weak: - - Name: weak + - Name: local + - Name: global + Binding: STB_GLOBAL + - Name: weak + Binding: STB_WEAK Index: test/tools/llvm-readobj/elf-symbol-shndx.test =================================================================== --- test/tools/llvm-readobj/elf-symbol-shndx.test +++ test/tools/llvm-readobj/elf-symbol-shndx.test @@ -75,20 +75,26 @@ EntSize: 4 Content: "0000000001000000" Symbols: - Global: - - Name: undef - - Name: normal - Section: .text - - Name: common - Index: SHN_COMMON - - Name: absolute - Index: SHN_ABS - - Name: proc - Index: 0xff01 - - Name: os - Index: 0xff21 - - Name: reserved - Index: 0xfffe + - Name: undef + Binding: STB_GLOBAL + - Name: normal + Section: .text + Binding: STB_GLOBAL + - Name: common + Index: SHN_COMMON + Binding: STB_GLOBAL + - Name: absolute + Index: SHN_ABS + Binding: STB_GLOBAL + - Name: proc + Index: 0xff01 + Binding: STB_GLOBAL + - Name: os + Index: 0xff21 + Binding: STB_GLOBAL + - Name: reserved + Index: 0xfffe + Binding: STB_GLOBAL --- !ELF FileHeader: @@ -97,6 +103,6 @@ Type: ET_REL Machine: EM_386 Symbols: - Global: - - Name: bad - Index: 0x42 + - Name: bad + Index: 0x42 + Binding: STB_GLOBAL Index: test/tools/llvm-readobj/elf-symbol-types.test =================================================================== --- test/tools/llvm-readobj/elf-symbol-types.test +++ test/tools/llvm-readobj/elf-symbol-types.test @@ -51,27 +51,37 @@ - Name: .text Type: SHT_PROGBITS Symbols: - Global: - - Name: notype - Type: STT_NOTYPE - - Name: object - Type: STT_OBJECT - - Name: func - Type: STT_FUNC - - Name: .text - Type: STT_SECTION - Section: .text - - Name: file - Type: STT_FILE - - Name: common - Type: STT_COMMON - - Name: tls - Type: STT_TLS - - Name: gnu_ifunc - Type: STT_GNU_IFUNC - - Name: os_specific - Type: 11 - - Name: proc_specific - Type: 13 - - Name: unknown - Type: 7 + - Name: notype + Type: STT_NOTYPE + Binding: STB_GLOBAL + - Name: object + Type: STT_OBJECT + Binding: STB_GLOBAL + - Name: func + Type: STT_FUNC + Binding: STB_GLOBAL + - Name: .text + Type: STT_SECTION + Section: .text + Binding: STB_GLOBAL + - Name: file + Type: STT_FILE + Binding: STB_GLOBAL + - Name: common + Type: STT_COMMON + Binding: STB_GLOBAL + - Name: tls + Type: STT_TLS + Binding: STB_GLOBAL + - Name: gnu_ifunc + Type: STT_GNU_IFUNC + Binding: STB_GLOBAL + - Name: os_specific + Type: 11 + Binding: STB_GLOBAL + - Name: proc_specific + Type: 13 + Binding: STB_GLOBAL + - Name: unknown + Type: 7 + Binding: STB_GLOBAL Index: test/tools/llvm-readobj/elf-symbol-visibility.test =================================================================== --- test/tools/llvm-readobj/elf-symbol-visibility.test +++ test/tools/llvm-readobj/elf-symbol-visibility.test @@ -52,12 +52,15 @@ # Symbol with st_name = 1, st_other = 0x4 Content: "0000000000000000000000000000000001000000000000000000000000040000" Symbols: - Global: - - Name: default - Visibility: STV_DEFAULT - - Name: internal - Visibility: STV_INTERNAL - - Name: hidden - Visibility: STV_HIDDEN - - Name: protected - Visibility: STV_PROTECTED + - Name: default + Visibility: STV_DEFAULT + Binding: STB_GLOBAL + - Name: internal + Visibility: STV_INTERNAL + Binding: STB_GLOBAL + - Name: hidden + Visibility: STV_HIDDEN + Binding: STB_GLOBAL + - Name: protected + Visibility: STV_PROTECTED + Binding: STB_GLOBAL Index: test/tools/llvm-readobj/gnu-notes.test =================================================================== --- test/tools/llvm-readobj/gnu-notes.test +++ test/tools/llvm-readobj/gnu-notes.test @@ -101,20 +101,22 @@ AddressAlign: 0x0000000000000004 Content: 040000000900000004000000474E5500676F6C6420312E3131000000 Symbols: - Local: - - Name: reduced.c - Type: STT_FILE - - Type: STT_FILE - Global: - - Name: main - Type: STT_FUNC - Section: .text - Value: 0x0000000000400140 - Size: 0x0000000000000003 - - Name: _edata - Value: 0x0000000000401000 - - Name: __bss_start - Value: 0x0000000000401000 - - Name: _end - Value: 0x0000000000401000 + - Name: reduced.c + Type: STT_FILE + - Type: STT_FILE + - Name: main + Type: STT_FUNC + Section: .text + Value: 0x0000000000400140 + Size: 0x0000000000000003 + Binding: STB_GLOBAL + - Name: _edata + Value: 0x0000000000401000 + Binding: STB_GLOBAL + - Name: __bss_start + Value: 0x0000000000401000 + Binding: STB_GLOBAL + - Name: _end + Value: 0x0000000000401000 + Binding: STB_GLOBAL ... Index: test/tools/obj2yaml/elf-gnu-unique-symbols.yaml =================================================================== --- test/tools/obj2yaml/elf-gnu-unique-symbols.yaml +++ test/tools/obj2yaml/elf-gnu-unique-symbols.yaml @@ -11,10 +11,9 @@ # CHECK-NEXT: Type: ET_REL # CHECK-NEXT: Machine: EM_X86_64 # CHECK-NEXT: Symbols: -# CHECK-NEXT: GNUUnique: -# CHECK-NEXT: - Name: foo -# CHECK-NEXT: Type: STT_OBJECT -# CHECK-NEXT: DynamicSymbols: {} +# CHECK-NEXT: - Name: foo +# CHECK-NEXT: Type: STT_OBJECT +# CHECK-NEXT: Binding: STB_GNU_UNIQUE # CHECK-NEXT: ... --- !ELF @@ -25,6 +24,6 @@ Type: ET_REL Machine: EM_X86_64 Symbols: - GNUUnique: - - Name: foo - Type: STT_OBJECT + - Name: foo + Type: STT_OBJECT + Binding: STB_GNU_UNIQUE Index: test/tools/obj2yaml/missing_symtab.test =================================================================== --- test/tools/obj2yaml/missing_symtab.test +++ test/tools/obj2yaml/missing_symtab.test @@ -2,4 +2,4 @@ # test that we don't crash when passed object files without a symbol table # CHECK-LABEL: FileHeader: # CHECK-LABEL: Sections: -# CHECK-LABEL: Symbols: +# CHECK-NOT: Symbols: Index: test/tools/obj2yaml/special-symbol-indices.yaml =================================================================== --- test/tools/obj2yaml/special-symbol-indices.yaml +++ test/tools/obj2yaml/special-symbol-indices.yaml @@ -4,18 +4,22 @@ ## Test checks that we are able to handle symbols with special/reserved indices. # CHECK: Symbols: -# CHECK-NEXT: Global: -# CHECK-NEXT: - Name: absolute -# CHECK-NEXT: Index: SHN_ABS -# CHECK-NEXT: Value: 0x0000000000001234 -# CHECK-NEXT: - Name: common -# CHECK-NEXT: Index: SHN_COMMON -# CHECK-NEXT: - Name: valid_index -# CHECK-NEXT: Section: .text -# CHECK-NEXT: - Name: processor_specific_index -# CHECK-NEXT: Index: SHN_HEXAGON_SCOMMON_1 -# CHECK-NEXT: - Name: unknown_index -# CHECK-NEXT: Index: 0x0000FFFE +# CHECK-NEXT: - Name: absolute +# CHECK-NEXT: Index: SHN_ABS +# CHECK-NEXT: Binding: STB_GLOBAL +# CHECK-NEXT: Value: 0x0000000000001234 +# CHECK-NEXT: - Name: common +# CHECK-NEXT: Index: SHN_COMMON +# CHECK-NEXT: Binding: STB_GLOBAL +# CHECK-NEXT: - Name: valid_index +# CHECK-NEXT: Section: .text +# CHECK-NEXT: Binding: STB_GLOBAL +# CHECK-NEXT: - Name: processor_specific_index +# CHECK-NEXT: Index: SHN_HEXAGON_SCOMMON_1 +# CHECK-NEXT: Binding: STB_GLOBAL +# CHECK-NEXT: - Name: unknown_index +# CHECK-NEXT: Index: 0x0000FFFE +# CHECK-NEXT: Binding: STB_GLOBAL !ELF FileHeader: @@ -27,18 +31,22 @@ - Name: .text Type: SHT_PROGBITS Symbols: - Global: - - Name: absolute - Index: SHN_ABS - Value: 0x1234 - - Name: common - Index: SHN_COMMON - - Name: valid_index - Index: 0x1 - - Name: processor_specific_index - Index: SHN_HEXAGON_SCOMMON_1 - - Name: unknown_index - Index: 0xfffe + - Name: absolute + Index: SHN_ABS + Value: 0x1234 + Binding: STB_GLOBAL + - Name: common + Index: SHN_COMMON + Binding: STB_GLOBAL + - Name: valid_index + Index: 0x1 + Binding: STB_GLOBAL + - Name: processor_specific_index + Index: SHN_HEXAGON_SCOMMON_1 + Binding: STB_GLOBAL + - Name: unknown_index + Index: 0xfffe + Binding: STB_GLOBAL ## shn_xindex.o contains a symbol with st_shndx == SHN_XINDEX. ## We do not support it at this moment. Index: test/tools/obj2yaml/symbol-type.yaml =================================================================== --- test/tools/obj2yaml/symbol-type.yaml +++ test/tools/obj2yaml/symbol-type.yaml @@ -2,11 +2,12 @@ # RUN: obj2yaml %t | FileCheck %s # CHECK: Symbols: -# CHECK-NEXT: Global: -# CHECK-NEXT: - Name: a_known_type -# CHECK-NEXT: Type: STT_OBJECT -# CHECK-NEXT: - Name: an_unknown_type -# CHECK-NEXT: Type: 0x07 +# CHECK-NEXT: - Name: a_known_type +# CHECK-NEXT: Type: STT_OBJECT +# CHECK-NEXT: Binding: STB_GLOBAL +# CHECK-NEXT: - Name: an_unknown_type +# CHECK-NEXT: Type: 0x07 +# CHECK-NEXT: Binding: STB_GLOBAL !ELF FileHeader: @@ -15,8 +16,9 @@ Type: ET_REL Machine: EM_X86_64 Symbols: - Global: - - Name: a_known_type - Type: STT_OBJECT - - Name: an_unknown_type - Type: 0x7 + - Name: a_known_type + Type: STT_OBJECT + Binding: STB_GLOBAL + - Name: an_unknown_type + Type: 0x7 + Binding: STB_GLOBAL Index: test/tools/obj2yaml/verdef-section.yaml =================================================================== --- test/tools/obj2yaml/verdef-section.yaml +++ test/tools/obj2yaml/verdef-section.yaml @@ -67,6 +67,6 @@ - VERSION_2 - VERSION_3 DynamicSymbols: - Global: - - Name: foo + - Name: foo + Binding: STB_GLOBAL ... Index: test/tools/obj2yaml/verneed-section.yaml =================================================================== --- test/tools/obj2yaml/verneed-section.yaml +++ test/tools/obj2yaml/verneed-section.yaml @@ -65,5 +65,5 @@ Flags: 12 Other: 2 DynamicSymbols: - Global: - - Name: f1 + - Name: f1 + Binding: STB_GLOBAL Index: test/tools/obj2yaml/versym-section.yaml =================================================================== --- test/tools/obj2yaml/versym-section.yaml +++ test/tools/obj2yaml/versym-section.yaml @@ -19,11 +19,11 @@ # CHECK-NEXT: AddressAlign: 0x0000000000000002 # CHECK-NEXT: EntSize: 0x0000000000000002 # CHECK-NEXT: Entries: [ 0, 3, 4 ] -# CHECK-NEXT: Symbols: {} # CHECK-NEXT: DynamicSymbols: -# CHECK-NEXT: Global: -# CHECK-NEXT: - Name: f1 -# CHECK-NEXT: - Name: f2 +# CHECK-NEXT: - Name: f1 +# CHECK-NEXT: Binding: STB_GLOBAL +# CHECK-NEXT: - Name: f2 +# CHECK-NEXT: Binding: STB_GLOBAL --- !ELF FileHeader: @@ -42,7 +42,8 @@ EntSize: 0x0000000000000002 Entries: [ 0, 3, 4 ] DynamicSymbols: - Global: - - Name: f1 - - Name: f2 + - Name: f1 + Binding: STB_GLOBAL + - Name: f2 + Binding: STB_GLOBAL ... Index: test/tools/sanstats/elf.test =================================================================== --- test/tools/sanstats/elf.test +++ test/tools/sanstats/elf.test @@ -171,33 +171,34 @@ Relocations: - Offset: 0x0000000000000027 Type: R_X86_64_64 -Symbols: - Local: - - Name: f.c - Type: STT_FILE - - Type: STT_SECTION - Section: .text - - Type: STT_SECTION - Section: .debug_str - - Type: STT_SECTION - Section: .debug_abbrev - - Type: STT_SECTION - Section: .debug_info - - Type: STT_SECTION - Section: .debug_line - Global: - - Name: f1 - Type: STT_FUNC - Section: .text - Size: 0x0000000000000006 - - Name: f2 - Type: STT_FUNC - Section: .text - Value: 0x0000000000000010 - Size: 0x0000000000000006 - - Name: f3 - Type: STT_FUNC - Section: .text - Value: 0x0000000000000020 - Size: 0x0000000000000006 +Symbols: + - Name: f.c + Type: STT_FILE + - Type: STT_SECTION + Section: .text + - Type: STT_SECTION + Section: .debug_str + - Type: STT_SECTION + Section: .debug_abbrev + - Type: STT_SECTION + Section: .debug_info + - Type: STT_SECTION + Section: .debug_line + - Name: f1 + Type: STT_FUNC + Section: .text + Size: 0x0000000000000006 + Binding: STB_GLOBAL + - Name: f2 + Type: STT_FUNC + Section: .text + Value: 0x0000000000000010 + Size: 0x0000000000000006 + Binding: STB_GLOBAL + - Name: f3 + Type: STT_FUNC + Section: .text + Value: 0x0000000000000020 + Size: 0x0000000000000006 + Binding: STB_GLOBAL ... Index: test/tools/yaml2obj/dynamic-symbols.yaml =================================================================== --- test/tools/yaml2obj/dynamic-symbols.yaml +++ test/tools/yaml2obj/dynamic-symbols.yaml @@ -14,18 +14,18 @@ Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_WRITE ] DynamicSymbols: - Global: - - Name: dynglobal - Type: STT_OBJECT - Section: .data - Weak: - - Name: dynweak - Type: STT_OBJECT - Section: .data - Local: - - Name: dynlocal - Type: STT_OBJECT - Section: .data + - Name: dynglobal + Type: STT_OBJECT + Section: .data + Binding: STB_GLOBAL + - Name: dynweak + Type: STT_OBJECT + Section: .data + Binding: STB_WEAK + - Name: dynlocal + Type: STT_OBJECT + Section: .data + Binding: STB_LOCAL # SECTION: Name: .dynsym # SECTION-NEXT: Type: SHT_DYNSYM Index: test/tools/yaml2obj/dynsym-dynstr-addr.yaml =================================================================== --- test/tools/yaml2obj/dynsym-dynstr-addr.yaml +++ test/tools/yaml2obj/dynsym-dynstr-addr.yaml @@ -36,5 +36,5 @@ Address: 0x2000 EntSize: 0x18 DynamicSymbols: - Global: - - Name: foo + - Name: foo + Binding: STB_GLOBAL Index: test/tools/yaml2obj/elf-comdat-broken.yaml =================================================================== --- test/tools/yaml2obj/elf-comdat-broken.yaml +++ test/tools/yaml2obj/elf-comdat-broken.yaml @@ -16,8 +16,8 @@ - SectionOrType: 0xFF - SectionOrType: 3 Symbols: - Global: - - Name: foo + - Name: foo + - Binding: STB_GLOBAL ## Check we are able to produce SHT_GROUP section with a custom Type (0xFF). # CHECK: Groups { Index: test/tools/yaml2obj/elf-gnu-unique-symbols.yaml =================================================================== --- test/tools/yaml2obj/elf-gnu-unique-symbols.yaml +++ test/tools/yaml2obj/elf-gnu-unique-symbols.yaml @@ -16,6 +16,6 @@ Type: ET_REL Machine: EM_X86_64 Symbols: - GNUUnique: - - Name: foo - Type: STT_OBJECT + - Name: foo + Type: STT_OBJECT + Binding: STB_GNU_UNIQUE Index: test/tools/yaml2obj/elf-symbols-binding-order.yaml =================================================================== --- /dev/null +++ test/tools/yaml2obj/elf-symbols-binding-order.yaml @@ -0,0 +1,18 @@ +## Check we restrict placing local symbols after global in .symtab +## We might want to change it later to allow doing that +## for producing broken outputs. + +# RUN: not yaml2obj %s -o %t 2>&1 | FileCheck %s +# CHECK: error: Local symbol 'bar' after global in Symbols list. + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_X86_64 +Symbols: + - Name: foo + Binding: STB_GLOBAL + - Name: bar + Binding: STB_LOCAL Index: test/tools/yaml2obj/elf-symtab-shinfo.yaml =================================================================== --- test/tools/yaml2obj/elf-symtab-shinfo.yaml +++ test/tools/yaml2obj/elf-symtab-shinfo.yaml @@ -36,8 +36,8 @@ Info: 26 Type: SHT_SYMTAB Symbols: - Global: - - Name: foo + - Name: foo + Binding: STB_GLOBAL DynamicSymbols: - Global: - - Name: bar + - Name: bar + Binding: STB_GLOBAL Index: test/tools/yaml2obj/elf-symtab-shtype.yaml =================================================================== --- test/tools/yaml2obj/elf-symtab-shtype.yaml +++ test/tools/yaml2obj/elf-symtab-shtype.yaml @@ -17,5 +17,5 @@ - Name: .symtab Type: SHT_DYNAMIC Symbols: - Global: - - Name: foo + - Name: foo + Binding: STB_GLOBAL Index: test/tools/yaml2obj/relocation-explicit-symbol-index.yaml =================================================================== --- test/tools/yaml2obj/relocation-explicit-symbol-index.yaml +++ test/tools/yaml2obj/relocation-explicit-symbol-index.yaml @@ -32,5 +32,5 @@ Offset: 0 Symbol: 0x1 Symbols: - Global: - - Name: foo + - Name: foo + Binding: STB_GLOBAL Index: test/tools/yaml2obj/symbol-index.yaml =================================================================== --- test/tools/yaml2obj/symbol-index.yaml +++ test/tools/yaml2obj/symbol-index.yaml @@ -11,25 +11,32 @@ - Name: .text Type: SHT_PROGBITS Symbols: - Global: - - Name: absolute1 - Index: SHN_ABS - Value: 0x1234 - - Name: absolute2 - Index: 0xfff1 - Value: 0x4321 - - Name: common1 - Index: SHN_COMMON - - Name: common2 - Index: 0xfff2 - - Name: good - Index: 0x1 - - Name: bad - Index: 0x42 - - Name: undef1 - Index: SHN_UNDEF - - Name: undef2 - Index: 0 + - Name: absolute1 + Index: SHN_ABS + Value: 0x1234 + Binding: STB_GLOBAL + - Name: absolute2 + Index: 0xfff1 + Value: 0x4321 + Binding: STB_GLOBAL + - Name: common1 + Index: SHN_COMMON + Binding: STB_GLOBAL + - Name: common2 + Index: 0xfff2 + Binding: STB_GLOBAL + - Name: good + Index: 0x1 + Binding: STB_GLOBAL + - Name: bad + Index: 0x42 + Binding: STB_GLOBAL + - Name: undef1 + Index: SHN_UNDEF + Binding: STB_GLOBAL + - Name: undef2 + Index: 0 + Binding: STB_GLOBAL # CHECK: Symbol table '.symtab' contains 9 entries # CHECK-NEXT: Num: {{.*}} Ndx Name Index: test/tools/yaml2obj/symbol-type.yaml =================================================================== --- test/tools/yaml2obj/symbol-type.yaml +++ test/tools/yaml2obj/symbol-type.yaml @@ -26,18 +26,24 @@ - Name: .text Type: SHT_PROGBITS Symbols: - Global: - - Name: notype - Type: STT_NOTYPE - - Name: normal_type - Type: STT_OBJECT - - Name: .text - Type: STT_SECTION - - Name: known_hex - Type: 0x1 - - Name: unknown_hex - Type: 0xb - - Name: known_int - Type: 1 - - Name: unknown_int - Type: 11 + - Name: notype + Type: STT_NOTYPE + Binding: STB_GLOBAL + - Name: normal_type + Type: STT_OBJECT + Binding: STB_GLOBAL + - Name: .text + Type: STT_SECTION + Binding: STB_GLOBAL + - Name: known_hex + Type: 0x1 + Binding: STB_GLOBAL + - Name: unknown_hex + Type: 0xb + Binding: STB_GLOBAL + - Name: known_int + Type: 1 + Binding: STB_GLOBAL + - Name: unknown_int + Type: 11 + Binding: STB_GLOBAL Index: test/tools/yaml2obj/verdef-section.yaml =================================================================== --- test/tools/yaml2obj/verdef-section.yaml +++ test/tools/yaml2obj/verdef-section.yaml @@ -64,6 +64,6 @@ - VERSION_2 - VERSION_3 DynamicSymbols: - Global: - - Name: foo + - Name: foo + Binding: STB_GLOBAL ... Index: test/tools/yaml2obj/verneed-section.yaml =================================================================== --- test/tools/yaml2obj/verneed-section.yaml +++ test/tools/yaml2obj/verneed-section.yaml @@ -69,5 +69,5 @@ Flags: 12 Other: 2 DynamicSymbols: - Global: - - Name: f1 + - Name: f1 + Binding: STB_GLOBAL Index: test/tools/yaml2obj/versym-section.yaml =================================================================== --- test/tools/yaml2obj/versym-section.yaml +++ test/tools/yaml2obj/versym-section.yaml @@ -82,7 +82,8 @@ Flags: 0 Other: 4 DynamicSymbols: - Global: - - Name: f1 - - Name: f2 + - Name: f1 + Binding: STB_GLOBAL + - Name: f2 + Binding: STB_GLOBAL ... Index: tools/obj2yaml/elf2yaml.cpp =================================================================== --- tools/obj2yaml/elf2yaml.cpp +++ tools/obj2yaml/elf2yaml.cpp @@ -42,7 +42,7 @@ ArrayRef ShndxTable; std::error_code dumpSymbols(const Elf_Shdr *Symtab, - ELFYAML::SymbolsDef &Symbols); + std::vector &Symbols); std::error_code dumpSymbol(const Elf_Sym *Sym, const Elf_Shdr *SymTab, StringRef StrTable, ELFYAML::Symbol &S); std::error_code dumpCommonSection(const Elf_Shdr *Shdr, ELFYAML::Section &S); @@ -226,8 +226,9 @@ } template -std::error_code ELFDumper::dumpSymbols(const Elf_Shdr *Symtab, - ELFYAML::SymbolsDef &Symbols) { +std::error_code +ELFDumper::dumpSymbols(const Elf_Shdr *Symtab, + std::vector &Symbols) { if (!Symtab) return std::error_code(); @@ -240,33 +241,11 @@ if (!SymtabOrErr) return errorToErrorCode(SymtabOrErr.takeError()); - bool IsFirstSym = true; - for (const auto &Sym : *SymtabOrErr) { - if (IsFirstSym) { - IsFirstSym = false; - continue; - } - + for (const auto &Sym : (*SymtabOrErr).drop_front()) { ELFYAML::Symbol S; if (auto EC = dumpSymbol(&Sym, Symtab, StrTable, S)) return EC; - - switch (Sym.getBinding()) { - case ELF::STB_LOCAL: - Symbols.Local.push_back(S); - break; - case ELF::STB_GLOBAL: - Symbols.Global.push_back(S); - break; - case ELF::STB_WEAK: - Symbols.Weak.push_back(S); - break; - case ELF::STB_GNU_UNIQUE: - Symbols.GNUUnique.push_back(S); - break; - default: - llvm_unreachable("Unknown ELF symbol binding"); - } + Symbols.push_back(S); } return std::error_code(); @@ -280,6 +259,7 @@ S.Value = Sym->st_value; S.Size = Sym->st_size; S.Other = Sym->st_other; + S.Binding = Sym->getBinding(); Expected SymbolNameOrErr = getSymbolName(Sym, StrTable, SymTab); if (!SymbolNameOrErr) Index: tools/yaml2obj/yaml2elf.cpp =================================================================== --- tools/yaml2obj/yaml2elf.cpp +++ tools/yaml2obj/yaml2elf.cpp @@ -133,7 +133,7 @@ const ELFYAML::Object &Doc; bool buildSectionIndex(); - bool buildSymbolIndex(const ELFYAML::SymbolsDef &); + bool buildSymbolIndex(ArrayRef Symbols); void initELFHeader(Elf_Ehdr &Header); void initProgramHeaders(std::vector &PHeaders); bool initSectionHeaders(std::vector &SHeaders, @@ -145,8 +145,7 @@ ContiguousBlobAccumulator &CBA); void setProgramHeaderLayout(std::vector &PHeaders, std::vector &SHeaders); - void addSymbols(const std::vector &Symbols, - std::vector &Syms, unsigned SymbolBinding, + void addSymbols(ArrayRef Symbols, std::vector &Syms, const StringTableBuilder &Strtab); void writeSectionContent(Elf_Shdr &SHeader, const ELFYAML::RawContentSection &Section, @@ -171,7 +170,6 @@ bool writeSectionContent(Elf_Shdr &SHeader, const ELFYAML::DynamicSection &Section, ContiguousBlobAccumulator &CBA); - bool hasDynamicSymbols() const; SmallVector implicitSectionNames() const; // - SHT_NULL entry (placed first, i.e. 0'th entry) @@ -323,6 +321,13 @@ return true; } +static size_t findLastLocal(ArrayRef Symbols) { + for (size_t I = 0; I < Symbols.size(); ++I) + if (Symbols[I].Binding.value != ELF::STB_LOCAL) + return I; + return Symbols.size(); +} + template void ELFState::initSymtabSectionHeader(Elf_Shdr &SHeader, SymtabType STType, @@ -335,7 +340,7 @@ const auto &Symbols = IsStatic ? Doc.Symbols : Doc.DynamicSymbols; auto &Strtab = IsStatic ? DotStrtab : DotDynstr; // One greater than symbol table index of the last local symbol. - SHeader.sh_info = Symbols.Local.size() + 1; + SHeader.sh_info = findLastLocal(Symbols) + 1; SHeader.sh_entsize = sizeof(Elf_Sym); SHeader.sh_addralign = 8; @@ -359,10 +364,7 @@ Syms.push_back(Sym); } - addSymbols(Symbols.Local, Syms, ELF::STB_LOCAL, Strtab); - addSymbols(Symbols.Global, Syms, ELF::STB_GLOBAL, Strtab); - addSymbols(Symbols.Weak, Syms, ELF::STB_WEAK, Strtab); - addSymbols(Symbols.GNUUnique, Syms, ELF::STB_GNU_UNIQUE, Strtab); + addSymbols(Symbols, Syms, Strtab); writeArrayData( CBA.getOSAndAlignedOffset(SHeader.sh_offset, SHeader.sh_addralign), @@ -471,16 +473,15 @@ } template -void ELFState::addSymbols(const std::vector &Symbols, +void ELFState::addSymbols(ArrayRef Symbols, std::vector &Syms, - unsigned SymbolBinding, const StringTableBuilder &Strtab) { for (const auto &Sym : Symbols) { Elf_Sym Symbol; zero(Symbol); if (!Sym.Name.empty()) Symbol.st_name = Strtab.getOffset(Sym.Name); - Symbol.setBindingAndType(SymbolBinding, Sym.Type); + Symbol.setBindingAndType(Sym.Binding, Sym.Type); if (!Sym.Section.empty()) { unsigned Index; if (SN2I.lookup(Sym.Section, Index)) { @@ -796,45 +797,41 @@ } template -bool ELFState::buildSymbolIndex(const ELFYAML::SymbolsDef &Symbols) { +bool ELFState::buildSymbolIndex(ArrayRef Symbols) { + bool GlobalSymbolSeen = false; std::size_t I = 0; - for (const std::vector &V : - {Symbols.Local, Symbols.Global, Symbols.Weak, Symbols.GNUUnique}) { - for (const auto &Sym : V) { - ++I; - if (Sym.Name.empty()) - continue; - if (SymN2I.addName(Sym.Name, I)) { - WithColor::error() << "Repeated symbol name: '" << Sym.Name << "'.\n"; - return false; - } + for (const auto &Sym : Symbols) { + ++I; + + StringRef Name = Sym.Name; + if (Sym.Binding.value == ELF::STB_LOCAL && GlobalSymbolSeen) { + WithColor::error() << "Local symbol '" + Name + + "' after global in Symbols list.\n"; + return false; + } + if (Sym.Binding.value != ELF::STB_LOCAL) + GlobalSymbolSeen = true; + + if (!Name.empty() && SymN2I.addName(Name, I)) { + WithColor::error() << "Repeated symbol name: '" << Name << "'.\n"; + return false; } } return true; } template void ELFState::finalizeStrings() { - auto AddSymbols = [](StringTableBuilder &StrTab, - const ELFYAML::SymbolsDef &Symbols) { - for (const auto &Sym : Symbols.Local) - StrTab.add(Sym.Name); - for (const auto &Sym : Symbols.Global) - StrTab.add(Sym.Name); - for (const auto &Sym : Symbols.Weak) - StrTab.add(Sym.Name); - for (const auto &Sym : Symbols.GNUUnique) - StrTab.add(Sym.Name); - }; - // Add the regular symbol names to .strtab section. - AddSymbols(DotStrtab, Doc.Symbols); + for (const ELFYAML::Symbol &Sym : Doc.Symbols) + DotStrtab.add(Sym.Name); DotStrtab.finalize(); - if (!hasDynamicSymbols()) + if (Doc.DynamicSymbols.empty()) return; // Add the dynamic symbol names to .dynstr section. - AddSymbols(DotDynstr, Doc.DynamicSymbols); + for (const ELFYAML::Symbol &Sym : Doc.DynamicSymbols) + DotDynstr.add(Sym.Name); // SHT_GNU_verdef and SHT_GNU_verneed sections might also // add strings to .dynstr section. @@ -901,7 +898,7 @@ State.initStrtabSectionHeader(SHeaders[Index], ".strtab", State.DotStrtab, CBA); Index = State.SN2I.get(".shstrtab"); State.initStrtabSectionHeader(SHeaders[Index], ".shstrtab", State.DotShStrtab, CBA); - if (State.hasDynamicSymbols()) { + if (!Doc.DynamicSymbols.empty()) { Index = State.SN2I.get(".dynsym"); State.initSymtabSectionHeader(SHeaders[Index], SymtabType::Dynamic, CBA); SHeaders[Index].sh_flags |= ELF::SHF_ALLOC; @@ -920,16 +917,9 @@ return 0; } -template bool ELFState::hasDynamicSymbols() const { - return !Doc.DynamicSymbols.Global.empty() || - !Doc.DynamicSymbols.Weak.empty() || - !Doc.DynamicSymbols.Local.empty() || - !Doc.DynamicSymbols.GNUUnique.empty(); -} - template SmallVector ELFState::implicitSectionNames() const { - if (!hasDynamicSymbols()) + if (Doc.DynamicSymbols.empty()) return {".symtab", ".strtab", ".shstrtab"}; return {".symtab", ".strtab", ".shstrtab", ".dynsym", ".dynstr"}; }