https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108515

--- Comment #10 from Richard Earnshaw <rearnsha at gcc dot gnu.org> ---
Almost certainly this is related to the need for a copyreloc and presumably the
linker has not created one for some reason.  So I suspect this is most likely a
binutils issue rather than a compiler one.  The code generated for the simple
test is just

main:
        @ args = 0, pretend = 0, frame = 0
        @ frame_needed = 0, uses_anonymous_args = 0
        movw    r3, #:lower16:stderr
        movt    r3, #:upper16:stderr
        push    {r4, lr}
        movw    r0, #:lower16:.LC0
        movt    r0, #:upper16:.LC0
        ldr     r1, [r3]
        bl      printf
        mov     r0, #0
        pop     {r4, pc}

And the references to stderr will require the definition to be moved from the
shared library to the static image during linking.

Reply via email to