*OpenOCD compilation errors WITH SOLUTIONS* - LarsKeuninckx - 06-25-2021
Compiling OpenOCD (with gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0) as described in https://github.com/pulp-platform/pulpissimo#building-and-using-the-virtual-platform, section "GDB and OpenOCD":
Code: source sourceme.sh && ./pulp-tools/bin/plpbuild checkout build --p openocd --stdout
This error was encountered:
Code: In function 'memset',
inlined from 'mg_gen_ataid' at src/flash/mflash.c:1162:2,
inlined from 'mg_storage_config' at src/flash/mflash.c:1174:2:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:71:10: error: '__builtin_memset' offset [509, 512] from the object at 'buff' is out of the bounds of referenced subobject 'reserved7' with type 'mg_io_uint8[186]' {aka 'unsigned char[186]'} at offset 322 [-Werror=array-bounds]
71 | return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [Makefile:3344: src/flash/mflash.lo] Error 1
make[2]: Leaving directory '/home/thom/Argus/pulpissimo/pulp-sdk/tools/riscv-openocd'
make[1]: *** [Makefile:4283: install-recursive] Error 1
make[1]: Leaving directory '/home/thom/Argus/pulpissimo/pulp-sdk/tools/riscv-openocd'
make: *** [Makefile:4585: install] Error 2
Reached EOF with exit status 2
FATAL ERROR: the command 'build' has failed
SOLUTION: see https://githubmemory.com/repo/STMicroelectronics/OpenOCD/issues, user nretro's comment:
Quote: In src/flash/mflash.h the line
Code: mg_io_uint8 reserved7[186];
Quote: should be changed to
Code: mg_io_uint8 reserved7[190];
Quote:This is obviously an error, since in mflash.c reserved7 is accessed using
memset(pSegIdDrvInfo->reserved7, 0x00, 190);
Current gcc compiler flags this with an out of bound warning. In combination with the "Werror" flag, the compilation will be aborted.
After fixing that error, this one appears:
Code: In file included from src/helper/options.c:38:
/usr/include/x86_64-linux-gnu/sys/sysctl.h:21:2: error: #warning "The <sys/sysctl.h> header is deprecated and will be removed." [-Werror=cpp]
21 | #warning "The <sys/sysctl.h> header is deprecated and will be removed."
| ^~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [Makefile:3359: src/helper/libhelper_la-options.lo] Error 1
make[2]: Leaving directory '/home/thom/Argus/pulpissimo/pulp-sdk/tools/riscv-openocd'
make[1]: *** [Makefile:4283: install-recursive] Error 1
make[1]: Leaving directory '/home/thom/Argus/pulpissimo/pulp-sdk/tools/riscv-openocd'
make: *** [Makefile:4585: install] Error 2
Reached EOF with exit status 2
FATAL ERROR: the command 'build' has failed
SOLUTION: see https://github.com/rr-debugger/rr/commit/09cdf882361cbde7c9e7213bd2527349d49cfe5d
Apply these changes to pulp-sdk/tools/riscv-openocd/src/helper/options.c:
Code: #if IS_DARWIN
#include <libproc.h>
#endif
#include <sys/syscall.h>
//#ifdef HAVE_SYS_SYSCTL_H
//#include <sys/sysctl.h>
//#endif
#ifndef CTL_KERN
#define CTL_KERN 1
#endif
#ifndef KERN_RTSIGMAX
#define KERN_RTSIGMAX 33
#endif
(...)
char *path = malloc(PATH_MAX);
if (path == NULL)
break;
int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
size_t size = PATH_MAX;
if (syscall(RR__sysctl, mib, (u_int)ARRAY_SIZE(mib), path, &size, NULL, 0) != 0)
//if (sysctl(mib, (u_int)ARRAY_SIZE(mib), path, &size, NULL, 0) != 0)
break;
Posted here so you don't have to waste the time we did. After that, the compilation works. Good luck.
|