Extra padding on DWARF debug info?

DwarfDebug::emitDebugInfo() always appends four zero bytes to the tail
of the debug info section:

    emitDIE(Die);
    // FIXME - extra padding for gdb bug.
    Asm->OutStreamer.AddComment("4 extra padding bytes for GDB");
    Asm->EmitInt8(0);
    Asm->EmitInt8(0);
    Asm->EmitInt8(0);
    Asm->EmitInt8(0);
    Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("info_end", TheCU->getID()));

Does anybody know what the bug is in GDB that this works around? The
workaround was added as part of r103439[1], which added support for
multiple compilation units in one module. Does the bug ever affect
modules with only a single compilation unit?

-Ken

[1] http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20100510/101040.html

It was not added by r103439. In fact, it was added by r32035.

http://llvm.org/viewvc/llvm-project?view=rev&revision=32035

Unfortunately the log message and comments do not provide any hints, and I do not have access to the author anymore.

Does anybody know what the bug is in GDB that this works around? The
workaround was added as part of r103439[1], which added support for
multiple compilation units in one module. Does the bug ever affect
modules with only a single compilation unit?

It was not added by r103439. In fact, it was added by r32035.

http://llvm.org/viewvc/llvm-project?view=rev&revision=32035

Unfortunately the log message and comments do not provide any hints, and I do not have access to the author anymore.

Sounds like we should rip it out and see if there is any regression on the gdb testsuite.

-Chris

I vaguely recall an issue (maybe a linker related) when the DWARF debug_line table was empty (source file with no functions). The fix was to pad out the line table with a couple of no-ops.

-Nick

Still, it should be a special case (or a better fix), The way it is
looks strange.

cheers,
--renato

Agreed. r129461.

Indeed, that was a linker bug rather than a gdb bug. See e.g. rdar://problem/5611555

Jonas