summaryrefslogtreecommitdiff
path: root/rts/Profiling.c
diff options
context:
space:
mode:
authorSimon Marlow <simonmar@microsoft.com>2008-05-19 12:51:01 +0000
committerSimon Marlow <simonmar@microsoft.com>2008-05-19 12:51:01 +0000
commitf0a352756958c7c841da25143f7fdea610ab9a21 (patch)
treec366757ff5d7021a8cd18a2c773073fa21ffa144 /rts/Profiling.c
parent90b9566607ef837329434657c8fabc4bdffdf1af (diff)
downloadhaskell-f0a352756958c7c841da25143f7fdea610ab9a21.tar.gz
FIX #1955: confusion between .exe.hp and .hp suffixes for heap profiles
Now we use <prog>.hp and <prog>.prof consistently.
Diffstat (limited to 'rts/Profiling.c')
-rw-r--r--rts/Profiling.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/rts/Profiling.c b/rts/Profiling.c
index 77fab52b6c..d729c8a09e 100644
--- a/rts/Profiling.c
+++ b/rts/Profiling.c
@@ -268,6 +268,21 @@ ccsSetSelected( CostCentreStack *ccs )
static void
initProfilingLogFile(void)
{
+ char *prog;
+
+ prog = arenaAlloc(prof_arena, strlen(prog_name) + 1);
+ strcpy(prog, prog_name);
+#ifdef mingw32_HOST_OS
+ // on Windows, drop the .exe suffix if there is one
+ {
+ char *suff;
+ suff = strrchr(prog,'.');
+ if (suff != NULL && !strcmp(suff,".exe")) {
+ *suff = '\0';
+ }
+ }
+#endif
+
if (RtsFlags.CcFlags.doCostCentres == 0 &&
RtsFlags.ProfFlags.doHeapProfile != HEAP_BY_RETAINER)
{
@@ -278,8 +293,8 @@ initProfilingLogFile(void)
else
{
/* Initialise the log file name */
- prof_filename = arenaAlloc(prof_arena, strlen(prog_name) + 6);
- sprintf(prof_filename, "%s.prof", prog_name);
+ prof_filename = arenaAlloc(prof_arena, strlen(prog) + 6);
+ sprintf(prof_filename, "%s.prof", prog);
/* open the log file */
if ((prof_file = fopen(prof_filename, "w")) == NULL) {
@@ -310,9 +325,9 @@ initProfilingLogFile(void)
if (RtsFlags.ProfFlags.doHeapProfile) {
/* Initialise the log file name */
- hp_filename = arenaAlloc(prof_arena, strlen(prog_name) + 6);
- sprintf(hp_filename, "%s.hp", prog_name);
-
+ hp_filename = arenaAlloc(prof_arena, strlen(prog) + 6);
+ sprintf(hp_filename, "%s.hp", prog);
+
/* open the log file */
if ((hp_file = fopen(hp_filename, "w")) == NULL) {
debugBelch("Can't open profiling report file %s\n",