2012-11-21  Yao Qi  <yao@codesourcery.com>

	PR tdep/7438
	* gdbarch.sh (smash_text_address): Remove.
	* gdbarch.c, gdbarch.h: Regenerate.
	* arm-tdep.c (arm_smash_text_address): Remove.
	(arm_gdbarch_init): Don't call set_gdbarch_smash_text_address.
	* hppa-tdep.c (hppa_smash_text_address): Remove.
	(hppa_addr_bits_remove): Rename from hppa_smash_text_address.
	(hppa_gdbarch_init): Don't call set_gdbarch_smash_text_address.
	Caller update.
	* coffread.c (coff_symtab_read): Caller update.
	* dbxread.c (process_one_symbol): Likewise.
	* elfread.c (record_minimal_symbol): Likewise.
	* somread.c (som_symtab_read): Likewise.
This commit is contained in:
Yao Qi 2012-11-21 00:29:55 +00:00
parent 367d69d1bc
commit 85ddcc7021
10 changed files with 28 additions and 56 deletions

View file

@ -1,3 +1,19 @@
2012-11-21 Yao Qi <yao@codesourcery.com>
PR tdep/7438
* gdbarch.sh (smash_text_address): Remove.
* gdbarch.c, gdbarch.h: Regenerate.
* arm-tdep.c (arm_smash_text_address): Remove.
(arm_gdbarch_init): Don't call set_gdbarch_smash_text_address.
* hppa-tdep.c (hppa_smash_text_address): Remove.
(hppa_addr_bits_remove): Rename from hppa_smash_text_address.
(hppa_gdbarch_init): Don't call set_gdbarch_smash_text_address.
Caller update.
* coffread.c (coff_symtab_read): Caller update.
* dbxread.c (process_one_symbol): Likewise.
* elfread.c (record_minimal_symbol): Likewise.
* somread.c (som_symtab_read): Likewise.
2012-11-20 Pierre Muller <muller@sourceware.org> 2012-11-20 Pierre Muller <muller@sourceware.org>
ARI fixes: sprintf rule. ARI fixes: sprintf rule.

View file

@ -460,14 +460,6 @@ arm_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR val)
return (val & 0x03fffffc); return (val & 0x03fffffc);
} }
/* When reading symbols, we need to zap the low bit of the address,
which may be set to 1 for Thumb functions. */
static CORE_ADDR
arm_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR val)
{
return val & ~1;
}
/* Return 1 if PC is the start of a compiler helper function which /* Return 1 if PC is the start of a compiler helper function which
can be safely ignored during prologue skipping. IS_THUMB is true can be safely ignored during prologue skipping. IS_THUMB is true
if the function is known to be a Thumb function due to the way it if the function is known to be a Thumb function due to the way it
@ -10283,7 +10275,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
frame_base_set_default (gdbarch, &arm_normal_base); frame_base_set_default (gdbarch, &arm_normal_base);
/* Address manipulation. */ /* Address manipulation. */
set_gdbarch_smash_text_address (gdbarch, arm_smash_text_address);
set_gdbarch_addr_bits_remove (gdbarch, arm_addr_bits_remove); set_gdbarch_addr_bits_remove (gdbarch, arm_addr_bits_remove);
/* Advance PC across function entry code. */ /* Advance PC across function entry code. */

View file

@ -941,7 +941,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 (gdbarch, tmpaddr); tmpaddr = gdbarch_addr_bits_remove (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)

View file

@ -2827,7 +2827,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 (gdbarch, valu); valu = gdbarch_addr_bits_remove (gdbarch, valu);
last_function_start = valu; last_function_start = valu;
goto define_a_symbol; goto define_a_symbol;

View file

@ -205,7 +205,7 @@ record_minimal_symbol (const char *name, int name_len, int copy_name,
if (ms_type == mst_text || ms_type == mst_file_text if (ms_type == mst_text || ms_type == mst_file_text
|| ms_type == mst_text_gnu_ifunc) || ms_type == mst_text_gnu_ifunc)
address = gdbarch_smash_text_address (gdbarch, address); address = gdbarch_addr_bits_remove (gdbarch, address);
return prim_record_minimal_symbol_full (name, name_len, copy_name, address, return prim_record_minimal_symbol_full (name, name_len, copy_name, address,
ms_type, bfd_section->index, ms_type, bfd_section->index,

View file

@ -220,7 +220,6 @@ struct gdbarch
int frame_red_zone_size; int frame_red_zone_size;
gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr; gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr;
gdbarch_addr_bits_remove_ftype *addr_bits_remove; gdbarch_addr_bits_remove_ftype *addr_bits_remove;
gdbarch_smash_text_address_ftype *smash_text_address;
gdbarch_software_single_step_ftype *software_single_step; gdbarch_software_single_step_ftype *software_single_step;
gdbarch_single_step_through_delay_ftype *single_step_through_delay; gdbarch_single_step_through_delay_ftype *single_step_through_delay;
gdbarch_print_insn_ftype *print_insn; gdbarch_print_insn_ftype *print_insn;
@ -389,7 +388,6 @@ struct gdbarch startup_gdbarch =
0, /* frame_red_zone_size */ 0, /* frame_red_zone_size */
convert_from_func_ptr_addr_identity, /* convert_from_func_ptr_addr */ convert_from_func_ptr_addr_identity, /* convert_from_func_ptr_addr */
core_addr_identity, /* addr_bits_remove */ core_addr_identity, /* addr_bits_remove */
core_addr_identity, /* smash_text_address */
0, /* software_single_step */ 0, /* software_single_step */
0, /* single_step_through_delay */ 0, /* single_step_through_delay */
0, /* print_insn */ 0, /* print_insn */
@ -526,7 +524,6 @@ gdbarch_alloc (const struct gdbarch_info *info,
gdbarch->stabs_argument_has_addr = default_stabs_argument_has_addr; gdbarch->stabs_argument_has_addr = default_stabs_argument_has_addr;
gdbarch->convert_from_func_ptr_addr = convert_from_func_ptr_addr_identity; gdbarch->convert_from_func_ptr_addr = convert_from_func_ptr_addr_identity;
gdbarch->addr_bits_remove = core_addr_identity; gdbarch->addr_bits_remove = core_addr_identity;
gdbarch->smash_text_address = core_addr_identity;
gdbarch->skip_trampoline_code = generic_skip_trampoline_code; gdbarch->skip_trampoline_code = generic_skip_trampoline_code;
gdbarch->skip_solib_resolver = generic_skip_solib_resolver; gdbarch->skip_solib_resolver = generic_skip_solib_resolver;
gdbarch->in_solib_return_trampoline = generic_in_solib_return_trampoline; gdbarch->in_solib_return_trampoline = generic_in_solib_return_trampoline;
@ -689,7 +686,6 @@ verify_gdbarch (struct gdbarch *gdbarch)
/* Skip verify of stabs_argument_has_addr, invalid_p == 0 */ /* Skip verify of stabs_argument_has_addr, invalid_p == 0 */
/* Skip verify of convert_from_func_ptr_addr, invalid_p == 0 */ /* Skip verify of convert_from_func_ptr_addr, invalid_p == 0 */
/* Skip verify of addr_bits_remove, invalid_p == 0 */ /* Skip verify of addr_bits_remove, invalid_p == 0 */
/* Skip verify of smash_text_address, invalid_p == 0 */
/* Skip verify of software_single_step, has predicate. */ /* Skip verify of software_single_step, has predicate. */
/* Skip verify of single_step_through_delay, has predicate. */ /* Skip verify of single_step_through_delay, has predicate. */
if (gdbarch->print_insn == 0) if (gdbarch->print_insn == 0)
@ -1285,9 +1281,6 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
fprintf_unfiltered (file, fprintf_unfiltered (file,
"gdbarch_dump: skip_trampoline_code = <%s>\n", "gdbarch_dump: skip_trampoline_code = <%s>\n",
host_address_to_string (gdbarch->skip_trampoline_code)); host_address_to_string (gdbarch->skip_trampoline_code));
fprintf_unfiltered (file,
"gdbarch_dump: smash_text_address = <%s>\n",
host_address_to_string (gdbarch->smash_text_address));
fprintf_unfiltered (file, fprintf_unfiltered (file,
"gdbarch_dump: gdbarch_software_single_step_p() = %d\n", "gdbarch_dump: gdbarch_software_single_step_p() = %d\n",
gdbarch_software_single_step_p (gdbarch)); gdbarch_software_single_step_p (gdbarch));
@ -2981,23 +2974,6 @@ set_gdbarch_addr_bits_remove (struct gdbarch *gdbarch,
gdbarch->addr_bits_remove = addr_bits_remove; gdbarch->addr_bits_remove = addr_bits_remove;
} }
CORE_ADDR
gdbarch_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR addr)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->smash_text_address != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_smash_text_address called\n");
return gdbarch->smash_text_address (gdbarch, addr);
}
void
set_gdbarch_smash_text_address (struct gdbarch *gdbarch,
gdbarch_smash_text_address_ftype smash_text_address)
{
gdbarch->smash_text_address = smash_text_address;
}
int int
gdbarch_software_single_step_p (struct gdbarch *gdbarch) gdbarch_software_single_step_p (struct gdbarch *gdbarch)
{ {

View file

@ -600,13 +600,6 @@ typedef CORE_ADDR (gdbarch_addr_bits_remove_ftype) (struct gdbarch *gdbarch, COR
extern CORE_ADDR gdbarch_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr); extern CORE_ADDR gdbarch_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr);
extern void set_gdbarch_addr_bits_remove (struct gdbarch *gdbarch, gdbarch_addr_bits_remove_ftype *addr_bits_remove); extern void set_gdbarch_addr_bits_remove (struct gdbarch *gdbarch, gdbarch_addr_bits_remove_ftype *addr_bits_remove);
/* It is not at all clear why gdbarch_smash_text_address is not folded into
gdbarch_addr_bits_remove. */
typedef CORE_ADDR (gdbarch_smash_text_address_ftype) (struct gdbarch *gdbarch, CORE_ADDR addr);
extern CORE_ADDR gdbarch_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR addr);
extern void set_gdbarch_smash_text_address (struct gdbarch *gdbarch, gdbarch_smash_text_address_ftype *smash_text_address);
/* FIXME/cagney/2001-01-18: This should be split in two. A target method that /* FIXME/cagney/2001-01-18: This should be split in two. A target method that
indicates if the target needs software single step. An ISA method to indicates if the target needs software single step. An ISA method to
implement it. implement it.

View file

@ -574,9 +574,6 @@ m:CORE_ADDR:convert_from_func_ptr_addr:CORE_ADDR addr, struct target_ops *targ:a
# sort of generic thing to handle alignment or segmentation (it's # sort of generic thing to handle alignment or segmentation (it's
# possible it should be in TARGET_READ_PC instead). # possible it should be in TARGET_READ_PC instead).
m:CORE_ADDR:addr_bits_remove:CORE_ADDR addr:addr::core_addr_identity::0 m:CORE_ADDR:addr_bits_remove:CORE_ADDR addr:addr::core_addr_identity::0
# It is not at all clear why gdbarch_smash_text_address is not folded into
# gdbarch_addr_bits_remove.
m:CORE_ADDR:smash_text_address:CORE_ADDR addr:addr::core_addr_identity::0
# FIXME/cagney/2001-01-18: This should be split in two. A target method that # FIXME/cagney/2001-01-18: This should be split in two. A target method that
# indicates if the target needs software single step. An ISA method to # indicates if the target needs software single step. An ISA method to

View file

@ -2640,7 +2640,7 @@ hppa64_cannot_fetch_register (struct gdbarch *gdbarch, int regnum)
} }
static CORE_ADDR static CORE_ADDR
hppa_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR addr) hppa_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr)
{ {
/* The low two bits of the PC on the PA contain the privilege level. /* The low two bits of the PC on the PA contain the privilege level.
Some genius implementing a (non-GCC) compiler apparently decided Some genius implementing a (non-GCC) compiler apparently decided
@ -3058,8 +3058,7 @@ hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_inner_than (gdbarch, core_addr_greaterthan); set_gdbarch_inner_than (gdbarch, core_addr_greaterthan);
set_gdbarch_sp_regnum (gdbarch, HPPA_SP_REGNUM); set_gdbarch_sp_regnum (gdbarch, HPPA_SP_REGNUM);
set_gdbarch_fp0_regnum (gdbarch, HPPA_FP0_REGNUM); set_gdbarch_fp0_regnum (gdbarch, HPPA_FP0_REGNUM);
set_gdbarch_addr_bits_remove (gdbarch, hppa_smash_text_address); set_gdbarch_addr_bits_remove (gdbarch, hppa_addr_bits_remove);
set_gdbarch_smash_text_address (gdbarch, hppa_smash_text_address);
set_gdbarch_believe_pcc_promotion (gdbarch, 1); set_gdbarch_believe_pcc_promotion (gdbarch, 1);
set_gdbarch_read_pc (gdbarch, hppa_read_pc); set_gdbarch_read_pc (gdbarch, hppa_read_pc);
set_gdbarch_write_pc (gdbarch, hppa_write_pc); set_gdbarch_write_pc (gdbarch, hppa_write_pc);

View file

@ -121,7 +121,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
symname = bufp->name.n_strx + stringtab; symname = bufp->name.n_strx + stringtab;
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_addr_bits_remove
(gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
@ -135,7 +135,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
else else
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_addr_bits_remove
(gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
@ -143,7 +143,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
symname = bufp->name.n_strx + stringtab; symname = bufp->name.n_strx + stringtab;
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_addr_bits_remove
(gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
@ -172,7 +172,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
symname = bufp->name.n_strx + stringtab; symname = bufp->name.n_strx + stringtab;
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_addr_bits_remove
(gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
check_strange_names: check_strange_names:
@ -204,7 +204,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
symname = bufp->name.n_strx + stringtab; symname = bufp->name.n_strx + stringtab;
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_addr_bits_remove
(gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
@ -216,7 +216,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
we do for SS_UNIVERSAL and SS_EXTERNAL symbols above. */ we do for SS_UNIVERSAL and SS_EXTERNAL symbols above. */
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_addr_bits_remove
(gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;
@ -224,7 +224,7 @@ som_symtab_read (bfd *abfd, struct objfile *objfile,
symname = bufp->name.n_strx + stringtab; symname = bufp->name.n_strx + stringtab;
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_addr_bits_remove
(gdbarch, bufp->symbol_value); (gdbarch, bufp->symbol_value);
break; break;