diff --git a/ssl/test/runner/runner.go b/ssl/test/runner/runner.go
index 1ec3795..1b86a95 100644
--- a/ssl/test/runner/runner.go
+++ b/ssl/test/runner/runner.go
@@ -53,9 +53,9 @@
 	// messageLen is the length, in bytes, of the test message that will be
 	// sent.
 	messageLen int
-	// flag, if not nil, contains a command line flag that will be passed
-	// to the shim program.
-	flag string
+	// flags, if not empty, contains a list of command-line flags that will
+	// be passed to the shim program.
+	flags []string
 }
 
 var clientTests = []testCase{
@@ -95,7 +95,7 @@
 		expectedError: ":WRONG_CURVE:",
 	},
 	{
-		name: "FallbackSCSV",
+		name: "NoFallbackSCSV",
 		config: Config{
 			Bugs: ProtocolBugs{
 				FailIfNotFallbackSCSV: true,
@@ -104,6 +104,15 @@
 		shouldFail:         true,
 		expectedLocalError: "no fallback SCSV found",
 	},
+	{
+		name: "FallbackSCSV",
+		config: Config{
+			Bugs: ProtocolBugs{
+				FailIfNotFallbackSCSV: true,
+			},
+		},
+		flags: []string{"-fallback-scsv"},
+	},
 }
 
 func doExchange(tlsConn *Conn, messageLen int) error {
@@ -134,21 +143,23 @@
 	return nil
 }
 
-func valgrindOf(dbAttach bool, baseArgs ...string) *exec.Cmd {
-	args := []string{"--error-exitcode=99", "--track-origins=yes", "--leak-check=full"}
+func valgrindOf(dbAttach bool, path string, args ...string) *exec.Cmd {
+	valgrindArgs := []string{"--error-exitcode=99", "--track-origins=yes", "--leak-check=full"}
 	if dbAttach {
-		args = append(args, "--db-attach=yes", "--db-command=xterm -e gdb -nw %f %p")
+		valgrindArgs = append(valgrindArgs, "--db-attach=yes", "--db-command=xterm -e gdb -nw %f %p")
 	}
-	args = append(args, baseArgs...)
+	valgrindArgs = append(valgrindArgs, path)
+	valgrindArgs = append(valgrindArgs, args...)
 
-	return exec.Command("valgrind", args...)
+	return exec.Command("valgrind", valgrindArgs...)
 }
 
-func gdbOf(baseArgs ...string) *exec.Cmd {
-	args := []string{"-e", "gdb", "--args"}
-	args = append(args, baseArgs...)
+func gdbOf(path string, args ...string) *exec.Cmd {
+	xtermArgs := []string{"-e", "gdb", "--args"}
+	xtermArgs = append(xtermArgs, path)
+	xtermArgs = append(xtermArgs, args...)
 
-	return exec.Command("xterm", args...)
+	return exec.Command("xterm", xtermArgs...)
 }
 
 func runTest(test *testCase) error {
@@ -170,9 +181,9 @@
 	const shim_path = "../../../build/ssl/test/client_shim"
 	var client *exec.Cmd
 	if *useValgrind {
-		client = valgrindOf(false, shim_path)
+		client = valgrindOf(false, shim_path, test.flags...)
 	} else {
-		client = exec.Command(shim_path)
+		client = exec.Command(shim_path, test.flags...)
 	}
 	//client := gdbOf(shim_path)
 	client.ExtraFiles = []*os.File{clientEnd}
