u-boot-brain/scripts
Simon Glass 1653b6a4bf fdt: Show the preprocessed .dts file on error
When device-tree compilation fails it is sometimes tricky to see which
line is broken, since the input file to dtc is a pre-processed version
of the device tree.

Add a line that points to the file that needs to be checked:

When the error is in the main .dts file, output is something like this:

   output: 'Error: arch/x86/dts/.chromebook_coral.dtb.pre.tmp:478.46-47
	syntax error
   FATAL ERROR: Unable to parse input tree

but in fact looking at that file shows nothing useful:

   PAD_CFG_NF_IOSSTATE_IOSTERM(GPIO_157, UP_20K, DEEP, NF1, HIZCRX1, DISPUPD)

Instead we need to look at the preprocessed file, which shows:

   163 ((1U << 30) | (1 << 10)) ((0xb << 10) | PAD_CFG1_IOSSTATE_HIZCRX1)

Here it is clear that PAD_CFG1_IOSSTATE_HIZCRX1 is not defined and so is
not being resolved by the preprocessor.

This commit adds an additional useful message:

   Check arch/x86/dts/.chromebook_coral.dtb.dts.tmp for errors

Note that if the error is reported in an included file, such as
u-boot.dtsi then the output is the following:

   Error: arch/x86/dts/u-boot.dtsi:137.14-15 syntax error
   FATAL ERROR: Unable to parse input tree

But again, if the error is due to a preprocessor failure, like this:

   filename = CONFIG_IFW_INPUT_FILE;

then you can't tell what the problem is by looking at the source. All you
see is the original code:

	intel-ifwi {
		filename = CONFIG_IFW_INPUT_FILE;
		...
		};
	};
	intel-fsp-m {
		filename = CONFIG_FSP_FILE_M;
	};

Everything looks fine. But looking at the output of the preprocessor:

 intel-ifwi {
  filename = CONFIG_IFW_INPUT_FILE;
  ...
 };
 intel-fsp-m {
  filename = "fsp_m.bin";
 };

This shows that the filename (normally "fitimage.bin") has not been
inserted the preprocess, leading to the realisation that the value should
be CONFIG_IFWI_INPUT_FILE.

If the above does not make sense, I encourage people to try introducing
errors in the device tree preprocessed values.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2019-12-15 11:44:09 +08:00
..
basic SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
coccinelle scripts/coccinelle: add some more coccinelle tests 2018-03-09 12:31:07 -05:00
dtc scripts: dtc: ignore files generated generated by python 2019-11-23 14:53:48 -05:00
kconfig kconfig: Avoid format overflow warning from GCC 8.1 2018-07-25 08:47:52 +09:00
.gitignore docproc: Remove 2018-08-03 19:53:54 -04:00
bin2c.c scripts: import bin2c.c from Linux 4.10-rc6 2017-02-08 15:56:19 -05:00
binutils-version.sh scripts: fix binutils-version.sh for 'as' without a package. 2015-01-08 11:00:45 -05:00
build_OID_registry lib: add oid registry utility 2019-12-06 16:44:20 -05:00
build-whitelist.sh sunxi: Fix CONFIG_SUNXI_GMAC references 2017-09-01 20:48:27 +05:30
check-config.sh scripts/check-config.sh: Add usage() 2018-12-26 18:24:26 -05:00
checkpatch.pl tools: checkpatch: Restore 'debug' and 'printf' to logFunctions list 2019-11-23 10:28:56 -05:00
checkstack.pl avr32: Retire AVR32 for good 2017-07-06 16:17:19 -04:00
cleanpatch Makefile: Move some scripts imported from Linux 2013-12-13 09:18:45 -05:00
coccicheck Makefile: add coccicheck target 2017-11-20 20:18:38 -05:00
config_whitelist.txt configs: Resync with savedefconfig 2019-12-04 17:18:38 -05:00
const_structs.checkpatch checkpatch: update from Linux v4.13-rc6 2017-09-14 21:33:00 -04:00
coreboot.sed SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
decodecode scripts: add decodecode from Linux 2018-05-23 22:06:41 -04:00
dtc-version.sh Makefile: Update minimum dtc version to 1.4.3 2017-09-22 07:40:05 -04:00
gcc-stack-usage.sh SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
gcc-version.sh kbuild: Make scripts executable 2014-11-12 13:25:42 -05:00
get_default_envs.sh script: Make get_default_envs.sh script exclude tools/env 2018-06-07 20:06:29 -04:00
get_maintainer.pl get_maintainer.pl: update from Linux kernel v4.16 2018-04-10 15:19:14 -04:00
Kbuild.include kbuild: add .SECONDARY special target to scripts/Kbuild.include 2019-01-15 15:28:53 -05:00
kernel-doc scripts/kernel-doc: fix parsing of function pointers 2019-07-24 14:15:36 -04:00
ld-version.sh scripts/ld-version.sh: regular expression compile fails 2017-11-20 20:18:37 -05:00
Lindent scripts/Lindent: import from Linux 3.16 2014-08-21 12:01:29 -04:00
mailmapper scripts: mailmapper: SPDX license identifier 2018-06-04 11:25:30 -04:00
Makefile docproc: Remove 2018-08-03 19:53:54 -04:00
Makefile.autoconf SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
Makefile.build lib: crypto: add pkcs7 message parser 2019-12-06 16:44:20 -05:00
Makefile.clean SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
Makefile.extrawarn scripts/Makefile.extrawarn: Silence more DTC warnings 2019-03-25 11:44:12 -04:00
Makefile.host SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
Makefile.lib fdt: Show the preprocessed .dts file on error 2019-12-15 11:44:09 +08:00
Makefile.spl spl: separate SPL_FRAMEWORK config for spl and tpl 2019-11-17 17:22:53 +08:00
Makefile.uncmd_spl dm: gpio: Allow control of GPIO uclass in SPL 2019-12-15 08:52:29 +08:00
mkmakefile kbuild: Make scripts executable 2014-11-12 13:25:42 -05:00
objdiff scripts: objdiff: Ignore debug info when comparing 2017-08-26 14:56:14 -04:00
setlocalversion scripts: setlocalversion: safely extract variables from auto.conf using awk 2017-08-13 17:15:08 +02:00
show-gnu-make SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
spelling.txt scripts/spelling.txt: Sync script with kernel 4.16-rc4 2018-03-05 10:16:30 -05:00