How to fix "yylloc" error when building Android sources - khadas-vims-pie

Today I got this error while compiling sources.

[  0% 92/33740] Instaled out/target/product/kvim3/dt.img
FAILED: out/target/product/kvim3/dt.img 
/bin/bash -c "(sed -i 's/^#include \\\"partition_.*/#include \\\"partition_mbox_normal_P_32.dtsi\\\"/' common/arch/arm/boot/dts/amlogic//kvim3.dts; sed -i 's/^#include \\\"firmware_.*/#include \\\"firmware_system.dtsi\\\"/' common/arch/arm/boot/dts/amlogic//partition_mbox_normal_P_32.dtsi; if [ -f \"common/arch/arm/boot/dts/amlogic//kvim3.dtd\" ]; then make -j2 -C common O=../out/target/product/kvim3/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=/opt/toolchains/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- kvim3.dtd; fi; make -j2 -C common O=../out/target/product/kvim3/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=/opt/toolchains/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- kvim3.dtb ) && (cp device/khadas/common/common_partition.xml out/target/product/kvim3/emmc_burn.xml ) && (./device/khadas/common/dtsi2xml.sh common/arch/arm/boot/dts/amlogic//partition_mbox_normal_P_32.dtsi  out/target/product/kvim3/emmc_burn.xml ) && (cp -f out/target/product/kvim3/obj/KERNEL_OBJ/arch/arm/boot/dts/amlogic/kvim3.dtb out/target/product/kvim3/dt.img ) && (if [ -n \"\$(find out/target/product/kvim3/dt.img -size +200k)\" ]; then 		echo \"out/target/product/kvim3/dt.img > 200k will be gziped\"; 		mv out/target/product/kvim3/dt.img out/target/product/kvim3/dt.img.orig && out/host/linux-x86/bin/minigzip -c out/target/product/kvim3/dt.img.orig > out/target/product/kvim3/dt.img; 	fi )"
make: вход в каталог «/home/eldrako/khadas/vim3/common»
make[1]: вход в каталог «/home/eldrako/khadas/vim3/out/target/product/kvim3/obj/KERNEL_OBJ»
  GEN     ./Makefile
scripts/kconfig/conf  --silentoldconfig Kconfig
  HOSTLD  scripts/dtc/dtc
/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): повторное определение «yylloc»; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): здесь первое определение
  CHK     scripts/mod/devicetable-offsets.h
collect2: error: ld returned 1 exit status
make[3]: *** [scripts/Makefile.host:110: scripts/dtc/dtc] Ошибка 1
make[2]: *** [/home/eldrako/khadas/vim3/common/scripts/Makefile.build:650: scripts/dtc] Ошибка 2
make[2]: *** Ожидание завершения заданий…
make[1]: *** [/home/eldrako/khadas/vim3/common/Makefile:570: scripts] Ошибка 2
make[1]: выход из каталога «/home/eldrako/khadas/vim3/out/target/product/kvim3/obj/KERNEL_OBJ»
make: *** [Makefile:152: sub-make] Ошибка 2
make: выход из каталога «/home/eldrako/khadas/vim3/common»
[  0% 97/33740] //system/vold:secdiscard clang++ secdiscard.cpp
ninja: build stopped: subcommand failed.
18:45:47 ninja failed with: exit status 1
make: *** [build/make/core/main.mk:21: run_soong_ui] Ошибка 1

How to fix it:

  1. Go to WORKING_DIRECTORY/common/scripts folder and find two files: dtc-lexer.l, dtc-parser.tab.c_shipped
  2. Open it and replace string “YYLTYPE yylloc;” to “extern YYLTYPE yylloc;”
    It needs to be replaced in three places.

Good luck!

2 Likes