[all-commits] [llvm/llvm-project] bd93f5: [yaml2obj] - Add a way to override sh_type section...
Georgii Rymar via All-commits
all-commits at lists.llvm.org
Tue Jul 28 06:19:27 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: bd93f5ce07ef2fb9c1897bddc576fe4afb464788
https://github.com/llvm/llvm-project/commit/bd93f5ce07ef2fb9c1897bddc576fe4afb464788
Author: Georgii Rymar <grimar at accesssoftek.com>
Date: 2020-07-28 (Tue, 28 Jul 2020)
Changed paths:
M llvm/include/llvm/ObjectYAML/ELFYAML.h
M llvm/lib/ObjectYAML/ELFEmitter.cpp
M llvm/lib/ObjectYAML/ELFYAML.cpp
A llvm/test/tools/yaml2obj/ELF/override-shtype.yaml
Log Message:
-----------
[yaml2obj] - Add a way to override sh_type section field.
This adds the `ShType` key similar to others `Sh*` keys we have.
My use case is the following. Imagine we have a `SHT_SYMTAB_SHNDX`
section and want to hide it from a dumper. The natural way would be to
do something like:
```
- Name: .symtab_shndx
Type: [[TYPE=SHT_SYMTAB_SHNDX]]
Entries: [ 0, 1 ]
```
and then change the TYPE from `SHT_SYMTAB_SHNDX` to something else,
for example to `SHT_PROGBITS`.
But we have a problem: regular sections does not have `Entries` key,
so yaml2obj will be unable to produce a section.
The solution is to introduce a `ShType` key to override the final type.
This is not the first time I am facing the need to change the type. I
was able to invent workarounds or solved issues differently in the past,
but finally came to conclusion that we just should support the `ShType`.
Differential revision: https://reviews.llvm.org/D84738
More information about the All-commits
mailing list