* objfiles.h (struct objfile): New GDBARCH member.

(get_objfile_arch): Add prototype.
	* objfiles.c: Include "arch-utils.h".
	(allocate_objfile): Look up gdbarch associated with bfd.
	(get_objfile_arch): New function.
	* Makefile (objfiles.o): Update dependencies.

	* dwarf2-frame.c (decode_frame_entry_1): Replace current_gdbarch
	by objfile arch.
	* dwarf2loc.c (dwarf_expr_read_reg): Replace current_gdbarch
	by frame arch.
	(locexpr_describe_location): Replace current_gdbarch by
	objfile arch.
	* dwarf2read.c (die_type): Replace current_gdbarch by objfile arch.
	(dwarf2_add_field): Likewise.
	(read_tag_pointer_type): Likewise.
	(read_base_type): Likewise.
	(new_symbol): Likewise.

	* coffread.c (decode_type): Add OBJFILE argument.  Update callers.
	(decode_base_type, decode_function_type): Likewise.
	(coff_read_struct_type, coff_read_enum_type): Likewise.
	(coff_symtab_read): Replace current_gdbarch by objfile arch.
	(decode_base_type): Likewise.
	(coff_read_enum_type): Likewise.
	(coff_read_struct_type): Replace current_objfile by OBJFILE argument.
	(coff_read_enum_type): Likewise.

	* dbxread.c (read_dbx_symtab): Replace current_gdbarch by objfile arch.
	(end_psymtab): Likewise.
	(process_one_symbol): Likewise.

	* mdebugread.c (parse_symbol): Replace current_gdbarch by objfile arch.
	(parse_procedure): Likewise.
	(parse_partial_symbols): Likewise.

	* somread.c (som_symtab_read): Replace current_gdbarch by objfile arch.

	* stabsread.c (define_symbol): Replace current_gdbarch by objfile arch.
	Replace static pcc_promotion_type and pcc_unsigned_promotion_type by
	built-in types.
	(read_range_type): Replace current_gdbarch by objfile arch.  Replace
	static range_index_type by built-in type.
	(read_one_struct_field): Replace current_gdbarch by objfile arch.
	(read_enum_type): Likewise.

	* xcoffread.c (read_xcoff_symtab): Replace current_gdbarch by
	objfile arch.
This commit is contained in:
Ulrich Weigand 2008-03-26 14:53:28 +00:00
parent 5a413362ba
commit 5e2b427df3
14 changed files with 236 additions and 160 deletions

View file

@ -1,3 +1,54 @@
2008-03-26 Ulrich Weigand <uweigand@de.ibm.com>
* objfiles.h (struct objfile): New GDBARCH member.
(get_objfile_arch): Add prototype.
* objfiles.c: Include "arch-utils.h".
(allocate_objfile): Look up gdbarch associated with bfd.
(get_objfile_arch): New function.
* Makefile (objfiles.o): Update dependencies.
* dwarf2-frame.c (decode_frame_entry_1): Replace current_gdbarch
by objfile arch.
* dwarf2loc.c (dwarf_expr_read_reg): Replace current_gdbarch
by frame arch.
(locexpr_describe_location): Replace current_gdbarch by
objfile arch.
* dwarf2read.c (die_type): Replace current_gdbarch by objfile arch.
(dwarf2_add_field): Likewise.
(read_tag_pointer_type): Likewise.
(read_base_type): Likewise.
(new_symbol): Likewise.
* coffread.c (decode_type): Add OBJFILE argument. Update callers.
(decode_base_type, decode_function_type): Likewise.
(coff_read_struct_type, coff_read_enum_type): Likewise.
(coff_symtab_read): Replace current_gdbarch by objfile arch.
(decode_base_type): Likewise.
(coff_read_enum_type): Likewise.
(coff_read_struct_type): Replace current_objfile by OBJFILE argument.
(coff_read_enum_type): Likewise.
* dbxread.c (read_dbx_symtab): Replace current_gdbarch by objfile arch.
(end_psymtab): Likewise.
(process_one_symbol): Likewise.
* mdebugread.c (parse_symbol): Replace current_gdbarch by objfile arch.
(parse_procedure): Likewise.
(parse_partial_symbols): Likewise.
* somread.c (som_symtab_read): Replace current_gdbarch by objfile arch.
* stabsread.c (define_symbol): Replace current_gdbarch by objfile arch.
Replace static pcc_promotion_type and pcc_unsigned_promotion_type by
built-in types.
(read_range_type): Replace current_gdbarch by objfile arch. Replace
static range_index_type by built-in type.
(read_one_struct_field): Replace current_gdbarch by objfile arch.
(read_enum_type): Likewise.
* xcoffread.c (read_xcoff_symtab): Replace current_gdbarch by
objfile arch.
2008-03-26 Vladimir Prus <vladimir@codesourcery.com> 2008-03-26 Vladimir Prus <vladimir@codesourcery.com>
* varobj.h (varobj_floating_p): Declare. * varobj.h (varobj_floating_p): Declare.

View file

@ -2539,7 +2539,7 @@ objfiles.o: objfiles.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
$(objfiles_h) $(gdb_stabs_h) $(target_h) $(bcache_h) $(mdebugread_h) \ $(objfiles_h) $(gdb_stabs_h) $(target_h) $(bcache_h) $(mdebugread_h) \
$(gdb_assert_h) $(gdb_stat_h) $(gdb_obstack_h) $(gdb_string_h) \ $(gdb_assert_h) $(gdb_stat_h) $(gdb_obstack_h) $(gdb_string_h) \
$(hashtab_h) $(breakpoint_h) $(block_h) $(dictionary_h) $(source_h) \ $(hashtab_h) $(breakpoint_h) $(block_h) $(dictionary_h) $(source_h) \
$(parser_defs_h) $(expression_h) $(addrmap_h) $(parser_defs_h) $(expression_h) $(addrmap_h) $(arch_utils_h)
observer.o: observer.c $(defs_h) $(observer_h) $(command_h) $(gdbcmd_h) \ observer.o: observer.c $(defs_h) $(observer_h) $(command_h) $(gdbcmd_h) \
$(observer_inc) $(observer_inc)
obsd-tdep.o: obsd-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(obsd_tdep_h) obsd-tdep.o: obsd-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(obsd_tdep_h)

View file

@ -137,19 +137,24 @@ struct coff_symbol
extern void stabsread_clear_cache (void); extern void stabsread_clear_cache (void);
static struct type *coff_read_struct_type (int, int, int); static struct type *coff_read_struct_type (int, int, int,
struct objfile *);
static struct type *decode_base_type (struct coff_symbol *, static struct type *decode_base_type (struct coff_symbol *,
unsigned int, union internal_auxent *); unsigned int, union internal_auxent *,
struct objfile *);
static struct type *decode_type (struct coff_symbol *, unsigned int, static struct type *decode_type (struct coff_symbol *, unsigned int,
union internal_auxent *); union internal_auxent *,
struct objfile *);
static struct type *decode_function_type (struct coff_symbol *, static struct type *decode_function_type (struct coff_symbol *,
unsigned int, unsigned int,
union internal_auxent *); union internal_auxent *,
struct objfile *);
static struct type *coff_read_enum_type (int, int, int); static struct type *coff_read_enum_type (int, int, int,
struct objfile *);
static struct symbol *process_coff_symbol (struct coff_symbol *, static struct symbol *process_coff_symbol (struct coff_symbol *,
union internal_auxent *, union internal_auxent *,
@ -679,6 +684,7 @@ static void
coff_symtab_read (long symtab_offset, unsigned int nsyms, coff_symtab_read (long symtab_offset, unsigned int nsyms,
struct objfile *objfile) struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct context_stack *new; struct context_stack *new;
struct coff_symbol coff_symbol; struct coff_symbol coff_symbol;
struct coff_symbol *cs = &coff_symbol; struct coff_symbol *cs = &coff_symbol;
@ -910,8 +916,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms,
cs->c_sclass == C_EXT || cs->c_sclass == C_THUMBEXTFUNC cs->c_sclass == C_EXT || cs->c_sclass == C_THUMBEXTFUNC
|| cs->c_sclass == C_THUMBEXT ? || cs->c_sclass == C_THUMBEXT ?
mst_text : mst_file_text; mst_text : mst_file_text;
tmpaddr = gdbarch_smash_text_address tmpaddr = gdbarch_smash_text_address (gdbarch, tmpaddr);
(current_gdbarch, tmpaddr);
} }
else if (bfd_section->flags & SEC_ALLOC else if (bfd_section->flags & SEC_ALLOC
&& bfd_section->flags & SEC_LOAD) && bfd_section->flags & SEC_LOAD)
@ -932,8 +937,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms,
msym = record_minimal_symbol (cs, tmpaddr, ms_type, sec, objfile); msym = record_minimal_symbol (cs, tmpaddr, ms_type, sec, objfile);
if (msym) if (msym)
gdbarch_coff_make_msymbol_special gdbarch_coff_make_msymbol_special (gdbarch, cs->c_sclass, msym);
(current_gdbarch, cs->c_sclass, msym);
if (SDB_TYPE (cs->c_type)) if (SDB_TYPE (cs->c_type))
{ {
@ -1503,7 +1507,7 @@ process_coff_symbol (struct coff_symbol *cs,
{ {
SYMBOL_VALUE (sym) += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)); SYMBOL_VALUE (sym) += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
SYMBOL_TYPE (sym) = SYMBOL_TYPE (sym) =
lookup_function_type (decode_function_type (cs, cs->c_type, aux)); lookup_function_type (decode_function_type (cs, cs->c_type, aux, objfile));
SYMBOL_CLASS (sym) = LOC_BLOCK; SYMBOL_CLASS (sym) = LOC_BLOCK;
if (cs->c_sclass == C_STAT || cs->c_sclass == C_THUMBSTAT if (cs->c_sclass == C_STAT || cs->c_sclass == C_THUMBSTAT
@ -1515,7 +1519,7 @@ process_coff_symbol (struct coff_symbol *cs,
} }
else else
{ {
SYMBOL_TYPE (sym) = decode_type (cs, cs->c_type, aux); SYMBOL_TYPE (sym) = decode_type (cs, cs->c_type, aux, objfile);
switch (cs->c_sclass) switch (cs->c_sclass)
{ {
case C_NULL: case C_NULL:
@ -1662,7 +1666,7 @@ process_coff_symbol (struct coff_symbol *cs,
static struct type * static struct type *
decode_type (struct coff_symbol *cs, unsigned int c_type, decode_type (struct coff_symbol *cs, unsigned int c_type,
union internal_auxent *aux) union internal_auxent *aux, struct objfile *objfile)
{ {
struct type *type = 0; struct type *type = 0;
unsigned int new_c_type; unsigned int new_c_type;
@ -1672,12 +1676,12 @@ decode_type (struct coff_symbol *cs, unsigned int c_type,
new_c_type = DECREF (c_type); new_c_type = DECREF (c_type);
if (ISPTR (c_type)) if (ISPTR (c_type))
{ {
type = decode_type (cs, new_c_type, aux); type = decode_type (cs, new_c_type, aux, objfile);
type = lookup_pointer_type (type); type = lookup_pointer_type (type);
} }
else if (ISFCN (c_type)) else if (ISFCN (c_type))
{ {
type = decode_type (cs, new_c_type, aux); type = decode_type (cs, new_c_type, aux, objfile);
type = lookup_function_type (type); type = lookup_function_type (type);
} }
else if (ISARY (c_type)) else if (ISARY (c_type))
@ -1699,7 +1703,7 @@ decode_type (struct coff_symbol *cs, unsigned int c_type,
*dim = *(dim + 1); *dim = *(dim + 1);
*dim = 0; *dim = 0;
base_type = decode_type (cs, new_c_type, aux); base_type = decode_type (cs, new_c_type, aux, objfile);
index_type = builtin_type_int32; index_type = builtin_type_int32;
range_type = range_type =
create_range_type ((struct type *) NULL, index_type, 0, n - 1); create_range_type ((struct type *) NULL, index_type, 0, n - 1);
@ -1735,7 +1739,7 @@ decode_type (struct coff_symbol *cs, unsigned int c_type,
} }
} }
return decode_base_type (cs, BTYPE (c_type), aux); return decode_base_type (cs, BTYPE (c_type), aux, objfile);
} }
/* Decode a coff type specifier for function definition; /* Decode a coff type specifier for function definition;
@ -1743,59 +1747,60 @@ decode_type (struct coff_symbol *cs, unsigned int c_type,
static struct type * static struct type *
decode_function_type (struct coff_symbol *cs, unsigned int c_type, decode_function_type (struct coff_symbol *cs, unsigned int c_type,
union internal_auxent *aux) union internal_auxent *aux, struct objfile *objfile)
{ {
if (aux->x_sym.x_tagndx.l == 0) if (aux->x_sym.x_tagndx.l == 0)
cs->c_naux = 0; /* auxent refers to function, not base type */ cs->c_naux = 0; /* auxent refers to function, not base type */
return decode_type (cs, DECREF (c_type), aux); return decode_type (cs, DECREF (c_type), aux, objfile);
} }
/* basic C types */ /* basic C types */
static struct type * static struct type *
decode_base_type (struct coff_symbol *cs, unsigned int c_type, decode_base_type (struct coff_symbol *cs, unsigned int c_type,
union internal_auxent *aux) union internal_auxent *aux, struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct type *type; struct type *type;
switch (c_type) switch (c_type)
{ {
case T_NULL: case T_NULL:
/* shows up with "void (*foo)();" structure members */ /* shows up with "void (*foo)();" structure members */
return builtin_type (current_gdbarch)->builtin_void; return builtin_type (gdbarch)->builtin_void;
#ifdef T_VOID #ifdef T_VOID
case T_VOID: case T_VOID:
/* Intel 960 COFF has this symbol and meaning. */ /* Intel 960 COFF has this symbol and meaning. */
return builtin_type (current_gdbarch)->builtin_void; return builtin_type (gdbarch)->builtin_void;
#endif #endif
case T_CHAR: case T_CHAR:
return builtin_type (current_gdbarch)->builtin_char; return builtin_type (gdbarch)->builtin_char;
case T_SHORT: case T_SHORT:
return builtin_type (current_gdbarch)->builtin_short; return builtin_type (gdbarch)->builtin_short;
case T_INT: case T_INT:
return builtin_type (current_gdbarch)->builtin_int; return builtin_type (gdbarch)->builtin_int;
case T_LONG: case T_LONG:
if (cs->c_sclass == C_FIELD if (cs->c_sclass == C_FIELD
&& aux->x_sym.x_misc.x_lnsz.x_size && aux->x_sym.x_misc.x_lnsz.x_size
> gdbarch_long_bit (current_gdbarch)) > gdbarch_long_bit (gdbarch))
return builtin_type (current_gdbarch)->builtin_long_long; return builtin_type (gdbarch)->builtin_long_long;
else else
return builtin_type (current_gdbarch)->builtin_long; return builtin_type (gdbarch)->builtin_long;
case T_FLOAT: case T_FLOAT:
return builtin_type (current_gdbarch)->builtin_float; return builtin_type (gdbarch)->builtin_float;
case T_DOUBLE: case T_DOUBLE:
return builtin_type (current_gdbarch)->builtin_double; return builtin_type (gdbarch)->builtin_double;
case T_LNGDBL: case T_LNGDBL:
return builtin_type (current_gdbarch)->builtin_long_double; return builtin_type (gdbarch)->builtin_long_double;
case T_STRUCT: case T_STRUCT:
if (cs->c_naux != 1) if (cs->c_naux != 1)
@ -1817,7 +1822,8 @@ decode_base_type (struct coff_symbol *cs, unsigned int c_type,
{ {
type = coff_read_struct_type (cs->c_symnum, type = coff_read_struct_type (cs->c_symnum,
aux->x_sym.x_misc.x_lnsz.x_size, aux->x_sym.x_misc.x_lnsz.x_size,
aux->x_sym.x_fcnary.x_fcn.x_endndx.l); aux->x_sym.x_fcnary.x_fcn.x_endndx.l,
objfile);
} }
return type; return type;
@ -1840,7 +1846,8 @@ decode_base_type (struct coff_symbol *cs, unsigned int c_type,
{ {
type = coff_read_struct_type (cs->c_symnum, type = coff_read_struct_type (cs->c_symnum,
aux->x_sym.x_misc.x_lnsz.x_size, aux->x_sym.x_misc.x_lnsz.x_size,
aux->x_sym.x_fcnary.x_fcn.x_endndx.l); aux->x_sym.x_fcnary.x_fcn.x_endndx.l,
objfile);
} }
TYPE_CODE (type) = TYPE_CODE_UNION; TYPE_CODE (type) = TYPE_CODE_UNION;
return type; return type;
@ -1864,7 +1871,8 @@ decode_base_type (struct coff_symbol *cs, unsigned int c_type,
{ {
type = coff_read_enum_type (cs->c_symnum, type = coff_read_enum_type (cs->c_symnum,
aux->x_sym.x_misc.x_lnsz.x_size, aux->x_sym.x_misc.x_lnsz.x_size,
aux->x_sym.x_fcnary.x_fcn.x_endndx.l); aux->x_sym.x_fcnary.x_fcn.x_endndx.l,
objfile);
} }
return type; return type;
@ -1873,24 +1881,24 @@ decode_base_type (struct coff_symbol *cs, unsigned int c_type,
break; break;
case T_UCHAR: case T_UCHAR:
return builtin_type (current_gdbarch)->builtin_unsigned_char; return builtin_type (gdbarch)->builtin_unsigned_char;
case T_USHORT: case T_USHORT:
return builtin_type (current_gdbarch)->builtin_unsigned_short; return builtin_type (gdbarch)->builtin_unsigned_short;
case T_UINT: case T_UINT:
return builtin_type (current_gdbarch)->builtin_unsigned_int; return builtin_type (gdbarch)->builtin_unsigned_int;
case T_ULONG: case T_ULONG:
if (cs->c_sclass == C_FIELD if (cs->c_sclass == C_FIELD
&& aux->x_sym.x_misc.x_lnsz.x_size && aux->x_sym.x_misc.x_lnsz.x_size
> gdbarch_long_bit (current_gdbarch)) > gdbarch_long_bit (gdbarch))
return builtin_type (current_gdbarch)->builtin_unsigned_long_long; return builtin_type (gdbarch)->builtin_unsigned_long_long;
else else
return builtin_type (current_gdbarch)->builtin_unsigned_long; return builtin_type (gdbarch)->builtin_unsigned_long;
} }
complaint (&symfile_complaints, _("Unexpected type for symbol %s"), cs->c_name); complaint (&symfile_complaints, _("Unexpected type for symbol %s"), cs->c_name);
return builtin_type (current_gdbarch)->builtin_void; return builtin_type (gdbarch)->builtin_void;
} }
/* This page contains subroutines of read_type. */ /* This page contains subroutines of read_type. */
@ -1899,7 +1907,8 @@ decode_base_type (struct coff_symbol *cs, unsigned int c_type,
object describing the type. */ object describing the type. */
static struct type * static struct type *
coff_read_struct_type (int index, int length, int lastsym) coff_read_struct_type (int index, int length, int lastsym,
struct objfile *objfile)
{ {
struct nextfield struct nextfield
{ {
@ -1928,7 +1937,7 @@ coff_read_struct_type (int index, int length, int lastsym)
{ {
read_one_sym (ms, &sub_sym, &sub_aux); read_one_sym (ms, &sub_sym, &sub_aux);
name = ms->c_name; name = ms->c_name;
name = EXTERNAL_NAME (name, current_objfile->obfd); name = EXTERNAL_NAME (name, objfile->obfd);
switch (ms->c_sclass) switch (ms->c_sclass)
{ {
@ -1942,10 +1951,9 @@ coff_read_struct_type (int index, int length, int lastsym)
/* Save the data. */ /* Save the data. */
list->field.name = list->field.name =
obsavestring (name, obsavestring (name, strlen (name), &objfile->objfile_obstack);
strlen (name), FIELD_TYPE (list->field) = decode_type (ms, ms->c_type, &sub_aux,
&current_objfile->objfile_obstack); objfile);
FIELD_TYPE (list->field) = decode_type (ms, ms->c_type, &sub_aux);
FIELD_BITPOS (list->field) = 8 * ms->c_value; FIELD_BITPOS (list->field) = 8 * ms->c_value;
FIELD_BITSIZE (list->field) = 0; FIELD_BITSIZE (list->field) = 0;
FIELD_STATIC_KIND (list->field) = 0; FIELD_STATIC_KIND (list->field) = 0;
@ -1961,10 +1969,9 @@ coff_read_struct_type (int index, int length, int lastsym)
/* Save the data. */ /* Save the data. */
list->field.name = list->field.name =
obsavestring (name, obsavestring (name, strlen (name), &objfile->objfile_obstack);
strlen (name), FIELD_TYPE (list->field) = decode_type (ms, ms->c_type, &sub_aux,
&current_objfile->objfile_obstack); objfile);
FIELD_TYPE (list->field) = decode_type (ms, ms->c_type, &sub_aux);
FIELD_BITPOS (list->field) = ms->c_value; FIELD_BITPOS (list->field) = ms->c_value;
FIELD_BITSIZE (list->field) = sub_aux.x_sym.x_misc.x_lnsz.x_size; FIELD_BITSIZE (list->field) = sub_aux.x_sym.x_misc.x_lnsz.x_size;
FIELD_STATIC_KIND (list->field) = 0; FIELD_STATIC_KIND (list->field) = 0;
@ -1995,8 +2002,10 @@ coff_read_struct_type (int index, int length, int lastsym)
Also defines the symbols that represent the values of the type. */ Also defines the symbols that represent the values of the type. */
static struct type * static struct type *
coff_read_enum_type (int index, int length, int lastsym) coff_read_enum_type (int index, int length, int lastsym,
struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct symbol *sym; struct symbol *sym;
struct type *type; struct type *type;
int nsyms = 0; int nsyms = 0;
@ -2024,19 +2033,17 @@ coff_read_enum_type (int index, int length, int lastsym)
{ {
read_one_sym (ms, &sub_sym, &sub_aux); read_one_sym (ms, &sub_sym, &sub_aux);
name = ms->c_name; name = ms->c_name;
name = EXTERNAL_NAME (name, current_objfile->obfd); name = EXTERNAL_NAME (name, objfile->obfd);
switch (ms->c_sclass) switch (ms->c_sclass)
{ {
case C_MOE: case C_MOE:
sym = (struct symbol *) obstack_alloc sym = (struct symbol *) obstack_alloc
(&current_objfile->objfile_obstack, (&objfile->objfile_obstack, sizeof (struct symbol));
sizeof (struct symbol));
memset (sym, 0, sizeof (struct symbol)); memset (sym, 0, sizeof (struct symbol));
DEPRECATED_SYMBOL_NAME (sym) = DEPRECATED_SYMBOL_NAME (sym) =
obsavestring (name, strlen (name), obsavestring (name, strlen (name), &objfile->objfile_obstack);
&current_objfile->objfile_obstack);
SYMBOL_CLASS (sym) = LOC_CONST; SYMBOL_CLASS (sym) = LOC_CONST;
SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
SYMBOL_VALUE (sym) = ms->c_value; SYMBOL_VALUE (sym) = ms->c_value;
@ -2058,7 +2065,7 @@ coff_read_enum_type (int index, int length, int lastsym)
if (length > 0) if (length > 0)
TYPE_LENGTH (type) = length; TYPE_LENGTH (type) = length;
else /* Assume ints. */ else /* Assume ints. */
TYPE_LENGTH (type) = gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT; TYPE_LENGTH (type) = gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT;
TYPE_CODE (type) = TYPE_CODE_ENUM; TYPE_CODE (type) = TYPE_CODE_ENUM;
TYPE_NFIELDS (type) = nsyms; TYPE_NFIELDS (type) = nsyms;
TYPE_FIELDS (type) = (struct field *) TYPE_FIELDS (type) = (struct field *)

View file

@ -1181,6 +1181,7 @@ units"),
static void static void
read_dbx_symtab (struct objfile *objfile) read_dbx_symtab (struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct external_nlist *bufp = 0; /* =0 avoids gcc -Wall glitch */ struct external_nlist *bufp = 0; /* =0 avoids gcc -Wall glitch */
struct internal_nlist nlist; struct internal_nlist nlist;
CORE_ADDR text_addr; CORE_ADDR text_addr;
@ -1479,7 +1480,7 @@ read_dbx_symtab (struct objfile *objfile)
don't relocate it. */ don't relocate it. */
if (nlist.n_value == 0 if (nlist.n_value == 0
&& gdbarch_sofun_address_maybe_missing (current_gdbarch)) && gdbarch_sofun_address_maybe_missing (gdbarch))
{ {
textlow_not_set = 1; textlow_not_set = 1;
valu = 0; valu = 0;
@ -1692,9 +1693,9 @@ pos %d"),
nlist.n_value += ANOFFSET (objfile->section_offsets, nlist.n_value += ANOFFSET (objfile->section_offsets,
data_sect_index); data_sect_index);
if (gdbarch_static_transform_name_p (current_gdbarch)) if (gdbarch_static_transform_name_p (gdbarch))
namestring = gdbarch_static_transform_name namestring = gdbarch_static_transform_name (gdbarch,
(current_gdbarch, namestring); namestring);
add_psymbol_to_list (namestring, p - namestring, add_psymbol_to_list (namestring, p - namestring,
VAR_DOMAIN, LOC_STATIC, VAR_DOMAIN, LOC_STATIC,
@ -1851,7 +1852,7 @@ pos %d"),
value for the bottom of the text seg in those cases. */ value for the bottom of the text seg in those cases. */
if (nlist.n_value == ANOFFSET (objfile->section_offsets, if (nlist.n_value == ANOFFSET (objfile->section_offsets,
SECT_OFF_TEXT (objfile)) SECT_OFF_TEXT (objfile))
&& gdbarch_sofun_address_maybe_missing (current_gdbarch)) && gdbarch_sofun_address_maybe_missing (gdbarch))
{ {
CORE_ADDR minsym_valu = CORE_ADDR minsym_valu =
find_stab_function_addr (namestring, find_stab_function_addr (namestring,
@ -1866,7 +1867,7 @@ pos %d"),
nlist.n_value = minsym_valu; nlist.n_value = minsym_valu;
} }
if (pst && textlow_not_set if (pst && textlow_not_set
&& gdbarch_sofun_address_maybe_missing (current_gdbarch)) && gdbarch_sofun_address_maybe_missing (gdbarch))
{ {
pst->textlow = nlist.n_value; pst->textlow = nlist.n_value;
textlow_not_set = 0; textlow_not_set = 0;
@ -1919,7 +1920,7 @@ pos %d"),
value for the bottom of the text seg in those cases. */ value for the bottom of the text seg in those cases. */
if (nlist.n_value == ANOFFSET (objfile->section_offsets, if (nlist.n_value == ANOFFSET (objfile->section_offsets,
SECT_OFF_TEXT (objfile)) SECT_OFF_TEXT (objfile))
&& gdbarch_sofun_address_maybe_missing (current_gdbarch)) && gdbarch_sofun_address_maybe_missing (gdbarch))
{ {
CORE_ADDR minsym_valu = CORE_ADDR minsym_valu =
find_stab_function_addr (namestring, find_stab_function_addr (namestring,
@ -1934,7 +1935,7 @@ pos %d"),
nlist.n_value = minsym_valu; nlist.n_value = minsym_valu;
} }
if (pst && textlow_not_set if (pst && textlow_not_set
&& gdbarch_sofun_address_maybe_missing (current_gdbarch)) && gdbarch_sofun_address_maybe_missing (gdbarch))
{ {
pst->textlow = nlist.n_value; pst->textlow = nlist.n_value;
textlow_not_set = 0; textlow_not_set = 0;
@ -2071,7 +2072,7 @@ pos %d"),
end_psymtab will set pst->texthigh to the proper value, which end_psymtab will set pst->texthigh to the proper value, which
is necessary if a module compiled without debugging info is necessary if a module compiled without debugging info
follows this module. */ follows this module. */
if (pst && gdbarch_sofun_address_maybe_missing (current_gdbarch)) if (pst && gdbarch_sofun_address_maybe_missing (gdbarch))
{ {
end_psymtab (pst, psymtab_include_list, includes_used, end_psymtab (pst, psymtab_include_list, includes_used,
symnum * symbol_size, symnum * symbol_size,
@ -2197,6 +2198,7 @@ end_psymtab (struct partial_symtab *pst, char **include_list, int num_includes,
{ {
int i; int i;
struct objfile *objfile = pst->objfile; struct objfile *objfile = pst->objfile;
struct gdbarch *gdbarch = get_objfile_arch (objfile);
if (capping_symbol_offset != -1) if (capping_symbol_offset != -1)
LDSYMLEN (pst) = capping_symbol_offset - LDSYMOFF (pst); LDSYMLEN (pst) = capping_symbol_offset - LDSYMOFF (pst);
@ -2218,7 +2220,7 @@ end_psymtab (struct partial_symtab *pst, char **include_list, int num_includes,
last function in the file. */ last function in the file. */
if (pst->texthigh == 0 && last_function_name if (pst->texthigh == 0 && last_function_name
&& gdbarch_sofun_address_maybe_missing (current_gdbarch)) && gdbarch_sofun_address_maybe_missing (gdbarch))
{ {
char *p; char *p;
int n; int n;
@ -2249,7 +2251,7 @@ end_psymtab (struct partial_symtab *pst, char **include_list, int num_includes,
last_function_name = NULL; last_function_name = NULL;
} }
if (!gdbarch_sofun_address_maybe_missing (current_gdbarch)) if (!gdbarch_sofun_address_maybe_missing (gdbarch))
; ;
/* this test will be true if the last .o file is only data */ /* this test will be true if the last .o file is only data */
else if (textlow_not_set) else if (textlow_not_set)
@ -2679,6 +2681,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
struct section_offsets *section_offsets, struct section_offsets *section_offsets,
struct objfile *objfile) struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct context_stack *new; struct context_stack *new;
/* This remembers the address of the start of a function. It is /* This remembers the address of the start of a function. It is
used because in Solaris 2, N_LBRAC, N_RBRAC, and N_SLINE entries used because in Solaris 2, N_LBRAC, N_RBRAC, and N_SLINE entries
@ -2769,7 +2772,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
/* Relocate for dynamic loading. */ /* Relocate for dynamic loading. */
valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile)); valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
valu = gdbarch_smash_text_address (current_gdbarch, valu); valu = gdbarch_smash_text_address (gdbarch, valu);
last_function_start = valu; last_function_start = valu;
goto define_a_symbol; goto define_a_symbol;
@ -3109,7 +3112,7 @@ no enclosing block"));
if (type == N_FUN if (type == N_FUN
&& valu == ANOFFSET (section_offsets, && valu == ANOFFSET (section_offsets,
SECT_OFF_TEXT (objfile)) SECT_OFF_TEXT (objfile))
&& gdbarch_sofun_address_maybe_missing (current_gdbarch)) && gdbarch_sofun_address_maybe_missing (gdbarch))
{ {
CORE_ADDR minsym_valu = CORE_ADDR minsym_valu =
find_stab_function_addr (name, last_source_file, objfile); find_stab_function_addr (name, last_source_file, objfile);

View file

@ -1620,6 +1620,7 @@ static gdb_byte *decode_frame_entry (struct comp_unit *unit, gdb_byte *start,
static gdb_byte * static gdb_byte *
decode_frame_entry_1 (struct comp_unit *unit, gdb_byte *start, int eh_frame_p) decode_frame_entry_1 (struct comp_unit *unit, gdb_byte *start, int eh_frame_p)
{ {
struct gdbarch *gdbarch = get_objfile_arch (unit->objfile);
gdb_byte *buf, *end; gdb_byte *buf, *end;
LONGEST length; LONGEST length;
unsigned int bytes_read; unsigned int bytes_read;
@ -1690,7 +1691,7 @@ decode_frame_entry_1 (struct comp_unit *unit, gdb_byte *start, int eh_frame_p)
this is supposed to be the target address size from the associated this is supposed to be the target address size from the associated
CU header. FIXME: We do not have a good way to determine the CU header. FIXME: We do not have a good way to determine the
latter. Always use the target pointer size for now. */ latter. Always use the target pointer size for now. */
cie->addr_size = gdbarch_ptr_bit (current_gdbarch) / TARGET_CHAR_BIT; cie->addr_size = gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
/* We'll determine the final value later, but we need to /* We'll determine the final value later, but we need to
initialize it conservatively. */ initialize it conservatively. */
@ -1718,7 +1719,7 @@ decode_frame_entry_1 (struct comp_unit *unit, gdb_byte *start, int eh_frame_p)
if (augmentation[0] == 'e' && augmentation[1] == 'h') if (augmentation[0] == 'e' && augmentation[1] == 'h')
{ {
/* Skip. */ /* Skip. */
buf += TYPE_LENGTH (builtin_type_void_data_ptr); buf += gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
augmentation += 2; augmentation += 2;
} }
@ -1739,7 +1740,7 @@ decode_frame_entry_1 (struct comp_unit *unit, gdb_byte *start, int eh_frame_p)
cie->return_address_register = read_unsigned_leb128 (unit->abfd, buf, cie->return_address_register = read_unsigned_leb128 (unit->abfd, buf,
&bytes_read); &bytes_read);
cie->return_address_register cie->return_address_register
= dwarf2_frame_adjust_regnum (current_gdbarch, = dwarf2_frame_adjust_regnum (gdbarch,
cie->return_address_register, cie->return_address_register,
eh_frame_p); eh_frame_p);

View file

@ -116,11 +116,12 @@ static CORE_ADDR
dwarf_expr_read_reg (void *baton, int dwarf_regnum) dwarf_expr_read_reg (void *baton, int dwarf_regnum)
{ {
struct dwarf_expr_baton *debaton = (struct dwarf_expr_baton *) baton; struct dwarf_expr_baton *debaton = (struct dwarf_expr_baton *) baton;
struct gdbarch *gdbarch = get_frame_arch (debaton->frame);
CORE_ADDR result; CORE_ADDR result;
int regnum; int regnum;
regnum = gdbarch_dwarf2_reg_to_regnum (current_gdbarch, dwarf_regnum); regnum = gdbarch_dwarf2_reg_to_regnum (gdbarch, dwarf_regnum);
result = address_from_register (builtin_type_void_data_ptr, result = address_from_register (builtin_type (gdbarch)->builtin_data_ptr,
regnum, debaton->frame); regnum, debaton->frame);
return result; return result;
} }
@ -459,11 +460,13 @@ locexpr_describe_location (struct symbol *symbol, struct ui_file *stream)
&& dlbaton->data[0] >= DW_OP_reg0 && dlbaton->data[0] >= DW_OP_reg0
&& dlbaton->data[0] <= DW_OP_reg31) && dlbaton->data[0] <= DW_OP_reg31)
{ {
int regno = gdbarch_dwarf2_reg_to_regnum struct objfile *objfile = dwarf2_per_cu_objfile (dlbaton->per_cu);
(current_gdbarch, dlbaton->data[0] - DW_OP_reg0); struct gdbarch *gdbarch = get_objfile_arch (objfile);
int regno = gdbarch_dwarf2_reg_to_regnum (gdbarch,
dlbaton->data[0] - DW_OP_reg0);
fprintf_filtered (stream, fprintf_filtered (stream,
"a variable in register %s", "a variable in register %s",
gdbarch_register_name (current_gdbarch, regno)); gdbarch_register_name (gdbarch, regno));
return 1; return 1;
} }

View file

@ -3430,6 +3430,7 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
struct dwarf2_cu *cu) struct dwarf2_cu *cu)
{ {
struct objfile *objfile = cu->objfile; struct objfile *objfile = cu->objfile;
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct nextfield *new_field; struct nextfield *new_field;
struct attribute *attr; struct attribute *attr;
struct field *fp; struct field *fp;
@ -3506,7 +3507,7 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
attr = dwarf2_attr (die, DW_AT_bit_offset, cu); attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
if (attr) if (attr)
{ {
if (gdbarch_bits_big_endian (current_gdbarch)) if (gdbarch_bits_big_endian (gdbarch))
{ {
/* For big endian bits, the DW_AT_bit_offset gives the /* For big endian bits, the DW_AT_bit_offset gives the
additional bit offset from the MSB of the containing additional bit offset from the MSB of the containing
@ -4672,6 +4673,7 @@ namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
static void static void
read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu) read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
{ {
struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
struct comp_unit_head *cu_header = &cu->header; struct comp_unit_head *cu_header = &cu->header;
struct type *type; struct type *type;
struct attribute *attr_byte_size; struct attribute *attr_byte_size;
@ -4702,12 +4704,12 @@ read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
length accordingly. */ length accordingly. */
if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none) if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
{ {
if (gdbarch_address_class_type_flags_p (current_gdbarch)) if (gdbarch_address_class_type_flags_p (gdbarch))
{ {
int type_flags; int type_flags;
type_flags = gdbarch_address_class_type_flags type_flags = gdbarch_address_class_type_flags
(current_gdbarch, byte_size, addr_class); (gdbarch, byte_size, addr_class);
gdb_assert ((type_flags & ~TYPE_FLAG_ADDRESS_CLASS_ALL) == 0); gdb_assert ((type_flags & ~TYPE_FLAG_ADDRESS_CLASS_ALL) == 0);
type = make_type_with_address_space (type, type_flags); type = make_type_with_address_space (type, type_flags);
} }
@ -5044,6 +5046,7 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
static void static void
read_subrange_type (struct die_info *die, struct dwarf2_cu *cu) read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
{ {
struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
struct type *base_type; struct type *base_type;
struct type *range_type; struct type *range_type;
struct attribute *attr; struct attribute *attr;
@ -5061,7 +5064,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
complaint (&symfile_complaints, complaint (&symfile_complaints,
_("DW_AT_type missing from DW_TAG_subrange_type")); _("DW_AT_type missing from DW_TAG_subrange_type"));
base_type base_type
= init_type (TYPE_CODE_INT, gdbarch_addr_bit (current_gdbarch) / 8, = init_type (TYPE_CODE_INT, gdbarch_addr_bit (gdbarch) / 8,
0, NULL, cu->objfile); 0, NULL, cu->objfile);
} }
@ -7234,6 +7237,7 @@ static struct symbol *
new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu) new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
{ {
struct objfile *objfile = cu->objfile; struct objfile *objfile = cu->objfile;
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct symbol *sym = NULL; struct symbol *sym = NULL;
char *name; char *name;
struct attribute *attr = NULL; struct attribute *attr = NULL;
@ -7325,7 +7329,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
to something sensible. */ to something sensible. */
if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID) if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
SYMBOL_TYPE (sym) SYMBOL_TYPE (sym)
= builtin_type (current_gdbarch)->nodebug_data_symbol; = builtin_type (gdbarch)->nodebug_data_symbol;
attr = dwarf2_attr (die, DW_AT_const_value, cu); attr = dwarf2_attr (die, DW_AT_const_value, cu);
if (attr) if (attr)
@ -7627,6 +7631,7 @@ dwarf2_const_value_data (struct attribute *attr,
static struct type * static struct type *
die_type (struct die_info *die, struct dwarf2_cu *cu) die_type (struct die_info *die, struct dwarf2_cu *cu)
{ {
struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
struct type *type; struct type *type;
struct attribute *type_attr; struct attribute *type_attr;
struct die_info *type_die; struct die_info *type_die;
@ -7635,7 +7640,7 @@ die_type (struct die_info *die, struct dwarf2_cu *cu)
if (!type_attr) if (!type_attr)
{ {
/* A missing DW_AT_type represents a void type. */ /* A missing DW_AT_type represents a void type. */
return builtin_type (current_gdbarch)->builtin_void; return builtin_type (gdbarch)->builtin_void;
} }
else else
type_die = follow_die_ref (die, type_attr, cu); type_die = follow_die_ref (die, type_attr, cu);

View file

@ -166,8 +166,10 @@ record_minimal_symbol (char *name, CORE_ADDR address,
enum minimal_symbol_type ms_type, enum minimal_symbol_type ms_type,
asection *bfd_section, struct objfile *objfile) asection *bfd_section, struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
if (ms_type == mst_text || ms_type == mst_file_text) if (ms_type == mst_text || ms_type == mst_file_text)
address = gdbarch_smash_text_address (current_gdbarch, address); address = gdbarch_smash_text_address (gdbarch, address);
return prim_record_minimal_symbol_and_info return prim_record_minimal_symbol_and_info
(name, address, ms_type, NULL, bfd_section->index, bfd_section, objfile); (name, address, ms_type, NULL, bfd_section->index, bfd_section, objfile);
@ -206,6 +208,7 @@ static void
elf_symtab_read (struct objfile *objfile, int type, elf_symtab_read (struct objfile *objfile, int type,
long number_of_symbols, asymbol **symbol_table) long number_of_symbols, asymbol **symbol_table)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
long storage_needed; long storage_needed;
asymbol *sym; asymbol *sym;
long i; long i;
@ -513,7 +516,7 @@ elf_symtab_read (struct objfile *objfile, int type,
} }
if (msym != NULL) if (msym != NULL)
msym->filename = filesymname; msym->filename = filesymname;
gdbarch_elf_make_msymbol_special (current_gdbarch, sym, msym); gdbarch_elf_make_msymbol_special (gdbarch, sym, msym);
} }
} }
} }

View file

@ -559,6 +559,7 @@ static int
parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
struct section_offsets *section_offsets, struct objfile *objfile) struct section_offsets *section_offsets, struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
const bfd_size_type external_sym_size = debug_swap->external_sym_size; const bfd_size_type external_sym_size = debug_swap->external_sym_size;
void (*const swap_sym_in) (bfd *, void *, SYMR *) = debug_swap->swap_sym_in; void (*const swap_sym_in) (bfd *, void *, SYMR *) = debug_swap->swap_sym_in;
char *name; char *name;
@ -653,7 +654,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
/* Type could be missing if file is compiled without debugging info. */ /* Type could be missing if file is compiled without debugging info. */
if (SC_IS_UNDEF (sh->sc) if (SC_IS_UNDEF (sh->sc)
|| sh->sc == scNil || sh->index == indexNil) || sh->sc == scNil || sh->index == indexNil)
SYMBOL_TYPE (s) = builtin_type (current_gdbarch)->nodebug_data_symbol; SYMBOL_TYPE (s) = builtin_type (gdbarch)->nodebug_data_symbol;
else else
SYMBOL_TYPE (s) = parse_type (cur_fd, ax, sh->index, 0, bigend, name); SYMBOL_TYPE (s) = parse_type (cur_fd, ax, sh->index, 0, bigend, name);
/* Value of a data symbol is its memory address */ /* Value of a data symbol is its memory address */
@ -1039,8 +1040,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
that too. */ that too. */
if (TYPE_LENGTH (t) == TYPE_NFIELDS (t) if (TYPE_LENGTH (t) == TYPE_NFIELDS (t)
|| TYPE_LENGTH (t) == 0) || TYPE_LENGTH (t) == 0)
TYPE_LENGTH (t) = TYPE_LENGTH (t) = gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT;
gdbarch_int_bit (current_gdbarch) / HOST_CHAR_BIT;
for (ext_tsym = ext_sh + external_sym_size; for (ext_tsym = ext_sh + external_sym_size;
; ;
ext_tsym += external_sym_size) ext_tsym += external_sym_size)
@ -1825,6 +1825,7 @@ static void
parse_procedure (PDR *pr, struct symtab *search_symtab, parse_procedure (PDR *pr, struct symtab *search_symtab,
struct partial_symtab *pst) struct partial_symtab *pst)
{ {
struct gdbarch *gdbarch = get_objfile_arch (pst->objfile);
struct symbol *s, *i; struct symbol *s, *i;
struct block *b; struct block *b;
struct mdebug_extra_func_info *e; struct mdebug_extra_func_info *e;
@ -1962,7 +1963,7 @@ parse_procedure (PDR *pr, struct symtab *search_symtab,
if (processing_gcc_compilation == 0 if (processing_gcc_compilation == 0
&& found_ecoff_debugging_info == 0 && found_ecoff_debugging_info == 0
&& TYPE_CODE (TYPE_TARGET_TYPE (SYMBOL_TYPE (s))) == TYPE_CODE_VOID) && TYPE_CODE (TYPE_TARGET_TYPE (SYMBOL_TYPE (s))) == TYPE_CODE_VOID)
SYMBOL_TYPE (s) = builtin_type (current_gdbarch)->nodebug_text_symbol; SYMBOL_TYPE (s) = builtin_type (gdbarch)->nodebug_text_symbol;
} }
/* Parse the external symbol ES. Just call parse_symbol() after /* Parse the external symbol ES. Just call parse_symbol() after
@ -2226,6 +2227,7 @@ record_minimal_symbol (const char *name, const CORE_ADDR address,
static void static void
parse_partial_symbols (struct objfile *objfile) parse_partial_symbols (struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
const bfd_size_type external_sym_size = debug_swap->external_sym_size; const bfd_size_type external_sym_size = debug_swap->external_sym_size;
const bfd_size_type external_rfd_size = debug_swap->external_rfd_size; const bfd_size_type external_rfd_size = debug_swap->external_rfd_size;
const bfd_size_type external_ext_size = debug_swap->external_ext_size; const bfd_size_type external_ext_size = debug_swap->external_ext_size;
@ -2849,8 +2851,7 @@ parse_partial_symbols (struct objfile *objfile)
don't relocate it. */ don't relocate it. */
if (sh.value == 0 if (sh.value == 0
&& gdbarch_sofun_address_maybe_missing && gdbarch_sofun_address_maybe_missing (gdbarch))
(current_gdbarch))
{ {
textlow_not_set = 1; textlow_not_set = 1;
valu = 0; valu = 0;
@ -2999,9 +3000,9 @@ parse_partial_symbols (struct objfile *objfile)
case 'S': case 'S':
sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile)); sh.value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
if (gdbarch_static_transform_name_p (current_gdbarch)) if (gdbarch_static_transform_name_p (gdbarch))
namestring = gdbarch_static_transform_name namestring = gdbarch_static_transform_name
(current_gdbarch, namestring); (gdbarch, namestring);
add_psymbol_to_list (namestring, p - namestring, add_psymbol_to_list (namestring, p - namestring,
VAR_DOMAIN, LOC_STATIC, VAR_DOMAIN, LOC_STATIC,
@ -3230,8 +3231,7 @@ parse_partial_symbols (struct objfile *objfile)
necessary if a module compiled without necessary if a module compiled without
debugging info follows this module. */ debugging info follows this module. */
if (pst if (pst
&& gdbarch_sofun_address_maybe_missing && gdbarch_sofun_address_maybe_missing (gdbarch))
(current_gdbarch))
{ {
pst = (struct partial_symtab *) 0; pst = (struct partial_symtab *) 0;
includes_used = 0; includes_used = 0;

View file

@ -48,6 +48,7 @@
#include "dictionary.h" #include "dictionary.h"
#include "source.h" #include "source.h"
#include "addrmap.h" #include "addrmap.h"
#include "arch-utils.h"
/* Prototypes for local functions */ /* Prototypes for local functions */
@ -187,6 +188,9 @@ allocate_objfile (bfd *abfd, int flags)
} }
if (abfd != NULL) if (abfd != NULL)
{ {
/* Look up the gdbarch associated with the BFD. */
objfile->gdbarch = gdbarch_from_bfd (abfd);
objfile->name = xstrdup (bfd_get_filename (abfd)); objfile->name = xstrdup (bfd_get_filename (abfd));
objfile->mtime = bfd_get_mtime (abfd); objfile->mtime = bfd_get_mtime (abfd);
@ -234,6 +238,13 @@ allocate_objfile (bfd *abfd, int flags)
return (objfile); return (objfile);
} }
/* Retrieve the gdbarch associated with OBJFILE. */
struct gdbarch *
get_objfile_arch (struct objfile *objfile)
{
return objfile->gdbarch;
}
/* Initialize entry point information for this objfile. */ /* Initialize entry point information for this objfile. */
void void

View file

@ -229,6 +229,13 @@ struct objfile
bfd *obfd; bfd *obfd;
/* The gdbarch associated with the BFD. Note that this gdbarch is
determined solely from BFD information, without looking at target
information. The gdbarch determined from a running target may
differ from this e.g. with respect to register types and names. */
struct gdbarch *gdbarch;
/* The modification timestamp of the object file, as of the last time /* The modification timestamp of the object file, as of the last time
we read its symbols. */ we read its symbols. */
@ -470,6 +477,8 @@ extern struct objfile *object_files;
extern struct objfile *allocate_objfile (bfd *, int); extern struct objfile *allocate_objfile (bfd *, int);
extern struct gdbarch *get_objfile_arch (struct objfile *);
extern void init_entry_point_info (struct objfile *); extern void init_entry_point_info (struct objfile *);
extern CORE_ADDR entry_point_address (void); extern CORE_ADDR entry_point_address (void);

View file

@ -58,6 +58,7 @@ static void
som_symtab_read (bfd *abfd, struct objfile *objfile, som_symtab_read (bfd *abfd, struct objfile *objfile,
struct section_offsets *section_offsets) struct section_offsets *section_offsets)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
unsigned int number_of_symbols; unsigned int number_of_symbols;
int val, dynamic; int val, dynamic;
char *stringtab; char *stringtab;
@ -132,7 +133,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
ms_type = mst_text; ms_type = mst_text;
bufp->symbol_value += text_offset; bufp->symbol_value += text_offset;
bufp->symbol_value = gdbarch_smash_text_address bufp->symbol_value = gdbarch_smash_text_address
(current_gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
case ST_ENTRY: case ST_ENTRY:
@ -146,7 +147,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
ms_type = mst_text; ms_type = mst_text;
bufp->symbol_value += text_offset; bufp->symbol_value += text_offset;
bufp->symbol_value = gdbarch_smash_text_address bufp->symbol_value = gdbarch_smash_text_address
(current_gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
case ST_STUB: case ST_STUB:
@ -154,7 +155,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
ms_type = mst_solib_trampoline; ms_type = mst_solib_trampoline;
bufp->symbol_value += text_offset; bufp->symbol_value += text_offset;
bufp->symbol_value = gdbarch_smash_text_address bufp->symbol_value = gdbarch_smash_text_address
(current_gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
case ST_DATA: case ST_DATA:
@ -183,7 +184,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
ms_type = mst_file_text; ms_type = mst_file_text;
bufp->symbol_value += text_offset; bufp->symbol_value += text_offset;
bufp->symbol_value = gdbarch_smash_text_address bufp->symbol_value = gdbarch_smash_text_address
(current_gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
check_strange_names: check_strange_names:
/* Utah GCC 2.5, FSF GCC 2.6 and later generate correct local /* Utah GCC 2.5, FSF GCC 2.6 and later generate correct local
@ -215,7 +216,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
ms_type = mst_file_text; ms_type = mst_file_text;
bufp->symbol_value += text_offset; bufp->symbol_value += text_offset;
bufp->symbol_value = gdbarch_smash_text_address bufp->symbol_value = gdbarch_smash_text_address
(current_gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
case ST_ENTRY: case ST_ENTRY:
@ -227,7 +228,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
ms_type = mst_file_text; ms_type = mst_file_text;
bufp->symbol_value += text_offset; bufp->symbol_value += text_offset;
bufp->symbol_value = gdbarch_smash_text_address bufp->symbol_value = gdbarch_smash_text_address
(current_gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
case ST_STUB: case ST_STUB:
@ -235,7 +236,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
ms_type = mst_solib_trampoline; ms_type = mst_solib_trampoline;
bufp->symbol_value += text_offset; bufp->symbol_value += text_offset;
bufp->symbol_value = gdbarch_smash_text_address bufp->symbol_value = gdbarch_smash_text_address
(current_gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;

View file

@ -582,6 +582,7 @@ struct symbol *
define_symbol (CORE_ADDR valu, char *string, int desc, int type, define_symbol (CORE_ADDR valu, char *string, int desc, int type,
struct objfile *objfile) struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct symbol *sym; struct symbol *sym;
char *p = (char *) find_name_end (string); char *p = (char *) find_name_end (string);
int deftype; int deftype;
@ -666,7 +667,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
case 'X': case 'X':
/* SunPRO (3.0 at least) static variable encoding. */ /* SunPRO (3.0 at least) static variable encoding. */
if (gdbarch_static_transform_name_p (current_gdbarch)) if (gdbarch_static_transform_name_p (gdbarch))
goto normal; goto normal;
/* ... fall through ... */ /* ... fall through ... */
@ -731,7 +732,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
target arithmetic to get the value. real.c in GCC target arithmetic to get the value. real.c in GCC
probably has the necessary code. */ probably has the necessary code. */
dbl_type = builtin_type (current_gdbarch)->builtin_double; dbl_type = builtin_type (gdbarch)->builtin_double;
dbl_valu = dbl_valu =
obstack_alloc (&objfile->objfile_obstack, obstack_alloc (&objfile->objfile_obstack,
TYPE_LENGTH (dbl_type)); TYPE_LENGTH (dbl_type));
@ -751,7 +752,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
types; other languages probably should have at least types; other languages probably should have at least
unsigned as well as signed constants. */ unsigned as well as signed constants. */
SYMBOL_TYPE (sym) = builtin_type (current_gdbarch)->builtin_long; SYMBOL_TYPE (sym) = builtin_type (gdbarch)->builtin_long;
SYMBOL_VALUE (sym) = atoi (p); SYMBOL_VALUE (sym) = atoi (p);
SYMBOL_CLASS (sym) = LOC_CONST; SYMBOL_CLASS (sym) = LOC_CONST;
} }
@ -859,10 +860,10 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
be promoted to the width of the calling conventions, with be promoted to the width of the calling conventions, with
a type which references itself. This type is turned into a type which references itself. This type is turned into
a TYPE_CODE_VOID type by read_type, and we have to turn a TYPE_CODE_VOID type by read_type, and we have to turn
it back into builtin_type_int here. it back into builtin_int here.
FIXME: Do we need a new builtin_type_promoted_int_arg ? */ FIXME: Do we need a new builtin_promoted_int_arg ? */
if (TYPE_CODE (ptype) == TYPE_CODE_VOID) if (TYPE_CODE (ptype) == TYPE_CODE_VOID)
ptype = builtin_type_int; ptype = builtin_type (gdbarch)->builtin_int;
TYPE_FIELD_TYPE (ftype, nparams) = ptype; TYPE_FIELD_TYPE (ftype, nparams) = ptype;
TYPE_FIELD_ARTIFICIAL (ftype, nparams++) = 0; TYPE_FIELD_ARTIFICIAL (ftype, nparams++) = 0;
} }
@ -931,7 +932,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
SYMBOL_DOMAIN (sym) = VAR_DOMAIN; SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
add_symbol_to_list (sym, &local_symbols); add_symbol_to_list (sym, &local_symbols);
if (gdbarch_byte_order (current_gdbarch) != BFD_ENDIAN_BIG) if (gdbarch_byte_order (gdbarch) != BFD_ENDIAN_BIG)
{ {
/* On little-endian machines, this crud is never necessary, /* On little-endian machines, this crud is never necessary,
and, if the extra bytes contain garbage, is harmful. */ and, if the extra bytes contain garbage, is harmful. */
@ -940,38 +941,21 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
/* If it's gcc-compiled, if it says `short', believe it. */ /* If it's gcc-compiled, if it says `short', believe it. */
if (processing_gcc_compilation if (processing_gcc_compilation
|| gdbarch_believe_pcc_promotion (current_gdbarch)) || gdbarch_believe_pcc_promotion (gdbarch))
break; break;
if (!gdbarch_believe_pcc_promotion (current_gdbarch)) if (!gdbarch_believe_pcc_promotion (gdbarch))
{ {
/* This is the signed type which arguments get promoted to. */
static struct type *pcc_promotion_type;
/* This is the unsigned type which arguments get promoted to. */
static struct type *pcc_unsigned_promotion_type;
/* Call it "int" because this is mainly C lossage. */
if (pcc_promotion_type == NULL)
pcc_promotion_type =
init_type (TYPE_CODE_INT,
gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
0, "int", NULL);
if (pcc_unsigned_promotion_type == NULL)
pcc_unsigned_promotion_type =
init_type (TYPE_CODE_INT,
gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
TYPE_FLAG_UNSIGNED, "unsigned int", NULL);
/* If PCC says a parameter is a short or a char, it is /* If PCC says a parameter is a short or a char, it is
really an int. */ really an int. */
if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (pcc_promotion_type) if (TYPE_LENGTH (SYMBOL_TYPE (sym))
< gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT
&& TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT) && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
{ {
SYMBOL_TYPE (sym) = SYMBOL_TYPE (sym) =
TYPE_UNSIGNED (SYMBOL_TYPE (sym)) TYPE_UNSIGNED (SYMBOL_TYPE (sym))
? pcc_unsigned_promotion_type ? builtin_type (gdbarch)->builtin_unsigned_int
: pcc_promotion_type; : builtin_type (gdbarch)->builtin_int;
} }
break; break;
} }
@ -1046,8 +1030,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
if (local_symbols if (local_symbols
&& local_symbols->nsyms > 0 && local_symbols->nsyms > 0
&& gdbarch_stabs_argument_has_addr (current_gdbarch, && gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym)))
SYMBOL_TYPE (sym)))
{ {
struct symbol *prev_sym; struct symbol *prev_sym;
prev_sym = local_symbols->symbol[local_symbols->nsyms - 1]; prev_sym = local_symbols->symbol[local_symbols->nsyms - 1];
@ -1076,8 +1059,8 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
SYMBOL_TYPE (sym) = read_type (&p, objfile); SYMBOL_TYPE (sym) = read_type (&p, objfile);
SYMBOL_CLASS (sym) = LOC_STATIC; SYMBOL_CLASS (sym) = LOC_STATIC;
SYMBOL_VALUE_ADDRESS (sym) = valu; SYMBOL_VALUE_ADDRESS (sym) = valu;
if (gdbarch_static_transform_name_p (current_gdbarch) if (gdbarch_static_transform_name_p (gdbarch)
&& gdbarch_static_transform_name (current_gdbarch, && gdbarch_static_transform_name (gdbarch,
DEPRECATED_SYMBOL_NAME (sym)) DEPRECATED_SYMBOL_NAME (sym))
!= DEPRECATED_SYMBOL_NAME (sym)) != DEPRECATED_SYMBOL_NAME (sym))
{ {
@ -1086,7 +1069,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
if (msym != NULL) if (msym != NULL)
{ {
DEPRECATED_SYMBOL_NAME (sym) = gdbarch_static_transform_name DEPRECATED_SYMBOL_NAME (sym) = gdbarch_static_transform_name
(current_gdbarch, (gdbarch,
DEPRECATED_SYMBOL_NAME (sym)); DEPRECATED_SYMBOL_NAME (sym));
SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym); SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym);
} }
@ -1259,8 +1242,8 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
SYMBOL_TYPE (sym) = read_type (&p, objfile); SYMBOL_TYPE (sym) = read_type (&p, objfile);
SYMBOL_CLASS (sym) = LOC_STATIC; SYMBOL_CLASS (sym) = LOC_STATIC;
SYMBOL_VALUE_ADDRESS (sym) = valu; SYMBOL_VALUE_ADDRESS (sym) = valu;
if (gdbarch_static_transform_name_p (current_gdbarch) if (gdbarch_static_transform_name_p (gdbarch)
&& gdbarch_static_transform_name (current_gdbarch, && gdbarch_static_transform_name (gdbarch,
DEPRECATED_SYMBOL_NAME (sym)) DEPRECATED_SYMBOL_NAME (sym))
!= DEPRECATED_SYMBOL_NAME (sym)) != DEPRECATED_SYMBOL_NAME (sym))
{ {
@ -1269,7 +1252,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
if (msym != NULL) if (msym != NULL)
{ {
DEPRECATED_SYMBOL_NAME (sym) = gdbarch_static_transform_name DEPRECATED_SYMBOL_NAME (sym) = gdbarch_static_transform_name
(current_gdbarch, (gdbarch,
DEPRECATED_SYMBOL_NAME (sym)); DEPRECATED_SYMBOL_NAME (sym));
SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym); SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym);
} }
@ -1331,7 +1314,7 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
of by value, i.e. they will pass the address of a structure (in a of by value, i.e. they will pass the address of a structure (in a
register or on the stack) instead of the structure itself. */ register or on the stack) instead of the structure itself. */
if (gdbarch_stabs_argument_has_addr (current_gdbarch, SYMBOL_TYPE (sym)) if (gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym))
&& (SYMBOL_CLASS (sym) == LOC_REGPARM || SYMBOL_CLASS (sym) == LOC_ARG)) && (SYMBOL_CLASS (sym) == LOC_REGPARM || SYMBOL_CLASS (sym) == LOC_ARG))
{ {
/* We have to convert LOC_REGPARM to LOC_REGPARM_ADDR (for /* We have to convert LOC_REGPARM to LOC_REGPARM_ADDR (for
@ -2717,6 +2700,8 @@ static void
read_one_struct_field (struct field_info *fip, char **pp, char *p, read_one_struct_field (struct field_info *fip, char **pp, char *p,
struct type *type, struct objfile *objfile) struct type *type, struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
fip->list->field.name = fip->list->field.name =
obsavestring (*pp, p - *pp, &objfile->objfile_obstack); obsavestring (*pp, p - *pp, &objfile->objfile_obstack);
*pp = p + 1; *pp = p + 1;
@ -2821,7 +2806,7 @@ read_one_struct_field (struct field_info *fip, char **pp, char *p,
== TARGET_CHAR_BIT * TYPE_LENGTH (field_type) == TARGET_CHAR_BIT * TYPE_LENGTH (field_type)
|| (TYPE_CODE (field_type) == TYPE_CODE_ENUM || (TYPE_CODE (field_type) == TYPE_CODE_ENUM
&& FIELD_BITSIZE (fip->list->field) && FIELD_BITSIZE (fip->list->field)
== gdbarch_int_bit (current_gdbarch)) == gdbarch_int_bit (gdbarch))
) )
&& &&
FIELD_BITPOS (fip->list->field) % 8 == 0) FIELD_BITPOS (fip->list->field) % 8 == 0)
@ -3445,6 +3430,7 @@ static struct type *
read_enum_type (char **pp, struct type *type, read_enum_type (char **pp, struct type *type,
struct objfile *objfile) struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
char *p; char *p;
char *name; char *name;
long n; long n;
@ -3514,7 +3500,7 @@ read_enum_type (char **pp, struct type *type,
/* Now fill in the fields of the type-structure. */ /* Now fill in the fields of the type-structure. */
TYPE_LENGTH (type) = gdbarch_int_bit (current_gdbarch) / HOST_CHAR_BIT; TYPE_LENGTH (type) = gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT;
TYPE_CODE (type) = TYPE_CODE_ENUM; TYPE_CODE (type) = TYPE_CODE_ENUM;
TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB; TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
if (unsigned_enum) if (unsigned_enum)
@ -3849,6 +3835,7 @@ static struct type *
read_range_type (char **pp, int typenums[2], int type_size, read_range_type (char **pp, int typenums[2], int type_size,
struct objfile *objfile) struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
char *orig_pp = *pp; char *orig_pp = *pp;
int rangenums[2]; int rangenums[2];
long n2, n3; long n2, n3;
@ -3974,7 +3961,7 @@ read_range_type (char **pp, int typenums[2], int type_size,
/* We don't know its size. It is unsigned int or unsigned /* We don't know its size. It is unsigned int or unsigned
long. GCC 2.3.3 uses this for long long too, but that is long. GCC 2.3.3 uses this for long long too, but that is
just a GDB 3.5 compatibility hack. */ just a GDB 3.5 compatibility hack. */
bits = gdbarch_int_bit (current_gdbarch); bits = gdbarch_int_bit (gdbarch);
} }
return init_type (TYPE_CODE_INT, bits / TARGET_CHAR_BIT, return init_type (TYPE_CODE_INT, bits / TARGET_CHAR_BIT,
@ -4020,7 +4007,7 @@ read_range_type (char **pp, int typenums[2], int type_size,
else if (n3 == 0 && n2 < 0 else if (n3 == 0 && n2 < 0
&& (self_subrange && (self_subrange
|| n2 == -gdbarch_long_long_bit || n2 == -gdbarch_long_long_bit
(current_gdbarch) / TARGET_CHAR_BIT)) (gdbarch) / TARGET_CHAR_BIT))
return init_type (TYPE_CODE_INT, -n2, 0, NULL, objfile); return init_type (TYPE_CODE_INT, -n2, 0, NULL, objfile);
else if (n2 == -n3 - 1) else if (n2 == -n3 - 1)
{ {
@ -4037,7 +4024,7 @@ read_range_type (char **pp, int typenums[2], int type_size,
handle_true_range: handle_true_range:
if (self_subrange) if (self_subrange)
index_type = builtin_type_int; index_type = builtin_type (gdbarch)->builtin_int;
else else
index_type = *dbx_lookup_type (rangenums); index_type = *dbx_lookup_type (rangenums);
if (index_type == NULL) if (index_type == NULL)
@ -4045,16 +4032,10 @@ handle_true_range:
/* Does this actually ever happen? Is that why we are worrying /* Does this actually ever happen? Is that why we are worrying
about dealing with it rather than just calling error_type? */ about dealing with it rather than just calling error_type? */
static struct type *range_type_index;
complaint (&symfile_complaints, complaint (&symfile_complaints,
_("base type %d of range type is not defined"), rangenums[1]); _("base type %d of range type is not defined"), rangenums[1]);
if (range_type_index == NULL)
range_type_index = index_type = builtin_type (gdbarch)->builtin_int;
init_type (TYPE_CODE_INT,
gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
0, "range type index type", NULL);
index_type = range_type_index;
} }
result_type = create_range_type ((struct type *) NULL, index_type, n2, n3); result_type = create_range_type ((struct type *) NULL, index_type, n2, n3);

View file

@ -1435,6 +1435,7 @@ read_xcoff_symtab (struct partial_symtab *pst)
static struct symbol * static struct symbol *
process_xcoff_symbol (struct coff_symbol *cs, struct objfile *objfile) process_xcoff_symbol (struct coff_symbol *cs, struct objfile *objfile)
{ {
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct symbol onesymbol; struct symbol onesymbol;
struct symbol *sym = &onesymbol; struct symbol *sym = &onesymbol;
struct symbol *sym2 = NULL; struct symbol *sym2 = NULL;
@ -1474,7 +1475,7 @@ process_xcoff_symbol (struct coff_symbol *cs, struct objfile *objfile)
patch_block_stabs (), unless the file was compiled without -g. */ patch_block_stabs (), unless the file was compiled without -g. */
DEPRECATED_SYMBOL_NAME (sym) = SYMNAME_ALLOC (name, symname_alloced); DEPRECATED_SYMBOL_NAME (sym) = SYMNAME_ALLOC (name, symname_alloced);
SYMBOL_TYPE (sym) = builtin_type (current_gdbarch)->nodebug_text_symbol; SYMBOL_TYPE (sym) = builtin_type (gdbarch)->nodebug_text_symbol;
SYMBOL_CLASS (sym) = LOC_BLOCK; SYMBOL_CLASS (sym) = LOC_BLOCK;
SYMBOL_DUP (sym, sym2); SYMBOL_DUP (sym, sym2);
@ -1487,7 +1488,7 @@ process_xcoff_symbol (struct coff_symbol *cs, struct objfile *objfile)
else else
{ {
/* In case we can't figure out the type, provide default. */ /* In case we can't figure out the type, provide default. */
SYMBOL_TYPE (sym) = builtin_type (current_gdbarch)->nodebug_data_symbol; SYMBOL_TYPE (sym) = builtin_type (gdbarch)->nodebug_data_symbol;
switch (cs->c_sclass) switch (cs->c_sclass)
{ {
@ -2582,9 +2583,9 @@ scan_xcoff_symtab (struct objfile *objfile)
case 'S': case 'S':
symbol.n_value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile)); symbol.n_value += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
if (gdbarch_static_transform_name_p (current_gdbarch)) if (gdbarch_static_transform_name_p (gdbarch))
namestring = gdbarch_static_transform_name namestring = gdbarch_static_transform_name
(current_gdbarch, namestring); (gdbarch, namestring);
add_psymbol_to_list (namestring, p - namestring, add_psymbol_to_list (namestring, p - namestring,
VAR_DOMAIN, LOC_STATIC, VAR_DOMAIN, LOC_STATIC,