[U-Boot] current mainline build fails for some arm boards

Heiko Schocher
2016-06-06T06:42:43Z

Hello Stephen,

I see when building current mainline with:

$ ./tools/buildman/buildman arm
boards.cfg is up to date. Nothing to do.
Building current source for 562 boards (8 threads, 1 job per thread)
arm: + VCMA9
+arch/arm/lib/lib1funcs.S: Assembler messages:
+arch/arm/lib/lib1funcs.S:358: Error: bad size 0 in type specifier
+arch/arm/lib/lib1funcs.S:358: Error: bad instruction `_.pushsection .text.__gnu_thumb1_case_uqi,"ax"'
+arch/arm/lib/lib1funcs.S:370: Warning: .popsection without corresponding .pushsection; ignored
+make[2]: *** [arch/arm/lib/lib1funcs.o] Error 1
+make[1]: *** [arch/arm/lib] Error 2
+make: *** [sub-make] Error 2
[...]

for some boards ...

git bisect says:

$ git bisect good
b2f1858455e99a91aeafe59ac73c6c047106d5e8 is the first bad commit
commit b2f1858455e99a91aeafe59ac73c6c047106d5e8
Author: Stephen Warren <swarren@nvidia.com>
Date: Fri Jun 3 13:05:11 2016 -0600

arm: lib: fix push/pop-section directives

With the existing code, function symbols are defined in .text, and the
body is defined in .text.xxx. This causes (at least some version of) the
linker not to emit the function body into the final binary, since it's
part of a different section to the symbols being referenced. This of
course causes a wide variety of failures.

This change moves the push/pop-section directives before the function
symbols, and after any relate ENDPROC macro invocations, so that symbols
and bodies are all in the "pushed" sections, and thus the function bodies
are emitted into the binary.

This solves (at least) the boot problems currently seen on Tegra systems
that use SPL (i.e. all ARMv7 Tegras).

Fixes: 13b0a91a6d48 ("arm: lib: Split asm symbols into different .text subsections")
Cc: Marek Vasut <marex@denx.de>
Cc: Tom Warren <twarren@nvidia.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>

:040000 040000 48878602d5d6769533fa4a979b70aec516ee5093 c791993ebe2e3cb88de6bdfdb05f21ea9f1a04b6 M
arch
pollux:u-boot hs [(kein Branch, bin?re Suche begonnen bei master)] $ git bisect log
git bisect start
# bad: [b2f1858455e99a91aeafe59ac73c6c047106d5e8] arm: lib: fix push/pop-section directives
git bisect bad b2f1858455e99a91aeafe59ac73c6c047106d5e8
# good: [03c6f1761ede305637ed54fb238b2059c597451e] serial: 16550: Drop OMAP1510 support
git bisect good 03c6f1761ede305637ed54fb238b2059c597451e
# good: [383f4a0ec78ee92c89a7ce135acbde47c84c6201] ARM: OMAP5+: Provide enable/disable_usb_clocks()
for CONFIG_USB_XHCI_OMAP
git bisect good 383f4a0ec78ee92c89a7ce135acbde47c84c6201
# good: [d60198dac2026ca6b6732e5cd6892d3b3bebddaa] arm: am57xx: Fix omap_vcores assignment for
am572x-idk
git bisect good d60198dac2026ca6b6732e5cd6892d3b3bebddaa
# good: [77cd5368cee8b6a5684877e1bf4d544bf271ef08] arm: socfpga: Add missing ',' in CONFIG_BOOTARGS
git bisect good 77cd5368cee8b6a5684877e1bf4d544bf271ef08
# good: [e2924e5904ae413e0b4a2a0d407267e7bbc2c7c4] ARM: k2g: Configure reset mux to device reset
git bisect good e2924e5904ae413e0b4a2a0d407267e7bbc2c7c4
# good: [edb697cfcc2dda02c5b2a34b3157b8fa8fc01264] Merge branch 'master' of
git://git.denx.de/u-boot-socfpga
git bisect good edb697cfcc2dda02c5b2a34b3157b8fa8fc01264
# first bad commit: [b2f1858455e99a91aeafe59ac73c6c047106d5e8] arm: lib: fix push/pop-section directives
pollux:u-boot hs [(kein Branch, bin?re Suche begonnen bei master)] $

Can you take a look on it?

bye,
Heiko
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany