https://bugzilla.redhat.com/show_bug.cgi?id=1460254
Nick Clifton nickc@redhat.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags|needinfo?(nickc@redhat.com) |
--- Comment #7 from Nick Clifton nickc@redhat.com --- Right - so ^A in a symbol name would normally indicate the use of a dollar local label in the assembler sources:
Dollar Local Labels -------------------
On some targets `as' also supports an even more local form of local labels called dollar labels. These labels go out of scope (i.e., they become undefined) as soon as a non-local label is defined. Thus they remain valid for only a small region of the input source code. Normal local labels, by contrast, remain in scope for the entire file, or until they are redefined by another occurrence of the same local label.
Dollar labels are defined in exactly the same way as ordinary local labels, except that they have a dollar sign suffix to their numeric value, e.g., `55$:'.
They can also be distinguished from ordinary local labels by their transformed names which use ASCII character `\001' (control-A) as the magic character to distinguish them from ordinary labels. For example, the fifth definition of `6$' may be named `.L6C-A5'.
However this feature may not be to blame in this case since dollar local labels all have the form of L<number>^A<number> and the symbols being matched by the code in comment #3 do not conform to this template.
I think instead that the problem is most likely that the code added by the binutils-2.28-gas-comp_dir.patch is buggy. I suspect that it is using a buffer for a symbol name that is either freed before use or held on the stack and corrupted via stack unwinding. It is likely that running the assembler with address sanitization enabled would detect this.
I am not sure why the problem should be specific to the s390x, since the code in the patch is generic, and the s390x assembler backend does not do anything particularly funny. If there was a small testcase I would like to investigate further. (By small I am hoping for something like an assembler source file and command line, which I can then test using an s390 cross assembler. Finding an s390 machine with f26 installed would be a bit of a pain).
Cheers Nick