summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Z. Yang <ezyang@mit.edu>2013-09-05 23:34:58 -0700
committerEdward Z. Yang <ezyang@mit.edu>2013-09-05 23:41:13 -0700
commit7e32b2a931714d886db4d4aa07f8fb5c606930b9 (patch)
tree21c3215ab8d4eb1f3e7b973aefe6bbd512b2e5b5
parent352a2bf85d957fb1949ed11664625601919ff328 (diff)
downloadhaskell-7e32b2a931714d886db4d4aa07f8fb5c606930b9.tar.gz
Windows: load eh_frame as rodata, fixes #8237
Signed-off-by: Edward Z. Yang <ezyang@mit.edu>
-rw-r--r--rts/Linker.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/rts/Linker.c b/rts/Linker.c
index ab5a5574e4..9dc0598ddf 100644
--- a/rts/Linker.c
+++ b/rts/Linker.c
@@ -3798,6 +3798,11 @@ ocGetNames_PEi386 ( ObjectCode* oc )
/* I'm sure this is the Right Way to do it. However, the
alternative of testing the sectab_i->Name field seems to
work ok with Cygwin.
+
+ EZY: We should strongly consider using this style, because
+ it lets us pick up sections that should be added (e.g.
+ for a while the linker did not work due to missing .eh_frame
+ in this section.)
*/
if (sectab_i->Characteristics & MYIMAGE_SCN_CNT_CODE ||
sectab_i->Characteristics & MYIMAGE_SCN_CNT_INITIALIZED_DATA)
@@ -3807,6 +3812,7 @@ ocGetNames_PEi386 ( ObjectCode* oc )
if (0==strcmp(".text",(char*)secname) ||
0==strcmp(".text.startup",(char*)secname) ||
0==strcmp(".rdata",(char*)secname)||
+ 0==strcmp(".eh_frame", (char*)secname)||
0==strcmp(".rodata",(char*)secname))
kind = SECTIONKIND_CODE_OR_RODATA;
if (0==strcmp(".data",(char*)secname) ||