[PATCH] D26210: Define DbiStreamBuilder::addSectionContribs.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 11 15:27:42 PST 2016
ruiu marked an inline comment as done.
ruiu added inline comments.
================
Comment at: lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp:315
+ Entry.Size = Sec.SizeOfRawData;
+ Entry.Characteristics = Sec.Characteristics;
+ }
----------------
zturner wrote:
> ruiu wrote:
> > zturner wrote:
> > > I think you should try to fill out `Entry.ISect` and `Entry.IMod`. The first one seems like it's probably just the index, so you could get it by iterating over using `llvm::enumerate()`. Not sure how you will get the last one, but it seems important nonetheless. What do you think?
> > I will fill `ISect` but probably not `IMod` in this patch because I don't understand the meaning of the field yet.
> `IMod` is the index of the module in the DBI Stream's `ModInfo` array. For example, if this section contribution is for `foo.obj`, and `foo.obj` is the 7th entry in the `ModInfo` array, then `IMod` would be 7. For example, if I run `-section-contribs` against `empty.pdb` I get this:
>
> ```
> Section Contributions [
> Contribution {
> ISect: 1
> Off: 0
> Size: 10
> Characteristics [ (0x60000020)
> IMAGE_SCN_CNT_CODE (0x20)
> IMAGE_SCN_MEM_EXECUTE (0x20000000)
> IMAGE_SCN_MEM_READ (0x40000000)
> ]
> Module {
> Index: 1
> Name: * Linker *
> }
> Data CRC: 0
> Reloc CRC: 0
> }
> Contribution {
> ISect: 1
> Off: 16
> Size: 10
> Characteristics [ (0x60500020)
> IMAGE_SCN_ALIGN_16BYTES (0x500000)
> IMAGE_SCN_CNT_CODE (0x20)
> IMAGE_SCN_MEM_EXECUTE (0x20000000)
> IMAGE_SCN_MEM_READ (0x40000000)
> ]
> Module {
> Index: 0
> Name: d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj
> }
> Data CRC: 3617027124
> Reloc CRC: 0
> }
> ```
>
> We have indices of 1 and 0. Now if I run with `-modules`, I get this:
>
> ```
> Modules [
> {
> Name: d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj
> Debug Stream Index: 12
> Object File Name: d:\src\llvm\test\DebugInfo\PDB\Inputs\empty.obj
> Num Files: 1
> Source File Name Idx: 0
> Pdb File Name Idx: 0
> Line Info Byte Size: 0
> C13 Line Info Byte Size: 88
> Symbol Byte Size: 208
> Type Server Index: 0
> Has EC Info: No
> }
> {
> Name: * Linker *
> Debug Stream Index: 14
> Object File Name:
> Num Files: 0
> Source File Name Idx: 0
> Pdb File Name Idx: 1
> Line Info Byte Size: 0
> C13 Line Info Byte Size: 0
> Symbol Byte Size: 516
> Type Server Index: 0
> Has EC Info: No
> }
> ```
>
> and we can see that the `IMod` field matches up with the order of the module in the module info array.
Thanks. But I'll do that later because we haven't added Modules yet.
https://reviews.llvm.org/D26210
More information about the llvm-commits
mailing list