From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4241 invoked by alias); 5 Jun 2008 20:44:46 -0000 Received: (qmail 4233 invoked by uid 22791); 5 Jun 2008 20:44:46 -0000 X-Spam-Check-By: sourceware.org Received: from sibelius.xs4all.nl (HELO sibelius.xs4all.nl) (82.92.89.47) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 05 Jun 2008 20:44:28 +0000 Received: from brahms.sibelius.xs4all.nl (kettenis@localhost.sibelius.xs4all.nl [127.0.0.1]) by brahms.sibelius.xs4all.nl (8.14.3/8.14.3) with ESMTP id m55KfnNi014549; Thu, 5 Jun 2008 22:41:49 +0200 (CEST) Received: (from kettenis@localhost) by brahms.sibelius.xs4all.nl (8.14.3/8.14.3/Submit) id m55Kfneh015684; Thu, 5 Jun 2008 22:41:49 +0200 (CEST) Date: Thu, 05 Jun 2008 20:44:00 -0000 Message-Id: <200806052041.m55Kfneh015684@brahms.sibelius.xs4all.nl> From: Mark Kettenis To: drow@false.org CC: muller@ics.u-strasbg.fr, pedro@codesourcery.com, gdb-patches@sourceware.org In-reply-to: <20080605202640.GL25085@caradoc.them.org> (message from Daniel Jacobowitz on Thu, 5 Jun 2008 16:26:40 -0400) Subject: Re: [PING2] : [RFC/RFA] PING: skip __main References: <004f01c8ac58$06a1ddb0$13e59910$@u-strasbg.fr> <000c01c8c246$de300f50$9a902df0$@u-strasbg.fr> <200805301157.m4UBvOL5009408@brahms.sibelius.xs4all.nl> <001901c8c256$06f8be00$14ea3a00$@u-strasbg.fr> <001a01c8c263$f493b1d0$ddbb1570$@u-strasbg.fr> <200805301457.m4UEvnGD028393@brahms.sibelius.xs4all.nl> <000301c8c2ea$0c2d72a0$248857e0$@u-strasbg.fr> <20080605202640.GL25085@caradoc.them.org> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-06/txt/msg00074.txt.bz2 > Date: Thu, 5 Jun 2008 16:26:40 -0400 > From: Daniel Jacobowitz > > On Sat, May 31, 2008 at 08:46:25AM +0200, Pierre Muller wrote: > > Should I use the 32bit typecast strategy: > > > > unsigned int32 pc_after = pc + 5; > > unsigned int32 depl = extract_unsigned_integer (buf, 4); > > > > unsigned int32 dest = pc_after - depl; > > pc = dest; > > > > I don't know the checks done in C, > > are there any overflow checks in code like this, > > or is it safe to assume that it will work, > > even on machine that perform their operations > > on more than 32 bits? > > If you use uint32_t, then you are guaranteed wrapping at 32 bits. > So that is probably the best thing to do. See the patch I just posted > to make stdint.h available everywhere. The diff should use extract_signed_integer(). I'm not sure if the wrapping is actually necessary. Does the assembler/linker actually depend on it? Or does it error out on such large jumps? If so, alternatively you could explicity truncate the generated address to 32 bits using & 0xffffffffU.