From 204965d6c5447c5bab4d3f8d453c146c8a05f03f Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 16 Jan 2008 19:56:12 +0000 Subject: [PATCH] Tweak the splitter We were generating a label ".LnLC7", which the splitter was confusing with a literal constant (LC). The end result was the assembler tripping up on ".Ln.text". --- driver/split/ghc-split.lprl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/driver/split/ghc-split.lprl b/driver/split/ghc-split.lprl index 3bdb04b..1750613 100644 --- a/driver/split/ghc-split.lprl +++ b/driver/split/ghc-split.lprl @@ -369,7 +369,7 @@ sub process_asm_block_iX86 { # http://bugs6.perl.org/rt2/Ticket/Display.html?id=1760 and illustrated # by the seg fault of perl -e '("x\n" x 5000) =~ /(.*\n)+/' # -- ccshan 2002-09-05] - while ( ($str =~ /(\.?(LC\d+):\n(\t\.(ascii|string).*\n|\s*\.byte.*\n){1,100})/ )) { + while ( ($str =~ /((?:^|\.)(LC\d+):\n(\t\.(ascii|string).*\n|\s*\.byte.*\n){1,100})/ )) { local($label) = $2; local($body) = $1; local($prefix, $suffix, $*) = ($`, $', 0); @@ -407,7 +407,7 @@ sub process_asm_block_x86_64 { # http://bugs6.perl.org/rt2/Ticket/Display.html?id=1760 and illustrated # by the seg fault of perl -e '("x\n" x 5000) =~ /(.*\n)+/' # -- ccshan 2002-09-05] - while ( ($str =~ /(\.?(LC\d+):\n(\t\.(ascii|string).*\n|\s*\.byte.*\n){1,100})/ )) { + while ( ($str =~ /((?:^|\.)(LC\d+):\n(\t\.(ascii|string).*\n|\s*\.byte.*\n){1,100})/ )) { local($label) = $2; local($body) = $1; local($prefix, $suffix, $*) = ($`, $', 0); @@ -502,7 +502,7 @@ sub process_asm_block_mips { } # remove/record any literal constants defined here - while ( $str =~ /(\t\.rdata\n\t\.align \d\n)?(\$(LC\d+):\n(\t\.byte\t.*\n)+)/ ) { + while ( $str =~ /(\t\.rdata\n\t\.align \d\n)?^(\$(LC\d+):\n(\t\.byte\t.*\n)+)/ ) { local($label) = $3; local($body) = $2; -- 1.7.10.4