This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

instruction equivalent to movw,movt with position independent and PC relocatable.

Using movw and movt to load a label address into a register in Arm 32 architecture. but this is not position independent  code.

movw r1, #:lower16:ASM_NAME(forkx)
movt r1, #:upper16:ASM_NAME(forkx)

As per the manual also it specifies that it will be resolved at the link time.

Need a position independent code, so as per the manual adr, adrl can be used, but getting below error:

../asm-arm/unix_arm.S:115:1: error: unsupported relocation on symbol
adr r1, __be_forkx

../asm-arm/unix_arm.S:60:1: error: invalid instruction, did you mean: adr?
adrl r1, __be_forkx

it seems label can not be used in the aarch32, it is fine in aarch64 and works as intendent.

is the usage of adr command is improper? Is there a way to achieve this in aarch32?  is there any equivalent command that can be used?

Parents
  • ../asm-arm/unix_arm.S:115:1: error: unsupported relocation on symbol
    adr r1, __be_forkx

    ../asm-arm/unix_arm.S:60:1: error: invalid instruction, did you mean: adr?
    adrl r1, __be_forkx

    The encoding for adr instruction (in the A32 ISA) says that it can address locations which are within some range [4KB either side of that instruction is for T32]. Does the location "__be_forkx" satisfy that constraint?

    Why is there a need for generating PIC devoid of any relocations?

    Edit: Correction in the range of adr. I originally listed the restriction for T32.

Reply
  • ../asm-arm/unix_arm.S:115:1: error: unsupported relocation on symbol
    adr r1, __be_forkx

    ../asm-arm/unix_arm.S:60:1: error: invalid instruction, did you mean: adr?
    adrl r1, __be_forkx

    The encoding for adr instruction (in the A32 ISA) says that it can address locations which are within some range [4KB either side of that instruction is for T32]. Does the location "__be_forkx" satisfy that constraint?

    Why is there a need for generating PIC devoid of any relocations?

    Edit: Correction in the range of adr. I originally listed the restriction for T32.

Children