From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Snyder To: Fernando Nasser Cc: Keith Seitz , gdb-patches@sources.redhat.com Subject: Re: [RFA] Assuming malloc exists in callfwmall.exp Date: Wed, 14 Feb 2001 12:52:00 -0000 Message-id: <3A8AEFEA.A2E2A61E@cygnus.com> References: <3A8ABA01.C25B0FD2@cygnus.com> X-SW-Source: 2001-02/msg00219.html Fernando Nasser wrote: > > Sounds reasonable. Check it in (assuming you have already added yourself to the write after approval list). Hold on -- aren't you defeating the purpose of this test? The test was added by HP precisely because these calls fail when malloc isn't included in the target program. The test is a duplicate of callfuncs.exp, except that it doesn't link malloc. > > Fernando > > Keith Seitz wrote: > > > > (let me try to get the right mailing list this time :-) > > > > Hi, > > > > The problem: When doing an inferior function call with a > > struct/array/string argument (aka 'print foo({2,1})' or 'print > > foo("bar")', gdb requires "malloc" in the executable... This leads to > > some trivial testsuite failures. > > > > 2001-02-13 Keith Seitz > > > > * gdb.base/callfwmall.exp: Check for the existence of > > malloc. > > (do_function_calls): Do not do an inferior function > > call which requires malloc if malloc doesn't exist. > > > > Patch: > > Index: testsuite/gdb.base/callfwmall.exp > > =================================================================== > > RCS file: /cvs/src/src/gdb/testsuite/gdb.base/callfwmall.exp,v > > retrieving revision 1.1.1.3 > > diff -p -r1.1.1.3 callfwmall.exp > > *** testsuite/gdb.base/callfwmall.exp 1999/09/09 00:00:21 1.1.1.3 > > --- testsuite/gdb.base/callfwmall.exp 2001/02/14 01:11:52 > > *************** proc set_lang_c {} { > > *** 99,105 **** > > proc do_function_calls {} { > > global prototypes > > global gcc_compiled > > ! global gdb_prompt > > > > # We need to up this because this can be really slow on some boards. > > set timeout 60; > > --- 99,105 ---- > > proc do_function_calls {} { > > global prototypes > > global gcc_compiled > > ! global gdb_prompt have_malloc_p > > > > # We need to up this because this can be really slow on some boards. > > set timeout 60; > > *************** proc do_function_calls {} { > > *** 169,183 **** > > > > gdb_test "p t_string_values(string_val2,string_val1)" " = 0" > > gdb_test "p t_string_values(string_val1,string_val2)" " = 1" > > ! gdb_test "p t_string_values(\"string 1\",\"string 2\")" " = 1" > > ! gdb_test "p t_string_values(\"string 1\",string_val2)" " = 1" > > ! gdb_test "p t_string_values(string_val1,\"string 2\")" " = 1" > > > > gdb_test "p t_char_array_values(char_array_val2,char_array_val1)" " = 0" > > gdb_test "p t_char_array_values(char_array_val1,char_array_val2)" " = 1" > > ! gdb_test "p t_char_array_values(\"carray 1\",\"carray 2\")" " = 1" > > ! gdb_test "p t_char_array_values(\"carray 1\",char_array_val2)" " = 1" > > ! gdb_test "p t_char_array_values(char_array_val1,\"carray 2\")" " = 1" > > > > gdb_test "p doubleit(4)" " = 8" > > gdb_test "p add(4,5)" " = 9" > > --- 169,187 ---- > > > > gdb_test "p t_string_values(string_val2,string_val1)" " = 0" > > gdb_test "p t_string_values(string_val1,string_val2)" " = 1" > > ! if {$have_malloc_p} { > > ! gdb_test "p t_string_values(\"string 1\",\"string 2\")" " = 1" > > ! gdb_test "p t_string_values(\"string 1\",string_val2)" " = 1" > > ! gdb_test "p t_string_values(string_val1,\"string 2\")" " = 1" > > ! } > > > > gdb_test "p t_char_array_values(char_array_val2,char_array_val1)" " = 0" > > gdb_test "p t_char_array_values(char_array_val1,char_array_val2)" " = 1" > > ! if {$have_malloc_p} { > > ! gdb_test "p t_char_array_values(\"carray 1\",\"carray 2\")" " = 1" > > ! gdb_test "p t_char_array_values(\"carray 1\",char_array_val2)" " = 1" > > ! gdb_test "p t_char_array_values(char_array_val1,\"carray 2\")" " = 1" > > ! } > > > > gdb_test "p doubleit(4)" " = 8" > > gdb_test "p add(4,5)" " = 9" > > *************** proc do_function_calls {} { > > *** 222,231 **** > > gdb_test "p t_enum_value2(enum_val2)" " = 1" > > gdb_test "p t_enum_value2(enum_val1)" " = 0" > > > > ! gdb_test "p sum_args(1,{2})" " = 2" > > ! gdb_test "p sum_args(2,{2,3})" " = 5" > > ! gdb_test "p sum_args(3,{2,3,4})" " = 9" > > ! gdb_test "p sum_args(4,{2,3,4,5})" " = 14" > > gdb_test "p sum10 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)" " = 55" > > > > gdb_test "p t_structs_c(struct_val1)" "= 120 'x'" \ > > --- 226,237 ---- > > gdb_test "p t_enum_value2(enum_val2)" " = 1" > > gdb_test "p t_enum_value2(enum_val1)" " = 0" > > > > ! if {$have_malloc_p} { > > ! gdb_test "p sum_args(1,{2})" " = 2" > > ! gdb_test "p sum_args(2,{2,3})" " = 5" > > ! gdb_test "p sum_args(3,{2,3,4})" " = 9" > > ! gdb_test "p sum_args(4,{2,3,4,5})" " = 14" > > ! } > > gdb_test "p sum10 (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)" " = 55" > > > > gdb_test "p t_structs_c(struct_val1)" "= 120 'x'" \ > > *************** gdb_load ${binfile} > > *** 255,260 **** > > --- 261,273 ---- > > gdb_test "set print sevenbit-strings" "" > > gdb_test "set print address off" "" > > gdb_test "set width 0" "" > > + > > + # Note whether malloc exists > > + set have_malloc_p 1 > > + send_gdb "p malloc\n" > > + gdb_expect { > > + "No symbol \"malloc\"" { set have_malloc_p 0 } > > + } > > > > if { $hp_aCC_compiler } { > > # Do not set language explicitly to 'C'. This will cause aCC > > -- > Fernando Nasser > Red Hat - Toronto E-Mail: fnasser@redhat.com > 2323 Yonge Street, Suite #300 > Toronto, Ontario M4P 2C9