This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ARM] register label conflict with blx instruction



On 11/05/2014 11:40 AM, Richard Earnshaw wrote:
On 05/11/14 10:23, Christian Bruel wrote:
Hello,

I'm wondering what would be the best way to deal with labels conflicting
with a register name in ARM gas.

e.g with

      .thumb
      .thumb_func
      .type    r0, %function
r0:
    ...

      .arm
      .type    f, %function
f:
      blx    r0

Write
	bl	r0

then let the linker fix it up.  Compilers shouldn't need to emit blx
<label>.

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 ?

Thanks

Christian




R.

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 ?

Thanks,

Christian







Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]