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

Saleem Abdulrasool compnerd at compnerd.org
Tue Oct 7 20:30:43 PDT 2014


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

> Added a test in r219274.
>

Sorry, I didn't see the response earlier.  Thanks for adding that!


> 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
>>>
>>
>>
>


-- 
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141007/b47e1481/attachment.html>


More information about the llvm-commits mailing list