[project @ 2005-01-23 06:10:15 by wolfgang]
[ghc-hetmet.git] / ghc / driver / mangler / ghc-asm.lprl
index e868f33..77010c8 100644 (file)
@@ -405,7 +405,7 @@ sub init_TARGET_STUFF {
     $T_CONST_LBL    = '^\.LLC(\d+):$'; # regexp for what such a lbl looks like
     $T_POST_LBL     = ':';
 
-    $T_MOVE_DIRVS   = '^((\s+\.align\s+\d+|\s+\.proc\s+\d+|\s+\.global\s+\S+|\.text|\.data|\.seg|\.stab.*|\t?\.section.*|\s+\.type.*|\s+\.size.*)\n)';
+    $T_MOVE_DIRVS   = '^((\s+\.align\s+\d+|\s+\.proc\s+\d+|\s+\.global\s+\S+|\.text|\.data|\.seg|\.stab.*|\s+?\.section.*|\s+\.type.*|\s+\.size.*)\n)';
     $T_COPY_DIRVS   = '\.(global|globl|proc|stab)';
 
     $T_DOT_WORD     = '\.(long|word|nword|xword|byte|half|short|skip|uahalf|uaword)';
@@ -533,7 +533,12 @@ sub mangle_asm {
        } elsif ( /\.\.ng:$/ && $TargetPlatform =~ /^alpha-/ ) {
            # Alphas: Local labels not to be confused with new chunks
            $chk[$i] .= $_;
-  
+        } elsif ( $TargetPlatform =~ /-darwin/
+                && /^\t\.subsections_via_symbols/) {
+            # Don't allow Apple's linker to do any dead-stripping of symbols
+            # in this file, because it will mess up info-tables in mangled
+            # code.
+
        # NB: all the rest start with a non-space
 
        } elsif ( $TargetPlatform =~ /^mips-/