[PATCH] D90458: [yaml2obj][WIP] - ProgramHeaders: introduce FirstSec/LastSec instead of Sections list.
George Rimar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 30 06:16:18 PDT 2020
grimar created this revision.
grimar added reviewers: jhenderson, MaskRay.
Herald added subscribers: hiraditya, emaste.
Herald added a reviewer: espindola.
Herald added a project: LLVM.
grimar requested review of this revision.
Imagine we have a YAML declaration of few sections: `foo1`, `<unnamed 2>`, `foo3`, `foo4`.
To put them into segment we can do (1*):
Sections:
- Section: foo1
- Section: foo4
or we can use (2*):
Sections:
- Section: foo1
- Section: foo3
- Section: foo4
or (3*) :
Sections:
- Section: foo1
## "(index 2)" here is a name that we automatically created for a unnamed section.
- Section: (index 2)
- Section: foo3
- Section: foo4
It looks really confusing that we don't have to list all of sections.
At first I've tried to make this rule stricter and report an error when there is a gap
(i.e. when a section is included into segment, but not listed explicitly).
This did not work perfect, because such approach conflicts with unnamed sections/fills (see (3*)).
So, I suggest to drop "Sections" key and have 2 keys instead: `FirstSec` and `LastSec`.
Both are optional. Also, it is possible to provide only the `FirstSec`, in this case
`LastSec` is assumed to be the same.
Note: there are many test cases failures in `tools/llvm-objdump/*`, `tools/llvm-readobj/*`,
and other places. I've updated all yaml2obj and obj2yaml tests only for now to demonstrate
the new functionality I am suggesting.
I'd like to hear the feedback about this idea, if it is OK, I'll update other tests and add a few new ones.
https://reviews.llvm.org/D90458
Files:
llvm/include/llvm/ObjectYAML/ELFYAML.h
llvm/lib/ObjectYAML/ELFEmitter.cpp
llvm/lib/ObjectYAML/ELFYAML.cpp
llvm/test/tools/obj2yaml/ELF/program-headers.yaml
llvm/test/tools/yaml2obj/ELF/custom-fill.yaml
llvm/test/tools/yaml2obj/ELF/dynamic-section-i386.yaml
llvm/test/tools/yaml2obj/ELF/header-sh-fields.yaml
llvm/test/tools/yaml2obj/ELF/program-header-address.yaml
llvm/test/tools/yaml2obj/ELF/program-header-align.yaml
llvm/test/tools/yaml2obj/ELF/program-header-nobits.yaml
llvm/test/tools/yaml2obj/ELF/program-header-size-offset.yaml
llvm/test/tools/yaml2obj/ELF/program-header.yaml
llvm/tools/obj2yaml/elf2yaml.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90458.301871.patch
Type: text/x-patch
Size: 37661 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201030/b686f3c2/attachment.bin>
More information about the llvm-commits
mailing list