[Buildroot] Analysis of defconfig build failures
Thomas De Schampheleire
patrickdepinguin+buildroot at gmail.com
Mon Aug 27 21:01:18 UTC 2018
Hi,
El lun., 27 ago. 2018 a las 10:45, Peter Korsgaard
(<peter at korsgaard.com>) escribió:
>
> >>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni at bootlin.com> writes:
>
> > Hello,
> > On Mon, 27 Aug 2018 10:12:16 +0200, Peter Korsgaard wrote:
>
> >> > I.e. there is preprocessing of the dts file, then the actual
> >> > compilation via dtc.
> >> > With this in mind, I actually don't think that this behavior is
> >> > negatively impacted by my changes. I now think it is a failure on top
> >> > of the original failures. When I undo my changes prior to running this
> >> > command, then the same errors occur. And since no other binary than
> >> > the compiler (preprocessor) and the prebuilt dtc is used, there cannot
> >> > be other impact of the changes I did to two header files.
> >>
> >> > Nevertheless, this defconfig still does not build correctly.
> >>
> >> :/
> >>
> >> I guess giving the timing, the best solution for 2018.08 is to simply
> >> revert the dtc bump?
>
> > Is this fixing all issues we have, without introducing other problems ?
> > If so, then I'm fine with a revert of the dtc bump, of course.
>
> That was my understanding based on Yann's git bisect, yes. These
> defconfigs all used to work.
With this information (that was new to me) I bisected into dtc itself.
Culprit commit entered into v1.4.6 and is:
https://git.kernel.org/pub/scm/utils/dtc/dtc.git/commit/?id=c8b38f65fdec4226d43f0e8eb
commit c8b38f65fdec4226d43f0e8eb5cf541aff3c80a5 (HEAD, refs/bisect/bad)
Author: David Gibson <david at gibson.dropbear.id.au>
Date: Wed Oct 18 17:22:40 2017 +1100
libfdt: Remove leading underscores from identifiers
In a lot of places libfdt uses a leading _ character to mark an identifier
as "internal" (not part of the published libfdt API). This is a bad idea,
because identifiers with a leading _ are generally reserved by the C
library or system. It's particularly dangerous for libfdt, because it's
designed to be able to be integrated into lots of different environments.
In some cases the leading _ has no purpose, so we simply drop it. In most
cases we move it to the end, as our new convention for marking internal
identifiers.
Signed-off-by: David Gibson <david at gibson.dropbear.id.au>
In this commit, not only include guards are changed, but also actual
identifiers.
While the above commit fixes the fdt types issues, the other issue I
got after applying my fix (assertion error) is caused by a later
commit, introduced in v1.4.7:
https://git.kernel.org/pub/scm/utils/dtc/dtc.git/commit/?id=df536831d02c51556a8e88cd8da0be0244484156
commit df536831d02c51556a8e88cd8da0be0244484156 (HEAD, refs/bisect/bad)
Author: Rob Herring <robh at kernel.org>
Date: Tue Feb 13 17:00:59 2018 -0600
checks: add graph binding checks
Add checks for DT graph bindings. These checks check node names,
unit-addresses and link connections on ports, port, and endpoint nodes.
The graph nodes are matched by finding nodes named 'endpoint' or with a
'remote-endpoint' property. We can't match on 'ports' or 'port' nodes
because those names are used for non-graph nodes. While the graph nodes
aren't really buses, using the bus pointer to tag matched nodes is
convenient.
Signed-off-by: Rob Herring <robh at kernel.org>
Signed-off-by: David Gibson <david at gibson.dropbear.id.au>
Backtrace from a quick gdb session:
Program received signal SIGABRT, Aborted.
0x00007ffff7a4b010 in raise () from /lib64/libc.so.6
(gdb) bt
#0 0x00007ffff7a4b010 in raise () from /lib64/libc.so.6
#1 0x00007ffff7a4cc0d in abort () from /lib64/libc.so.6
#2 0x00007ffff7a427e7 in ?? () from /lib64/libc.so.6
#3 0x00007ffff7a428a2 in __assert_fail () from /lib64/libc.so.6
#4 0x0000555555560a6f in propval_cell ()
#5 0x000055555555b536 in check_graph_child_address ()
#6 0x0000555555558dc8 in check_nodes_props ()
#7 0x0000555555558df6 in check_nodes_props ()
#8 0x000055555555a4d7 in run_check ()
#9 0x000055555555c2cf in process_checks ()
#10 0x0000555555558797 in main ()
I haven't dug deeper. It could be that some patching is needed in
host-dtc itself, to solve the above error.
/Thomas
More information about the buildroot
mailing list