* testsuite/gdb.base/break.exp: Make backtrace from factorial
errors unique. * testsuite/gdb.base/nodebug.exp: Whack out all -g options explicitly. * v850-tdep.c (v850_init_extra_frame_info v850_frame_chain): Fix sign bugs with scanning prologues. Get a little smarter about calculating the length of uninteresting instructions.
This commit is contained in:
parent
93ed453c68
commit
6420594bbf
|
@ -1,3 +1,16 @@
|
||||||
|
Wed Oct 16 19:03:54 1996 Stu Grossman (grossman@critters.cygnus.com)
|
||||||
|
|
||||||
|
* testsuite/gdb.base/break.exp: Make backtrace from factorial
|
||||||
|
errors unique.
|
||||||
|
* testsuite/gdb.base/nodebug.exp: Whack out all -g options
|
||||||
|
explicitly.
|
||||||
|
|
||||||
|
start-sanitize-v850
|
||||||
|
* v850-tdep.c (v850_init_extra_frame_info v850_frame_chain): Fix
|
||||||
|
sign bugs with scanning prologues. Get a little smarter about
|
||||||
|
calculating the length of uninteresting instructions.
|
||||||
|
|
||||||
|
end-sanitize-v850
|
||||||
Wed Oct 16 17:46:03 1996 Stan Shebs <shebs@andros.cygnus.com>
|
Wed Oct 16 17:46:03 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||||
|
|
||||||
* breakpoint.c (must_shift_inst_regs): New global.
|
* breakpoint.c (must_shift_inst_regs): New global.
|
||||||
|
|
|
@ -8,21 +8,28 @@ set prms_id 0
|
||||||
set bug_id 0
|
set bug_id 0
|
||||||
|
|
||||||
set testfile nodebug
|
set testfile nodebug
|
||||||
set srcfile ${srcdir}/$subdir/${testfile}.c
|
set srcfile ${testfile}.c
|
||||||
set binfile ${objdir}/${subdir}/${testfile}
|
set binfile ${objdir}/${subdir}/${testfile}
|
||||||
if { [compile "${srcfile} -o ${binfile}"] != "" } {
|
|
||||||
|
# Get rid of any -g options (including -gstabs, -gdwarf, etc...
|
||||||
|
regsub -all -- {[ ]-g[^ ]*} $target_info(target,cflags) { } target_info(target,cflags)
|
||||||
|
|
||||||
|
if { [compile "${srcdir}/${subdir}/${srcfile} -o ${binfile}"] != "" } {
|
||||||
perror "Couldn't compile ${srcfile}"
|
perror "Couldn't compile ${srcfile}"
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Create and source the file that provides information about the compiler
|
||||||
|
# used to compile the test case.
|
||||||
execute_anywhere "rm -f ${binfile}.ci"
|
execute_anywhere "rm -f ${binfile}.ci"
|
||||||
if { [compile "-E ${srcdir}/${subdir}/compiler.c > ${binfile}.ci"] != "" } {
|
if { [compile "-E ${srcdir}/${subdir}/compiler.c > ${binfile}.ci"] != "" } {
|
||||||
perror "Couldn't make ${testfile}.ci file"
|
perror "Couldn't make ${binfile}.ci file"
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
source ${binfile}.ci
|
||||||
|
|
||||||
gdb_reinitialize_dir $srcdir/$subdir
|
gdb_reinitialize_dir $srcdir/$subdir
|
||||||
gdb_load $binfile
|
gdb_load $binfile
|
||||||
source ${binfile}.ci
|
|
||||||
|
|
||||||
if [runto inner] then {
|
if [runto inner] then {
|
||||||
|
|
||||||
|
@ -110,11 +117,14 @@ if [runto inner] then {
|
||||||
|
|
||||||
# This test is not as obscure as it might look. `p getenv ("TERM")'
|
# This test is not as obscure as it might look. `p getenv ("TERM")'
|
||||||
# is a real-world example, at least on many systems.
|
# is a real-world example, at least on many systems.
|
||||||
|
setup_xfail "h8300*-*-*"
|
||||||
|
if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
|
||||||
gdb_test {p/c array_index("abcdef",2)} " = 99 'c'"
|
gdb_test {p/c array_index("abcdef",2)} " = 99 'c'"
|
||||||
|
|
||||||
# Now, try that we can give names of file-local symbols which happen
|
# Now, try that we can give names of file-local symbols which happen
|
||||||
# to be unique, and have it still work
|
# to be unique, and have it still work
|
||||||
if [runto middle] then {
|
if [runto middle] then {
|
||||||
|
setup_xfail "h8300*-*-*"
|
||||||
gdb_test "backtrace" "#0.*middle.*#1.*top.*#2.*main.*" \
|
gdb_test "backtrace" "#0.*middle.*#1.*top.*#2.*main.*" \
|
||||||
"backtrace from middle in nodebug.exp"
|
"backtrace from middle in nodebug.exp"
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,36 +86,33 @@ v850_init_extra_frame_info (fi)
|
||||||
{
|
{
|
||||||
int insn;
|
int insn;
|
||||||
|
|
||||||
insn = read_memory_integer (current_pc, 2);
|
insn = read_memory_unsigned_integer (current_pc, 2);
|
||||||
|
|
||||||
if ((insn & 0xffe0) == ((SP_REGNUM << 11) | 0x0240)) /* add <imm>,sp */
|
if ((insn & 0xffe0) == ((SP_REGNUM << 11) | 0x0240)) /* add <imm>,sp */
|
||||||
frameoffset = (insn & 0x1f) | ~0x1f;
|
frameoffset = ((insn & 0x1f) ^ 0x10) - 0x10;
|
||||||
else if (insn == ((SP_REGNUM << 11) | 0x0600 | SP_REGNUM)) /* addi <imm>,sp,sp */
|
else if (insn == ((SP_REGNUM << 11) | 0x0600 | SP_REGNUM)) /* addi <imm>,sp,sp */
|
||||||
{
|
frameoffset = read_memory_integer (current_pc + 2, 2);
|
||||||
current_pc += 2;
|
|
||||||
|
|
||||||
frameoffset = read_memory_integer (current_pc, 2);
|
|
||||||
}
|
|
||||||
else if (insn == ((FP_REGNUM << 11) | 0x0000 | 12)) /* mov r12,r2 */
|
else if (insn == ((FP_REGNUM << 11) | 0x0000 | 12)) /* mov r12,r2 */
|
||||||
framereg = FP_REGNUM; /* Setting up fp */
|
framereg = FP_REGNUM; /* Setting up fp */
|
||||||
else if ((insn & 0x07ff) == (0x0760 | SP_REGNUM)) /* st.w <reg>,<offset>[sp] */
|
else if ((insn & 0x07ff) == (0x0760 | SP_REGNUM)) /* st.w <reg>,<offset>[sp] */
|
||||||
{
|
{
|
||||||
reg = (insn >> 11) & 0x1f; /* Extract <reg> */
|
reg = (insn >> 11) & 0x1f; /* Extract <reg> */
|
||||||
current_pc += 2;
|
|
||||||
|
|
||||||
insn = read_memory_integer (current_pc, 2) & ~1;
|
insn = read_memory_integer (current_pc + 2, 2) & ~1;
|
||||||
|
|
||||||
fi->fsr.regs[reg] = insn + frameoffset;
|
fi->fsr.regs[reg] = insn + frameoffset;
|
||||||
}
|
}
|
||||||
else if ((insn & 0x07ff) == (0x0760 | FP_REGNUM)) /* st.w <reg>,<offset>[fp] */
|
else if ((insn & 0x07ff) == (0x0760 | FP_REGNUM)) /* st.w <reg>,<offset>[fp] */
|
||||||
{
|
{
|
||||||
reg = (insn >> 11) & 0x1f; /* Extract <reg> */
|
reg = (insn >> 11) & 0x1f; /* Extract <reg> */
|
||||||
current_pc += 2;
|
|
||||||
|
|
||||||
insn = read_memory_integer (current_pc, 2) & ~1;
|
insn = read_memory_integer (current_pc + 2, 2) & ~1;
|
||||||
|
|
||||||
fi->fsr.regs[reg] = insn;
|
fi->fsr.regs[reg] = insn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((insn & 0x0780) >= 0x0600) /* Four byte instruction? */
|
||||||
|
current_pc += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PC_IN_CALL_DUMMY (fi->pc, NULL, NULL))
|
if (PC_IN_CALL_DUMMY (fi->pc, NULL, NULL))
|
||||||
|
@ -208,21 +205,16 @@ v850_frame_chain (fi)
|
||||||
{
|
{
|
||||||
int insn;
|
int insn;
|
||||||
|
|
||||||
insn = read_memory_integer (current_pc, 2);
|
insn = read_memory_unsigned_integer (current_pc, 2);
|
||||||
|
|
||||||
if ((insn & 0xffe0) == ((SP_REGNUM << 11) | 0x0240)) /* add <imm>,sp */
|
if ((insn & 0xffe0) == ((SP_REGNUM << 11) | 0x0240)) /* add <imm>,sp */
|
||||||
frameoffset = (insn & 0x1f) | ~0x1f;
|
frameoffset = ((insn & 0x1f) ^ 0x10) - 0x10;
|
||||||
else if (insn == ((SP_REGNUM << 11) | 0x0600 | SP_REGNUM)) /* addi <imm>,sp,sp */
|
else if (insn == ((SP_REGNUM << 11) | 0x0600 | SP_REGNUM)) /* addi <imm>,sp,sp */
|
||||||
{
|
frameoffset = read_memory_integer (current_pc + 2, 2);
|
||||||
current_pc += 2;
|
|
||||||
|
|
||||||
frameoffset = read_memory_integer (current_pc, 2);
|
|
||||||
}
|
|
||||||
else if (insn == ((FP_REGNUM << 11) | 0x0000 | 12)) /* mov r12,r2 */
|
else if (insn == ((FP_REGNUM << 11) | 0x0000 | 12)) /* mov r12,r2 */
|
||||||
return v850_find_callers_reg (fi, FP_REGNUM); /* It's using a frame pointer reg */
|
return v850_find_callers_reg (fi, FP_REGNUM); /* It's using a frame pointer reg */
|
||||||
else if ((insn & 0x07ff) == (0x0760 | SP_REGNUM)) /* st.w <reg>,<offset>[sp] */
|
|
||||||
current_pc += 2;
|
if ((insn & 0x0780) >= 0x0600) /* Four byte instruction? */
|
||||||
else if ((insn & 0x07ff) == (0x0760 | FP_REGNUM)) /* st.w <reg>,<offset>[fp] */
|
|
||||||
current_pc += 2;
|
current_pc += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue