summaryrefslogtreecommitdiff
path: root/ghc/driver
diff options
context:
space:
mode:
authorwolfgang <unknown>2005-01-12 05:53:07 +0000
committerwolfgang <unknown>2005-01-12 05:53:07 +0000
commitb9472fcf1266927eb3c2083218e2eb9acd78f848 (patch)
tree6731061af2b4140bfef33b317f7b1b3bd3b035ad /ghc/driver
parent0668424a89238b3f64b9d33582bc819b957bdd25 (diff)
downloadhaskell-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.lprl22
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/