[PATCH] D44004: [ELF] - Show data and assignment commands in the map file.
Rafael Ávila de Espíndola via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 8 09:39:02 PST 2018
rafael added a comment.
George Rimar via Phabricator <reviews at reviews.llvm.org> writes:
> grimar added inline comments.
>
> ================
> Comment at: ELF/LinkerScript.h:113
> + std::string CommandString;
> + // The offset value within the section before execution of assignment.
> + unsigned Offset;
>
> ----------------
>
> ruiu wrote:
>
>> ruiu wrote:
>> > Please insert a blank line before a comment.
>> What do you mean by "before execution of assignment"? Before you assign a command to an output section, it doesn't have any address.
>
> I mean that if we have a section description:
>
> 0 .foo : {
> 1 *(.bar)
> 2 . += 0x123;
> 3 }
>
>
> Then at line 2, we have an assignment to Dot.
> We handle commands one by one and offset before we process
> ("before execution of assignment (//command//)" in my wording) the assignment will
> be equal to the size of .bar. That offset is saved to Offset member.
> After execution of assignment command, offset will be different and `Size` below
> stores the difference.
>
> I rewrote the comment slightly.
>
> ================
> Comment at: ELF/MapFile.cpp:154
> + if (auto *Cmd = dyn_cast<ByteCommand>(Base)) {
> + writeHeader(OS, OSec->Addr + Cmd->Offset, Cmd->Size, Cmd->Size);
> + OS << Indent1 << Cmd->CommandString << '\n';
>
> ----------------
>
> ruiu wrote:
>
>> You are passing `Cmd->Size` as an alignment which seems wrong to me.
>
> Right, that was incorrect, changed to 1.
>
> ================
> Comment at: ELF/ScriptParser.cpp:118-119
> + // Concatenates tokens in a [FirstTok, LastTok] into string with Prefix.
> + std::string buildCommandString(StringRef Prefix, size_t FirstTok,
> + size_t LastTok);
> +
>
> ----------------
>
> ruiu wrote:
>
>> FirstTok and LastTok are not tokens but positions, so you should avoid "Tok".
>
> Not sure what is wrong here honestly.
> I think `first` and `last` can be both adjectives and nouns. I meant that they are adjectives describing the
> tokens and hence they are not positions here I think.
> I renamed to `First`/`Last` though as such naming is also OK for me.
I think Rui's objection is that one would expect a *Tok variable to be
a StringRef. What you have are token number/indexes. I am ok with
First/Last, but maybe FirstTokI/LastTokI would be best.
Cheers,
Rafael
https://reviews.llvm.org/D44004
More information about the llvm-commits
mailing list