Enable checkProddableBlock on x86_64
authorSimon Marlow <marlowsd@gmail.com>
Sat, 21 May 2016 16:36:49 +0000 (18:36 +0200)
committerBen Gamari <ben@smart-cactus.org>
Sat, 21 May 2016 17:10:59 +0000 (19:10 +0200)
We've been seeing some memory corruption after using the linker, and I
want to enable this to see if it catches anything.

Test Plan:
* validate
* modified the linker_unload test to remove the performGC calls to use
  as a benchmark, saw no significant difference after this change.

Reviewers: bgamari, erikd, austin

Reviewed By: austin

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2245

rts/Linker.c

index 61b10d8..e867d04 100644 (file)
@@ -4034,7 +4034,7 @@ ocGetNames_PEi386 ( ObjectCode* oc )
 
       if (kind != SECTIONKIND_OTHER && end >= start) {
           addSection(&sections[i], kind, SECTION_NOMEM, start, sz, 0, 0, 0);
-          addProddableBlock(oc, start, end - start + 1);
+          addProddableBlock(oc, start, sz);
       }
 
       stgFree(secname);
@@ -5756,7 +5756,7 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC,
 
       IF_DEBUG(linker,debugBelch("Reloc: P = %p   S = %p   A = %p\n",
                                         (void*)P, (void*)S, (void*)A ));
-      /* checkProddableBlock ( oc, (void*)P ); */
+      checkProddableBlock(oc, (void*)P, sizeof(Elf_Word));
 
 #if defined(sparc_HOST_ARCH) || defined(powerpc_HOST_ARCH) || defined(x86_64_HOST_ARCH)
       value = S + A;