* 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:
parent
381bc39bef
commit
e8d2d62824
|
@ -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.
|
||||||
|
|
|
@ -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. */
|
||||||
|
|
Loading…
Reference in New Issue