[llvm-commits] [PATCH] Dwarf: support for LTO where a single object file can have multiple line tables

Manman Ren mren at apple.com
Wed Jan 30 10:01:38 PST 2013


On Jan 29, 2013, at 2:44 PM, Eric Christopher <echristo at gmail.com> wrote:

> Made quite a few changes between the two versions (including adding a test case, that's a good start), but didn't explain what the problems you were fixing were. What problems were you running into that needed changing?

My bad. Since there was no response on the first patch, I assumed people will just look at the updated patch.
The updated patch makes sure we generate the same code when there is only one compile unit.
And the line table will be emitted in the order of CUID.

> 
> The MCLineIDs bit seems unwieldy and probably could be done a different way.
> 
> The bit with CUID = -1 or CUID == 0 seems confusing, can you explain this a bit? At times -1 seems to be for invalid CUs and at other times the first/only CU?
"-1" is the default CUID, when DwarfDebug does not exist.
So the first line table will be for CUID 0 when DwarfDebug exists, and will be for CUID -1 when DwarfDebug does not exist.

> 
> There's really no need to keep track of the first line table for the section since the only reason the symbol is ever used is to get the offset in cases where a relocation is necessary.
That is true, but it is weird to me if we keep the start symbols for other line tables except the first. Let me know whether this should be changed.

Thanks for reviewing,
Manman
> 
> -eric
> 
> 
> On Mon, Jan 28, 2013 at 3:21 PM, Manman Ren <mren at apple.com> wrote:
> 
> PING with updated patch.
> 
> 
> 
> On Jan 25, 2013, at 4:05 PM, Manman Ren <mren at apple.com> wrote:
> 
> >
> > Hello,
> >
> > With LTO, we will generate a single object file with multiple compilation units, and we used to generate a single combined line table
> > and all compilation units will point to the same line table.
> >
> > With this patch, we will generate one line table for each compilation unit in the object file.
> >
> > Added the following members in MCContext:
> > +    /// The Compile Unit ID that we are currently processing.
> > +    int DwarfCompileUnitID;
> > +    /// The line table start symbol for each Compile Unit.
> > +    DenseMap<int, MCSymbol *> MCLineTableSymbols;
> > Modified members in MCLineSection:
> > -    MCLineEntryCollection MCLineEntries;
> > +    // A collection of MCLineEntry for each Compile Unit ID.
> > +    DenseMap<int, MCLineEntryCollection> MCLineDivisions;
> >
> > Please review,
> >
> > Thanks,
> > Manman
> > <line_table.patch>_______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130130/80de0657/attachment.html>


More information about the llvm-commits mailing list