From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4256 invoked by alias); 22 May 2014 05:30:12 -0000 Mailing-List: contact cgen-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cgen-owner@sourceware.org Received: (qmail 4231 invoked by uid 89); 22 May 2014 05:30:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: smtp.nebula.fi Received: from smtp-69.nebula.fi (HELO smtp.nebula.fi) (83.145.220.69) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 22 May 2014 05:30:08 +0000 Received: from chokladfabriken.org (nblzone-224-141.nblnetworks.fi [83.145.224.141]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by smtp.nebula.fi (Postfix) with ESMTPS id 4E8FBD00D39; Thu, 22 May 2014 08:29:58 +0300 (EEST) Date: Thu, 22 May 2014 05:30:00 -0000 From: Stefan Kristiansson To: cgen@sourceware.org Cc: Alan Modra , fche@sourceware.org, Christian Svensson , Pierre Muller , "Maciej W. Rozycki" Subject: [PATCH] Make large enum constants unsigned Message-ID: <20140522052921.GA30609@chokladfabriken.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SW-Source: 2014-q2/txt/msg00005.txt.bz2 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 * 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?)