[Document +RTS --info, and make it a Read'able Haskell value Ian Lynagh **20070816183259] { hunk ./docs/users_guide/runtime_control.xml 663 + + + + Getting information about the RTS + + RTS + + It is possible to ask the RTS to give some information about + itself. To do this, use the flag, e.g. + +$ ./a.out +RTS --info + [("GHC RTS", "Yes") + ,("GHC version", "6.7") + ,("RTS way", "rts_p") + ,("Host platform", "x86_64-unknown-linux") + ,("Build platform", "x86_64-unknown-linux") + ,("Target platform", "x86_64-unknown-linux") + ,("Compiler unregisterised", "NO") + ,("Tables next to code", "YES") + ] + + The information is formatted such that it can be read as a + of type [(String, String)]. hunk ./rts/Makefile 152 -RtsFlags_CC_OPTS += -DProjectVersion=\"$(ProjectVersion)\" -RtsFlags_CC_OPTS += -DRtsWay=\"rts$(_way)\" -RtsFlags_CC_OPTS += -DHostPlatform=\"$(HOSTPLATFORM)\" -RtsFlags_CC_OPTS += -DBuildPlatform=\"$(BUILDPLATFORM)\" -RtsFlags_CC_OPTS += -DTargetPlatform=\"$(TARGETPLATFORM)\" -RtsFlags_CC_OPTS += -DGhcUnregisterised=\"$(GhcUnregisterised)\" -RtsFlags_CC_OPTS += -DGhcEnableTablesNextToCode=\"$(GhcEnableTablesNextToCode)\" +RtsUtils_CC_OPTS += -DProjectVersion=\"$(ProjectVersion)\" +RtsUtils_CC_OPTS += -DRtsWay=\"rts$(_way)\" +RtsUtils_CC_OPTS += -DHostPlatform=\"$(HOSTPLATFORM)\" +RtsUtils_CC_OPTS += -DBuildPlatform=\"$(BUILDPLATFORM)\" +RtsUtils_CC_OPTS += -DTargetPlatform=\"$(TARGETPLATFORM)\" +RtsUtils_CC_OPTS += -DGhcUnregisterised=\"$(GhcUnregisterised)\" +RtsUtils_CC_OPTS += -DGhcEnableTablesNextToCode=\"$(GhcEnableTablesNextToCode)\" hunk ./rts/RtsFlags.c 687 - char *s; - printf("RTS info:\n"); - printf("RTS from GHC " ProjectVersion "\n"); - printf("RTS way " RtsWay "\n"); - printf("Host platform " HostPlatform "\n"); - printf("Build platform " BuildPlatform "\n"); - printf("Target platform " TargetPlatform "\n"); - s = strcmp(GhcUnregisterised, "YES") == 0 ? "un" : ""; - printf("Compiler is %sregisterised\n", s); - s = strcmp(GhcEnableTablesNextToCode, "YES") == 0 - ? "" : "not "; - printf("Tables are %snext to code\n", s); + printRtsInfo(); hunk ./rts/RtsUtils.c 464 +static void mkRtsInfoPair(char *key, char *val) { + /* XXX should check for "s, \s etc in key and val */ + printf(" ,(\"%s\", \"%s\")\n", key, val); +} + +void printRtsInfo(void) { + /* The first entry is just a hack to make it easy to get the + * commas right */ + printf(" [(\"GHC RTS\", \"Yes\")\n"); + mkRtsInfoPair("GHC version", ProjectVersion); + mkRtsInfoPair("RTS way", RtsWay); + mkRtsInfoPair("Host platform", HostPlatform); + mkRtsInfoPair("Build platform", BuildPlatform); + mkRtsInfoPair("Target platform", TargetPlatform); + mkRtsInfoPair("Compiler unregisterised", GhcUnregisterised); + mkRtsInfoPair("Tables next to code", GhcEnableTablesNextToCode); + printf(" ]\n"); +} + + hunk ./rts/RtsUtils.h 53 + +void printRtsInfo(void); }