gdb/testsuite/
authorPedro Alves <palves@redhat.com>
Fri, 12 Mar 2010 19:17:01 +0000 (19:17 +0000)
committerPedro Alves <palves@redhat.com>
Fri, 12 Mar 2010 19:17:01 +0000 (19:17 +0000)
* 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.

15 files changed:
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/commands.exp
gdb/testsuite/gdb.base/ending-run.exp
gdb/testsuite/gdb.base/list.exp
gdb/testsuite/gdb.base/maint.exp
gdb/testsuite/gdb.base/solib-disc.exp
gdb/testsuite/gdb.base/unload.exp
gdb/testsuite/gdb.base/watchpoint-solib.exp
gdb/testsuite/gdb.cp/bs15503.exp
gdb/testsuite/gdb.cp/exception.exp
gdb/testsuite/gdb.cp/mb-templates.exp
gdb/testsuite/gdb.cp/try_catch.exp
gdb/testsuite/gdb.cp/userdef.exp
gdb/testsuite/lib/gdb.exp
gdb/testsuite/lib/mi-support.exp

index 2d6fbcd4b6b1c173307af17f155839636ef51245..f4211d1bca0d53530f412e80d6c2a3b84e64f2f7 100644 (file)
@@ -1,3 +1,28 @@
+2010-03-12  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       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  <pedro@codesourcery.com>
  
        * gdb.trace/backtrace.exp: Adjust for x86 and x86_64.
index b3257aaf9edfc684a44136565adc7ba93c3bc044..8bb414794af62580f0b76662fb1c01bc69e8049c 100644 (file)
@@ -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" }
index 7086c5d60a08a220cb35db79a6b10c5733e90393..7312f49f160c8f8690cec76858b7b71df807d9b0 100644 (file)
@@ -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"
     }
index 11804c834f268f961f04dedda3e0819aea5843f0..03bb59df6ca23fa02f7ac1b8ce5a4399594a263d 100644 (file)
@@ -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 {
index 6cff01339bb3b9ca7d2fe8530fb8b382eda94a93..0707c88975c161bf70466ca5130dc0d4de450441 100644 (file)
@@ -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" }
 }
index 552cd0730703f1dc2a4c120a5ce68237ed1e6f6f..e6fdbe90919272c563b46dd7757b3a560420158a 100644 (file)
@@ -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] != "" } {
index 9251ee7d7ebd399a00298161bd5b4ba6d28d14a2..20c05337c57cedc45fcb69bf9464025e816a0b3f 100644 (file)
@@ -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"
index eb093cd03b2ad0679794277cfb08b0f67d095cb6..f33932430a46f74d38f9438e6af801ba349b1481 100644 (file)
@@ -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] != ""} {
index df86acd5a92ccc84ce9e2e67fbad818edaa28a75..bdd4dd5901127c58d934c48bfd1eeff968b8a2fb 100644 (file)
@@ -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
 }
 
index 03c884777a2c8ff7062e58ca5026c06a6ac9b4a1..e065877c4f18cae8856248b99984f6ab5c5afd6d 100644 (file)
@@ -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*-*-*"] } {
index 1a56e3b6486c9852f2f06449dcf23afbcee4f6a4..ed4443383bfdef141966ba8d0c821a2124040d54 100644 (file)
@@ -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*-*-*"] } {
index 35ecfe80ded451cd9c17351fb7275f0c644001e9..86cb7b11e1b30914c830632afe182aaeec477c61 100644 (file)
@@ -22,7 +22,7 @@ if $tracelevel then {
         strace $tracelevel
         }
 
-if { [skip_cplus_tests] } { continue }
+if { [skip_stl_tests] } { continue }
 
 #
 # test running programs
index 2bbf95e91e016cbb89a1431189b58c63376eb77d..5e47d9079e0e2edfc56b0384ea99e3ca21c1a098 100644 (file)
@@ -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*-*-*"] } {
index fbe028548fb5d5305377482fecb0966c63b15892..01ebc52bb29dad0ac3b7b90c8127ca48e7d1ea50 100644 (file)
@@ -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,
index 360eceb9b8b1e2df82ed1cf562993d8b2909911d..ec60ef91ebac57b0d6696d22890dcf06902d3f0c 100644 (file)
@@ -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,