So I stumbled across

  http://en.wikipedia.org/wiki/Tiny_C_Compiler

and it pointed me to some patches to integrate into my mercurial repository

  http://landley.net/hg/tinycc

and at least one major outstanding bug report, I.E.

  http://osvdb.org/displayvuln.php?osvdb_id=22956

So I think I've narrowed it down to case TOK_SIZEOF: in function unary() in 
tcc.c, and it's doing a vpushi(value).  It's pushing a signed integer, and it 
should be pushing an unsigned integer, and I dunno how to do that.  Best I 
can figure out how to do is to patch the type after the push, I.E.

--- a/tcc.c     Mon Jan 22 13:18:11 2007 -0500
+++ b/tcc.c     Wed Feb 21 12:56:35 2007 -0500
@@ -7351,6 +7351,7 @@ static void unary(void)
         } else {
             vpushi(align);
         }
+        vtop->type.t |= VT_UNSIGNED;
         break;

     case TOK_builtin_types_compatible_p:

I also noticed that if you build my current tree's tcc with gcc, "make test" 
is ok.  But if you rebuild it with itself, one test gets the wrong answer.  
Have to poke at this a bit later...

Rob
-- 
"Perfection is reached, not when there is no longer anything to add, but
when there is no longer anything to take away." - Antoine de Saint-Exupery


_______________________________________________
Tinycc-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to