Nathan Jeffords
2011-Feb-12 10:07 UTC
[LLVMdev] [patch] Dwarf Debug info support for COFF object files
Hello All, I have created a set of patches that get dwarf debugging support working for the COFF object file. I also believe I have fixed what appears to be a bug in how line info sections are referred to from the DW_TAG_compile_unit DIE. I have run some basic tests, analyzed dumps of both the objects files and the final executables, and run a test program against mingw-gdb and everything looks to be in order. Here is a short description of what the patches accomplish die.patch: adds a new DIEValue type to represent a section relative label. (their was already a type id specified so I provided a class modeled after DIELabel) secrel-fixup.patch: creats a new target specific fixup type (reloc_coff_secrel32) to represent COFF Section Relative relocations and updats the COFF object writer to write it as COFF_IMAGE_REL_AMD64_SREL32 secrel-streamer.patch adds a new directive in the MCStreamer interface to allow the AsmPrinter to emit a section relative label and provides implementations for all existings Streamer (all but WinCOFF either forward or error on it) secrel-dwarf.patch updates dwarf printing code to make use of the new directive & DIE value where appropriate (this is where the bug fix is) coff-debug.patch turns the dwarf output on in the X86/COFF AsmInfo classes - Nathan -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110212/19580f05/attachment.html> -------------- next part -------------- A non-text attachment was scrubbed... Name: die.patch Type: application/octet-stream Size: 2387 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110212/19580f05/attachment.obj> -------------- next part -------------- A non-text attachment was scrubbed... Name: secrel-fixup.patch Type: application/octet-stream Size: 2124 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110212/19580f05/attachment-0001.obj> -------------- next part -------------- A non-text attachment was scrubbed... Name: secrel-streamer.patch Type: application/octet-stream Size: 6293 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110212/19580f05/attachment-0002.obj> -------------- next part -------------- A non-text attachment was scrubbed... Name: secrel-dwarf.patch Type: application/octet-stream Size: 2350 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110212/19580f05/attachment-0003.obj> -------------- next part -------------- A non-text attachment was scrubbed... Name: coff-debug.patch Type: application/octet-stream Size: 822 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110212/19580f05/attachment-0004.obj>
Devang Patel
2011-Feb-14 17:12 UTC
[LLVMdev] [patch] Dwarf Debug info support for COFF object files
Hi Nathan, Thanks for these patches. I will review them and get back to you. - Devang On Feb 12, 2011, at 2:07 AM, Nathan Jeffords wrote:> Hello All, > > I have created a set of patches that get dwarf debugging support working for the COFF object file. I also believe I have fixed what appears to be a bug in how line info sections are referred to from the DW_TAG_compile_unit DIE. I have run some basic tests, analyzed dumps of both the objects files and the final executables, and run a test program against mingw-gdb and everything looks to be in order. > > Here is a short description of what the patches accomplish > > die.patch: > adds a new DIEValue type to represent a section relative label. (their was already a type id specified so I provided a class modeled after DIELabel) > > secrel-fixup.patch: > creats a new target specific fixup type (reloc_coff_secrel32) to represent COFF Section Relative relocations and updats the COFF object writer to write it as COFF_IMAGE_REL_AMD64_SREL32 > > secrel-streamer.patch > adds a new directive in the MCStreamer interface to allow the AsmPrinter to emit a section relative label and provides implementations for all existings Streamer (all but WinCOFF either forward or error on it) > > secrel-dwarf.patch > updates dwarf printing code to make use of the new directive & DIE value where appropriate (this is where the bug fix is) > > coff-debug.patch > turns the dwarf output on in the X86/COFF AsmInfo classes > > - Nathan > <die.patch><secrel-fixup.patch><secrel-streamer.patch><secrel-dwarf.patch><coff-debug.patch>_______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Devang Patel
2011-Feb-24 19:36 UTC
[LLVMdev] [patch] Dwarf Debug info support for COFF object files
On Feb 12, 2011, at 2:07 AM, Nathan Jeffords wrote:> Hello All, > > I have created a set of patches that get dwarf debugging support working for the COFF object file. I also believe I have fixed what appears to be a bug in how line info sections are referred to from the DW_TAG_compile_unit DIE. I have run some basic tests, analyzed dumps of both the objects files and the final executables, and run a test program against mingw-gdb and everything looks to be in order. > > Here is a short description of what the patches accomplish > > die.patch: > adds a new DIEValue type to represent a section relative label. (their was already a type id specified so I provided a class modeled after DIELabel) > > secrel-fixup.patch: > creats a new target specific fixup type (reloc_coff_secrel32) to represent COFF Section Relative relocations and updats the COFF object writer to write it as COFF_IMAGE_REL_AMD64_SREL32 > > secrel-streamer.patch > adds a new directive in the MCStreamer interface to allow the AsmPrinter to emit a section relative label and provides implementations for all existings Streamer (all but WinCOFF either forward or error on it) > > secrel-dwarf.patch > updates dwarf printing code to make use of the new directive & DIE value where appropriate (this is where the bug fix is) > > coff-debug.patch > turns the dwarf output on in the X86/COFF AsmInfo classesThis patches look fine. I am curious, how are you testing debug info support for COFF ? - Devang
Devang Patel
2011-Feb-24 19:52 UTC
[LLVMdev] [patch] Dwarf Debug info support for COFF object files
On Feb 24, 2011, at 11:36 AM, Devang Patel wrote:> > On Feb 12, 2011, at 2:07 AM, Nathan Jeffords wrote: > >> Hello All, >> >> I have created a set of patches that get dwarf debugging support working for the COFF object file. I also believe I have fixed what appears to be a bug in how line info sections are referred to from the DW_TAG_compile_unit DIE. I have run some basic tests, analyzed dumps of both the objects files and the final executables, and run a test program against mingw-gdb and everything looks to be in order. >> >> Here is a short description of what the patches accomplish >> >> die.patch: >> adds a new DIEValue type to represent a section relative label. (their was already a type id specified so I provided a class modeled after DIELabel) >> >> secrel-fixup.patch: >> creats a new target specific fixup type (reloc_coff_secrel32) to represent COFF Section Relative relocations and updats the COFF object writer to write it as COFF_IMAGE_REL_AMD64_SREL32 >> >> secrel-streamer.patch >> adds a new directive in the MCStreamer interface to allow the AsmPrinter to emit a section relative label and provides implementations for all existings Streamer (all but WinCOFF either forward or error on it) >> >> secrel-dwarf.patch >> updates dwarf printing code to make use of the new directive & DIE value where appropriate (this is where the bug fix is) >> >> coff-debug.patch >> turns the dwarf output on in the X86/COFF AsmInfo classes > > This patches look fine. I am curious, how are you testing debug info support for COFF ?Well, this patch fails following FE tests on darwin. LLVM :: FrontendC++/2006-11-06-StackTrace.cpp LLVM :: FrontendC++/2006-11-30-Pubnames.cpp LLVM :: FrontendC++/2010-08-31-ByValArg.cpp LLVM :: FrontendC/2009-02-17-BitField-dbg.c LLVM :: FrontendC/2010-01-14-StaticVariable.c LLVM :: FrontendC/2010-02-16-DbgVarScope.c LLVM :: FrontendObjC/2009-08-17-DebugInfo.m - Devang
Nathan Jeffords
2011-Feb-25 03:20 UTC
[LLVMdev] [patch] Dwarf Debug info support for COFF object files
On Thu, Feb 24, 2011 at 11:36 AM, Devang Patel <dpatel at apple.com> wrote:> > On Feb 12, 2011, at 2:07 AM, Nathan Jeffords wrote: > > [snip] > > This patches look fine. I am curious, how are you testing debug info > support for COFF ? > > >I have been testing by compiling code with either clang or my own project then linking with MinGW's linker against their libraries then using MinGW's build of gdb - Nathan -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110224/d786c3b2/attachment.html>
Apparently Analagous Threads
- [LLVMdev] [patch] Dwarf Debug info support for COFF object files
- [LLVMdev] Debug information under windows
- [LLVMdev] Debug information under windows
- [LLVMdev] [patch] DwarfDebug problem with line section
- [LLVMdev] [lldb-dev] How is variable info retrieved in debugging for executables generated by llvm backend?