[U-Boot] buildman: arm: undefined reference to `__aeabi_ldivmod'

Simon Glass
2016-05-01T23:12:46Z

Hi,

On 17 March 2016 at 10:18, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 03/16/2016 11:48 PM, Jagan Teki wrote:
>>
>> On 16 March 2016 at 21:04, Stephen Warren <swarren@wwwdotorg.org> wrote:
>>>
>>> On 03/16/2016 08:27 AM, Jagan Teki wrote:
>>>>
>>>> On 14 March 2016 at 23:44, Stephen Warren <swarren@wwwdotorg.org> wrote:
>>>>>
>>>>> On 03/14/2016 11:32 AM, Jagan Teki wrote:
>>>>>>
>>>>>> On 12 March 2016 at 06:02, Simon Glass <sjg@chromium.org> wrote:
>>>>>>>
>>>>>>> On 11 March 2016 at 01:00, Jagan Teki <jagannadh.teki@gmail.com>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Did anyone encounter this issue? please let me know for any inputs.
>>>>>>>>
>>>>>>>> arm: + venice2
>>>>>>>> +drivers/mtd/spi-nor/built-in.o: In function `spi_nor_write':
>>>>>>>> +build/../drivers/mtd/spi-nor/spi-nor.c:585: undefined reference to
>>>>>>>> `__aeabi_ldivmod'
>>>>>>>> +arm-unknown-linux-gnueabi-ld.bfd: BFD (GNU Binutils) 2.24 assertion
>>>>>>>> fail /home/tony/buildall/src/binutils/bfd/elf32-arm.c:7696
>>>>>>>> +arm-unknown-linux-gnueabi-ld.bfd: error: required section
>>>>>>>> '.rel.plt'
>>>>>>>> not found in the linker script
>>>>>>>> +arm-unknown-linux-gnueabi-ld.bfd: final link failed: Invalid
>>>>>>>> operation
>>>>>>>> +make[1]: *** [u-boot] Error 1
>>>>>>>> +make: *** [sub-make] Error 2
>>>>>>>
>>>>>>>
>>>>>>> Are you using 64-bit division? Tegra uses the private libgcc. This
>>>>>>> patch might help:
>>>>>>
>>>>>>
>>>>>> Yes, I'm using 64-bit.
>>>>>>
>>>>>>> http://patchwork.ozlabs.org/patch/592628/
>
> ...
>>>
>>> Perhaps you could share the local patches that are triggering the
>>> problem?
>
> ...
>>
>> This is the spi-nor.c file
>>
>> http://git.denx.de/?p=u-boot/u-boot-spi.git;a=blob;f=drivers/mtd/spi-nor/spi-nor.c;h=6166b62e595c6620bd3407788d705168e0bd6b2c;hb=refs/heads/spi-nor-test
>
>
> I can reproduce this when building venice2 in u-boot-spi/spi-nor-test, and
> indeed the patch that Simon linked to doesn't help. That's because Simon's
> patch implements __aeabi_uldivmod whereas the linker failure is due to
> __aeabi_ldivmod (without the u).
>
> Simon, is it easy for you to bring in __aeabi_ldivmod from the same place?
>
> FWIW, I hacked _uldivmod.S to provide a dummy symbol for __aeabi_ldivmod and
> the link succeeded, so I think that's currently the only missing symbol. I
> only tested the venice2 build though.

Not that I can see, sorry.

I suppose it is possible to fix up the sign but I don't have code to do it.

Regards,
Simon