[PATCH] D60122: [yaml2obj][obj2yaml] - Change how symbol's binding is descibed when parsing/dumping.

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 2 05:41:20 PDT 2019


grimar created this revision.
grimar added reviewers: jhenderson, jakehehrlich, rupprecht, alexshap.
Herald added subscribers: jdoerfert, arphaman, atanasyan, MaskRay, arichardson, javed.absar, nhaehnle, jvesely, sdardis, emaste.
Herald added a reviewer: espindola.

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.


https://reviews.llvm.org/D60122

Files:
  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
  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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60122.193259.patch
Type: text/x-patch
Size: 126246 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190402/9020de59/attachment-0001.bin>


More information about the llvm-commits mailing list