chipKIT® Development Platform

Inspired by Arduino™

newlib/libc/reent/signalr.c:61: undefined reference to `kill'

Created Wed, 06 Jun 2012 00:48:14 +0000 by kmansfie


kmansfie

Wed, 06 Jun 2012 00:48:14 +0000

Keith,

I found an issue using version mpide-0023-windows-20111221 of mpide and your debug instructions. When I attempt to compile the sketch using the <SHIFT>-verify with the debug board selected I get an error, can't find Board_Defs.h. I did a search and found the appropriate file and placed it where the compile was looking for includes. I had to do this in the mpide directory where my sketch was located and in the pic32/cores/pic32 directory to get it to compile.

I was wondering where the make files are and how they determine which Board_Defs.h to use?

I also tried to use your debug instructions with the latest test version mpide-0023-windows-20120603-test and there were a couple of undefines in that compilation. This is the output of the linker.

\Users\kmansfie\AppData\Local\Temp\build2351681338862438883.tmp\core.a -LC \Users\kmansfie\AppData\Local\Temp\build2351681338862438883.tmp -lm -T C \mpide-0023-windows-20120603-test\hardware\pic32\cores\pic32/chipKIT-MAX32-application-32MX795F512L-nobootloader.ld c:/mpide-0023-windows-20120603-test/hardware/pic32/compiler/pic32-tools/bin/../lib/gcc/pic32mx/4.5.1/../../../../pic32mx/lib\libc.a(lib_a-signalr.o): In function _kill_r': /Users/kjason/src/ArduinoIDE/chipKIT-cxx/chipKIT-cxx-master/win32-build/newlib/pic32mx/newlib/libc/reent/../../../../../../pic32-newlib/newlib/libc/reent/signalr.c:61: undefined reference to kill' c:/mpide-0023-windows-20120603-test/hardware/pic32/compiler/pic32-tools/bin/../lib/gcc/pic32mx/4.5.1/../../../../pic32mx/lib\libc.a(lib_a-signalr.o): In function _getpid_r': /Users/kjason/src/ArduinoIDE/chipKIT-cxx/chipKIT-cxx-master/win32-build/newlib/pic32mx/newlib/libc/reent/../../../../../../pic32-newlib/newlib/libc/reent/signalr.c:96: undefined reference to getpid' collect2: ld returned 1 exit status

I hope that helps.

Thanks Kim KMI Technology


jasonk

Fri, 15 Jun 2012 22:01:46 +0000

Thanks for the report. We have a fix incoming. I haven't tried this, but you may be able to work around the issue with something along the lines of

#ifdef __cplusplus
extern "C" {
#endif
/* only one prcess support, as this is OS dependant */
#define __MYPID 1
int _exit (int);

int
kill (int pid,
      int sig)
{
  if(pid == __MYPID)
    _exit(sig);
  return 0;
}
/*
 * getpid -- only one process, so just return 1.
 */
int
getpid ()
{
  return __MYPID;
}
#ifdef __cplusplus
}
#endif

Just add this code to your sketch. I hope it works.