This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch] Re: Advice on fixing gdb/12528
On Tue, Mar 15, 2011 at 11:06 PM, Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
>> Maybe like this:
>>
>> ? ? ? ? ? ? ? ? if (address == 0 && !dwarf2_per_objfile->has_section_at_zero)
>> ? ? ? ? ? ? ? ? ? {
>> ? ? ? ? ? ? ? ? ? ? /* This line table is for a function which has been
>> ? ? ? ? ? ? ? ? ? ? ? ?GCd by the linker. ?Ignore it. ?PR gdb/12528 */
>>
>> ? ? ? ? ? ? ? ? ? ? long line_offset
>> ? ? ? ? ? ? ? ? ? ? ? = line_ptr - bytes_read - dwarf2_per_objfile->line.buffer;
>>
>> ? ? ? ? ? ? ? ? ? ? complaint (&symfile_complaints,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?_(".debug_line offset 0x%lx uses address 0 "
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"[in module %s]"),
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?line_offset, cu->objfile->name);
>> ? ? ? ? ? ? ? ? ? ? p_record_line = noop_record_line;
>> ? ? ? ? ? ? ? ? ? }
>
> BYTES_READ is here just for the ADDRESS size.
Right. So the offset printed above is the offset of the address itself.
> I do not think the displayed offset is so importatnt but at least the module
> gets shown.
I think it's still (slightly) better to print offset to the start of address,
rather than just after it.
How about this then:
if (address == 0 && !dwarf2_per_objfile->has_section_at_zero)
{
/* This line table is for a function which has been
GCd by the linker. Ignore it. PR gdb/12528 */
long line_offset
= line_ptr - bytes_read - dwarf2_per_objfile->line.buffer;
complaint (&symfile_complaints,
_(".debug_line address at offset 0x%lx is 0 "
"[in module %s]"),
line_offset, cu->objfile->name);
p_record_line = noop_record_line;
}
Thanks,
--
Paul Pluzhnikov