Recent versions of gcc seem to output strings as sequences of .bytes,
which the splitter didn't recognise. The result was that constant
strings were being duplicated in all the split .o files (again... this
is a particularly fragile "optimisation" and breaks on a regular basis).
$str = "\.text\n\t.align 4\n" . $str;
# remove/record any literal constants defined here
- while ( ($str =~ /(\.?(LC\d+):\n(\t\.(ascii|string).*\n)+)/ )) {
+ while ( ($str =~ /(\.?(LC\d+):\n(\t\.(ascii|string).*\n|\.byte.*\n)+)/ )) {
local($label) = $2;
local($body) = $1;
$LocalConstant{$label} = $body;
- $str =~ s/\.?LC\d+:\n(\t\.(ascii|string).*\n)+//;
+ $str =~ s/\.?LC\d+:\n(\t\.(ascii|string).*\n|\.byte.*\n)+//;
}
# inject definitions for any local constants now used herein