<div dir="auto">Thanks Tim!</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 11, 2019, 6:37 AM Tim Northover <<a href="mailto:t.p.northover@gmail.com">t.p.northover@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Joel,<br>
<br>
On Sat, 9 Nov 2019 at 18:26, Joel Winarske via cfe-dev<br>
<<a href="mailto:cfe-dev@lists.llvm.org" target="_blank" rel="noreferrer">cfe-dev@lists.llvm.org</a>> wrote:<br>
> 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.<br>
<br>
To reference a symbol across sections like this, you'd need to add a<br>
relocation to the object file, but some formats (MachO I know) have a<br>
ridiculously small number of permitted relocations and don't have room<br>
for for pc-relative load relocations. I think you're probably hitting<br>
that issue.<br>
<br>
You've got two options:<br>
<br>
1. Reference FooValue in a way that does have relocations. For example<br>
(on MachO, I'm afraid I don't know the syntax for COFF, and it should<br>
just be working anyway for ELF):<br>
<br>
    adrp x0, FooValue@PAGE<br>
    ldr w0, [x0, FooValue@PAGEOFFSET]<br>
<br>
2. Use a local symbol with a different name each time (starting with L<br>
on MachO), and defined within the section that references it<br>
(actually, probably before the next global symbol if you're using<br>
.subsections_via_symbols, which you should be):<br>
<br>
    .section .text.foo1<br>
foo1:<br>
   ldr w0, LFooValue.foo1<br>
   ret<br>
LFooValue.foo1:<br>
  .word 0<br>
<br>
    .section .text.foo2<br>
foo2:<br>
   ldr w0, LFooValue.foo2<br>
   ret<br>
LFooValue.foo2:<br>
  .word 0<br>
<br>
Cheers.<br>
<br>
Tim.<br>
</blockquote></div>