[cfe-dev] AArch64 ASM / Custom Sections and Common Variables

Joel Winarske via cfe-dev cfe-dev at lists.llvm.org
Mon Nov 11 10:40:59 PST 2019


Thanks Tim!

On Mon, Nov 11, 2019, 6:37 AM Tim Northover <t.p.northover at gmail.com> wrote:

> Hi Joel,
>
> On Sat, 9 Nov 2019 at 18:26, Joel Winarske via cfe-dev
> <cfe-dev at lists.llvm.org> wrote:
> > This generates "unsupported relocation type:
> fixup_aarch64_ldr_pcrel_imm19".  If I comment out the first ldr line, it
> builds, as FooValue is part of .text.foo2.
>
> To reference a symbol across sections like this, you'd need to add a
> relocation to the object file, but some formats (MachO I know) have a
> ridiculously small number of permitted relocations and don't have room
> for for pc-relative load relocations. I think you're probably hitting
> that issue.
>
> You've got two options:
>
> 1. Reference FooValue in a way that does have relocations. For example
> (on MachO, I'm afraid I don't know the syntax for COFF, and it should
> just be working anyway for ELF):
>
>     adrp x0, FooValue at PAGE
>     ldr w0, [x0, FooValue at PAGEOFFSET]
>
> 2. Use a local symbol with a different name each time (starting with L
> on MachO), and defined within the section that references it
> (actually, probably before the next global symbol if you're using
> .subsections_via_symbols, which you should be):
>
>     .section .text.foo1
> foo1:
>    ldr w0, LFooValue.foo1
>    ret
> LFooValue.foo1:
>   .word 0
>
>     .section .text.foo2
> foo2:
>    ldr w0, LFooValue.foo2
>    ret
> LFooValue.foo2:
>   .word 0
>
> Cheers.
>
> Tim.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20191111/90111abc/attachment.html>


More information about the cfe-dev mailing list