From 759f0f0b7b0ca3e620e3dea8e69979739fb9536f Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 12 Mar 2010 19:17:01 +0000 Subject: [PATCH] gdb/testsuite/ * lib/gdb.exp (skip_stl_tests): New. (gdb_compile): Symbian needs -ldl. (shlib_target_file): New. (shlib_symbol_file): New. (gdb_load_shlibs): Use shlib_target_file. * lib/mi-support.exp (mi_load_shlibs): Use shlib_target_file. * gdb.cp/exception.exp: Use skip_stl_tests. * gdb.cp/bs15503.exp: Use skip_stl_tests. Use untested. * gdb.cp/try_catch.exp: Use skip_stl_tests. * gdb.cp/mb-templates.exp: Ditto. * gdb.base/commands.exp: Relax regexes. * gdb.base/watchpoint-solib.exp: Don't skip on symbian. Use shlib_target_file and shlib_symbol_file. * gdb.base/maint.exp: Allow lowercase t. Allow .rodata in sections. * gdb.base/ending-run.exp: Accept E32Main for symbian. * gdb.base/solib-disc.exp: Use shlib_target_file and shlib_symbol_file. * gdb.base/unload.exp: Don't skip on symbian. Use shlib_target_file and shlib_symbol_file. * gdb.base/list.exp: Check use_gdb_stub instead of is_remote. --- gdb/testsuite/ChangeLog | 25 +++++++++++++++ gdb/testsuite/gdb.base/commands.exp | 4 +-- gdb/testsuite/gdb.base/ending-run.exp | 4 +++ gdb/testsuite/gdb.base/list.exp | 2 +- gdb/testsuite/gdb.base/maint.exp | 5 +-- gdb/testsuite/gdb.base/solib-disc.exp | 4 ++- gdb/testsuite/gdb.base/unload.exp | 17 +++++----- gdb/testsuite/gdb.base/watchpoint-solib.exp | 9 ++---- gdb/testsuite/gdb.cp/bs15503.exp | 4 +-- gdb/testsuite/gdb.cp/exception.exp | 2 +- gdb/testsuite/gdb.cp/mb-templates.exp | 2 +- gdb/testsuite/gdb.cp/try_catch.exp | 2 +- gdb/testsuite/gdb.cp/userdef.exp | 2 +- gdb/testsuite/lib/gdb.exp | 35 +++++++++++++++++++-- gdb/testsuite/lib/mi-support.exp | 3 +- 15 files changed, 90 insertions(+), 30 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 2d6fbcd4b6b..f4211d1bca0 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,28 @@ +2010-03-12 Daniel Jacobowitz + + gdb/testsuite/ + * lib/gdb.exp (skip_stl_tests): New. + (gdb_compile): Symbian needs -ldl. + (shlib_target_file): New. + (shlib_symbol_file): New. + (gdb_load_shlibs): Use shlib_target_file. + * lib/mi-support.exp (mi_load_shlibs): Use shlib_target_file. + * gdb.cp/exception.exp: Use skip_stl_tests. + * gdb.cp/bs15503.exp: Use skip_stl_tests. Use untested. + * gdb.cp/try_catch.exp: Use skip_stl_tests. + * gdb.cp/mb-templates.exp: Ditto. + * gdb.base/commands.exp: Relax regexes. + * gdb.base/watchpoint-solib.exp: Don't skip on symbian. Use + shlib_target_file and shlib_symbol_file. + * gdb.base/maint.exp: Allow lowercase t. Allow .rodata in + sections. + * gdb.base/ending-run.exp: Accept E32Main for symbian. + * gdb.base/solib-disc.exp: Use + shlib_target_file and shlib_symbol_file. + * gdb.base/unload.exp: Don't skip on symbian. Use + shlib_target_file and shlib_symbol_file. + * gdb.base/list.exp: Check use_gdb_stub instead of is_remote. + 2010-03-12 Pedro Alves * gdb.trace/backtrace.exp: Adjust for x86 and x86_64. diff --git a/gdb/testsuite/gdb.base/commands.exp b/gdb/testsuite/gdb.base/commands.exp index b3257aaf9ed..8bb414794af 100644 --- a/gdb/testsuite/gdb.base/commands.exp +++ b/gdb/testsuite/gdb.base/commands.exp @@ -488,7 +488,7 @@ proc bp_deleted_in_command_test {} { gdb_run_cmd gdb_expect { - -re ".*factorial command-list executed.*1.*$gdb_prompt $" { + -re ".*factorial command-list executed.*$gdb_prompt $" { pass "run factorial until breakpoint" } -re ".*$gdb_prompt $" { @@ -550,7 +550,7 @@ proc temporary_breakpoint_commands {} { gdb_run_cmd gdb_expect { - -re ".*factorial tbreak commands executed.*1.*$gdb_prompt $" { + -re ".*factorial tbreak commands executed.*$gdb_prompt $" { pass "run factorial until temporary breakpoint" } timeout { fail "(timeout) run factorial until temporary breakpoint" } diff --git a/gdb/testsuite/gdb.base/ending-run.exp b/gdb/testsuite/gdb.base/ending-run.exp index 7086c5d60a0..7312f49f160 100644 --- a/gdb/testsuite/gdb.base/ending-run.exp +++ b/gdb/testsuite/gdb.base/ending-run.exp @@ -188,6 +188,10 @@ gdb_expect { # another `next' is necessary. gdb_test "next" ".*in start_l ().*" "step out of main" } + -re "E32Main (.*).*$gdb_prompt $" { + # On SymbianOS there's a different function which calls main. + pass "step out of main" + } -re ".*in.*currently asm.*$gdb_prompt $" { pass "step out of main" } diff --git a/gdb/testsuite/gdb.base/list.exp b/gdb/testsuite/gdb.base/list.exp index 11804c834f2..03bb59df6ca 100644 --- a/gdb/testsuite/gdb.base/list.exp +++ b/gdb/testsuite/gdb.base/list.exp @@ -96,7 +96,7 @@ proc test_listsize {} { # list the lines there instead of main, so we skip this test for remote targets. # The second case is for optimized code, it is still correct. - if [is_remote target] { + if [target_info exists use_gdb_stub] { runto_main; unsupported "list default lines around main"; } else { diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index 6cff01339bb..0707c88975c 100644 --- a/gdb/testsuite/gdb.base/maint.exp +++ b/gdb/testsuite/gdb.base/maint.exp @@ -305,7 +305,7 @@ gdb_expect { { send_gdb "shell grep factorial msymbols_output\n" gdb_expect { - -re "\\\[ *$decimal\\\] T\[ \t\]+$hex factorial.*$gdb_prompt $"\ + -re "\\\[ *$decimal\\\] \[tT\]\[ \t\]+$hex factorial.*$gdb_prompt $"\ { pass "maint print msymbols" } -re ".*$gdb_prompt $" { fail "maint print msymbols" } timeout { fail "(timeout) maint print msymbols" } @@ -329,7 +329,7 @@ gdb_test_multiple "maint print msymbols msymbols_output2 ${subdir}/${testfile}" gdb_test_multiple "shell ls msymbols_output2" "maint print msymbols" { -re "msymbols_output2\r\n$gdb_prompt $" { gdb_test_multiple "shell grep factorial msymbols_output2" "maint print msymbols" { - -re "\\\[ *$decimal\\\] T\[ \t\]+$hex factorial.*$gdb_prompt $" { + -re "\\\[ *$decimal\\\] \[tT\]\[ \t\]+$hex factorial.*$gdb_prompt $" { pass "maint print msymbols" } -re ".*$gdb_prompt $" { @@ -469,6 +469,7 @@ send_gdb "maint info sections DATA\n" gdb_expect { -re ".* \\.text .*$gdb_prompt $" { fail "maint info sections DATA" } -re ".* \\.data .*$gdb_prompt $" { pass "maint info sections DATA" } + -re ".* .rodata .*$gdb_prompt $" { pass "maint info sections DATA" } -re ".*$gdb_prompt $" { fail "maint info sections DATA" } timeout { fail "(timeout) maint info sections DATA" } } diff --git a/gdb/testsuite/gdb.base/solib-disc.exp b/gdb/testsuite/gdb.base/solib-disc.exp index 552cd073070..e6fdbe90919 100644 --- a/gdb/testsuite/gdb.base/solib-disc.exp +++ b/gdb/testsuite/gdb.base/solib-disc.exp @@ -32,6 +32,8 @@ set libsrc "${srcdir}/${subdir}/${libfile}.c" set libname "${libfile}.so" set libobj "${objdir}/${subdir}/${libname}" set execsrc "${srcdir}/${subdir}/${srcfile}" +set lib_dlopen [shlib_target_file ${libname}] +set lib_syms [shlib_symbol_file ${libname}] remote_exec build "rm -f ${binfile}" @@ -39,7 +41,7 @@ if [get_compiler_info ${binfile}] { return -1 } -set exec_opts [list debug shlib_load additional_flags=-DSHLIB_NAME\=\"${libname}\"] +set exec_opts [list debug shlib_load additional_flags=-DSHLIB_NAME\=\"${lib_dlopen}\"] if { [gdb_compile_shlib $libsrc $libobj {debug}] != "" || [gdb_compile $execsrc ${binfile} executable $exec_opts] != "" } { diff --git a/gdb/testsuite/gdb.base/unload.exp b/gdb/testsuite/gdb.base/unload.exp index 9251ee7d7eb..20c05337c57 100644 --- a/gdb/testsuite/gdb.base/unload.exp +++ b/gdb/testsuite/gdb.base/unload.exp @@ -30,11 +30,6 @@ if {[skip_shlib_tests]} { return 0 } -# TODO: Use LoadLibrary on this target instead of dlopen. -if {[istarget arm*-*-symbianelf*]} { - return 0 -} - set testfile "unload" set libfile "unloadshr" set libfile2 "unloadshr2" @@ -49,13 +44,17 @@ set libsrc $srcdir/$subdir/$libfile.c set libsrc2 $srcdir/$subdir/$libfile2.c set lib_sl $objdir/$subdir/$libname set lib_sl2 $objdir/$subdir/$libname2 +set lib_dlopen [shlib_target_file ${libname}] +set lib_dlopen2 [shlib_target_file ${libname2}] +set lib_syms [shlib_symbol_file ${libname}] +set lib_syms2 [shlib_symbol_file ${libname2}] if [get_compiler_info ${binfile}] { return -1 } set lib_opts debug -set exec_opts [list debug shlib_load additional_flags=-DSHLIB_NAME\=\"${libname}\" additional_flags=-DSHLIB_NAME2\=\"${libname2}\"] +set exec_opts [list debug shlib_load additional_flags=-DSHLIB_NAME\=\"${lib_dlopen}\" additional_flags=-DSHLIB_NAME2\=\"${lib_dlopen2}\"] if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != "" || [gdb_compile_shlib $libsrc2 $lib_sl2 $lib_opts] != "" @@ -106,7 +105,7 @@ gdb_test "info break" \ gdb_breakpoint "$testfile.c:[gdb_get_line_number "y-set-1" $testfile.c]" temporary gdb_test "continue" \ -"Continuing.*warning: Temporarily disabling breakpoints for.*${libname}.*y-set-1.*" \ +"Continuing.*warning: Temporarily disabling breakpoints for.*${lib_syms}.*y-set-1.*" \ "continuing to unloaded libfile" gdb_test "print y" " = 10" "print y from libfile" @@ -129,7 +128,7 @@ gdb_test "info break" \ gdb_breakpoint "$testfile.c:[gdb_get_line_number "y-set-1" $testfile.c]" temporary gdb_test "continue" \ -"Continuing.*warning: Temporarily disabling breakpoints for.*${libname}.*y-set-1.*" \ +"Continuing.*warning: Temporarily disabling breakpoints for.*${lib_syms}.*y-set-1.*" \ "continuing to unloaded libfile" set unloadshr_line2 [gdb_get_line_number "unloadshr2 break" ${libsrcfile2}] @@ -148,7 +147,7 @@ gdb_test "info break" \ gdb_breakpoint "$testfile.c:[gdb_get_line_number "y-set-2" $testfile.c]" gdb_test "continue" \ -"Continuing.*warning: Temporarily disabling breakpoints for.*${libname2}.*y-set-2.*" \ +"Continuing.*warning: Temporarily disabling breakpoints for.*${lib_syms2}.*y-set-2.*" \ "continuing to unloaded libfile2" gdb_test "print y" " = 200" "print y from libfile2" diff --git a/gdb/testsuite/gdb.base/watchpoint-solib.exp b/gdb/testsuite/gdb.base/watchpoint-solib.exp index eb093cd03b2..f33932430a4 100644 --- a/gdb/testsuite/gdb.base/watchpoint-solib.exp +++ b/gdb/testsuite/gdb.base/watchpoint-solib.exp @@ -27,11 +27,6 @@ if {[skip_shlib_tests]} { return 0 } -# TODO: Use LoadLibrary on this target instead of dlopen. -if {[istarget arm*-*-symbianelf*]} { - return 0 -} - set testfile "watchpoint-solib" set libfile "watchpoint-solib-shr" set libname "${libfile}.sl" @@ -41,13 +36,15 @@ set binfile $objdir/$subdir/$testfile set shlibdir ${objdir}/${subdir} set libsrc $srcdir/$subdir/$libfile.c set lib_sl $objdir/$subdir/$libname +set lib_dlopen [shlib_target_file ${libname}] +set lib_syms [shlib_symbol_file ${libname}] if [get_compiler_info ${binfile}] { return -1 } set lib_opts debug -set exec_opts [list debug shlib_load additional_flags=-DSHLIB_NAME\=\"${libname}\"] +set exec_opts [list debug shlib_load additional_flags=-DSHLIB_NAME\=\"${lib_dlopen}\"] if { [gdb_compile_shlib $libsrc $lib_sl $lib_opts] != "" || [gdb_compile $srcfile $binfile executable $exec_opts] != ""} { diff --git a/gdb/testsuite/gdb.cp/bs15503.exp b/gdb/testsuite/gdb.cp/bs15503.exp index df86acd5a92..bdd4dd59011 100644 --- a/gdb/testsuite/gdb.cp/bs15503.exp +++ b/gdb/testsuite/gdb.cp/bs15503.exp @@ -22,7 +22,7 @@ if $tracelevel { strace $tracelevel } -if { [skip_cplus_tests] } { continue } +if { [skip_stl_tests] } { continue } # On SPU this test fails because the executable exceeds local storage size. if { [istarget "spu*-*-*"] } { @@ -38,7 +38,7 @@ if [get_compiler_info ${binfile}] { } if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "debug c++"] != "" } { - perror "Couldn't compile ${srcfile}" + untested bs15503.exp return -1 } diff --git a/gdb/testsuite/gdb.cp/exception.exp b/gdb/testsuite/gdb.cp/exception.exp index 03c884777a2..e065877c4f1 100644 --- a/gdb/testsuite/gdb.cp/exception.exp +++ b/gdb/testsuite/gdb.cp/exception.exp @@ -38,7 +38,7 @@ if $tracelevel then { strace $tracelevel } -if { [skip_cplus_tests] } { continue } +if { [skip_stl_tests] } { continue } # On SPU this test fails because the executable exceeds local storage size. if { [istarget "spu*-*-*"] } { diff --git a/gdb/testsuite/gdb.cp/mb-templates.exp b/gdb/testsuite/gdb.cp/mb-templates.exp index 1a56e3b6486..ed4443383bf 100644 --- a/gdb/testsuite/gdb.cp/mb-templates.exp +++ b/gdb/testsuite/gdb.cp/mb-templates.exp @@ -20,7 +20,7 @@ if $tracelevel then { strace $tracelevel } -if { [skip_cplus_tests] } { continue } +if { [skip_stl_tests] } { continue } # On SPU this test fails because the executable exceeds local storage size. if { [istarget "spu*-*-*"] } { diff --git a/gdb/testsuite/gdb.cp/try_catch.exp b/gdb/testsuite/gdb.cp/try_catch.exp index 35ecfe80ded..86cb7b11e1b 100644 --- a/gdb/testsuite/gdb.cp/try_catch.exp +++ b/gdb/testsuite/gdb.cp/try_catch.exp @@ -22,7 +22,7 @@ if $tracelevel then { strace $tracelevel } -if { [skip_cplus_tests] } { continue } +if { [skip_stl_tests] } { continue } # # test running programs diff --git a/gdb/testsuite/gdb.cp/userdef.exp b/gdb/testsuite/gdb.cp/userdef.exp index 2bbf95e91e0..5e47d9079e0 100644 --- a/gdb/testsuite/gdb.cp/userdef.exp +++ b/gdb/testsuite/gdb.cp/userdef.exp @@ -24,7 +24,7 @@ if $tracelevel then { strace $tracelevel } -if { [skip_cplus_tests] } { continue } +if { [skip_stl_tests] } { continue } # On SPU this test fails because the executable exceeds local storage size. if { [istarget "spu*-*-*"] } { diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index fbe028548fb..01ebc52bb29 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -1281,6 +1281,18 @@ proc skip_cplus_tests {} { return 0 } +# Return a 1 for configurations for which don't have both C++ and the STL. + +proc skip_stl_tests {} { + # Symbian supports the C++ language, but the STL is missing + # (both headers and libraries). + if { [istarget "arm*-*-symbianelf*"] } { + return 1 + } + + return [skip_cplus_tests] +} + # Return a 1 if I don't even want to try to test FORTRAN. proc skip_fortran_tests {} { @@ -1808,11 +1820,14 @@ proc gdb_compile {source dest type options} { if { ([istarget "*-*-mingw*"] || [istarget *-*-cygwin*] || [istarget *-*-pe*] - || [istarget arm*-*-symbianelf*] || [istarget hppa*-*-hpux*])} { # Do not need anything. } elseif { [istarget *-*-openbsd*] } { lappend new_options "additional_flags=-Wl,-rpath,${outdir}" + } elseif { [istarget arm*-*-symbianelf*] } { + if { $shlib_load } { + lappend new_options "libs=-ldl" + } } else { if { $shlib_load } { lappend new_options "libs=-ldl" @@ -2333,6 +2348,22 @@ proc gdb_load_cmd { args } { return -1 } +# Return the filename to download to the target and load on the target +# for this shared library. Normally just LIBNAME, unless shared libraries +# for this target have separate link and load images. + +proc shlib_target_file { libname } { + return $libname +} + +# Return the filename GDB will load symbols from when debugging this +# shared library. Normally just LIBNAME, unless shared libraries for +# this target have separate link and load images. + +proc shlib_symbol_file { libname } { + return $libname +} + # gdb_download # # Copy a file to the remote target and return its target filename. @@ -2356,7 +2387,7 @@ proc gdb_load_shlibs { args } { } foreach file $args { - gdb_download $file + gdb_download [shlib_target_file $file] } # Even if the target supplies full paths for shared libraries, diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp index 360eceb9b8b..ec60ef91eba 100644 --- a/gdb/testsuite/lib/mi-support.exp +++ b/gdb/testsuite/lib/mi-support.exp @@ -1850,13 +1850,14 @@ proc check_mi_and_console_threads {name} { } } +# Download shared libraries to the target. proc mi_load_shlibs { args } { if {![is_remote target]} { return } foreach file $args { - gdb_download $file + gdb_download [shlib_target_file $file] } # Even if the target supplies full paths for shared libraries, -- 2.30.2