[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