Error build exmaple with WICED SDK - gcc-warning

I compile an example in WICED SDK 3.5.2 by command:
./make snip.scan-BCM943362WCD4
And it shows this error:
MAKEFILE MAKECMDGOALS=snip.scan-BCM943362WCD4 OTA2_SUPPORT is disabled
Building Bootloader
WICED/platform/GCC/math_newlib.c: In function 'sin':
WICED/platform/GCC/math_newlib.c:30:5: internal compiler error: Illegal instruction
x -= ( (int) ( x / ( 2 * PI ) ) ) * 2 * PI;
^
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[3]: *** [build/waf.bootloader-NoOS-BCM943362WCD4/Modules/WICED/platform/GCC/math_newlib.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [main_app] Error 2
make[1]: *** [bootloader] Error 2
make: *** [main_app] Error 2
what should i try to fix it? thks

I had this problem on a 64-bit Linux system. It means that "as" or some other tool in the bundled GNU toolchain encounters an illegal instruction.
So they've been built for a newer host CPU than the one you happen to have. I managed to get around it by moving tools/ARM_GNU/bin/Linux64 out of the way, then creating a symlink from Linux64 to Linux32.

Related

exec(gencat) failed (No such file or directory)

I'm trying to compile the source code of Minix 3.3.0 OS and I got troubles as following.
make[5]: exec(gencat) failed (No such file or directory)
*** Error code 1
Stop.
make[5]: stopped in /usr/src/lib/libc
*** Error code 1
Stop.
make[4]: stopped in /usr/src/lib/libc
*** Error code 1
Stop.
make[3]: stopped in /usr/src/lib
*** Error code 1
Stop.
make[2]: stopped in /usr/src/lib
*** Error code 1
Stop.
make[1]: stopped in /usr/src
*** Error code 1
Stop.
make: stopped in /usr/src
#
I and I ran this command on my VM of Minix3:
git clone git://git.minix3.org/minix src
And then I try to compile it by this command:
cd src
make build
And it failed with problems above. It seems like lacking of some files.
Bus how could it happen after I download the code from the official web?
This question has troubled me for a few days and I can't solve it.
Could someone do me a favour?

Kernel compilation fails due to PF_MAX > 44

I have a QEMU VM running an image of the Linux kernel 4.14.78.
On the host machine (a server with 96 cores), I am trying to compile a new update for the kernel with some changes I have made.
To make this process faster, I was using the host machine to compile for the target VM.
To do that I follow these steps:
copy the /boot/config-4.14.78 file from VM to host
put the copied file into the kernel source-code root directory, renaming it to .config in my
run make clean to clean it
run make menuconfig just to update the configs
run make -j$(nproc)
However, I am getting this error:
AS arch/x86/purgatory/setup-x86_64.o
CC arch/x86/purgatory/sha256.o
AS arch/x86/purgatory/entry64.o
CC arch/x86/purgatory/string.o
In file included from scripts/selinux/mdp/mdp.c:49:
./security/selinux/include/classmap.h:245:2: error: #error New address family defined, please update secclass_map.
245 | #error New address family defined, please update secclass_map.
| ^~~~~
make[3]: *** [scripts/Makefile.host:102: scripts/selinux/mdp/mdp] Error 1
make[2]: *** [scripts/Makefile.build:587: scripts/selinux/mdp] Error 2
make[2]: *** Waiting for unfinished jobs....
In file included from scripts/selinux/genheaders/genheaders.c:19:
./security/selinux/include/classmap.h:245:2: error: #error New address family defined, please update secclass_map.
245 | #error New address family defined, please update secclass_map.
| ^~~~~
CHK scripts/mod/devicetable-offsets.h
make[3]: *** [scripts/Makefile.host:102: scripts/selinux/genheaders/genheaders] Error 1
make[2]: *** [scripts/Makefile.build:587: scripts/selinux/genheaders] Error 2
make[1]: *** [scripts/Makefile.build:587: scripts/selinux] Error 2
make[1]: *** Waiting for unfinished jobs....
I have checked what causes this, and turns out that it is because of the:
include/linux/socket.h:211:#define AF_MAX 44 /* For now.. */
include/linux/socket.h:260:#define PF_MAX AF_MAX
Then, I followed this solution to print out the definition of PF_MAX at preprocessing time, and turns out that the PF_MAX is 45:
In file included from scripts/selinux/mdp/mdp.c:49:
./security/selinux/include/classmap.h:247:9: note: #pragma message: 45
247 | #pragma message(STRING(PF_MAX))
| ^~~~~~~
./security/selinux/include/classmap.h:250:2: error: #error New address family defined, please update secclass_map.
250 | #error New address family defined, please update secclass_map.
| ^~~~~
This 45 makes no sense for me, because I just checked that it is supposed to be 44.
I wonder if the build is considering the host machine instead of the target?
P.S.: These steps works fine on my local machine, which is a 8-cores machine, look the kernel version:
uname -a
Linux campes-note 5.4.86 #1 SMP Fri Jan 1 16:26:25 -03 2021 x86_64 x86_64 x86_64 GNU/Linux
UPDATE 1:
I tried to compile the kernel without any of my changes, following th above steps mentioned, and it did not compile as well, I get the same error.
UPDATE 2:
I found out that somehow, the compilation is looking at the host /usr/src/linux-headers-x.x.x files.
Instead, it should point to the same version as the target.
For that, I tried to follow this tutorial but I did not success. I am having a problem in one of the steps stated on this tutorial.
(Gathered from the now removed comments)
I have tried myself to build myself v4.14.78 followed by the latest available v4.14.214. I have found that former fails while the latter builds. So, I have bisected down to v4.14.116 that first builds correctly. Then I simple looked into the changes and found commit 760f8522ce08 ("selinux: use kernel linux/socket.h for genheaders and mdp") in the Linux stable tree which fixes the issue.
You may try to cherry-pick it to your branch and compile again.

libwebsockets libuv error: ‘m’ may be used uninitialized in this function

I cross compiled libuv successfully and I'm trying to cross compile libwebsockets but I get the following error in make for arm with a buildroot toolchain.
Please advise.
libwebsockets
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=~/buildroot/output/host/share/buildroot/toolchainfile.cmake \
-DLWS_LIBUV_INCLUDE_DIRS=/tmp/cross/include \
-DLWS_ZLIB_LIBRARIES=/tmp/cross/lib/libuv.so
make
[ 31%] Building C object CMakeFiles/websockets_shared.dir/lib/roles/http/server/server.c.o
[ 32%] Building C object CMakeFiles/websockets_shared.dir/lib/roles/http/server/lws-spa.c.o
[ 33%] Building C object CMakeFiles/websockets_shared.dir/lib/event-libs/poll/poll.c.o
[ 33%] Building C object CMakeFiles/websockets_shared.dir/lib/event-libs/libuv/libuv.c.o
~/libwebsockets/lib/event-libs/libuv/libuv.c: In function ‘elops_destroy_context1_uv’:
~/libwebsockets/lib/event-libs/libuv/libuv.c:526:7: error: ‘m’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
if (m)
^
cc1: all warnings being treated as errors
CMakeFiles/websockets_shared.dir/build.make:1166: recipe for target 'CMakeFiles/websockets_shared.dir/lib/event-libs/libuv/libuv.c.o' failed
make[2]: *** [CMakeFiles/websockets_shared.dir/lib/event-libs/libuv/libuv.c.o] Error 1
CMakeFiles/Makefile2:363: recipe for target 'CMakeFiles/websockets_shared.dir/all' failed
make[1]: *** [CMakeFiles/websockets_shared.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2
Why are you building libwebsockets manually, instead of using the libwebsockets package that we have in Buildroot ?

DPDK cannot find -lnuma

While compiling the dpdk 17.04 version, i'm getting following error at the end.
== Build drivers/event/skeleton
== Build drivers/event/sw
== Build drivers/event/octeontx
== Build app
== Build app/test-pmd
LD testpmd
/usr/bin/ld: cannot find -lnuma
collect2: error: ld returned 1 exit status
/home/root1/dpdk/dpdk-stable-17.08.1/mk/rte.app.mk:280: recipe for target 'testpmd' failed
make[5]: *** [testpmd] Error 1
/home/root1/dpdk/dpdk-stable-17.08.1/mk/rte.subdir.mk:63: recipe for target 'test-pmd' failed
make[4]: *** [test-pmd] Error 2
/home/root1/dpdk/dpdk-stable-17.08.1/mk/rte.sdkbuild.mk:76: recipe for target 'app' failed
make[3]: *** [app] Error 2
/home/root1/dpdk/dpdk-stable-17.08.1/mk/rte.sdkroot.mk:128: recipe for target 'all' failed
make[2]: *** [all] Error 2
/home/root1/dpdk/dpdk-stable-17.08.1/mk/rte.sdkinstall.mk:85: recipe for target 'pre_install' failed
make[1]: *** [pre_install] Error 2
/home/root1/dpdk/dpdk-stable-17.08.1/mk/rte.sdkroot.mk:107: recipe for target 'install' failed
make: *** [install] Error 2
Please suggest the solution.
DPDK requires libnuma-devel as described in System Requirements:
http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html
Libnuma packages are optional build dependency. You can disable the same by editing the RTE_TARGET config file. So you can either install libnuma-dev package or disable on target. Please do the need ful

How can I solve a "do_compile ERROR" when building a Yocto recipe with Toaster?

everytime I want to build the rpi-basic-image I get the following error:
DEBUG: Executing shell function do_compile
CHK include/config/kernel.release
GEN ./Makefile
CHK include/generated/uapi/linux/version.h
Using /home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source as source for kernel
CHK include/generated/utsrelease.h
CC scripts/mod/devicetable-offsets.s
In file included from /home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/include/linux/compiler.h:54:0,
from /home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/include/uapi/linux/stddef.h:1,
from /home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/include/linux/stddef.h:4,
from /home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/include/uapi/linux/posix_types.h:4,
from /home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/include/uapi/linux/types.h:13,
from /home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/include/linux/types.h:5,
from /home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/include/linux/mod_devicetable.h:11,
from /home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/scripts/mod/devicetable-offsets.c:2:
/home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/include/linux/compiler-gcc.h:121:30: fatal error: linux/compiler-gcc6.h: No such file or directory
#include gcc_header(__GNUC__)
^
compilation terminated.
/home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/scripts/Makefile.build:153: recipe for target 'scripts/mod/devicetable-offsets.s' failed
make[4]: *** [scripts/mod/devicetable-offsets.s] Error 1
/home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/scripts/Makefile.build:403: recipe for target 'scripts/mod' failed
make[3]: *** [scripts/mod] Error 2
/home/dennis/poky/build-toaster-3/tmp/work-shared/raspberrypi2/kernel-source/Makefile:555: recipe for target 'scripts' failed
make[2]: *** [scripts] Error 2
Makefile:146: recipe for target 'sub-make' failed
make[1]: *** [sub-make] Error 2
Makefile:24: recipe for target '__sub-make' failed
make: *** [__sub-make] Error 2
WARNING: exit code 1 from a shell command.
ERROR: Function failed: do_compile (log file is located at /home/dennis/poky/build-toaster-3/tmp/work/raspberrypi2-poky-linux-gnueabi/linux-raspberrypi/1_4.1.21+gitAUTOINC+ff45bc0e89-r0/temp/log.do_compile.11315)
Does anybody know how to solve it and what's the reason for it?
Thanks
This has been noticed on the yocto#yoctoproject.org mailing list.
Seems to be resolved with a patch, but I did not test it- I'm only forwarding the conversation and hoping this will help.
Last mail from the thread:
http://article.gmane.org/gmane.linux.embedded.yocto.general/30168/match=gcc+6.1+raspi
Patch used: http://article.gmane.org/gmane.linux.embedded.yocto.general/30093/