https://bugzilla.redhat.com/show_bug.cgi?id=1460254
Nick Clifton <nickc(a)redhat.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |MODIFIED
Fixed In Version| |binutils-2.28-11.fc27
Doc Type|If docs needed, set a value |Bug Fix
--- Doc Text *updated* ---
Cause:
The s390 assembler would emit fake local labels whose name is L0^A.
Consequence:
The presence of a control character (ASCII code 001) in a symbol name was confusing the
golang build machinery.
Fix:
Stop the s390 assembler from emitting these symbols.
Result:
The golang build machinery works.
--- Comment #17 from Nick Clifton <nickc(a)redhat.com> ---
Found it. The patch mentioned by Andreas on comment #12 was the clue. What
happens is that the code added by the gas-comp-dir.patch generates fake local
labels (whose name is .L0^A - but I had forgotten this), and then it expects
the backend to convert these into section relative offsets. Most targets do
this, but for some reason the s390 does not. (I believe that this is a snafu
on the part of the s390 backend. There is no good reason not to convert these
labels).
The patch from comment #12 had the side effect of fixing this bug, because it
allows non-pc-relative symbols in the .debug_str section to be adjusted, and
these fake local label just happen to match that criteria. But it does not fix
the broader problem of ensuring that all fake local labels are converted. So I
have added an extra patch to the rawhide binutils sources to do this, and I
will also commit a patch to the FSF mainline sources as well.
Cheers
Nick
--
You are receiving this mail because:
You are on the CC list for the bug.