[PATCH] D76684: [obj2yaml] - Refactor how we dump sections. NFCI.

James Henderson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 26 02:07:54 PDT 2020


jhenderson accepted this revision.
jhenderson added a comment.
This revision is now accepted and ready to land.

LGTM, with nit.



================
Comment at: llvm/tools/obj2yaml/elf2yaml.cpp:119-120
   StringRef Name = *NameOrErr;
+  if (Name.empty())
+    return "";
+
----------------
grimar wrote:
> jhenderson wrote:
> > Could you explain this case, please, perhaps with a comment in the code?
> It is for `obj2yaml\elf-null-section.yaml`. We have the following YAML description there:
> 
> ```
> --- !ELF
> FileHeader:
>   Class:   ELFCLASS64
>   Data:    ELFDATA2LSB
>   Type:    ET_REL
>   Machine: EM_X86_64
> Sections:
>   - Type: SHT_PROGBITS
>     Name: .foo
>   - Type:         SHT_NULL
>     Name:         ''
>     Flags:        [ SHF_ALLOC ]
>     Link:         1
>     Info:         2
>     AddressAlign: 0x3
>     Size:         0x4
>     EntSize:      0x5
>     Address:      0x6
> ```
> 
> Note: SHT_NULL has empty name and it is the second `SHT_NULL` section in the object.
> (first one is one at index 0, created implicitly).
> 
> We expect that obj2yaml produce the following;
> 
> ```
> # SECOND-SEC-NEXT:   - Type:         SHT_NULL
> # SECOND-SEC-NEXT:     Flags:        [ SHF_ALLOC ]
> # SECOND-SEC-NEXT:     Address:      0x0000000000000006
> # SECOND-SEC-NEXT:     Link:         .foo
> # SECOND-SEC-NEXT:     AddressAlign: 0x0000000000000003
> # SECOND-SEC-NEXT:     EntSize:      0x0000000000000005
> # SECOND-SEC-NEXT:     Content:      '00000000'
> # SECOND-SEC-NEXT:     Info:         0x0000000000000002
> ```
> 
> But now since we started to dump `SHT_NULL` sections (we remove it later), obj2yaml produces:
> ```
> - Name: ' [1]'
> ```
> 
> But it doesn't make sense I think. We should not uniquify empty names. I see no reasons for that.
Seems reasonable for now. I doubt we'll have many (any?) cases where we want to reference multiple different sections with empty names.


================
Comment at: llvm/tools/obj2yaml/elf2yaml.cpp:121
+  // name (sh_name == 0). It normally doesn't happen, but when we have this case
+  // it doesn't make sense to uniquify their names and add noise to an output.
+  if (Name.empty())
----------------
an output -> the output


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76684/new/

https://reviews.llvm.org/D76684





More information about the llvm-commits mailing list