From: wolfgang Date: Thu, 10 Feb 2005 05:46:46 +0000 (+0000) Subject: [project @ 2005-02-10 05:46:46 by wolfgang] X-Git-Tag: Initial_conversion_from_CVS_complete~1091 X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=14a0bb7ea78b88fa4c0daeb687d9a81e7e7da861 [project @ 2005-02-10 05:46:46 by wolfgang] Fix Mac OS X-specific breakage introduced by rev. 1.67 of ghc/includes/Stg.h. Adding the used attribute to static functions caused gcc to emit Apple-specific .no_dead_strip directives, which messed things up. --- diff --git a/ghc/driver/mangler/ghc-asm.lprl b/ghc/driver/mangler/ghc-asm.lprl index d704f09..25c9b17 100644 --- a/ghc/driver/mangler/ghc-asm.lprl +++ b/ghc/driver/mangler/ghc-asm.lprl @@ -531,7 +531,14 @@ sub mangle_asm { $chk[++$i] = $_; $chkcat[$i] = 'rodata'; $chksymb[$i] = ''; - + } elsif ( $TargetPlatform =~ /-darwin/ + && (/^\s*\.subsections_via_symbols/ + ||/^\s*\.no_dead_strip.*/) { + # 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. + # The .no_dead_strip directives are actually put there by + # the gcc3 "used" attribute on entry points. } elsif ( /^\s+/ ) { # most common case first -- a simple line! # duplicated from the bottom @@ -540,12 +547,6 @@ 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-/