tags 591133 + patch thanks Hi,
ncc calls lib/bcc-cpp, lib/bcc-cc1 and lib/copt, and they generate codes. I found that lib/copt generated illegal one. /tmp/linux86-0.16.17/lib/bcc-cpp __ldivmod.c -o xxx.0 -D__ELKS__ -D__unix__-D__LIBC__ -D__HAS_NO_FLOATS__ -D__BCC_VERSION__=0x001011L -O -I/tmp/linux86-0.16.17/include -0 /tmp/linux86-0.16.17/lib/bcc-cc1 xxx.0 -o xxx.1 -O -0 /tmp/linux86-0.16.17/lib/copt xxx.1 -o xxx.2 -c! -d/tmp/linux86-0.16.17/lib rules.start rules.86 In xxx.1, .text .even But lib/copt breaks it. In xxx.2, .txxt .evvn In linux86-0.16.17/copt/copt.c, readline breaks. ---------------------------------------------------------------------- static char *readline(FILE *fp) { static char buf[MAXLINE]; char *cp; /* Read line from input file */ if (fgets(buf, MAXLINE-1, fp) == NULL) return(NULL); buf[MAXLINE-1] = '\0'; /* Delete trailing newline */ if ((cp = strchr(buf, '\n')) != NULL) *cp = '\0'; /* Delete leading white spaces */ for (cp = buf; *cp && isspace(*cp); cp++) ; if (cp != buf && *cp) strcpy(buf, cp); <<<<< ----- break return(buf); } ---------------------------------------------------------------------- I replace strcpy by memmove. patch attached. It is inspired by http://cboard.cprogramming.com/c-programming/113133-remove-white-space.html . -- Regards, dai GPG Fingerprint = 0B29 D88E 42E6 B765 B8D8 EA50 7839 619D D439 668E
--- linux86-0.16.17/copt/copt.c.orig 2003-10-08 04:46:35.000000000 +0900 +++ linux86-0.16.17/copt/copt.c 2010-10-12 12:30:25.000000000 +0900 @@ -174,7 +174,7 @@ static char *readline(FILE *fp) /* Delete leading white spaces */ for (cp = buf; *cp && isspace(*cp); cp++) ; if (cp != buf && *cp) - strcpy(buf, cp); + memmove(buf, cp, strlen(cp) + 1); return(buf); }
signature.asc
Description: Digital signature