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

Hi,
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
thanks!

+Stephen
Hi Jagan,
On 11 March 2016 at 01:00, Jagan Teki jagannadh.teki@gmail.com wrote:
Hi,
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:
http://patchwork.ozlabs.org/patch/592628/
Regards, Simon

Hi Simon,
On 12 March 2016 at 06:02, Simon Glass sjg@chromium.org wrote:
+Stephen
Hi Jagan,
On 11 March 2016 at 01:00, Jagan Teki jagannadh.teki@gmail.com wrote:
Hi,
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.
Still the same issue.
thanks!

On 03/14/2016 11:32 AM, Jagan Teki wrote:
Hi Simon,
On 12 March 2016 at 06:02, Simon Glass sjg@chromium.org wrote:
+Stephen
Hi Jagan,
On 11 March 2016 at 01:00, Jagan Teki jagannadh.teki@gmail.com wrote:
Hi,
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.
Still the same issue.
If I start with v2016.03, and apply the following patch, I can reproduce this issue when building venice2 (a 32-bit Tegra build) but not p2371-2180 (a 64-bit Tegra build):
diff --git a/arch/arm/mach-tegra/board2.c b/arch/arm/mach-tegra/board2.c index ac274e17e8bd..9b1a4112a0b1 100644 --- a/arch/arm/mach-tegra/board2.c +++ b/arch/arm/mach-tegra/board2.c @@ -235,9 +235,13 @@ __weak void pin_mux_mmc(void) { }
+uint64_t a = 200; +uint64_t b = 5; + /* this is a weak define that we are overriding */ int board_mmc_init(bd_t *bd) { + printf("a/b = %llu\n", a / b); debug("%s called\n", __func__);
/* Enable muxes, etc. for SDMMC controllers */
However, if I apply the patch Simon mentioned above, the problem is fixed. Are you sure you applied that patch correctly?

On 14 March 2016 at 23:44, Stephen Warren swarren@wwwdotorg.org wrote:
On 03/14/2016 11:32 AM, Jagan Teki wrote:
Hi Simon,
On 12 March 2016 at 06:02, Simon Glass sjg@chromium.org wrote:
+Stephen
Hi Jagan,
On 11 March 2016 at 01:00, Jagan Teki jagannadh.teki@gmail.com wrote:
Hi,
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.
Still the same issue.
If I start with v2016.03, and apply the following patch, I can reproduce this issue when building venice2 (a 32-bit Tegra build) but not p2371-2180 (a 64-bit Tegra build):
diff --git a/arch/arm/mach-tegra/board2.c b/arch/arm/mach-tegra/board2.c index ac274e17e8bd..9b1a4112a0b1 100644 --- a/arch/arm/mach-tegra/board2.c +++ b/arch/arm/mach-tegra/board2.c @@ -235,9 +235,13 @@ __weak void pin_mux_mmc(void) { }
+uint64_t a = 200; +uint64_t b = 5;
/* this is a weak define that we are overriding */ int board_mmc_init(bd_t *bd) {
printf("a/b = %llu\n", a / b); debug("%s called\n", __func__); /* Enable muxes, etc. for SDMMC controllers */
However, if I apply the patch Simon mentioned above, the problem is fixed. Are you sure you applied that patch correctly?
Yeah, I tried this on latest as well, same issue.

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:
Hi Simon,
On 12 March 2016 at 06:02, Simon Glass sjg@chromium.org wrote:
+Stephen
Hi Jagan,
On 11 March 2016 at 01:00, Jagan Teki jagannadh.teki@gmail.com wrote:
Hi,
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.
Still the same issue.
...
However, if I apply the patch Simon mentioned above, the problem is fixed. Are you sure you applied that patch correctly?
Yeah, I tried this on latest as well, same issue.
Perhaps you could share the local patches that are triggering the problem?

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:
Hi Simon,
On 12 March 2016 at 06:02, Simon Glass sjg@chromium.org wrote:
+Stephen
Hi Jagan,
On 11 March 2016 at 01:00, Jagan Teki jagannadh.teki@gmail.com wrote:
Hi,
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.
Still the same issue.
...
However, if I apply the patch Simon mentioned above, the problem is fixed. Are you sure you applied that patch correctly?
Yeah, I tried this on latest as well, same issue.
Perhaps you could share the local patches that are triggering the problem?
54: config: Enable SPI-NOR framework arm: + chromebook_jerry +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
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...

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.
...
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...
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.

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.
...
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...
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
participants (3)
-
Jagan Teki
-
Simon Glass
-
Stephen Warren