This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: RFA: [dwarf2read.c] Avoid using section index if not yet set
- To: Fernando Nasser <fnasser at redhat dot com>
- Subject: Re: RFA: [dwarf2read.c] Avoid using section index if not yet set
- From: Jim Blandy <jimb at zwingli dot cygnus dot com>
- Date: 11 May 2001 15:39:24 -0500
- Cc: gdb-patches at sources dot redhat dot com
- References: <3AFB90A7.D8F37C43@redhat.com>
This patch is not approved.
At the moment, GDB isn't really designed to read debug info from .o
files. I have no objection to enhancing GDB to provide this support,
but it's ridiculous to try to do it by running GDB, looking to see
where it crashes, and adding `if' statements to keep that code from
being executed.
The author of the patch needs to provide a complete story explaining
how loading .o files will work. In particular, I want to know how
they will provide values for undefined symbols referenced in the .o
file. The absence of a coherent answer to that question is the
underlying cause of the crash this patch attempts to plaster over.
> * dwarf2read.c (new_symbol): Do not attempt to use the section
> index of a symbol if it is not yet set.
>
> Index: dwarf2read.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/dwarf2read.c,v
> retrieving revision 1.24
> diff -c -p -r1.24 dwarf2read.c
> *** dwarf2read.c 2001/04/30 10:30:27 1.24
> --- dwarf2read.c 2001/05/10 23:06:28
> *************** new_symbol (struct die_info *die, struct
> *** 4195,4203 ****
> if (SYMBOL_VALUE_ADDRESS (sym))
> {
> fixup_symbol_section (sym, objfile);
> ! SYMBOL_VALUE_ADDRESS (sym) +=
> ! ANOFFSET (objfile->section_offsets,
> ! SYMBOL_SECTION (sym));
> SYMBOL_CLASS (sym) = LOC_STATIC;
> }
> else
> --- 4195,4204 ----
> if (SYMBOL_VALUE_ADDRESS (sym))
> {
> fixup_symbol_section (sym, objfile);
> ! if (SYMBOL_SECTION (sym) != -1)
> ! SYMBOL_VALUE_ADDRESS (sym) +=
> ! ANOFFSET (objfile->section_offsets,
> ! SYMBOL_SECTION (sym));
> SYMBOL_CLASS (sym) = LOC_STATIC;
> }
> else