projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
FIX BUILD with ghc-6.4.x
[ghc-hetmet.git]
/
driver
/
split
/
ghc-split.lprl
diff --git
a/driver/split/ghc-split.lprl
b/driver/split/ghc-split.lprl
index
d54e1b2
..
1750613
100644
(file)
--- a/
driver/split/ghc-split.lprl
+++ b/
driver/split/ghc-split.lprl
@@
-138,7
+138,7
@@
sub collectDyldStuff_darwin {
while ( 1 ) {
$_ = <TMPI>;
while ( 1 ) {
$_ = <TMPI>;
- if ( $_ eq '' || /^L(_.+)\$.+:/ ) {
+ if ( $_ eq '' || (/^L(_.+)\$.+:/ && !(/^L(.*)\$stub_binder:/))) {
if ( $label ne '' ) {
$DyldChunksDefined{$label} .= $section . $alignment . $chunk_label . $ chunk;
if( $section =~ s/\.data/\.non_lazy_symbol_pointer/ ) {
if ( $label ne '' ) {
$DyldChunksDefined{$label} .= $section . $alignment . $chunk_label . $ chunk;
if( $section =~ s/\.data/\.non_lazy_symbol_pointer/ ) {
@@
-155,7
+155,7
@@
sub collectDyldStuff_darwin {
$section = $cur_section;
$alignment = $cur_alignment;
print STDERR "label: $label\n" if $Dump_asm_splitting_info;
$section = $cur_section;
$alignment = $cur_alignment;
print STDERR "label: $label\n" if $Dump_asm_splitting_info;
- } elsif ( /^\s*\.(symbol_stub|picsymbol_stub|lazy_symbol_pointer|non_lazy_symbol_pointer|data|section __IMPORT,.*)/ ) {
+ } elsif ( /^\s*\.(symbol_stub|picsymbol_stub|lazy_symbol_pointer|non_lazy_symbol_pointer|data|section __IMPORT,.*|section __DATA, __la_sym_ptr(2|3),lazy_symbol_pointers)/ ) {
$cur_section = $_;
printf STDERR "section: $cur_section\n" if $Dump_asm_splitting_info;
$cur_alignment = ''
$cur_section = $_;
printf STDERR "section: $cur_section\n" if $Dump_asm_splitting_info;
$cur_alignment = ''
@@
-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]
# 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);
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]
# 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);
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
}
# 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;
local($label) = $3;
local($body) = $2;