[ARM] register label conflict with blx instruction
Wed Nov 5 11:34:00 GMT 2014
On 11/05/2014 11:40 AM, Richard Earnshaw wrote:
> On 05/11/14 10:23, Christian Bruel wrote:
>> I'm wondering what would be the best way to deal with labels conflicting
>> with a register name in ARM gas.
>> e.g with
>> .type r0, %function
>> .type f, %function
>> blx r0
> bl r0
> then let the linker fix it up. Compilers shouldn't need to emit blx
that was my hope, but it does not always fix it up, I entered a bz
binutils #17505 for this. So thought emitting it directly when possible
would be a alternative.
On a side note, there is a REGISTER_PREFIX in the assembler. What about
having the compiler generates prefixed register names to avoid the
conflict ? %a0 vs a0 ?
>> the assembler will see r0 as a reg and of course produce wrong code.
>> Prefixing labels in the assembler fixes the issue. But this is compiler
>> generated code (from the attribute target work), Changing
>> USER_LABEL_PREFIX would modify all visible symbols which is not
>> desirable. I only wish to generate this for static function to bypass a
>> current limitation with the assembler.
>> Any idea about an arm assembly syntax to avoid naming conflict between
>> regs and symbols for instruction that support boths ?
More information about the Binutils