diff options
author | Georgii Rymar <grimar@accesssoftek.com> | 2020-06-11 16:46:56 +0300 |
---|---|---|
committer | Georgii Rymar <grimar@accesssoftek.com> | 2020-06-15 12:43:16 +0300 |
commit | ec4e68e667bf0369c36f0e4291618ef2a614bbf0 (patch) | |
tree | ad6fa8f6d52e2bd2909fc0116f2887cc6a06bada /clang/lib/CodeGen/CodeGenFunction.h | |
parent | 298377f4b0b35366e7a9ccffde0e0684eba37c9b (diff) | |
download | llvm-ec4e68e667bf0369c36f0e4291618ef2a614bbf0.zip llvm-ec4e68e667bf0369c36f0e4291618ef2a614bbf0.tar.gz llvm-ec4e68e667bf0369c36f0e4291618ef2a614bbf0.tar.bz2 |
[yaml2obj] - Introduce the "NoHeaders" key for "SectionHeaderTable"
We have an issue currently. The following YAML piece just ignores the `Excluded` key.
```
SectionHeaderTable:
Sections: []
Excluded:
- Name: .foo
```
Currently the meaning is: exclude the whole table.
The code checks that the `Sections` key is empty and doesn't catch/check
invalid/duplicated/missed `Excluded` entries.
Also there is no way to exclude all sections except the first null section,
because `Sections: []` currently just excludes the whole the sections header table.
To fix it, I suggest a change of the behavior.
1) A new `NoHeaders` key is added. It provides an explicit syntax to drop the whole table.
2) The meaning of the following is changed:
```
SectionHeaderTable:
Sections: []
Excluded:
- Name: .foo
```
Assuming there are 2 sections in the object (a null section and `.foo`), with this patch it
means: exclude the `.foo` section, keep the null section. The null section is an implicit
section and I think it is reasonable to make "Sections: []" to mean it is implicitly added.
It will be consistent with the global "Sections" tag that is used to describe sections.
3) `SectionHeaderTable->Sections` is now optional. No `Sections` is the same as
`Sections: []` (I think it avoids a confusion).
4) Using of `NoHeaders` together with `Sections`/`Excluded` is not allowed.
5) It is possible to use the `Excluded` key without the `Sections` key now (in this case
`Excluded` must contain all sections).
6) `SectionHeaderTable:` or `SectionHeaderTable: []` is not allowed.
7) When the `SectionHeaderTable` key is present, we still require all sections to be
present in `Sections` and `Excluded` lists. No changes here, we are still strict.
Differential revision: https://reviews.llvm.org/D81655
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
0 files changed, 0 insertions, 0 deletions