diff options
author | wolfgang <unknown> | 2005-01-12 05:53:07 +0000 |
---|---|---|
committer | wolfgang <unknown> | 2005-01-12 05:53:07 +0000 |
commit | b9472fcf1266927eb3c2083218e2eb9acd78f848 (patch) | |
tree | 6731061af2b4140bfef33b317f7b1b3bd3b035ad /ghc/driver | |
parent | 0668424a89238b3f64b9d33582bc819b957bdd25 (diff) | |
download | haskell-b9472fcf1266927eb3c2083218e2eb9acd78f848.tar.gz |
[project @ 2005-01-12 05:53:07 by wolfgang]
Move _srtd and _closure_tbl to read-only data instead of text
(these things contain pointers to other symbols, so they can't go into
.text for position-independent code).
Diffstat (limited to 'ghc/driver')
-rw-r--r-- | ghc/driver/mangler/ghc-asm.lprl | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/ghc/driver/mangler/ghc-asm.lprl b/ghc/driver/mangler/ghc-asm.lprl index 00af653b78..e868f33c89 100644 --- a/ghc/driver/mangler/ghc-asm.lprl +++ b/ghc/driver/mangler/ghc-asm.lprl @@ -655,16 +655,22 @@ sub mangle_asm { || /^${T_US}.*_slow${T_POST_LBL}$/o # slow entry || /^${T_US}__stginit.*${T_POST_LBL}$/o # __stginit<module> || /^${T_US}.*_btm${T_POST_LBL}$/o # large bitmaps - || /^${T_US}.*_srtd${T_POST_LBL}$/o # large bitmaps || /^${T_US}.*_fast${T_POST_LBL}$/o # primops - || /^${T_US}.*_closure_tbl${T_POST_LBL}$/o # closure tables || /^_uname:/o # x86/Solaris2 - ) { - $chkcat[$i] = 'misc'; - } else { - print STDERR "Warning: retaining unknown function \`$thing' in output from C compiler\n"; - $chkcat[$i] = 'unknown'; - } + ) + { + $chkcat[$i] = 'misc'; + } elsif ( + /^${T_US}.*_srtd${T_POST_LBL}$/o # large bitmaps + || /^${T_US}.*_closure_tbl${T_POST_LBL}$/o # closure tables + ) + { + $chkcat[$i] = 'rodata'; + } else + { + print STDERR "Warning: retaining unknown function \`$thing' in output from C compiler\n"; + $chkcat[$i] = 'unknown'; + } } elsif ( $TargetPlatform =~ /^powerpc-apple-.*/ && ( /^\.picsymbol_stub/ |