[PATCH] D112735: export unique symbol list for xcoff with llvm-objdump new option "--export-unique-symbol"

James Henderson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 2 01:02:43 PDT 2021


jhenderson added a comment.

In D112735#3100627 <https://reviews.llvm.org/D112735#3100627>, @DiggerLin wrote:

> In D112735#3100383 <https://reviews.llvm.org/D112735#3100383>, @jhenderson wrote:
>
>> Does this option really belong in llvm-objdump? It seems to me like it's for a different tool, probably llvm-nm (which simply prints symbol lists). In particular, I don't like the "suppresses other options" bit of the help message. llvm-objdump and llvm-readobj usually just do everything that's asked of them.
>>
>> The additional supporting options belong in independent patches, based on the first. If you switch to using llvm-nm, you'll find that you probably won't need the --exclude-weak option, since llvm-nm already has a --no-weak option. In fact, you may be able to get away without a new option for --export-unique-symbol, by using existing llvm-nm options, such as --dynamic, I'm not sure.
>>
>> Please take a look at llvm-nm, and see what you think.
>
> Hi James,
>
>   if you run llvm-objdump --help
>
> you will see the
>
>   llvm-objdump MachO Specific Options: 
>      --exports-trie         Display mach-o exported symbols
>
> the option "--export-unique-symbol"  do the same thing for xcoff.
>
>   --export-unique-symbol  Export symbol list for xcoff object file or archive 
>
> and if you see the source of option 
> --macho                 Use MachO specific object file parser
>
> it also suppresses other non-MachO options
>
> in the llvm-objdump.cpp
>
>> static void dumpInput(StringRef file) {
>>
>>   // If we are using the Mach-O specific object file parser, then let it parse
>>   // the file and process the command line options.  So the -arch flags can
>>   // be used to select specific slices, etc.
>>   if (MachOOpt) {
>>     parseInputMachO(file);
>>     return;
>>   }
>>   
>>   if (ExportUniqueSymbol) {
>>     exportSymbolInfoFromFile(file);
>>     printExportSymboList(outs());
>>     return;
>>   }

Yes, this is true, but llvm-objdump for Mach-O (i.e. with the `--macho` option) is almost completely unrelated to llvm-objdump for other platforms. This, in my opinion, was a bit of a historical design mistake as most of llvm-objdump, aside from this, is generic, but there may be/have been good reasons to do it, based on the comment at the start of `dumpInput`. I think we can do better with XCOFF, and I think the functionality fits better with the existing llvm-nm functionality, and will enable greater code reuse. Note also that the use of the `--exports-trie` option does not suppress the use of other Mach-O options, like `--bind` or `--rpaths`, so your current proposal differs in this regards (`--macho` is not a normal option: it basically tells llvm-objdump to run completely differently, rather than just enabling specific dumps like most switches).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112735



More information about the llvm-commits mailing list