[llvm-dev] yaml2obj support for COFF debug directories
Pavel Labath via llvm-dev
llvm-dev at lists.llvm.org
Wed Mar 4 05:36:52 PST 2020
I also don't know much about COFF, but I am always interested in using
yaml2obj to generate "interesting" test cases for lldb. So, if you're
looking for a use case, this sounds like it could be very useful there.
cheers,
pavel
On 04/03/2020 10:25, James Henderson via llvm-dev wrote:
> I'm not sure I know enough about COFF and debug directories to know how
> useful this feature will be, but I do have some thoughts on the syntax,
> based on my experience working with the ELF part of yaml2obj. From
> reading the spec you linked, I would think it might look something like
> the following:
>
> DebugDirectory:
> - Characteristics: 1234 # Optional, defaults to 0. Contains value to
> write in Characteristics field.
> TimeDateStamp: 4321 # Optional, defaults to 0(?).
> MajorVersion: 1 # Optional, defaults to 0.
> MinorVersion: 2 # Optional, defaults to 0.
> Data: # Required
> - Type: 12 # Required, contains the value of the Type field, can be
> written as raw number or enum value (see how ELF works for various fields).
> Size: 1111 # Optional, derives size from data field, if not specified.
> Address: 2222 # Optional, defaults to 0(?)
> Pointer: 3333 # Optional, defaults to wherever yaml2obj chooses to
> place the data.
> RawData: '12345678abcdef0' # Optional byte string (see 'Content'
> fields for ELF sections). Defaults to empty if not specified.
> ## The following fields are all defined based on the Type value
> (for unrecognised values, by default only RawData is allowed). Cannot be
> mixed with RawData field. Only those actually required need to be
> implemented up front.
> ExtendedDLLCharacteristics: # Used for
> IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS
> - ... # Fields related to DLL Characteristics
> FPOInfo: # Used for IMAGE_DEBUG_TYPE_FP
> - ...
> - ... # FPO Information array
> ...
>
> Does this make sense? It's somewhat similar to how Sections are defined
> in ELF yaml2obj.
>
> James
>
> On Wed, 4 Mar 2020 at 03:10, Penzin, Petr <petr.penzin at intel.com
> <mailto:petr.penzin at intel.com>> wrote:
>
> /Spoiler:/ the following only applies to Windows binary format
> handling.____
>
> Potential for extending yaml2obj to support COFF debug directories
> <https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#debug-directory-image-only>
> recently came up during a code review
> <https://reviews.llvm.org/D70606#1873185>. Currently, its COFF
> syntax <http://llvm.org/docs/yaml2obj.html#coff-syntax> allows for
> specifying section data, but not debug directories, that's why
> llvm-readobj tests which depend on debug directory contents use
> pre-built executable images instead of yaml2obj.____
>
> It is possible to extend the tool, but first I would be interested
> in gathering feedback on usability of this, especially on potential
> uses of this change. It looks like porting llvm-readobj tests for
> codeview would depend on this and also D70606
> <https://reviews.llvm.org/D70606> is introducing another possible
> use. But I am not sure how trivial would the codeview effort, would
> it be worth it or is it easier to leave things as they are for now?____
>
> In case this is interesting, base Yaml syntax for COFF debug
> directory may look like this (enum values representing COFF Debug
> Types
> <https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#debug-type>):____
>
> DebugDirectory:
> - Type: [ {type: str, enum: [...]}, {type: int} ]
> - DebugDirectoryData: {type: str}____
>
> This may have to be further specialized for sub-categories,
> specifically codeview.____
>
> __ __
>
> Best,____
>
> Petr____
>
> __ __
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
More information about the llvm-dev
mailing list