Here is some that I found simple to make: Author: mingodad <mingo...@gmail.com> 2013-01-31 01:17:50 Committer: mingodad <mingo...@gmail.com> 2013-01-31 01:17:50 Parent: 1b1e7ee1fd2f269872128dc5e8b830bd55dfa80c (Fix cross-compilation out-of-tree build) Branch: vio_patch Follows: release_0_9_25 Precedes:
Alerts found using Coverity Scan ----------------------------------- libtcc.c ----------------------------------- index b0a9b1a..69d9e0d 100644 @@ -479,8 +479,7 @@ ST_FUNC void put_extern_sym2(Sym *sym, Section *section, case TOK_strlen: case TOK_strcpy: case TOK_alloca: - strcpy(buf, "__bound_"); - strcat(buf, name); + snprintf(buf, sizeof(buf), "__bound_%s", name); name = buf; break; } ----------------------------------- tccelf.c ----------------------------------- index a4dee19..479b2fa 100644 @@ -114,7 +114,7 @@ ST_FUNC int put_elf_sym(Section *s, uplong value, unsigned long size, if (ELFW(ST_BIND)(info) != STB_LOCAL) { /* add another hashing entry */ nbuckets = base[0]; - h = elf_hash(name) % nbuckets; + h = name ? elf_hash(name) % nbuckets : 0; *ptr = base[2 + h]; base[2 + h] = sym_index; base[1]++; @@ -3052,7 +3052,7 @@ static int ld_add_file_list(TCCState *s1, const char *cmd, int as_needed) ret = -1; goto lib_parse_error; } - strcpy(libname, &filename[1]); + snprintf(libname, sizeof(libname), "%s", &filename[1]); libname_to_filename(s1, libname, filename); } else if (t != LD_TOK_NAME) { tcc_error_noabort("filename expected"); ----------------------------------- tccgen.c ----------------------------------- index 4300403..e06a932 100644 @@ -361,6 +361,7 @@ void vpush64(int ty, unsigned long long v) CValue cval; CType ctype; ctype.t = ty; + ctype.ref = 0; cval.ull = v; vsetc(&ctype, VT_CONST, &cval); } @@ -1734,6 +1735,7 @@ ST_FUNC void gen_op(int op) } vswap(); type1.t = t; + type1.ref = 0; gen_cast(&type1); vswap(); /* special case for shifts and long long: we keep the shift as @@ -2717,6 +2719,7 @@ static void struct_decl(CType *type, int u) v = anon_sym++; } type1.t = a; + type1.ref = 0; /* we put an undefined size for struct/union */ s = sym_push(v | SYM_STRUCT, &type1, 0, -1); s->r = 0; /* default alignment is zero as gcc */ @@ -3396,6 +3399,7 @@ static void gfunc_param_typed(Sym *func, Sym *arg) /* default casting : only need to convert float to double */ if ((vtop->type.t & VT_BTYPE) == VT_FLOAT) { type.t = VT_DOUBLE; + type.ref = 0; gen_cast(&type); } } else if (arg == NULL) { @@ -3592,6 +3596,7 @@ ST_FUNC void unary(void) if ((vtop->r & (VT_VALMASK | VT_LVAL | VT_SYM)) == VT_CONST) { CType boolean; boolean.t = VT_BOOL; + boolean.ref = 0; gen_cast(&boolean); vtop->c.i = !vtop->c.i; } else if ((vtop->r & VT_VALMASK) == VT_CMP) @@ -4101,6 +4106,7 @@ static void expr_cond(void) CType boolean; int c; boolean.t = VT_BOOL; + boolean.ref = 0; vdup(); gen_cast(&boolean); c = vtop->c.i; @@ -5574,7 +5580,7 @@ ST_FUNC void gen_inline_functions(void) str = fn->token_str; fn->sym = NULL; if (file) - strcpy(file->filename, fn->filename); + snprintf(file->filename, sizeof(file->filename), "%s", fn->filename); sym->r = VT_SYM | VT_CONST; sym->type.t &= ~VT_INLINE; On Thu, Jan 31, 2013 at 1:13 AM, Domingo Alvarez Duarte <mingo...@gmail.com>wrote: > Also on this function: > > CID 968150 (#1 of 1): Unchecked return value (CHECKED_RETURN)6. > check_return: Calling function "parse_btype(CType *, AttributeDef *)" > without checking return value (as is done elsewhere 7 out of 8 times). > > > /* enum/struct/union declaration. u is either VT_ENUM or VT_STRUCT */ > static void struct_decl(CType *type, int u) > { > ... > bit_pos = 0; > offset = 0; > while (tok != '}') { > parse_btype(&btype, &ad); //// no check made here > ????????????????? > while (1) { > bit_size = -1; > v = 0; > type1 = btype; > > > > On Thu, Jan 31, 2013 at 1:07 AM, Domingo Alvarez Duarte < > mingo...@gmail.com> wrote: > >> Also here : >> >> static void asm_expr_logic(TCCState *s1, ExprValue *pe) >> { >> int op; >> ExprValue e2; >> >> asm_expr_prod(s1, pe); >> >> for(;;) { >> op = tok; >> if (op != '&' && op != '|' && op != '^') >> break; >> next(); >> asm_expr_prod(s1, &e2); >> >> if (pe->sym || e2.sym) >> tcc_error("invalid operation with label"); >> switch(op) { >> case '&': >> pe->v &= e2.v; >> break; >> case '|': >> pe->v |= e2.v; >> break; >> default: >> case '^': ///////////////////////////////////////what this case >> after default mean ???????? >> pe->v ^= e2.v; >> break; >> } >> } >> } >> >> >> >> On Thu, Jan 31, 2013 at 1:06 AM, Domingo Alvarez Duarte < >> mingo...@gmail.com> wrote: >> >>> Hello ! >>> I'm looking again on the reports done with Coverity Scan and found >>> several things one of it is this: >>> >>> static void asm_expr_prod(TCCState *s1, ExprValue *pe) >>> { >>> int op; >>> ExprValue e2; >>> >>> asm_expr_unary(s1, pe); >>> for(;;) { >>> op = tok; >>> if (op != '*' && op != '/' && op != '%' && >>> op != TOK_SHL && op != TOK_SAR) >>> break; >>> next(); >>> asm_expr_unary(s1, &e2); >>> if (pe->sym || e2.sym) >>> tcc_error("invalid operation with label"); >>> switch(op) { >>> case '*': >>> pe->v *= e2.v; >>> break; >>> case '/': >>> if (e2.v == 0) { >>> div_error: >>> tcc_error("division by zero"); >>> } >>> pe->v /= e2.v; >>> break; >>> case '%': >>> if (e2.v == 0) >>> goto div_error; >>> pe->v %= e2.v; >>> break; >>> case TOK_SHL: >>> pe->v <<= e2.v; >>> break; >>> default: >>> case TOK_SAR: ////////////////////////////////////////this >>> case after default what does it mean ?????????????? >>> pe->v >>= e2.v; >>> break; >>> } >>> } >>> } >>> >>> >>> >>> On Wed, Jan 30, 2013 at 11:08 PM, Ivo van Poorten <ivo...@gmail.com>wrote: >>> >>>> Error: >>>> >>>> $ ./configure --cc=tcc >>>> Binary directory /usr/local/bin >>>> TinyCC directory /usr/local/lib/tcc >>>> Library directory /usr/local/lib >>>> Include directory /usr/local/include >>>> Manual directory /usr/local/share/man >>>> Info directory /usr/local/share/info >>>> Doc directory /usr/local/share/doc/tcc >>>> Target root prefix >>>> Source path /home/ivo/git/tinycc >>>> C compiler tcc >>>> Target OS Linux >>>> CPU x86 >>>> Big Endian no >>>> gprof enabled no >>>> cross compilers no >>>> use libgcc no >>>> Creating config.mak and config.h >>>> $ make >>>> [..snip..] >>>> gcc -c lib/bcheck.c -o bcheck.o -I. -I/home/ivo/git/tinycc -Wall -g -O2 >>>> -mpreferred-stack-boundary=2 -m386 -malign-functions=0 -m32 cc1: error: >>>> unrecognized command line option "-m386" >>>> >>>> >>>> ----8<----8<----8<----8<----8<----8<----8<----8<---- >>>> >>>> diff --git a/Makefile b/Makefile >>>> index d257464..0333ebe 100644 >>>> --- a/Makefile >>>> +++ b/Makefile >>>> @@ -232,7 +232,7 @@ libtcc1.a : FORCE >>>> lib/%/libtcc1.a : FORCE $(PROGS_CROSS) >>>> @$(MAKE) -C lib cross TARGET=$* >>>> bcheck.o : lib/bcheck.c >>>> - gcc -c $< -o $@ $(CPPFLAGS) $(CFLAGS) >>>> + $(CC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS) >>>> FORCE: >>>> >>>> # install >>>> >>>> _______________________________________________ >>>> Tinycc-devel mailing list >>>> Tinycc-devel@nongnu.org >>>> https://lists.nongnu.org/mailman/listinfo/tinycc-devel >>>> >>> >>> >> >
_______________________________________________ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel