]> granicus.if.org Git - llvm/commitdiff
[yaml2obj][obj2yaml] - Change how symbol's binding is descibed when parsing/dumping.
authorGeorge Rimar <grimar@accesssoftek.com>
Wed, 3 Apr 2019 14:53:42 +0000 (14:53 +0000)
committerGeorge Rimar <grimar@accesssoftek.com>
Wed, 3 Apr 2019 14:53:42 +0000 (14:53 +0000)
Currently, YAML has the following syntax for describing the symbols:

Symbols:
  Local:
    LocalSymbol1:
    ...
    LocalSymbol2:
    ...
  ...
  Global:
    GlobalSymbol1:
  ...
  Weak:
  ...
  GNUUnique:

I.e. symbols are grouped by their bindings. That is not very convenient,
because:

It does not allow to set a custom binding, what can be useful for producing
broken/special outputs for test cases. Adding a new binding would require to
change a syntax (what we observed when added GNUUnique recently).

It does not allow to change the order of the symbols in .symtab/.dynsym,
i.e. currently all Local symbols are placed first, then Global, Weak and GNUUnique
are following, but we are not able to change the order.

It is not consistent. Binding is just one of the properties of the symbol,
we do not group them by other properties.

It makes the code more complex that it can be. This patch shows it can be simplified
with the change performed.

The patch changes the syntax to just:

Symbols:
  Symbol1:
  ...
  Symbol2:
  ...
...

With that, we are able to work with the binding field just like with any other symbol property.

Differential revision: https://reviews.llvm.org/D60122

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357595 91177308-0d34-0410-b5e6-96231b3b80d8

119 files changed:
include/llvm/ObjectYAML/ELFYAML.h
lib/ObjectYAML/ELFYAML.cpp
test/DebugInfo/invalid-relocations.test
test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml
test/Object/AMDGPU/elf64-relocs.yaml
test/Object/Lanai/yaml2obj-elf-lanai-rel.yaml
test/Object/Mips/abi-flags.yaml
test/Object/Mips/elf-abi.yaml
test/Object/Mips/elf-flags.yaml
test/Object/Mips/elf-mips64-rel.yaml
test/Object/X86/yaml-elf-x86-rel-broken.yaml
test/Object/X86/yaml2obj-elf-x86-rel.yaml
test/Object/obj2yaml-invalid-reloc.test
test/Object/obj2yaml.test
test/Object/yaml2obj-elf-alignment.yaml
test/Object/yaml2obj-elf-multi-doc.test
test/Object/yaml2obj-elf-rel-noref.yaml
test/Object/yaml2obj-elf-rel.yaml
test/Object/yaml2obj-elf-symbol-LocalGlobalWeak.yaml
test/Object/yaml2obj-elf-symbol-basic.yaml
test/Object/yaml2obj-elf-symbol-visibility.yaml
test/tools/llvm-ar/Inputs/add-lib1.yaml
test/tools/llvm-ar/Inputs/add-lib2.yaml
test/tools/llvm-ar/Inputs/add-lib3.yaml
test/tools/llvm-ar/Inputs/elf.yaml
test/tools/llvm-objcopy/ELF/Inputs/compress-debug-sections.yaml
test/tools/llvm-objcopy/ELF/abs-symbol.test
test/tools/llvm-objcopy/ELF/armexidx-link.test
test/tools/llvm-objcopy/ELF/basic-archive-copy.test
test/tools/llvm-objcopy/ELF/basic-relocations.test
test/tools/llvm-objcopy/ELF/common-symbol.test
test/tools/llvm-objcopy/ELF/cross-arch-headers.test
test/tools/llvm-objcopy/ELF/cross-arch-sections-symbols.test
test/tools/llvm-objcopy/ELF/discard-all.test
test/tools/llvm-objcopy/ELF/discard-locals-rel.test
test/tools/llvm-objcopy/ELF/discard-locals.test
test/tools/llvm-objcopy/ELF/discard-mix-local-and-all.test
test/tools/llvm-objcopy/ELF/globalize.test
test/tools/llvm-objcopy/ELF/group-addr-misaligned.test
test/tools/llvm-objcopy/ELF/group-big-endian.test
test/tools/llvm-objcopy/ELF/group-unchanged.test
test/tools/llvm-objcopy/ELF/group.test
test/tools/llvm-objcopy/ELF/hexagon-unsupported-on-x86.test
test/tools/llvm-objcopy/ELF/keep-file-symbols.test
test/tools/llvm-objcopy/ELF/keep-global-symbols-mix-globalize.test
test/tools/llvm-objcopy/ELF/keep-global-symbols.test
test/tools/llvm-objcopy/ELF/keep-symbol-remove-section.test
test/tools/llvm-objcopy/ELF/keep-symbol.test
test/tools/llvm-objcopy/ELF/localize-hidden.test
test/tools/llvm-objcopy/ELF/localize.test
test/tools/llvm-objcopy/ELF/prefix-symbols.test
test/tools/llvm-objcopy/ELF/redefine-symbol.test
test/tools/llvm-objcopy/ELF/regex.test
test/tools/llvm-objcopy/ELF/reloc-error-remove-symtab.test
test/tools/llvm-objcopy/ELF/remove-section-with-symbol.test
test/tools/llvm-objcopy/ELF/rename-section-flag-preserved.test
test/tools/llvm-objcopy/ELF/section-index-unsupported.test
test/tools/llvm-objcopy/ELF/strip-all-and-keep-symbol.test
test/tools/llvm-objcopy/ELF/strip-all-and-remove.test
test/tools/llvm-objcopy/ELF/strip-debug-and-remove.test
test/tools/llvm-objcopy/ELF/strip-debug.test
test/tools/llvm-objcopy/ELF/strip-group-symbol.test
test/tools/llvm-objcopy/ELF/strip-multiple-files.test
test/tools/llvm-objcopy/ELF/strip-reloc-symbol.test
test/tools/llvm-objcopy/ELF/strip-section-err.test
test/tools/llvm-objcopy/ELF/strip-symbol-and-relocation.test
test/tools/llvm-objcopy/ELF/strip-symbol.test
test/tools/llvm-objcopy/ELF/strip-unneeded.test
test/tools/llvm-objcopy/ELF/symbol-copy.test
test/tools/llvm-objcopy/ELF/symbol-empty-name.test
test/tools/llvm-objcopy/ELF/weaken-all.test
test/tools/llvm-objcopy/ELF/weaken.test
test/tools/llvm-objdump/X86/Inputs/simple-executable-x86_64.yaml
test/tools/llvm-objdump/X86/adjust-vma.test
test/tools/llvm-objdump/X86/disasm-zeroes-relocations.test
test/tools/llvm-objdump/X86/disassemble-demangle.test
test/tools/llvm-objdump/relocations-elf.test
test/tools/llvm-objdump/symbol-table-elf.test
test/tools/llvm-objdump/verdef-elf.test
test/tools/llvm-objdump/verneed-elf.test
test/tools/llvm-objdump/verneed-wrong-info.test
test/tools/llvm-readobj/Inputs/dwarf-exprs.exe-x86-64.yaml
test/tools/llvm-readobj/broken-group.test
test/tools/llvm-readobj/demangle.test
test/tools/llvm-readobj/elf-no-shdrs.test
test/tools/llvm-readobj/elf-packed-relocs.test
test/tools/llvm-readobj/elf-reloc-negative-addend-no-sym.test
test/tools/llvm-readobj/elf-reloc-symbol-with-versioning.test
test/tools/llvm-readobj/elf-reloc-zero-name-or-value.test
test/tools/llvm-readobj/elf-section-types.test
test/tools/llvm-readobj/elf-symbol-64bit.test
test/tools/llvm-readobj/elf-symbol-binding.test
test/tools/llvm-readobj/elf-symbol-shndx.test
test/tools/llvm-readobj/elf-symbol-types.test
test/tools/llvm-readobj/elf-symbol-visibility.test
test/tools/llvm-readobj/gnu-notes.test
test/tools/obj2yaml/elf-gnu-unique-symbols.yaml
test/tools/obj2yaml/missing_symtab.test
test/tools/obj2yaml/special-symbol-indices.yaml
test/tools/obj2yaml/symbol-type.yaml
test/tools/obj2yaml/verdef-section.yaml
test/tools/obj2yaml/verneed-section.yaml
test/tools/obj2yaml/versym-section.yaml
test/tools/sanstats/elf.test
test/tools/yaml2obj/dynamic-symbols.yaml
test/tools/yaml2obj/dynsym-dynstr-addr.yaml
test/tools/yaml2obj/elf-comdat-broken.yaml
test/tools/yaml2obj/elf-gnu-unique-symbols.yaml
test/tools/yaml2obj/elf-symbols-binding-order.yaml [new file with mode: 0644]
test/tools/yaml2obj/elf-symtab-shinfo.yaml
test/tools/yaml2obj/elf-symtab-shtype.yaml
test/tools/yaml2obj/relocation-explicit-symbol-index.yaml
test/tools/yaml2obj/symbol-index.yaml
test/tools/yaml2obj/symbol-type.yaml
test/tools/yaml2obj/verdef-section.yaml
test/tools/yaml2obj/verneed-section.yaml
test/tools/yaml2obj/versym-section.yaml
tools/obj2yaml/elf2yaml.cpp
tools/yaml2obj/yaml2elf.cpp

index a63a765765586bbec3ca6d730328f64989277306..5eb53dac542004056889959cbe6c7847275355b3 100644 (file)
@@ -52,6 +52,7 @@ LLVM_YAML_STRONG_TYPEDEF(uint8_t, ELF_RSS)
 // 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 @@ struct Symbol {
   ELF_STT Type;
   StringRef Section;
   Optional<ELF_SHN> Index;
+  ELF_STB Binding;
   llvm::yaml::Hex64 Value;
   llvm::yaml::Hex64 Size;
   uint8_t Other;
 };
 
-struct SymbolsDef {
-  std::vector<Symbol> Local;
-  std::vector<Symbol> Global;
-  std::vector<Symbol> Weak;
-  std::vector<Symbol> GNUUnique;
-};
-
 struct SectionOrType {
   StringRef sectionNameOrType;
 };
@@ -289,8 +284,8 @@ struct Object {
   // 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<Symbol> Symbols;
+  std::vector<Symbol> DynamicSymbols;
 };
 
 } // end namespace ELFYAML
@@ -362,6 +357,10 @@ template <> struct ScalarEnumerationTraits<ELFYAML::ELF_SHN> {
   static void enumeration(IO &IO, ELFYAML::ELF_SHN &Value);
 };
 
+template <> struct ScalarEnumerationTraits<ELFYAML::ELF_STB> {
+  static void enumeration(IO &IO, ELFYAML::ELF_STB &Value);
+};
+
 template <>
 struct ScalarEnumerationTraits<ELFYAML::ELF_STT> {
   static void enumeration(IO &IO, ELFYAML::ELF_STT &Value);
@@ -437,10 +436,6 @@ struct MappingTraits<ELFYAML::Symbol> {
   static StringRef validate(IO &IO, ELFYAML::Symbol &Symbol);
 };
 
-template <> struct MappingTraits<ELFYAML::SymbolsDef> {
-  static void mapping(IO &IO, ELFYAML::SymbolsDef &Symbols);
-};
-
 template <> struct MappingTraits<ELFYAML::DynamicEntry> {
   static void mapping(IO &IO, ELFYAML::DynamicEntry &Rel);
 };
index 1d159eccb46adc866505cf5877df42a07e434b94..758be51469dab793cc8ab4f7a8b52716fb93efe5 100644 (file)
@@ -560,6 +560,17 @@ void ScalarEnumerationTraits<ELFYAML::ELF_SHN>::enumeration(
   IO.enumFallback<Hex32>(Value);
 }
 
+void ScalarEnumerationTraits<ELFYAML::ELF_STB>::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<Hex8>(Value);
+}
+
 void ScalarEnumerationTraits<ELFYAML::ELF_STT>::enumeration(
     IO &IO, ELFYAML::ELF_STT &Value) {
 #define ECase(X) IO.enumCase(Value, #X, ELF::X)
@@ -845,9 +856,9 @@ void MappingTraits<ELFYAML::Symbol>::mapping(IO &IO, ELFYAML::Symbol &Symbol) {
   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<NormalizedOther, uint8_t> 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 @@ StringRef MappingTraits<ELFYAML::Symbol>::validate(IO &IO,
   return StringRef();
 }
 
-void MappingTraits<ELFYAML::SymbolsDef>::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 2252e1a205c3d69183f02db18fcf22b82c4d6987..9ac4877c9dbba25f885b04c5703db57ac7f24a68 100644 (file)
@@ -28,8 +28,8 @@ Sections:
         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 c1e318a7472c4ea29b84326e7761d70ea73e80d7..b8162bd3cd2a98319f2ec5d21381b770f2bb1a01 100644 (file)
@@ -43,13 +43,11 @@ Sections:
         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 d2c45e447ff3b3749ff3366575aa1fa48ed19de2..0e6bc2fcfc4ce7ac7d4ccbaac57f7d64487adfe7 100644 (file)
@@ -65,13 +65,11 @@ Sections:
         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 ec2a19d741dd95d8dee471358187f5a7a702a10c..b5e6465a0e67aae0c0c3672bb04bdcad4dd812fb 100644 (file)
@@ -49,13 +49,11 @@ Sections:
 
 
 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 ee66638c9d11e77a33c61d554848dafe9a5dee2c..cdfaebe6e7089b4bd0c40c7dee3a912ce6136743 100644 (file)
@@ -59,7 +59,6 @@ Sections:
   Flags2:       0x0
 
 Symbols:
-  Local:
-    - Name:    .MIPS.abiflags
-      Type:    STT_SECTION
-      Section: .MIPS.abiflags
+  - Name:    .MIPS.abiflags
+    Type:    STT_SECTION
+    Section: .MIPS.abiflags
index 3a7b05e01cd3cd6d03f37dbdc4ce304e25523fd8..ceb64a3870070bd2cc9fd6e961a15bcab60b794e 100644 (file)
@@ -62,11 +62,11 @@ Sections:
     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 @@ Sections:
     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 @@ Sections:
     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 @@ Sections:
     Size:            4
 
 Symbols:
-  Global:
-    - Name:    T1
-      Section: .text
-      Value:   0
-      Size:    4
+  - Name:    T1
+    Section: .text
+    Value:   0
+    Size:    4
+    Binding:  STB_GLOBAL
 ...
index dceabc05c8b1d860d37e4c12fceaae5dd3c28a69..ad71f343f027b8278b1c5f54c9cde8f1f5f5c693 100644 (file)
@@ -44,9 +44,9 @@ Sections:
     Size:          4
 
 Symbols:
-  Global:
-    - Name:    T1
-      Section: .text
-      Value:   0
-      Size:    4
+  - Name:    T1
+    Section: .text
+    Value:   0
+    Size:    4
+    Binding: STB_GLOBAL
 ...
index 3e56555347539db0408a79626423e885a960a25f..169978ac5b59eda4d2d676060418c8d14a97fb74 100644 (file)
@@ -98,17 +98,17 @@ Sections:
     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 b9afd768e0b95bea8d05ec08a7d337343c128c54..05572675d1c2e750c0109f8b49f50824f28e2d23 100644 (file)
@@ -28,5 +28,5 @@ Sections:
         Symbol:          main
         Type:            0xFF
 Symbols:
-  Global:
-    - Name: main
+  - Name:    main
+    Binding: STB_GLOBAL
index 0cb26fca995b03ca5cf905886c997f55dba329c6..d0e69305081fb2466e6d2a21e0c930fd6656a372 100644 (file)
@@ -30,13 +30,11 @@ Sections:
         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 0cf6b7693d6129622aa3be16a9dc63e93cb12ab4..c854d793d93138a8b2cd075f71f8e60b99e45a12 100644 (file)
@@ -24,16 +24,16 @@ CHECK-NEXT:       - Offset:          0x0000000000000000
 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 551512e5de493437c523b340a2f17f38a8510648..fbceca5413e883ed414d90cf40319e32e8872a7c 100644 (file)
@@ -421,7 +421,6 @@ ELF-MIPSEL-NEXT:     GPRSize:         REG_32
 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:       Section:         .reginfo
 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:     Type:            SHT_PROGBITS
 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:       Section:         .MIPS.options
 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:         Symbol:          SomeOtherFunction
 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:       Section:         .rodata.str1.1
 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:     Address:         0x0000000000800060
 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:       Type:            STT_FILE
 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 341966d9a5bea6eec89e8ec177c397e646a7ed64..d626849af2cba5f7d33c4c94a17811bd36220c33 100644 (file)
@@ -41,13 +41,14 @@ Sections:
     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 b3c8335a36b788128a03e49c85ed447f8b58c6b7..be298d1cdc752e2da0e8523e6a41b7bb5796083d 100644 (file)
@@ -25,12 +25,12 @@ Sections:
   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 @@ Sections:
   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 cf4324b67de458c9d2d67282da9ef358fed61034..41674494c9367d4ab37c0ced960f292d652f99ab 100644 (file)
@@ -36,25 +36,24 @@ Sections:
     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 f98c8e262a7ad4db3dbc55dfc7cb61cb324220f9..b84d5b85bee43e942b4ccec3c7edceb8ec9926c4 100644 (file)
@@ -49,17 +49,17 @@ Sections:
       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 c044d711a34df7e7c00a0873606a62fe172865bc..62101b32f2a985fcb2b23e9b58d1967bb2d5eec5 100644 (file)
@@ -11,18 +11,17 @@ Sections:
     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 e1f5ce4e725a11f58d60cf1fe261319bdf352aca..05d9b44926ca1e42f62c6a221b4223a5f473ae05 100644 (file)
@@ -18,13 +18,14 @@ Sections:
                       # 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 82b3d48f0a3fc9fc246ab5cef90fcde53094989c..e37656c7d4d7907ec22266233fd99be99ebe6afd 100644 (file)
 # 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 @@ Sections:
     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 7ae9fd95a62f532c5b031ff420c3aef7ba5e0221..9c75630a42f6833bd4265163b69d0e27b499c9eb 100644 (file)
@@ -20,11 +20,10 @@ Sections:
     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 8d224b95a4d76eeef65f82ea07781883fef15092..8027fff4f44571c2eed91cb16df79d0e20c748ad 100644 (file)
@@ -20,11 +20,10 @@ Sections:
     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 0f1cfe7d80663613299a0afc714259e753b9289f..9cc9dba8850a96be19b23be0db44dfdc00c395bc 100644 (file)
@@ -20,11 +20,10 @@ Sections:
     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 2651e68f78f93c62c520daa607d18723e67467fa..b124b295b8a5eaa1389954ba10dfe70f1217bc3f 100644 (file)
@@ -20,7 +20,6 @@ Sections:
     AddressAlign:    0x0000000000000001
     Content:         ''
 Symbols:
-  Local:
-    - Name:            '-'
-      Type:            STT_FILE
+  - Name:            '-'
+    Type:            STT_FILE
 ...
index 8da77b36a3756f501282e1c45ea9d8bfc1d52215..04855e0d2f66689e949b5a873495c28e503ac263 100644 (file)
@@ -44,15 +44,18 @@ Sections:
     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 5f2536d1df965e696942de9c01f6920ce6624740..62c5873ba55042f0c32bc887e3eb6441793668da 100644 (file)
@@ -9,10 +9,10 @@ FileHeader:
   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 596a7807ee7c9404593feba3446a6060a9e3a445..734f43632f850c0b4c6ce92a39afae6ad476eb71 100644 (file)
@@ -36,13 +36,12 @@ Sections:
     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 6d7e86c7e995231fc45264ed2eb35446a0945167..ada141471fbd2201e909b3dfebbd543d6463f415 100644 (file)
@@ -47,11 +47,11 @@ Sections:
     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 e043041ba5d706e5c7670546aff7a889b60c42e3..ac1831a23e1131542c54ed8110dafcc28006666d 100644 (file)
@@ -56,24 +56,28 @@ Sections:
         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 9ec49c711656c418bbcb18304cd1511595015151..42d563975d1aa347e39d1e9c9db3fc39c60d5c00 100644 (file)
@@ -9,22 +9,26 @@ FileHeader:
   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 feb532046f5812e795a8de576a5e3c2a8cd3e214..3cb0d4eab1135b6079953838e73be84b28371f57 100644 (file)
@@ -53,15 +53,16 @@ Sections:
     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 fa5832b9dfe682d77dbad8304068971007acc3ba..d2da14e60a450d1a28376de8eda9af569805e6d3 100644 (file)
@@ -22,16 +22,17 @@ Sections:
     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 cc676b59f5971c2e7544e97bccb84326fd282422..f27c16179965cfd63a1940287d335df7471c6826 100644 (file)
@@ -33,29 +33,28 @@ Sections:
     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 05e1acf6b1d8cb1fd5a16c158365ef51213def1a..8ae941faeea9791dc53b2ea2a92c77dd64929481 100644 (file)
@@ -19,9 +19,8 @@ Sections:
         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 be489a2f0de93ec05176500061b72bb982981ca5..ef8a293f0df73ebb2afcebf317f59feb9450f71f 100644 (file)
@@ -32,27 +32,26 @@ Sections:
   - 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 f9e0613eecfae5021bf9cbb959c449c67d8b25a5..8bb39f6a6153aed03af60d805c176cea53589c48 100644 (file)
@@ -55,17 +55,16 @@ Sections:
   - 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 bd7f38ee52dded3e2d84c5bd1f1df53c6d896fe5..e1dcc04186f0a76e5a4608ea0a825ff9dde5ef59 100644 (file)
@@ -31,25 +31,25 @@ Sections:
     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 43a6028ca674fbd475d9ef09b805388353acabfa..a954e08194f111bbee276a18f2bdbce98cc6ad01 100644 (file)
@@ -33,6 +33,5 @@ Sections:
     Flags:           [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ]
     AddressAlign:    0x0000000000000001
 Symbols:
-  Local:
-    - Name:            foo
-      Section:         .group
+  - Name:            foo
+    Section:         .group
index dd5ca88144baf3563390564d8a9a5d23ce1769f1..e76e6e5d207c974536c12de787176b020828bfc7 100644 (file)
@@ -38,19 +38,19 @@ Sections:
     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 31fba11adca8dabb2c906de00f864ba99f9a7545..f5f74b414bb1a99250924a8308e0165e42e88f2c 100644 (file)
@@ -38,19 +38,19 @@ Sections:
     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 2e058f5d6a5ce2f1e11ed4a44022efc0cb1c973e..ea84f25eb0f20cd76e8a5117b3e01c70806731c1 100644 (file)
@@ -38,19 +38,19 @@ Sections:
     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 dab5eedf695ac56f29e6b8e832f7867aa1b6f456..9787e6b6ab59f9a3bf9ee1099874a637ae8d9fca 100644 (file)
@@ -8,8 +8,8 @@ FileHeader:
   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 3655f39512d603d93cd8888fa9c189c645aaa696..86674f1eb2d26194343c8e27d624b9b1e53a39e4 100644 (file)
@@ -23,14 +23,13 @@ Sections:
     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 bc5cba6f921d8a034c26772aa86cbd725a1526a5..b227407f414707f52e44513781611786446b3d35 100644 (file)
@@ -24,21 +24,22 @@ Sections:
     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 e0b36bad40269076f3a2d2511d3373712cf0b757..52707fc774fd76789f5542a8a2d8b290d47154c4 100644 (file)
@@ -56,34 +56,42 @@ Sections:
     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 2dbfb2c8c861c4238cff826ee00d985d210e46cc..8b5fc97085858d4c00d61d23a6ec86d18026866a 100644 (file)
@@ -16,12 +16,11 @@ Sections:
     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 67b51872b4ca7d9e7fe5f0cbc99c13af1ee988b8..70a59fe1e4b491b9fc5f44cb1cee4be32aa8ab7d 100644 (file)
@@ -27,22 +27,21 @@ Sections:
     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 41662003fe8dac9680fcb5279ab1f88702160eef..f30461b7c1a33eec21a7f246d58e220837cc48cd 100644 (file)
@@ -29,53 +29,57 @@ Sections:
         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 fb812317c8fdcdeb6b186ac8841ff9b1b5089249..820ce1d5b60c49fd774563787271df3e2dc411c5 100644 (file)
@@ -42,31 +42,32 @@ Sections:
     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 1e6a54a8cf845ba79d680c3713913e41cded0c80..b359e5ea7549659de3d9d8a703f26ff90db4d5e1 100644 (file)
@@ -18,17 +18,16 @@ Sections:
     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 8ed8c85e93d384e181eea07abdb219203ef1b6b2..78dd853787db5e6b90c4ad950b4e2adb3fffdaee 100644 (file)
@@ -33,20 +33,22 @@ Sections:
     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 6fa590b5dc576ae57d51f992067776a099dbe606..9baccb06483822fabf7172516126a80e9f66bb8c 100644 (file)
@@ -30,22 +30,21 @@ Sections:
     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 539e6ea1ce1c86d6d9c120f5af2940d5a7d14bc6..ff05778c6f39f43714d8e7eb395af85cd1c4174c 100644 (file)
@@ -24,9 +24,9 @@ Sections:
         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 949d34cd5e848dd39d31425cff496b0d41615079..598da16842600eaffa0383bf36056adb8211b1c2 100644 (file)
@@ -16,17 +16,18 @@ Sections:
     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 6c22eb892bfe3bc832663b7d931390f8ddc86b4e..2df9e3a039e03de40cf2f47b7f10f3b8cac49bcf 100644 (file)
@@ -51,7 +51,6 @@ Sections:
                        SHF_OS_NONCONFORMING, SHF_STRINGS, SHF_TLS, SHF_WRITE ]
     Content:        "a4a4a4a4"
 Symbols:
-  Local:
   - Name:            dummy
     Section:         .group
 
index 1a69757b4e8574675b259280c30a4095c69715e9..f01fea893d2d354031c448dc01cfb58f5b430202 100644 (file)
@@ -8,8 +8,8 @@ FileHeader:
   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 9892a12650781f8187d1be8e923667868b2e66f0..8ff1aa4a5e32bc14f10091675739562a646bcb74 100644 (file)
@@ -32,22 +32,21 @@ Sections:
   - 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 5455c6bb7bca2a63db2a3eb85002fc108b3e6f98..15a6f4f7ccaf7fba30d3ee59e2cd3338cdb80c93 100644 (file)
@@ -28,14 +28,16 @@ Sections:
     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 d2d0b34d9761727cc60a787d66ce472af108c9e3..da7659294b790e340f510b0c6074f53e043ab8dc 100644 (file)
@@ -28,14 +28,16 @@ Sections:
     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 d7079f6abcb2a0db24b149c96531bf1dc8b884f3..c4440bf7eca698fc035df2290d00d93021d4aa3b 100644 (file)
@@ -110,11 +110,12 @@ Sections:
     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 0699a9f5476d9c8cdb734f212101418e644b24ef..d727ec6be08b88db3521d64fa9ad2a103eb0b663 100644 (file)
@@ -23,9 +23,9 @@ Sections:
     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 dcbd57e1f3dacb35e33ee8f2bca42da1239ffd6b..f2b6e56145d8d6c80ecc7adc003d2b9db032891c 100644 (file)
@@ -39,17 +39,16 @@ Sections:
     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 b4924059cedf37736cbe3b1eaaf741b1a672df47..db1e46cf2a32163eba4ae9c7346ddd013b45cf5c 100644 (file)
@@ -22,11 +22,10 @@ Sections:
         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 9bcea100bb99847a8c97aee570f020a53b704a47..25e93aecccdbc8de4e81793da93db63065461294 100644 (file)
@@ -43,9 +43,7 @@ Sections:
     AddressAlign:    0x0000000000000001
     Content:         '0102'
 Symbols:         
-  Local:           
-    - Name:            foo
-      Section:         .data
-      Value:           0x0000000000000001
-DynamicSymbols:  {}
+  - Name:            foo
+    Section:         .data
+    Value:           0x0000000000000001
 ...
index dfe25984c6c9645db562f90542d11490ea9cdced..007acfbe3ac506c5e4bd0d8199a9889c6a503de5 100644 (file)
@@ -43,6 +43,6 @@ Sections:
         Symbol:          bar
         Type:            R_X86_64_32S
 Symbols:
-  Global:
-    - Name:     bar
-      Section:  .text
+  - Name:     bar
+    Section:  .text
+    Binding:  STB_GLOBAL
index 73d3c1cb39208a6e542571d88b7fd2959624e7de..e63aaae40285ede85b9afee5787a51870c64aae0 100644 (file)
@@ -28,24 +28,23 @@ Sections:
     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 60d83884715358608f30b8e9355b51a55a438b70..db1ad31228a975498e499f3f1f36fe7cb03b3f48 100644 (file)
@@ -57,42 +57,43 @@ Sections:
         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 43328680adf84bcf8dd6ddb1f2a33fc515748005..26408caf66b8b8eef3fcda1b7cca3b29ed8eb8ae 100644 (file)
@@ -22,38 +22,43 @@ Sections:
     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 e378c2332aca65f7c6db3414746f4c28bddb05e7..cc17b3ec5264caf2ae5560aab8078dcf446c416e 100644 (file)
@@ -37,11 +37,10 @@ Sections:
     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 6107d370adcba410ae0b1e5ee27a05f2749a63d2..ab83c6565627e9726ec25ddfb4270881e6aa07c9 100644 (file)
@@ -23,27 +23,27 @@ Sections:
         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 01de61ab2758a0bd1f17a02f199f8607ec5806c7..09f2476e0b2658df33740fa55d0e4e5c7ffc0768 100644 (file)
@@ -28,24 +28,23 @@ Sections:
     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 f6a1d18a0cd21b413a3c36880832e4066869ea43..a7ea4c8811e0f02346b3fa9eb7b0af92feb9d74e 100644 (file)
@@ -33,41 +33,43 @@ Sections:
     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 6b1a7c65c1a51589b5c4d05efbab25b6965647b2..b5439a54809741b9826e13a54933c9745936c372 100644 (file)
@@ -119,13 +119,12 @@ Sections:
         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 ad8b025ab50dcaf1ec2e6dd4e6ad676b33aff6e2..696a1057f079071a46fd3aae59ba15249a54a9a7 100644 (file)
@@ -51,5 +51,5 @@ Sections:
         Symbol:          x
         Type:            R_X86_64_64
 Symbols:
-  Global:
-    - Name: x
+  - Name: x
+    Binding:         STB_GLOBAL
index 1232033a85c466ba8514aab5a8177e7b60af80d6..74f2b94075ed69cb29ac191923dc9e84b64bbebd 100644 (file)
@@ -23,15 +23,14 @@ Sections:
     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 4cbd85ca3f1b267ddb723fa1a9ad91b5a93dc11a..019dcc202085d4e262e5f67e9c413b6d3ef151f9 100644 (file)
@@ -63,13 +63,12 @@ Sections:
       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 649e54c99bf85a3f40172fcc8a8d67c3cae10274..a2a7f018618c794078b39b4e1e1dcfaa56828f39 100644 (file)
@@ -28,22 +28,22 @@ Sections:
     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 1c542691bfe2536c79e8850b5294b4d8a5f416ff..3103bd527dd20ceab42b257eb603df305633023b 100644 (file)
@@ -36,6 +36,6 @@ Sections:
           - VERSION_1
           - VERSION_2
 DynamicSymbols:
-  Global:
-    - Name:            bar
+  - Name:    bar
+    Binding: STB_GLOBAL
 ...
index 2468eaaf2df468199b6bc2b3d89e4b304306323e..799d2b2ed7468c9d5a86ec7a6ef0f5c798abc6c5 100644 (file)
@@ -43,5 +43,5 @@ Sections:
             Flags:           12
             Other:           2
 DynamicSymbols:
-  Global:
-    - Name:            f1
+  - Name:    f1
+    Binding: STB_GLOBAL
index b1593e960b31ee40f85fa61ead6d1d9553bb9810..9811564a16dccf13d8b8b82669691233d545a2e6 100644 (file)
@@ -46,5 +46,5 @@ Sections:
             Flags:           12
             Other:           2
 DynamicSymbols:
-  Global:
-    - Name:            f1
+  - Name:    f1
+    Binding: STB_GLOBAL
index 5b8f3671bc3672009b3c95f514940b289202e6c2..37b790d46c4a455f7be31bfd3bbdc250229e509e 100644 (file)
@@ -25,11 +25,11 @@ Sections:
     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 c50a9ddee597d2921bf0d5304f7569f81c6bf8f3..8b8989a182ffe4fccc6bfdf2fefaa0c47adfaaf2 100644 (file)
@@ -73,9 +73,8 @@ Sections:
     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 809a7243edf34fb5868f69c78e14af26520b01d6..fb6c64b8e9a8b0f51a78eb2967be23239dbf5019 100644 (file)
@@ -210,13 +210,14 @@ Sections:
     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 38111bccf38f3316dffeaafbddd6915af2658363..4e21ae70e4d79e693200c91b4f55df99b2756597 100644 (file)
@@ -28,6 +28,6 @@ Sections:
   - Name: .text
     Type: SHT_PROGBITS
 Symbols:
-  Global:
-    - Name: foobar
-      Section: .text
+  - Name:    foobar
+    Section: .text
+    Binding: STB_GLOBAL
index 84acd06d82244a79ad2f3803418ae454d2f7c185..8fa73c386a5b0d357ef7f6d2e303413155e6446e 100644 (file)
@@ -41,9 +41,10 @@ Sections:
     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 @@ Sections:
     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 @@ Sections:
     AddressAlign:    0x0000000000000001
     Content:         415053320680200208800208008001080802008001818080801008818080802002080881808080100008818080802008
 Symbols:
-  Global:
-    - Name:            sym1
-    - Name:            sym2
+  - Name:            sym1
+    Binding:         STB_GLOBAL
+  - Name:            sym2
+    Binding:         STB_GLOBAL
 ...
index 13e6a96cf3c0c54329f0fbb53e4c9967766f7ad0..86ec658f19a8d9ee01cee134e2bb23610e844071 100644 (file)
@@ -60,8 +60,8 @@ Sections:
         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 c542b80f20961551c282d26b7aa8f86868e6b08a..3d078d3cfb95bc5b334c514a44e32f5fe2bd4b73 100644 (file)
@@ -84,17 +84,25 @@ Sections:
         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 7adc1ea6e65a1fedd14526e34771225ea38ec9b4..6b1a41637b432b73b289979518effc110f7250a3 100644 (file)
@@ -74,15 +74,15 @@ Sections:
         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 66bfa8a4b93895c2e7f7ebb549282be38d6732f8..f65655afbcc0d1acd39fcf594a6f0af331ea6045 100644 (file)
@@ -218,5 +218,5 @@ Sections:
   - Name: hiuser
     Type: 0xffffffff
 Symbols:
-  Global:
-    - Name: foo
+  - Name:    foo
+    Binding: STB_GLOBAL
index 6c45374be5e787cfcb84eb9569fadb007971f41e..dbd8f0e54b690c20e01993df698bf4925df16075 100644 (file)
@@ -18,7 +18,6 @@ FileHeader:
   Type:    ET_REL
   Machine: EM_X86_64
 Symbols:
-  Local:
-    - Name:  a_sym
-      Value: 0xfedcba9876543210
-      Size:  0x0123456789abcdef
+  - Name:  a_sym
+    Value: 0xfedcba9876543210
+    Size:  0x0123456789abcdef
index 4813d75be8218afca63bc893011c4db99ee06397..9ca5142abae467b3bb6a16b7a327347b97f06783 100644 (file)
@@ -52,9 +52,8 @@ Sections:
     # 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 7f4a6c920c6ae46ecbaa20cabcf38716485c5743..ad04be54262167ea5340176311cf24b3795ce5df 100644 (file)
@@ -75,20 +75,26 @@ Sections:
     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 @@ FileHeader:
   Type:    ET_REL
   Machine: EM_386
 Symbols:
-  Global:
-    - Name:    bad
-      Index:   0x42
+  - Name:    bad
+    Index:   0x42
+    Binding: STB_GLOBAL
index cf09a96b0102a6a5393ac590cda992ec7309dcf7..8d46b1624765c91920549ab28c2c6d0767a4db56 100644 (file)
@@ -51,27 +51,37 @@ Sections:
   - 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 7a25f87c193334a7e0711ada59eef4e7751c1fd5..f2e402004dc499c504e9a69691fc3f4fd31838ec 100644 (file)
@@ -52,12 +52,15 @@ Sections:
     # 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 21078231f19f83104eadc74df220961b672da8cb..ab7dcdeee90fe1a69960ed27b3d9ede20ede36ab 100644 (file)
@@ -101,20 +101,22 @@ Sections:
     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 fd29f30cc83746b8a0960d8acd30226c76454360..42925e1089aa5ed59d1f918763b4df0de7d6e025 100644 (file)
 # 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 @@ FileHeader:
   Type:      ET_REL
   Machine:   EM_X86_64
 Symbols:
-  GNUUnique:
-    - Name:  foo
-      Type:  STT_OBJECT
+  - Name:    foo
+    Type:    STT_OBJECT
+    Binding: STB_GNU_UNIQUE
index b992931a0db96705f6a40fab620957998382e2e5..f61712c9b2afb3d367574a0076ab2bf3b4651221 100644 (file)
@@ -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 127dc25a0df6772c28382e01e89e99424e383ef5..25550c944f385c265aed1272e632c98e293050db 100644 (file)
@@ -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 @@ Sections:
   - 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 8231990960deef2fbf98a54061cbf0f17aa0c093..8183143623f1e3c86626beb20382fabc10efe70e 100644 (file)
@@ -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 @@ FileHeader:
   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 87a283b32d5c3a8ef979d42d4ca430588e21f768..29e492c0ad4b88d7fe2731888f88ac29c0f022ee 100644 (file)
@@ -67,6 +67,6 @@ Sections:
           - VERSION_2
           - VERSION_3
 DynamicSymbols:
-  Global:
-    - Name:            foo
+  - Name:    foo
+    Binding: STB_GLOBAL
 ...
index 6ca7cb2d88ee18c98349f3b37bfca41804d552f9..594757d4b6478c35effbf87cc3617ffe6798681e 100644 (file)
@@ -65,5 +65,5 @@ Sections:
             Flags:           12
             Other:           2
 DynamicSymbols:
-  Global:
-    - Name:            f1
+  - Name:    f1
+    Binding: STB_GLOBAL
index 5d69cb4fc94e79c3d84bc030a7d2a41f2accdd5d..38836960615c17403207260c4e198bd14f771d47 100644 (file)
 # 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 @@ Sections:
     EntSize:         0x0000000000000002
     Entries:         [ 0, 3, 4 ]
 DynamicSymbols:
-  Global:
-    - Name:            f1
-    - Name:            f2
+  - Name:    f1
+    Binding: STB_GLOBAL
+  - Name:    f2
+    Binding: STB_GLOBAL
 ...
index 67e6e4ae1c19f9596b26a600cd73adef00a134d1..344384721e17766b020d6d26f4fbc5d385f7fc08 100644 (file)
@@ -171,33 +171,34 @@ Sections:
     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 c77f743e369114fd049e716ac4d6941286f8af1d..718b06d55c4ac6f21c92af8496281031c3680694 100644 (file)
@@ -14,18 +14,18 @@ Sections:
     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 c54787cf30e548d2af7515c10a320d2c74960a45..e256fdc00e0f5a43d86e60a64a1598c895c64091 100644 (file)
@@ -36,5 +36,5 @@ Sections:
     Address:      0x2000
     EntSize:      0x18
 DynamicSymbols:
-  Global:
-    - Name: foo
+  - Name:    foo
+    Binding: STB_GLOBAL
index 14b4d53eeeb56d18f620d3a232f1e4620e1dfe04..5ed7a56c9a6d8bf91fd4894c6a7f58fb0bf5e6ec 100644 (file)
@@ -16,8 +16,8 @@ Sections:
       - 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 9872b5e76c4bdfa2e542cb9a9b5f8f34e443b3f5..06c504e65b3cb502cdca145e12c23d5a484028b4 100644 (file)
@@ -16,6 +16,6 @@ FileHeader:
   Type:      ET_REL
   Machine:   EM_X86_64
 Symbols:
-  GNUUnique:
-    - Name:  foo
-      Type:  STT_OBJECT
+  - Name:    foo
+    Type:    STT_OBJECT
+    Binding: STB_GNU_UNIQUE
diff --git a/test/tools/yaml2obj/elf-symbols-binding-order.yaml b/test/tools/yaml2obj/elf-symbols-binding-order.yaml
new file mode 100644 (file)
index 0000000..1c9fbe3
--- /dev/null
@@ -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 649e5684f63988b24ec2153eb04f826385854de4..982c5d4efeb0a83ad243d659dd4c138a58e17992 100644 (file)
@@ -36,8 +36,8 @@ Sections:
     Info:          26
     Type:          SHT_SYMTAB
 Symbols:
-  Global:
-    - Name: foo
+  - Name:    foo
+    Binding: STB_GLOBAL
 DynamicSymbols:
-  Global:
-    - Name: bar
+  - Name:    bar
+    Binding: STB_GLOBAL
index cfa5cf427b770af7b4b4c068c339e3d297cce71f..143c0255b0e63f2fa84196b25231f41874e9e3c6 100644 (file)
@@ -17,5 +17,5 @@ Sections:
   - Name:            .symtab
     Type:            SHT_DYNAMIC
 Symbols:
-  Global:
-    - Name: foo
+  - Name:    foo
+    Binding: STB_GLOBAL
index ac16643b9b03a751a45acfbbb2eb974ca37ad5c0..1a3470fe098f9455f0c4221b01bc16383805d1ee 100644 (file)
@@ -32,5 +32,5 @@ Sections:
         Offset: 0
         Symbol: 0x1
 Symbols:
-  Global:
-    - Name: foo
+  - Name: foo
+    Binding: STB_GLOBAL
index e5c50735f4caaa4eedf6b271603929bd1e431681..980c70d52cc39e369a2d6ba7802eb36bc54f6fd2 100644 (file)
@@ -11,25 +11,32 @@ Sections:
   - 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 1bca0e4101525dfa9b8355a2a460ac0148f7797c..5b3bb73c43b5fedadac6cbce5b1a696e727c748d 100644 (file)
@@ -26,18 +26,24 @@ Sections:
   - 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 deac6e736c0be7a66d73b6cc232eca32620c3fb0..582b801926644e4b35dcdda974a7cffad61c3ed9 100644 (file)
@@ -64,6 +64,6 @@ Sections:
           - VERSION_2
           - VERSION_3
 DynamicSymbols:
-  Global:
-    - Name:            foo
+  - Name:    foo
+    Binding: STB_GLOBAL
 ...
index 2fc58ad64f0f0d2e4d932941b010e397679dea13..bdfddff9810811d2da36bdd3aa7ecd9ca00728aa 100644 (file)
@@ -69,5 +69,5 @@ Sections:
             Flags:           12
             Other:           2
 DynamicSymbols:
-  Global:
-    - Name:            f1
+  - Name:    f1
+    Binding: STB_GLOBAL
index 3c08ddd63d2e3e36cb6965b33f726f95821731c3..506e16cc5e1d9a0cd8bd241c826a8c83103bc9ed 100644 (file)
@@ -82,7 +82,8 @@ Sections:
             Flags:           0
             Other:           4
 DynamicSymbols:
-  Global:
-    - Name:            f1
-    - Name:            f2
+  - Name:    f1
+    Binding: STB_GLOBAL
+  - Name:    f2
+    Binding: STB_GLOBAL
 ...
index b9cdc123d31b9ec9ae99b94ede6c404142e42810..17f23d5afd94c3dbb8018a0056e1f7d12ed86bbd 100644 (file)
@@ -42,7 +42,7 @@ class ELFDumper {
   ArrayRef<Elf_Word> ShndxTable;
 
   std::error_code dumpSymbols(const Elf_Shdr *Symtab,
-                              ELFYAML::SymbolsDef &Symbols);
+                              std::vector<ELFYAML::Symbol> &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 <class ELFT> ErrorOr<ELFYAML::Object *> ELFDumper<ELFT>::dump() {
 }
 
 template <class ELFT>
-std::error_code ELFDumper<ELFT>::dumpSymbols(const Elf_Shdr *Symtab,
-                                             ELFYAML::SymbolsDef &Symbols) {
+std::error_code
+ELFDumper<ELFT>::dumpSymbols(const Elf_Shdr *Symtab,
+                             std::vector<ELFYAML::Symbol> &Symbols) {
   if (!Symtab)
     return std::error_code();
 
@@ -240,33 +241,11 @@ std::error_code ELFDumper<ELFT>::dumpSymbols(const Elf_Shdr *Symtab,
   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 @@ ELFDumper<ELFT>::dumpSymbol(const Elf_Sym *Sym, const Elf_Shdr *SymTab,
   S.Value = Sym->st_value;
   S.Size = Sym->st_size;
   S.Other = Sym->st_other;
+  S.Binding = Sym->getBinding();
 
   Expected<StringRef> SymbolNameOrErr = getSymbolName(Sym, StrTable, SymTab);
   if (!SymbolNameOrErr)
index 7a8b0cc5a8921daacabb5bf236b370d4c0d36350..1507504239b56fae17fbe35a320ecb193c53796b 100644 (file)
@@ -133,7 +133,7 @@ class ELFState {
   const ELFYAML::Object &Doc;
 
   bool buildSectionIndex();
-  bool buildSymbolIndex(const ELFYAML::SymbolsDef &);
+  bool buildSymbolIndex(ArrayRef<ELFYAML::Symbol> Symbols);
   void initELFHeader(Elf_Ehdr &Header);
   void initProgramHeaders(std::vector<Elf_Phdr> &PHeaders);
   bool initSectionHeaders(std::vector<Elf_Shdr> &SHeaders,
@@ -145,8 +145,7 @@ class ELFState {
                                ContiguousBlobAccumulator &CBA);
   void setProgramHeaderLayout(std::vector<Elf_Phdr> &PHeaders,
                               std::vector<Elf_Shdr> &SHeaders);
-  void addSymbols(const std::vector<ELFYAML::Symbol> &Symbols,
-                  std::vector<Elf_Sym> &Syms, unsigned SymbolBinding,
+  void addSymbols(ArrayRef<ELFYAML::Symbol> Symbols, std::vector<Elf_Sym> &Syms,
                   const StringTableBuilder &Strtab);
   void writeSectionContent(Elf_Shdr &SHeader,
                            const ELFYAML::RawContentSection &Section,
@@ -171,7 +170,6 @@ class ELFState {
   bool writeSectionContent(Elf_Shdr &SHeader,
                            const ELFYAML::DynamicSection &Section,
                            ContiguousBlobAccumulator &CBA);
-  bool hasDynamicSymbols() const;
   SmallVector<const char *, 5> implicitSectionNames() const;
 
   // - SHT_NULL entry (placed first, i.e. 0'th entry)
@@ -323,6 +321,13 @@ bool ELFState<ELFT>::initSectionHeaders(std::vector<Elf_Shdr> &SHeaders,
   return true;
 }
 
+static size_t findFirstNonGlobal(ArrayRef<ELFYAML::Symbol> Symbols) {
+  for (size_t I = 0; I < Symbols.size(); ++I)
+    if (Symbols[I].Binding.value != ELF::STB_LOCAL)
+      return I;
+  return Symbols.size();
+}
+
 template <class ELFT>
 void ELFState<ELFT>::initSymtabSectionHeader(Elf_Shdr &SHeader,
                                              SymtabType STType,
@@ -335,7 +340,7 @@ void ELFState<ELFT>::initSymtabSectionHeader(Elf_Shdr &SHeader,
   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 = findFirstNonGlobal(Symbols) + 1;
   SHeader.sh_entsize = sizeof(Elf_Sym);
   SHeader.sh_addralign = 8;
 
@@ -359,10 +364,7 @@ void ELFState<ELFT>::initSymtabSectionHeader(Elf_Shdr &SHeader,
     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 @@ void ELFState<ELFT>::setProgramHeaderLayout(std::vector<Elf_Phdr> &PHeaders,
 }
 
 template <class ELFT>
-void ELFState<ELFT>::addSymbols(const std::vector<ELFYAML::Symbol> &Symbols,
+void ELFState<ELFT>::addSymbols(ArrayRef<ELFYAML::Symbol> Symbols,
                                 std::vector<Elf_Sym> &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 <class ELFT> bool ELFState<ELFT>::buildSectionIndex() {
 }
 
 template <class ELFT>
-bool ELFState<ELFT>::buildSymbolIndex(const ELFYAML::SymbolsDef &Symbols) {
+bool ELFState<ELFT>::buildSymbolIndex(ArrayRef<ELFYAML::Symbol> Symbols) {
+  bool GlobalSymbolSeen = false;
   std::size_t I = 0;
-  for (const std::vector<ELFYAML::Symbol> &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 <class ELFT> void ELFState<ELFT>::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 @@ int ELFState<ELFT>::writeELF(raw_ostream &OS, const ELFYAML::Object &Doc) {
   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 @@ int ELFState<ELFT>::writeELF(raw_ostream &OS, const ELFYAML::Object &Doc) {
   return 0;
 }
 
-template <class ELFT> bool ELFState<ELFT>::hasDynamicSymbols() const {
-  return !Doc.DynamicSymbols.Global.empty() ||
-         !Doc.DynamicSymbols.Weak.empty() ||
-         !Doc.DynamicSymbols.Local.empty() ||
-         !Doc.DynamicSymbols.GNUUnique.empty();
-}
-
 template <class ELFT>
 SmallVector<const char *, 5> ELFState<ELFT>::implicitSectionNames() const {
-  if (!hasDynamicSymbols())
+  if (Doc.DynamicSymbols.empty())
     return {".symtab", ".strtab", ".shstrtab"};
   return {".symtab", ".strtab", ".shstrtab", ".dynsym", ".dynstr"};
 }