[PATCH 1/1] libc: Added implementations and prototypes for

Corinna Vinschen vinschen@redhat.com
Thu Jul 22 07:55:11 GMT 2021


Hi Matt,

On Jul 22 07:14, Matthew Joyce wrote:
> Hi Corinna,
> 
> I've made the changes you recommended but I'm running into a problem
> with the definition of SIG2STR_MAX. You suggested:
> 
> #if __STDINT_EXP(INT_MAX) > 0x7fff
> #define SIG2STR_MAX (sizeof ("RTMAX+") + sizeof ("4294967295") - 1)
> #else #define SIG2STR_MAX (sizeof ("RTMAX+") + sizeof ("65535") - 1)

These are actually two lines, right?  It's just a copy/paste glitch,
I guess.

> #endif
> 
> I've tried it both in newlib and natively but I get the error:
> " missing binary operator before token '(' "
> (In the first line of the block)

I hacked a STC:

----------------------------------
#include <stdio.h>
#include <string.h>
#include <stdint.h>

#if __STDINT_EXP(INT_MAX) > 0x7fff
#define SIG2STR_MAX (sizeof ("RTMAX+") + sizeof ("4294967295") - 1)
#else
#define SIG2STR_MAX (sizeof ("RTMAX+") + sizeof ("65535") - 1)
#endif

void
foo (int sig, char *out)
{
  char buf[SIG2STR_MAX];

  if (sig > SIG2STR_MAX)
    return;
  snprintf (buf, SIG2STR_MAX, "FOO+%d", sig);
  memcpy (out, buf, SIG2STR_MAX);
}
----------------------------------

$ gcc -g -O2 -c -Wall foo.c

No error or warning is generated, so I'm puzzled about your problem.

Would you mind to paste the affected code snippet and the full gcc error
output?


Corinna



More information about the Newlib mailing list