From 890f22ef8eff8dbb5b31fa221dfce65a7b84c202 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Thu, 16 Dec 2010 11:44:52 +0000 Subject: [PATCH] fix #3910 --- rts/RtsFlags.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index b0dd42b..067986f 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -454,16 +454,9 @@ setupRtsFlags(int *argc, char *argv[], int *rts_argc, char *rts_argv[]) mode = PGM; } else if (mode == RTS && *rts_argc < MAX_RTS_ARGS-1) { - if ((rtsOptsEnabled == rtsOptsAll) || - strequal(argv[arg], "--info")) { rts_argv[(*rts_argc)++] = argv[arg]; } - else { - errorBelch("Most RTS options are disabled. Link with -rtsopts to enable them."); - stg_exit(EXIT_FAILURE); - } - } - else if (mode == PGM) { + else if (mode == PGM) { argv[(*argc)++] = argv[arg]; } else { @@ -485,7 +478,25 @@ setupRtsFlags(int *argc, char *argv[], int *rts_argc, char *rts_argv[]) error = rtsTrue; } else { - switch(rts_argv[arg][1]) { + + switch(rts_argv[arg][1]) { + case '-': + if (strequal("info", &rts_argv[arg][2])) { + printRtsInfo(); + stg_exit(0); + } + break; + default: + break; + } + + if (rtsOptsEnabled != rtsOptsAll) + { + errorBelch("Most RTS options are disabled. Link with -rtsopts to enable them."); + stg_exit(EXIT_FAILURE); + } + + switch(rts_argv[arg][1]) { /* process: general args, then PROFILING-only ones, then CONCURRENT-only, TICKY-only (same order as defined in -- 1.7.10.4