[U-Boot] P2041RDB: gcc 4.8.2/binutils 2.23.1 default to new GOT table layout

Joerg Albert jal2 at gmx.de
Mon Feb 10 16:19:22 CET 2014


Hi,

I've recently compiled U-Boot (fsl-sdk-v1.3.2) for P2041RDB and had a
problem with ARP requests flooding if the peer was not there.
It turned out that NetArpWaitTimerStart was not relocated to RAM, but
remained in flash, so it couldn't be updated.

Looking at the global offset table, it looks like the linker generates (by
default) a new layout, without _GLOBAL_OFFSET_TABLE_ [-1] == blrl (as
required by the EABI) and NetArpWaitTimerStart is the entry at
_GLOBAL_OFFSET_TABLE_ [-1].
u-boot.lds still assumes the blrl in the GOT.

Putting a

LDFLAGS_FINAL += --bss-plt

into board/freescale/p2041rdb/config.mk

brought the blrl instruction in the GOT back and solved the ARP problem.

I compiled v2014.01-116-g0c57033 for P2041RDB without --bss-plt and the blrl
was missing in the GOT as well.

--bss-plt is rarely documented, will it cause some other problems?

Are gcc 4.8.x and binutils 2.23.1 recommended to use with U-Boot or shall we
stick to older versions?

Regards,
Joerg






More information about the U-Boot mailing list