[U-Boot] cam_enc_4xx build failure

Heiko Schocher
2012-03-07T07:10:11Z

Hello Marek,

added Tom Rini to cc...

Marek Vasut wrote:
> Dear Heiko Schocher,
>
> cam_enc_4xx does not build with ELDK4.2 . Can you please come up with a patch?
>
> Thanks in advance!
>
> Copyright (C) 2007 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions. There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> Configuring for cam_enc_4xx board...
> cam_enc_4xx.c: In function 'menu_handle':
> cam_enc_4xx.c:609: warning: dereferencing type-punned pointer will break strict-
> aliasing rules
> arm-linux-ld: u-boot-spl: Not enough room for program headers, try linking with
> -N
> arm-linux-ld: final link failed: Bad value

If I try a SPL_TEXT_BASE = 0x00000000 or SPL_TEXT_BASE = 0x00000080
it compiles fine with ELDK-4.2, but I need SPL_TEXT_BASE = 0x00000020
as the RBL copies code from nand to 0x00000020 ...

I can fix this with this patch:

diff --git a/board/ait/cam_enc_4xx/config.mk b/board/ait/cam_enc_4xx/config.mk
index b1f9b6c..744b927 100644
--- a/board/ait/cam_enc_4xx/config.mk
+++ b/board/ait/cam_enc_4xx/config.mk
@@ -12,4 +12,11 @@ PAD_TO := 12320
UBL_CONFIG = $(SRCTREE)/board/$(BOARDDIR)/ublimage.cfg
ifndef CONFIG_SPL_BUILD
ALL-y += $(obj)u-boot.ubl
+else
+# as SPL_TEXT_BASE is not page-aligned, we need for some
+# linkers the -n flag (Do not page align data), to prevent
+# the following error message:
+# arm-linux-ld: u-boot-spl: Not enough room for program headers, try linking
+# with -N
+LDFLAGS_u-boot-spl += -n
endif

I must admit, that I do not really understand, whats the real problem
is.

Can somebody help here?

bye,
Heiko