[PATCH] D89120: [lib/ObjectYAML] - Simplify the code that handles Content/Size fields.
James Henderson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 13 00:52:02 PDT 2020
jhenderson accepted this revision.
jhenderson added a comment.
LGTM.
================
Comment at: llvm/lib/ObjectYAML/ELFEmitter.cpp:1303-1304
ContiguousBlobAccumulator &CBA) {
- if (Section.Content || Section.Size) {
- SHeader.sh_size = writeContent(CBA, Section.Content, Section.Size);
+ if (!Section.Entries)
return;
----------------
grimar wrote:
> jhenderson wrote:
> > I can see why this is needed, but why wasn't it needed before, and what's the impact of adding it? Same applies in a few other places too.
> Previously when we had either `Content` or `Size`, the code on the left wrote some data and returned.
> And we report an error when both `Entries` and `Content`/`Size` are used together much earlier, it is a normal situation.
>
> After this patch we handle `Content/Size` for all types of sections in a single common place before `writeSectionContent` method is called.
> But we still have to call `writeSectionContent` to set section fields (e.g sh_entsize/sh_link etc) and/or
> handle section specific `Entries` (like here). Without this condition we just crash when trying to access an empty `Entries` in a loop below.
>
> Perhaps worth to rename `writeSectionContent` to `finalizeSection` or alike.
Got it, thanks!
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D89120/new/
https://reviews.llvm.org/D89120
More information about the llvm-commits
mailing list