[PATCH] Make large enum constants unsigned
Stefan Kristiansson <[email protected]>
| Newsgroups | gmane.comp.tools.cgen.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, this fixes a bug noted in two threads on the binutils mailing list: https://sourceware.org/ml/binutils/2014-05/msg00152.html https://sourceware.org/ml/binutils/2014-05/msg00195.html Both threads describe the problem pretty well, but the gist of it is that constants are generated that will be interpreted as signed. 2014-05-22 Stefan Kristiansson <[email protected]> * enum.scm (gen-enum-decl): Emit 'ULL' after constants larger than #x80000000 Index: cgen/enum.scm =================================================================== RCS file: /cvs/src/src/cgen/enum.scm,v retrieving revision 1.13 diff -u -r1.13 enum.scm --- cgen/enum.scm 13 Feb 2010 03:39:15 -0000 1.13 +++ cgen/enum.scm 22 May 2014 05:23:23 -0000 @@ -298,7 +298,10 @@ "" (string-append " = " (if (number? (cadr e)) - (number->string (cadr e)) + (string-append (number->string (cadr e)) + (if (> (cadr e) + #x80000000) + "ULL" "")) (cadr e)))) )) (if (and san? include-sanitize-marker?)