This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[v2] [patch, testsuite] skip tests in with_target_charset if no ICONV support


On 09/16/2015 10:19 PM, Doug Evans wrote:
Sandra Loosemore <sandra@codesourcery.com> writes:
If GDB is configured without ICONV support, it only knows about the
charset "ISO-8859-1".  Tests that use with_target_charset with some
other character set (e.g., gdb.base/printcmds.exp) presumably depend
on exactly that character set being supported and can't be expected to
work properly in its absence.  This patch makes with_target_charset
skip those tests as unsupported if switching to the specified
character set fails.  OK to commit?

The return value of with_target_charset is not well defined.
It's never used AFAICT (modulo the case where there's a tcl error).

     if {$code == 1} {
	global errorInfo errorCode
	return -code $code -errorinfo $errorInfo -errorcode $errorCode $result
     } else {
	return -code $code $result
     }

$ grep with_target_charset */*.exp
gdb.base/printcmds.exp:    with_target_charset "ASCII" {
gdb.base/printcmds.exp:    with_target_charset "ASCII" {
gdb.base/printcmds.exp:    with_target_charset "ASCII" {
gdb.base/setvar.exp:with_target_charset "ASCII" {
gdb.base/setvar.exp:with_target_charset "ASCII" {
gdb.base/setvar.exp:with_target_charset "ASCII" {
lib/gdb.exp:proc with_target_charset { target_charset body } {

I just wonder whether "return -1" is correct.
Can we document that the function is "void" and don't return
anything (except in the case of a tcl error: code == 1)?

I've revised the patch to do that. Is the attached version OK to commit? There were no other comments on the original post.

-Sandra

2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>

	gdb/testsuite/
	* lib/gdb.exp (with_target_charset): Skip tests as unsupported
	if target_charset is not valid, e.g. due to no ICONV support.
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 015e202..f746388 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -2028,6 +2028,7 @@ proc with_gdb_prompt { prompt body } {
 
 # Run tests in BODY with target-charset setting to TARGET_CHARSET.  When
 # BODY is finished, restore target-charset.
+# Returns 1 in case of a TCL error and void otherwise.
 
 proc with_target_charset { target_charset body } {
     global gdb_prompt
@@ -2045,7 +2046,17 @@ proc with_target_charset { target_charset body } {
 	}
     }
 
-    gdb_test_no_output "set target-charset $target_charset" ""
+    # Setting the charset may fail if GDB was configured without
+    # ICONV support.
+    gdb_test_multiple "set target-charset $target_charset" "" {
+	-re "Undefined item.*$gdb_prompt " {
+	    unsupported "Unknown charset $target_charset"
+	    return
+	}
+	-re ".*$gdb_prompt " {
+	    pass "set target-charset $target_charset"
+	}
+    }
 
     set code [catch {uplevel 1 $body} result]
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]