[llvm] r219228 - llvm-readobj: add support to dump (COFF) directives

Rui Ueyama ruiu at google.com
Tue Oct 7 19:16:28 PDT 2014


Added a test in r219274.

On Tue, Oct 7, 2014 at 12:55 PM, Rui Ueyama <ruiu at google.com> wrote:

> Nice. Can you add a test?
>
> On Tue, Oct 7, 2014 at 12:37 PM, Saleem Abdulrasool <compnerd at compnerd.org
> > wrote:
>
>> Author: compnerd
>> Date: Tue Oct  7 14:37:52 2014
>> New Revision: 219228
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=219228&view=rev
>> Log:
>> llvm-readobj: add support to dump (COFF) directives
>>
>> PE/COFF has a special section (.drectve) which can be used to pass
>> options to
>> the linker (similar to LC_LINKER_OPTION).  Add support to llvm-readobj to
>> print
>> the contents of the section for tests.
>>
>> Modified:
>>     llvm/trunk/tools/llvm-readobj/COFFDumper.cpp
>>     llvm/trunk/tools/llvm-readobj/ObjDumper.h
>>     llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp
>>
>> Modified: llvm/trunk/tools/llvm-readobj/COFFDumper.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/COFFDumper.cpp?rev=219228&r1=219227&r2=219228&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/tools/llvm-readobj/COFFDumper.cpp (original)
>> +++ llvm/trunk/tools/llvm-readobj/COFFDumper.cpp Tue Oct  7 14:37:52 2014
>> @@ -56,6 +56,7 @@ public:
>>    void printDynamicSymbols() override;
>>    void printUnwindInfo() override;
>>    void printCOFFImports() override;
>> +  void printCOFFDirectives() override;
>>
>>  private:
>>    void printSymbol(const SymbolRef &Sym);
>> @@ -932,3 +933,21 @@ void COFFDumper::printCOFFImports() {
>>      printImportedSymbols(I->imported_symbol_begin(),
>> I->imported_symbol_end());
>>    }
>>  }
>> +
>> +void COFFDumper::printCOFFDirectives() {
>> +  for (const SectionRef &Section : Obj->sections()) {
>> +    StringRef Contents;
>> +    StringRef Name;
>> +
>> +    if (error(Section.getName(Name)))
>> +      continue;
>> +    if (Name != ".drectve")
>> +      continue;
>> +
>> +    if (error(Section.getContents(Contents)))
>> +      return;
>> +
>> +    W.printString("Directive(s)", Contents);
>> +  }
>> +}
>> +
>>
>> Modified: llvm/trunk/tools/llvm-readobj/ObjDumper.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ObjDumper.h?rev=219228&r1=219227&r2=219228&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/tools/llvm-readobj/ObjDumper.h (original)
>> +++ llvm/trunk/tools/llvm-readobj/ObjDumper.h Tue Oct  7 14:37:52 2014
>> @@ -45,6 +45,7 @@ public:
>>
>>    // Only implemented for PE/COFF.
>>    virtual void printCOFFImports() { }
>> +  virtual void printCOFFDirectives() { }
>>
>>  protected:
>>    StreamWriter& W;
>>
>> Modified: llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp?rev=219228&r1=219227&r2=219228&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp (original)
>> +++ llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp Tue Oct  7 14:37:52
>> 2014
>> @@ -145,6 +145,11 @@ namespace opts {
>>    // -coff-imports
>>    cl::opt<bool>
>>    COFFImports("coff-imports", cl::desc("Display the PE/COFF import
>> table"));
>> +
>> +  // -coff-directives
>> +  cl::opt<bool>
>> +  COFFDirectives("coff-directives",
>> +                 cl::desc("Display the contents PE/COFF .drectve
>> section"));
>>  } // namespace opts
>>
>>  static int ReturnValue = EXIT_SUCCESS;
>> @@ -272,6 +277,8 @@ static void dumpObject(const ObjectFile
>>        Dumper->printMipsPLTGOT();
>>    if (opts::COFFImports)
>>      Dumper->printCOFFImports();
>> +  if (opts::COFFDirectives)
>> +    Dumper->printCOFFDirectives();
>>  }
>>
>>
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141007/1dae8450/attachment.html>


More information about the llvm-commits mailing list