From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21773 invoked by alias); 10 Apr 2003 16:05:54 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 21759 invoked from network); 10 Apr 2003 16:05:54 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 10 Apr 2003 16:05:54 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id h3AG5se11257 for ; Thu, 10 Apr 2003 12:05:54 -0400 Received: from pobox.corp.redhat.com (pobox.corp.redhat.com [172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id h3AG5rJ12997; Thu, 10 Apr 2003 12:05:53 -0400 Received: from localhost.redhat.com (romulus-int.sfbay.redhat.com [172.16.27.46]) by pobox.corp.redhat.com (8.11.6/8.11.6) with ESMTP id h3AG5qm17829; Thu, 10 Apr 2003 12:05:52 -0400 Received: by localhost.redhat.com (Postfix, from userid 469) id D70CA2C43E; Thu, 10 Apr 2003 12:10:14 -0400 (EDT) From: Elena Zannoni MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16021.38758.253330.163921@localhost.redhat.com> Date: Thu, 10 Apr 2003 16:05:00 -0000 To: Daniel Jacobowitz Cc: Andreas Schwab , Andrew Cagney , Elena Zannoni , gdb-patches@sources.redhat.com Subject: Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms In-Reply-To: <20030410152038.GA11800@nevyn.them.org> References: <16019.15635.929065.664152@localhost.redhat.com> <20030409131329.GA4525@nevyn.them.org> <16021.31692.763468.4182@localhost.redhat.com> <20030410141953.GA10379@nevyn.them.org> <3E958136.3060102@redhat.com> <20030410152038.GA11800@nevyn.them.org> X-SW-Source: 2003-04/txt/msg00202.txt.bz2 Daniel Jacobowitz writes: > On Thu, Apr 10, 2003 at 05:16:05PM +0200, Andreas Schwab wrote: > > Andrew Cagney writes: > > > > |> > args[i] = 1; > > |> >> - res = pthread_create(&threads[i], NULL, thread_function, (void *)i); > > |> >> > > |> > > |> Try: > > |> > > |> (((char *) NULL) + i) > > |> > > |> and what ever the reverse of that is .... > > > > That is even less portable than the above. > > Really? What's non-portable about it? Attempt #3.... Index: schedlock.c =================================================================== RCS file: /cvs/uberbaum/gdb/testsuite/gdb.threads/schedlock.c,v retrieving revision 1.2 diff -u -p -r1.2 schedlock.c --- schedlock.c 23 Oct 2002 03:22:56 -0000 1.2 +++ schedlock.c 10 Apr 2003 16:04:37 -0000 @@ -18,18 +18,25 @@ int main() { for (i = 0; i < NUM; i++) { args[i] = 1; - res = pthread_create(&threads[i], NULL, thread_function, (void *)i); + res = pthread_create(&threads[i], + NULL, + thread_function, + (void *) (((char *) NULL) + i)); } /* schedlock.exp: last thread start. */ args[i] = 1; - thread_function ((void *) i); + thread_function ((void *) (((char *) NULL) + i)); exit(EXIT_SUCCESS); } void *thread_function(void *arg) { - int my_number = (int) arg; + + /* Use sick pointer arithmetic trick, to get an offset which is a + long. This will be silently converted to an int, which is of + smaller size on 64-bit platforms. */ + int my_number = (char *) arg - (char *) NULL; int *myp = &args[my_number]; /* Don't run forever. Run just short of it :) */