This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [rfa] Deprecate msymbol.info, add msymbol.bfd_symbol?



The first meaning can die as soon as someone can test a coff platform
with a trivial patch to coffread.c.

The second meaning is: dbxread.c stores the size of the msym
in 'msymbol.info'.  It does this in case SOFUN_ADDRESS_MAYBE_MISSING
is set, in order to synthesize texthigh for that file.

The third meaning is that arm-tdep.c, m68hc11-tdep.c, mips-tdep.c,
and sh-tdep.c use msymbol.info as a place to store one or two
flag bits.

The third meaning needs to be refined slightly. MAKE_MSYMBOL_SPECIAL, for coff, doesn't yet take a "bfd_symbol", in fact, coffread doesn't even use BFD's canonicalize_symtab to read the symbols.


Consequently, I'd like to propose that "info" be superseeded by a "struct bfd_symbol *" pointer.


I don't quite understand your proposal, because there are three
meanings of "msymbol.info".  Which meanings do you want to supersede?
Can you put up a little sample code?

If I ignore coff, Arm's arm_pc_is_thumb would look like:


sym = lookup_minimal_symbol_by_pc (memaddr);
if (sym && sym->bfd_symbol is "elf like")
return (ELF_ST_TYPE (((elf_symbol_type *) (sym->bfd_symbol))->internal_elf_sym.st_info) == STT_LOPROC)
else
return 0;


MIPS would be identical. The existing MAKE_MSYMBOL_SPECIAL wouldn't be needed.

The other ELF use in elfread + dbxread:

              /* Pass symbol size field in via BFD.  FIXME!!!  */
              size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
              msym = record_minimal_symbol_and_info
                ((char *) sym->name, symaddr,
                 ms_type, (void *) size, sym->section, objfile);

(having calls to record_minimal_symbol_and_info with a NULL info sux :-) could be addressed similar. Anyone realise that the code assumes elf?

The consequence will be that, for a time, the minimal symbol table will be bigger.


Here are some numbers from some old test run:

  msym  0.3 mb
  psym 11.9 mb
  sym  30.1 mb
  mt    8.7 mb  # main_type

The msym's are not space critical.

Yes, I was secretly assuming that.


It sucks that msymbol.info is overloaded for three different meanings
(and none of them is a pointer so we get all those nasty casts).  Let's
separate it into different fields, and then when the data types are
nice and correct, if we want the space back (which I think we won't),
then we can go for 'union' and bit-field things to get the size back
down.

This could immediatly eliminate two of them. I think the coff version of ARM could also be eliminated if coffread (yea, right ... :-) fully utilized BFD.


Andrew



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]