*get_rfd PARAMS ((int, int));  static int has_opaque_xref PARAMS ((FDR *, SYMR *));  static int cross_ref PARAMS ((int, union aux_ext *, struct type **, enum type_code, char **, int, char *));  static struct symbol * new_symbol PARAMS ((char *));  static struct type * new_type PARAMS ((char *));  static struct block * new_block PARAMS ((int));  static struct symtab * new_symtab PARAMS ((char *, int, int, struct objfile *));  static struct linetable * new_linetable PARAMS ((int));  static struct blockvector * new_bvect PARAMS ((int));  static int parse_symbol PARAMS ((SYMR *, union aux_ext *, char *, int, struct section_offsets *));  static struct type * parse_type PARAMS ((int, union aux_ext *, unsigned int, int *, int, char *));  static struct symbol * mylookup_symbol PARAMS ((char *, struct block *, namespace_enum, enum address_class));  static struct block * shrink_block PARAMS ((struct block *, struct symtab *));  static PTR xzalloc PARAMS ((unsigned int));  static void sort_blocks PARAMS ((struct symtab *));  static int compare_blocks PARAMS ((const void *, const void *));  static struct partial_symtab * new_psymtab PARAMS ((char *, struct objfile *, struct section_offsets *));  static void psymtab_to_symtab_1 PARAMS ((struct partial_symtab *, char *));  static void add_block PARAMS ((struct block *, struct symtab *));  static void add_symbol PARAMS ((struct symbol *, struct block *));  static int add_line PARAMS ((struct linetable *, int, CORE_ADDR, int));  static struct linetable * shrink_linetable PARAMS ((struct linetable *));  static void handle_psymbol_enumerators PARAMS ((struct objfile *, FDR *, int, CORE_ADDR));  static char * mdebug_next_symbol_text PARAMS ((struct objfile *));     CORE_ADDR sigtramp_address, sigtramp_end;    static PTR xzalloc (size) unsigned int size; { PTR p = xmalloc (size);  memset (p, 0, size); return p; }    static void mdebug_psymtab_to_symtab (pst) struct partial_symtab *pst; {  if (!pst) return;  if (info_verbose) { printf_filtered ("Reading in symbols for %s...", pst->filename); gdb_flush (gdb_stdout); }  next_symbol_text_func = mdebug_next_symbol_text;  psymtab_to_symtab_1 (pst, pst->filename);   scan_file_globals (pst->objfile);  if (info_verbose) printf_filtered ("done.\n"); }       static FDR * get_rfd (cf, rf) int cf, rf;
get_rfd (int cf, int rf)
*get_rfd PARAMS ((int, int));static inthas_opaque_xref PARAMS ((FDR *, SYMR *));static intcross_ref PARAMS ((int, union aux_ext *, struct type **, enum type_code,		   char **, int, char *));static struct symbol *new_symbol PARAMS ((char *));static struct type *new_type PARAMS ((char *));static struct block *new_block PARAMS ((int));static struct symtab *new_symtab PARAMS ((char *, int, int, struct objfile *));static struct linetable *new_linetable PARAMS ((int));static struct blockvector *new_bvect PARAMS ((int));static intparse_symbol PARAMS ((SYMR *, union aux_ext *, char *, int, struct section_offsets *));static struct type *parse_type PARAMS ((int, union aux_ext *, unsigned int, int *, int, char *));static struct symbol *mylookup_symbol PARAMS ((char *, struct block *, namespace_enum,			 enum address_class));static struct block *shrink_block PARAMS ((struct block *, struct symtab *));static PTRxzalloc PARAMS ((unsigned int));static voidsort_blocks PARAMS ((struct symtab *));static intcompare_blocks PARAMS ((const void *, const void *));static struct partial_symtab *new_psymtab PARAMS ((char *, struct objfile *, struct section_offsets *));static voidpsymtab_to_symtab_1 PARAMS ((struct partial_symtab *, char *));static voidadd_block PARAMS ((struct block *, struct symtab *));static voidadd_symbol PARAMS ((struct symbol *, struct block *));static intadd_line PARAMS ((struct linetable *, int, CORE_ADDR, int));static struct linetable *shrink_linetable PARAMS ((struct linetable *));static voidhandle_psymbol_enumerators PARAMS ((struct objfile *, FDR *, int, CORE_ADDR));static char *mdebug_next_symbol_text PARAMS ((struct objfile *));/* Address bounds for the signal trampoline in inferior, if any */CORE_ADDR sigtramp_address, sigtramp_end;/* Allocate zeroed memory */static PTRxzalloc (size)     unsigned int size;{  PTR p = xmalloc (size);  memset (p, 0, size);  return p;}/* Exported procedure: Builds a symtab from the PST partial one.   Restores the environment in effect when PST was created, delegates   most of the work to an ancillary procedure, and sorts   and reorders the symtab list at the end */static voidmdebug_psymtab_to_symtab (pst)     struct partial_symtab *pst;{  if (!pst)    return;  if (info_verbose)    {      printf_filtered ("Reading in symbols for %s...", pst->filename);      gdb_flush (gdb_stdout);    }  next_symbol_text_func = mdebug_next_symbol_text;  psymtab_to_symtab_1 (pst, pst->filename);  /* Match with global symbols.  This only needs to be done once,     after all of the symtabs and dependencies have been read in.   */  scan_file_globals (pst->objfile);  if (info_verbose)    printf_filtered ("done.\n");}/* File-level interface functions *//* Find a file descriptor given its index RF relative to a file CF */static FDR *get_rfd (cf, rf)     int cf, rf;{  FDR *fdrs;  register FDR *f;  RFDT rfd;  fdrs = debug_info->fdr;  f = fdrs + cf;  /* Object files do not have the RFD table, all refs are absolute */  if (f->rfdBase == 0)    return fdrs + rf;  (*debug_swap->swap_rfd_in) (cur_bfd,			     ((char *) debug_info->external_rfd			      + ((f->rfdBase + rf)				 * debug_swap->external_rfd_size)),			     &rfd);  return fdrs + rfd;}