OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/tags/gdb/gdb-6.8/gdb-6.8.openrisc-2.1/gdb/testsuite/gdb.hp/gdb.aCC
    from Rev 24 to Rev 33
    Reverse comparison

Rev 24 → Rev 33

/optimize.c
0,0 → 1,76
/* Source for debugging optimimzed code test.
 
cc -g -O -o optimize optimize.c
*/
int callee();
int test_opt;
 
int main()
{
int a,b,c,d,e,f,g,h;
 
a = 10;;
 
/* Value propagate
*/
b = 2 * a + 1;
c = 3 * b + 2;
 
/* Re-use expressions
*/
d = (2 * a + 1) * (3 * b + 2);
e = (2 * a + 1) * (3 * b + 2);
 
/* Create dead stores--do lines still exist?
*/
d = (2 * a + 1) * (3 * b + 2);
e = (2 * a + 1) * (3 * b + 2);
d = (2 * a + 1) * (3 * b + 2);
e = (2 * a + 1) * (3 * b + 2);
 
/* Alpha and psi motion
*/
if( test_opt ) {
f = e - d;
f = f--;
}
else {
f = e - d;
f = f + d * e;
}
 
/* Chi and Rho motion
*/
h = 0;
do {
h++;
a = b * c + d * e; /* Chi */
f = f + d * e;
g = f + d * e; /* Rho */
callee( g+1 );
test_opt = (test_opt != 1); /* Cycles */
} while( g && h < 10);
 
/* Opps for tail recursion, unrolling,
* folding, evaporating
*/
for( a = 0; a < 100; a++ ) {
callee( callee ( callee( a )));
callee( callee ( callee( a )));
callee( callee ( callee( a )));
}
 
return callee( test_opt );
}
 
/* defined late to keep line numbers the same
*/
int callee( x )
int x; /* not used! */
{
test_opt++; /* side effect */
 
return test_opt;
}
 
/* end */
optimize.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: watch-cmd.exp =================================================================== --- watch-cmd.exp (nonexistent) +++ watch-cmd.exp (revision 33) @@ -0,0 +1,157 @@ +# Copyright (C) 1998, 2007, 2008 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +if $tracelevel then { + strace $tracelevel +} + +# +# test special commands +# +set prms_id 0 +set bug_id 0 + +if { [skip_hp_tests] } then { continue } + +set testfile "run" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } { + untested watch-cmd.exp + return -1 + +} + +if [get_compiler_info ${binfile}] { + return -1; +} +if { $gcc_compiled } then { continue } + + +gdb_exit +gdb_start +delete_breakpoints +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + + + +proc watchpoint_command_test {} { + global gdb_prompt + + if [target_info exists noargs] { + verbose "Skipping watchpoint_command_test because of noargs." + return + } + + if { ![runto factorial] } then { gdb_suppress_tests } + # Don't depend upon argument passing, since most simulators don't currently + # support it. Bash value variable to be what we want. + gdb_test "p value=6" "" "set value to 6 in watchpoint_command_test" + delete_breakpoints + + # Verify that we can create a watchpoint, and give it a commands + # list that continues the inferior. We set the watchpoint on a + # local variable, too, so that it self-deletes when the watched + # data goes out of scope. + # + # What should happen is: Each time the watchpoint triggers, it + # continues the inferior. Eventually, the watchpoint will self- + # delete, when the watched variable is out of scope. But by that + # time, the inferior should have exited. GDB shouldn't crash or + # anything untoward as a result of this. + # + send_gdb "watch local_var\n" + gdb_expect { + -re ".*\[Ww\]atchpoint (\[0-9\]*): local_var.*$gdb_prompt $"\ + { pass "watch local_var" + set wp_id $expect_out(1,string) + send_gdb "commands $wp_id\n" + gdb_expect { + -re "Type commands for when breakpoint $wp_id is hit, one per line.*>"\ + { pass "begin commands on watch"} + -re "$gdb_prompt $"\ + {fail "begin commands on watch"} + timeout {fail "(timeout) begin commands on watch"} + } + } + -re "$gdb_prompt $"\ + {fail "watch local_var"} + timeout {fail "(timeout) watch local_var"} + } +# set wp_id $expect_out(1,string) +# send_gdb "commands $wp_id\n" +# gdb_expect { +# -re "Type commands for when breakpoint $wp_id is hit, one per line.*>"\ +# {pass "begin commands on watch"} +# -re "$gdb_prompt $"\ +# {fail "begin commands on watch"} +# timeout {fail "(timeout) begin commands on watch"} +# } + send_gdb "print value\n" + gdb_expect { + -re ">"\ + {pass "add print command to watch"} + -re "$gdb_prompt $"\ + {fail "add print command to watch"} + timeout {fail "(timeout) add print command to watch"} + } + send_gdb "continue\n" + gdb_expect { + -re ">"\ + {pass "add continue command to watch"} + -re "$gdb_prompt $"\ + {fail "add continue command to watch"} + timeout {fail "(timeout) add continue command to watch"} + } + send_gdb "end\n" + gdb_expect { + -re "$gdb_prompt $"\ + {pass "begin commands on watch"} + timeout {fail "(timeout) begin commands on watch"} + } + send_gdb "continue\n" + gdb_expect { + -re "Continuing.*\[Ww\]atchpoint $wp_id deleted because the program has left the block in.*which its expression is valid.*in main.*$gdb_prompt $"\ + {pass "continue with watch"} + -re "$gdb_prompt $"\ + {fail "continue with watch"} + timeout {fail "(timeout) continue with watch"} + } + send_gdb "continue\n" + gdb_expect { + -re "Continuing.*$gdb_prompt $"\ + {pass "continue until exit"} + -re "$gdb_prompt $"\ + {fail "continue until exit"} + timeout {fail "(timeout) continue until exit"} + } +} + +watchpoint_command_test + + + + + + + + + + + Index: configure.ac =================================================================== --- configure.ac (nonexistent) +++ configure.ac (revision 33) @@ -0,0 +1,15 @@ +dnl Process this file file with autoconf to produce a configure script. +dnl This file is a shell script fragment that supplies the information +dnl necessary to tailor a template configure script into the configure +dnl script appropriate for this directory. For more information, check +dnl any existing configure script. + +AC_PREREQ(2.59) +AC_INIT(exception.exp) + +CC=${CC-cc} +AC_SUBST(CC) +AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/../../../..) +AC_CANONICAL_SYSTEM + +AC_OUTPUT(Makefile)
configure.ac Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: run.c =================================================================== --- run.c (nonexistent) +++ run.c (revision 33) @@ -0,0 +1,72 @@ +/* + * This simple classical example of recursion is useful for + * testing stack backtraces and such. + */ + +#ifdef vxworks + +# include + +/* VxWorks does not supply atoi. */ +static int +atoi (char *z) + /* char *z;*/ +{ + int i = 0; + + while (*z >= '0' && *z <= '9') + i = i * 10 + (*z++ - '0'); + return i; +} + +/* I don't know of any way to pass an array to VxWorks. This function + can be called directly from gdb. */ + +void vxmain (char *arg) +/*char *arg;*/ +{ + char *argv[2]; + + argv[0] = ""; + argv[1] = arg; + main (2, argv, (char **) 0); +} + +#else /* ! vxworks */ +# include +# include +#endif /* ! vxworks */ + +int main (int argc, char *argv[], char **envp) +/*int argc; +char *argv[], **envp;*/ +{ + int factorial (int); +#ifdef usestubs + set_debug_traps(); + breakpoint(); +#endif +#ifdef FAKEARGV + printf ("%d\n", factorial (1)); +#else + if (argc != 2) { + printf ("usage: factorial \n"); + return 1; + } else { + printf ("%d\n", factorial (atoi (argv[1]))); + } +#endif + return 0; +} + +int factorial (int value) +/*int value;*/ +{ + int local_var; + + if (value > 1) { + value *= factorial (value - 1); + } + local_var = value; + return (value); +}
run.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: exception.exp =================================================================== --- exception.exp (nonexistent) +++ exception.exp (revision 33) @@ -0,0 +1,24 @@ +# Copyright 2004, 2007, 2008 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file exists because the configure script requires it to exist. +# It would be nice to regenerate the configure script. I can't do it +# because I don't have autoconf 2.12.1, which is used to build it. +# -- chastain 2004-01-09 + +continue Index: optimize.exp =================================================================== --- optimize.exp (nonexistent) +++ optimize.exp (revision 33) @@ -0,0 +1,150 @@ +# Copyright (C) 1998, 2007, 2008 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . */ + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# optimize.exp -- Expect script for testing apps compiled with -O + +# There is no DOC support for gdb yet, return 0 for now. +return 0 + +global timeout + +# use this to debug: +# +#log_user 1 + +if $tracelevel then { + strace $tracelevel +} + +if { [skip_hp_tests] } then { continue } + +set testfile optimize +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +if [get_compiler_info ${binfile}] { + return -1; +} + + +if { $gcc_compiled } then { continue } + + +# Vanilla -O, which is the same as +O2 +# +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug optimize=+O2}] != "" } { + untested optimize.exp + return -1 +} + + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +send_gdb "file $binfile\n" +gdb_expect { + -re ".*no debugging symbols found.*$gdb_prompt $" { + fail "Didn't find debug symbols; CHFts23488" + } + -re ".*No header section (PXDB data).*$gdb_prompt $" { + fail "pointless warning" + } + -re ".*done.*$gdb_prompt $" { + pass "load debug symbols" + } + timeout { fail "timeout on file" } +} + +# Two lines at the same place after opt. +# +gdb_test "b 28" ".*" +gdb_test "b 26" ".*also set at.*" "same line" + +gdb_test "b 47" ".*" +gdb_test "b 48" ".*also set at.*" "same line" + +gdb_test "tb main" ".*" + +set old_timeout $timeout +set timeout [expr "$timeout + 200"] +send_gdb "r\n" +gdb_expect { + -re ".*No header section (PXDB data).*$gdb_prompt $" { + fail "pointless warning" + } + -re ".*main.*2\[12].*$gdb_prompt $" { + # All the lines before line 21 or 22 are + # evaporated by the compiler. + # + pass "hit main" + } + -re ".*$gdb_prompt $" { + fail "didn't hit main" + } + timeout { fail "timeout on run" } +} +set timeout $old_timeout + +gdb_test "c" ".*Breakpoint 1.*33.*" +gdb_test "c" ".*51.*" +gdb_test "cle" ".*Deleted breakpoints.*" "set 2, so del 2" + +gdb_test "b callee" ".*" +gdb_test "c" ".*callee.*" "hit called rtn" + +gdb_exit + +# +O4, don't use -g +# +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {optimize=+O4}] != "" } { + untested optimize.exp + return -1 +} + +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +send_gdb "file $binfile\n" +gdb_expect { + -re ".*no debugging symbols found.*$gdb_prompt $" { + pass "Didn't find debug symbols, as expected" + } + -re ".*No header section (PXDB data).*$gdb_prompt $" { + fail "pointless warning" + } + -re ".*done.*$gdb_prompt $" { + fail "Somehow found debug symbols--make this a pass?" + } + timeout { fail "timeout on file" } +} + +gdb_test "b main" ".*" +gdb_test "b callee" ".*" +gdb_test "r" ".*Breakpoint 1.*main.*" +gdb_test "si 3" ".*main.*" "steps" +gdb_test "x/4i \$pc" ".*main.*main+4.*main+8.*" +gdb_test "c" ".*callee.*" "hit bp" +gdb_test "disas" ".*callee.*callee+4.*callee+12.*" +gdb_test "si" ".*callee.*" +gdb_test "fin" ".*Run till exit.*main.*" "finish" +gdb_test "x/i \$pc" ".*main+.*" "back in main" +gdb_exit + +#remote_exec build "rm -f ${binfile}" +return 0

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.