* alpha-tdep.c (alpha_register_name): Use ARRAY_SIZE.

(alpha_read_insn, alpha_skip_prologue, alpha_heuristic_proc_start)
(alpha_heuristic_frame_unwind_cache, alpha_next_pc)
(alpha_gdbarch_init): Use ALPHA_INSN_SIZE, ALPHA_REGISTER_SIZE and
sizeof, instead of hardcoded constants.
This commit is contained in:
Mark Kettenis 2007-01-04 20:49:28 +00:00
parent 381bc39bef
commit e8d2d62824
2 changed files with 24 additions and 16 deletions

View File

@ -1,3 +1,11 @@
2007-01-04 Mark Kettenis <kettenis@gnu.org>
* alpha-tdep.c (alpha_register_name): Use ARRAY_SIZE.
(alpha_read_insn, alpha_skip_prologue, alpha_heuristic_proc_start)
(alpha_heuristic_frame_unwind_cache, alpha_next_pc)
(alpha_gdbarch_init): Use ALPHA_INSN_SIZE, ALPHA_REGISTER_SIZE and
sizeof, instead of hardcoded constants.
2007-01-04 Daniel Jacobowitz <dan@codesourcery.com> 2007-01-04 Daniel Jacobowitz <dan@codesourcery.com>
* CONTRIBUTE: Use sourceware.org. * CONTRIBUTE: Use sourceware.org.

View File

@ -73,7 +73,7 @@ alpha_register_name (int regno)
if (regno < 0) if (regno < 0)
return NULL; return NULL;
if (regno >= (sizeof(register_names) / sizeof(*register_names))) if (regno >= ARRAY_SIZE(register_names))
return NULL; return NULL;
return register_names[regno]; return register_names[regno];
} }
@ -640,13 +640,13 @@ alpha_after_prologue (CORE_ADDR pc)
unsigned int unsigned int
alpha_read_insn (CORE_ADDR pc) alpha_read_insn (CORE_ADDR pc)
{ {
gdb_byte buf[4]; gdb_byte buf[ALPHA_INSN_SIZE];
int status; int status;
status = read_memory_nobpt (pc, buf, 4); status = read_memory_nobpt (pc, buf, sizeof (buf));
if (status) if (status)
memory_error (status, pc); memory_error (status, pc);
return extract_unsigned_integer (buf, 4); return extract_unsigned_integer (buf, sizeof (buf));
} }
/* To skip prologues, I use this predicate. Returns either PC itself /* To skip prologues, I use this predicate. Returns either PC itself
@ -662,7 +662,7 @@ alpha_skip_prologue (CORE_ADDR pc)
unsigned long inst; unsigned long inst;
int offset; int offset;
CORE_ADDR post_prologue_pc; CORE_ADDR post_prologue_pc;
gdb_byte buf[4]; gdb_byte buf[ALPHA_INSN_SIZE];
/* Silently return the unaltered pc upon memory errors. /* Silently return the unaltered pc upon memory errors.
This could happen on OSF/1 if decode_line_1 tries to skip the This could happen on OSF/1 if decode_line_1 tries to skip the
@ -671,7 +671,7 @@ alpha_skip_prologue (CORE_ADDR pc)
Reading target memory is slow over serial lines, so we perform Reading target memory is slow over serial lines, so we perform
this check only if the target has shared libraries (which all this check only if the target has shared libraries (which all
Alpha targets do). */ Alpha targets do). */
if (target_read_memory (pc, buf, 4)) if (target_read_memory (pc, buf, sizeof (buf)))
return pc; return pc;
/* See if we can determine the end of the prologue via the symbol table. /* See if we can determine the end of the prologue via the symbol table.
@ -688,7 +688,7 @@ alpha_skip_prologue (CORE_ADDR pc)
/* Skip the typical prologue instructions. These are the stack adjustment /* Skip the typical prologue instructions. These are the stack adjustment
instruction and the instructions that save registers on the stack instruction and the instructions that save registers on the stack
or in the gcc frame. */ or in the gcc frame. */
for (offset = 0; offset < 100; offset += 4) for (offset = 0; offset < 100; offset += ALPHA_INSN_SIZE)
{ {
inst = alpha_read_insn (pc + offset); inst = alpha_read_insn (pc + offset);
@ -946,7 +946,7 @@ alpha_heuristic_proc_start (CORE_ADDR pc)
/* Search back for previous return; also stop at a 0, which might be /* Search back for previous return; also stop at a 0, which might be
seen for instance before the start of a code section. Don't include seen for instance before the start of a code section. Don't include
nops, since this usually indicates padding between functions. */ nops, since this usually indicates padding between functions. */
for (pc -= 4; pc >= fence; pc -= 4) for (pc -= ALPHA_INSN_SIZE; pc >= fence; pc -= ALPHA_INSN_SIZE)
{ {
unsigned int insn = alpha_read_insn (pc); unsigned int insn = alpha_read_insn (pc);
switch (insn) switch (insn)
@ -1028,7 +1028,7 @@ alpha_heuristic_frame_unwind_cache (struct frame_info *next_frame,
if (start_pc + 200 < limit_pc) if (start_pc + 200 < limit_pc)
limit_pc = start_pc + 200; limit_pc = start_pc + 200;
for (cur_pc = start_pc; cur_pc < limit_pc; cur_pc += 4) for (cur_pc = start_pc; cur_pc < limit_pc; cur_pc += ALPHA_INSN_SIZE)
{ {
unsigned int word = alpha_read_insn (cur_pc); unsigned int word = alpha_read_insn (cur_pc);
@ -1137,7 +1137,7 @@ alpha_heuristic_frame_unwind_cache (struct frame_info *next_frame,
break; break;
} }
cur_pc += 4; cur_pc += ALPHA_INSN_SIZE;
} }
} }
} }
@ -1396,7 +1396,7 @@ alpha_next_pc (CORE_ADDR pc)
int regno; int regno;
int offset; int offset;
LONGEST rav; LONGEST rav;
gdb_byte reg[8]; gdb_byte reg[ALPHA_REGISTER_SIZE];
insn = alpha_read_insn (pc); insn = alpha_read_insn (pc);
@ -1421,8 +1421,8 @@ alpha_next_pc (CORE_ADDR pc)
offset = (insn & 0x001fffff); offset = (insn & 0x001fffff);
if (offset & 0x00100000) if (offset & 0x00100000)
offset |= 0xffe00000; offset |= 0xffe00000;
offset *= 4; offset *= ALPHA_INSN_SIZE;
return (pc + 4 + offset); return (pc + ALPHA_INSN_SIZE + offset);
} }
/* Need to determine if branch is taken; read RA. */ /* Need to determine if branch is taken; read RA. */
@ -1439,7 +1439,7 @@ alpha_next_pc (CORE_ADDR pc)
} }
regcache_cooked_read (current_regcache, regno, reg); regcache_cooked_read (current_regcache, regno, reg);
rav = extract_signed_integer (reg, 8); rav = extract_signed_integer (reg, ALPHA_REGISTER_SIZE);
switch (op) switch (op)
{ {
@ -1507,7 +1507,7 @@ alpha_next_pc (CORE_ADDR pc)
/* Not a branch or branch not taken; target PC is: /* Not a branch or branch not taken; target PC is:
pc + 4 */ pc + 4 */
return (pc + 4); return (pc + ALPHA_INSN_SIZE);
} }
void void
@ -1625,7 +1625,7 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
set_gdbarch_breakpoint_from_pc (gdbarch, alpha_breakpoint_from_pc); set_gdbarch_breakpoint_from_pc (gdbarch, alpha_breakpoint_from_pc);
set_gdbarch_decr_pc_after_break (gdbarch, 4); set_gdbarch_decr_pc_after_break (gdbarch, ALPHA_INSN_SIZE);
set_gdbarch_cannot_step_breakpoint (gdbarch, 1); set_gdbarch_cannot_step_breakpoint (gdbarch, 1);
/* Hook in ABI-specific overrides, if they have been registered. */ /* Hook in ABI-specific overrides, if they have been registered. */