[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)
commit6da44ad75d25d5d7089c66d7cd3f4f90cd70146c
tree4a0c32a0e9d75bb8005b9b7b3809b96dd63be7b6
parentf5b181e16db70bb78fb7ac33f811ff23e2a80191
[yaml2obj][obj2yaml] - Change how symbol's binding is descibed when parsing/dumping.

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

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