projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
50fd26c
)
Have the splitter duplicate the .note.GNU-stack
author
Ian Lynagh
<igloo@earth.li>
Mon, 8 Jan 2007 12:59:16 +0000
(12:59 +0000)
committer
Ian Lynagh
<igloo@earth.li>
Mon, 8 Jan 2007 12:59:16 +0000
(12:59 +0000)
driver/split/ghc-split.lprl
patch
|
blob
|
history
diff --git
a/driver/split/ghc-split.lprl
b/driver/split/ghc-split.lprl
index
4d159ec
..
d54e1b2
100644
(file)
--- a/
driver/split/ghc-split.lprl
+++ b/
driver/split/ghc-split.lprl
@@
-25,6
+25,7
@@
exit(0);
\begin{code}
sub split_asm_file {
local($asm_file) = @_;
\begin{code}
sub split_asm_file {
local($asm_file) = @_;
+ my @pieces = ();
open(TMPI, "< $asm_file") || &tidy_up_and_die(1,"$Pgm: failed to open `$asm_file' (to read)\n");
open(TMPI, "< $asm_file") || &tidy_up_and_die(1,"$Pgm: failed to open `$asm_file' (to read)\n");
@@
-54,34
+55,37
@@
sub split_asm_file {
# grab and de-mangle a section of the .s file...
$s_stuff = &ReadTMPIUpToAMarker ( $_, $octr );
# grab and de-mangle a section of the .s file...
$s_stuff = &ReadTMPIUpToAMarker ( $_, $octr );
- $this_piece = &process_asm_block ( $s_stuff );
+ $pieces[$octr] = &process_asm_block ( $s_stuff );
+ }
- # output to a file of its own
- # open a new output file...
- $ofname = "${Tmp_prefix}__${octr}.s";
- open(OUTF, "> $ofname") || die "$Pgm: can't open output file: $ofname\n";
+ # Make sure that we still have some output when the input file is empty
+ if ($octr == 0) {
+ $octr = 1;
+ $pieces[$octr] = '';
+ }
- print OUTF $prologue_stuff;
- print OUTF $this_piece;
+ $NoOfSplitFiles = $octr;
- close(OUTF)
- || &tidy_up_and_die(1,"$Pgm:Failed writing ${Tmp_prefix}__${octr}.s\n");
+ if ($pieces[$NoOfSplitFiles] =~ /(\n[ \t]*\.section[ \t]+\.note\.GNU-stack,[^\n]*\n)/) {
+ $note_gnu_stack = $1;
+ for $octr (1..($NoOfSplitFiles - 1)) {
+ $pieces[$octr] .= $note_gnu_stack;
+ }
}
}
- # Make sure that we still have some output when the input file is empty
- if ( $octr == 0 ) {
- $octr = 1;
+ for $octr (1..$NoOfSplitFiles) {
+ # output to a file of its own
+ # open a new output file...
$ofname = "${Tmp_prefix}__${octr}.s";
open(OUTF, "> $ofname") || die "$Pgm: can't open output file: $ofname\n";
print OUTF $prologue_stuff;
$ofname = "${Tmp_prefix}__${octr}.s";
open(OUTF, "> $ofname") || die "$Pgm: can't open output file: $ofname\n";
print OUTF $prologue_stuff;
+ print OUTF $pieces[$octr];
close(OUTF)
|| &tidy_up_and_die(1,"$Pgm:Failed writing ${Tmp_prefix}__${octr}.s\n");
}
close(OUTF)
|| &tidy_up_and_die(1,"$Pgm:Failed writing ${Tmp_prefix}__${octr}.s\n");
}
- $NoOfSplitFiles = $octr;
-
close(TMPI) || &tidy_up_and_die(1,"Failed reading $asm_file\n");
}
close(TMPI) || &tidy_up_and_die(1,"Failed reading $asm_file\n");
}