Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
@ 2003-04-08 21:16 Elena Zannoni
  2003-04-09 13:13 ` Daniel Jacobowitz
  0 siblings, 1 reply; 16+ messages in thread
From: Elena Zannoni @ 2003-04-08 21:16 UTC (permalink / raw)
  To: gdb-patches


I was getting warnings when compiling the test on 64-bit because of the casts.

/home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c: In function `main':
/home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c:21: warning: cast to pointer from integer of different size
/home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c:26: warning: cast to pointer from integer of different size
/home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c: In function `thread_function':
/home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c:32: warning: cast from pointer to integer of different size


Michael, Daniel?

elena

2003-04-08  Elena Zannoni  <ezannoni@redhat.com>

	* gdb.threads/schedlock.c: Cast to thread function argument to
	long, for 64-bit platforms.


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	8 Apr 2003 20:56:31 -0000
@@ -18,18 +18,21 @@ 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 *) (long) i);
       }
 
     /* schedlock.exp: last thread start.  */
     args[i] = 1;
-    thread_function ((void *) i);
+    thread_function ((void *) (long) i);
 
     exit(EXIT_SUCCESS);
 }
 
 void *thread_function(void *arg) {
-    int my_number = (int) arg;
+    int my_number = (long) arg;
     int *myp = &args[my_number];
 
     /* Don't run forever.  Run just short of it :)  */



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-08 21:16 [RFA/TESTSUITE] build schedlock.c on 64-bit platforms Elena Zannoni
@ 2003-04-09 13:13 ` Daniel Jacobowitz
  2003-04-10 14:08   ` Elena Zannoni
  0 siblings, 1 reply; 16+ messages in thread
From: Daniel Jacobowitz @ 2003-04-09 13:13 UTC (permalink / raw)
  To: Elena Zannoni; +Cc: gdb-patches

On Tue, Apr 08, 2003 at 05:20:19PM -0400, Elena Zannoni wrote:
> 
> I was getting warnings when compiling the test on 64-bit because of the casts.
> 
> /home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c: In function `main':
> /home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c:21: warning: cast to pointer from integer of different size
> /home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c:26: warning: cast to pointer from integer of different size
> /home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c: In function `thread_function':
> /home/ezannoni/gdb-sources/src/gdb/testsuite/gdb.threads/schedlock.c:32: warning: cast from pointer to integer of different size
> 
> 
> Michael, Daniel?

Sigh, I was just sloppy writing this one.   Does it work if you pass
&args[i] instead of messing with my_number?  That's a little more
portable.

> 2003-04-08  Elena Zannoni  <ezannoni@redhat.com>
> 
> 	* gdb.threads/schedlock.c: Cast to thread function argument to
> 	long, for 64-bit platforms.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-09 13:13 ` Daniel Jacobowitz
@ 2003-04-10 14:08   ` Elena Zannoni
  2003-04-10 14:19     ` Daniel Jacobowitz
  0 siblings, 1 reply; 16+ messages in thread
From: Elena Zannoni @ 2003-04-10 14:08 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: Elena Zannoni, gdb-patches

Daniel Jacobowitz writes:
 > On Tue, Apr 08, 2003 at 05:20:19PM -0400, Elena Zannoni wrote:
 > > 
 > > I was getting warnings when compiling the test on 64-bit because of the casts.
 > > 

 > 
 > Sigh, I was just sloppy writing this one.   Does it work if you pass
 > &args[i] instead of messing with my_number?  That's a little more
 > portable.
 > 

Ok, how about this? But now get_current_thread in schedlock.exp
doesn't work, because the output has changed. I am not sure I
understand what it should be doing now. There is no way to get the
thread number from the backtraces.

elena




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 14:00:41 -0000
@@ -18,19 +18,21 @@ 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 *) &args[i]);
       }
 
     /* schedlock.exp: last thread start.  */
     args[i] = 1;
-    thread_function ((void *) i);
+    thread_function ((void *) &args[i]);
 
     exit(EXIT_SUCCESS);
 }
 
 void *thread_function(void *arg) {
-    int my_number = (int) arg;
-    int *myp = &args[my_number];
+    int *myp = (int *)arg;
 
     /* Don't run forever.  Run just short of it :)  */
     while (*myp > 0)


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 14:08   ` Elena Zannoni
@ 2003-04-10 14:19     ` Daniel Jacobowitz
  2003-04-10 14:35       ` Andrew Cagney
  2003-04-11  5:18       ` Michael Snyder
  0 siblings, 2 replies; 16+ messages in thread
From: Daniel Jacobowitz @ 2003-04-10 14:19 UTC (permalink / raw)
  To: Elena Zannoni; +Cc: gdb-patches

On Thu, Apr 10, 2003 at 10:12:28AM -0400, Elena Zannoni wrote:
> Daniel Jacobowitz writes:
>  > On Tue, Apr 08, 2003 at 05:20:19PM -0400, Elena Zannoni wrote:
>  > > 
>  > > I was getting warnings when compiling the test on 64-bit because of the casts.
>  > > 
> 
>  > 
>  > Sigh, I was just sloppy writing this one.   Does it work if you pass
>  > &args[i] instead of messing with my_number?  That's a little more
>  > portable.
>  > 
> 
> Ok, how about this? But now get_current_thread in schedlock.exp
> doesn't work, because the output has changed. I am not sure I
> understand what it should be doing now. There is no way to get the
> thread number from the backtraces.

Oh, you're right - sorry for the wild goose chase.  I think your
previous patch with the cast to long is OK then.  The test isn't
terribly portable but it should be portable enough for our use.

> 
> elena
> 
> 
> 
> 
> 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 14:00:41 -0000
> @@ -18,19 +18,21 @@ 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 *) &args[i]);
>        }
>  
>      /* schedlock.exp: last thread start.  */
>      args[i] = 1;
> -    thread_function ((void *) i);
> +    thread_function ((void *) &args[i]);
>  
>      exit(EXIT_SUCCESS);
>  }
>  
>  void *thread_function(void *arg) {
> -    int my_number = (int) arg;
> -    int *myp = &args[my_number];
> +    int *myp = (int *)arg;
>  
>      /* Don't run forever.  Run just short of it :)  */
>      while (*myp > 0)
> 
> 

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 14:19     ` Daniel Jacobowitz
@ 2003-04-10 14:35       ` Andrew Cagney
  2003-04-10 15:16         ` Andreas Schwab
  2003-04-11  5:18       ` Michael Snyder
  1 sibling, 1 reply; 16+ messages in thread
From: Andrew Cagney @ 2003-04-10 14:35 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: Elena Zannoni, gdb-patches

>  	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 ....

Andrew



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 14:35       ` Andrew Cagney
@ 2003-04-10 15:16         ` Andreas Schwab
  2003-04-10 15:20           ` Daniel Jacobowitz
  0 siblings, 1 reply; 16+ messages in thread
From: Andreas Schwab @ 2003-04-10 15:16 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Daniel Jacobowitz, Elena Zannoni, gdb-patches

Andrew Cagney <ac131313@redhat.com> 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.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 15:16         ` Andreas Schwab
@ 2003-04-10 15:20           ` Daniel Jacobowitz
  2003-04-10 16:05             ` Elena Zannoni
  2003-04-10 16:12             ` Andreas Schwab
  0 siblings, 2 replies; 16+ messages in thread
From: Daniel Jacobowitz @ 2003-04-10 15:20 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Andrew Cagney, Elena Zannoni, gdb-patches

On Thu, Apr 10, 2003 at 05:16:05PM +0200, Andreas Schwab wrote:
> Andrew Cagney <ac131313@redhat.com> 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?

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 15:20           ` Daniel Jacobowitz
@ 2003-04-10 16:05             ` Elena Zannoni
  2003-04-10 16:36               ` Andreas Schwab
  2003-04-10 16:12             ` Andreas Schwab
  1 sibling, 1 reply; 16+ messages in thread
From: Elena Zannoni @ 2003-04-10 16:05 UTC (permalink / raw)
  To: Daniel Jacobowitz
  Cc: Andreas Schwab, Andrew Cagney, Elena Zannoni, gdb-patches

Daniel Jacobowitz writes:
 > On Thu, Apr 10, 2003 at 05:16:05PM +0200, Andreas Schwab wrote:
 > > Andrew Cagney <ac131313@redhat.com> 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 :)  */


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 15:20           ` Daniel Jacobowitz
  2003-04-10 16:05             ` Elena Zannoni
@ 2003-04-10 16:12             ` Andreas Schwab
  2003-04-10 17:45               ` Andrew Cagney
  1 sibling, 1 reply; 16+ messages in thread
From: Andreas Schwab @ 2003-04-10 16:12 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Elena Zannoni, gdb-patches

Daniel Jacobowitz <drow@mvista.com> writes:

|> On Thu, Apr 10, 2003 at 05:16:05PM +0200, Andreas Schwab wrote:
|> > Andrew Cagney <ac131313@redhat.com> 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?

NULL is not an object, and the C standard does not define any meaning for
the above expression.  On the other hand, the effect of a cast from
integer to pointer is implementation-defined (although it might trap).

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 16:05             ` Elena Zannoni
@ 2003-04-10 16:36               ` Andreas Schwab
  0 siblings, 0 replies; 16+ messages in thread
From: Andreas Schwab @ 2003-04-10 16:36 UTC (permalink / raw)
  To: Elena Zannoni; +Cc: Daniel Jacobowitz, Andrew Cagney, gdb-patches

Elena Zannoni <ezannoni@redhat.com> writes:

|> Daniel Jacobowitz writes:
|>  > On Thu, Apr 10, 2003 at 05:16:05PM +0200, Andreas Schwab wrote:
|>  > > Andrew Cagney <ac131313@redhat.com> 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....

IMHO the intermediate cast to long (or better intptr_t when available)
would be most portable.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 16:12             ` Andreas Schwab
@ 2003-04-10 17:45               ` Andrew Cagney
  2003-04-10 17:48                 ` Daniel Jacobowitz
  0 siblings, 1 reply; 16+ messages in thread
From: Andrew Cagney @ 2003-04-10 17:45 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Elena Zannoni, gdb-patches

> Daniel Jacobowitz <drow@mvista.com> writes:
> 
> |> On Thu, Apr 10, 2003 at 05:16:05PM +0200, Andreas Schwab wrote:
> |> > Andrew Cagney <ac131313@redhat.com> 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?
> 
> NULL is not an object, and the C standard does not define any meaning for
> the above expression.  On the other hand, the effect of a cast from
> integer to pointer is implementation-defined (although it might trap).

What about this then:

static char *null_char_pointer = NULL;

	(null_char_pointer + i)

and:

	(i - null_char_pointer)

:-)



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 17:45               ` Andrew Cagney
@ 2003-04-10 17:48                 ` Daniel Jacobowitz
  0 siblings, 0 replies; 16+ messages in thread
From: Daniel Jacobowitz @ 2003-04-10 17:48 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Andreas Schwab, Elena Zannoni, gdb-patches

On Thu, Apr 10, 2003 at 01:45:34PM -0400, Andrew Cagney wrote:
> >Daniel Jacobowitz <drow@mvista.com> writes:
> >
> >|> On Thu, Apr 10, 2003 at 05:16:05PM +0200, Andreas Schwab wrote:
> >|> > Andrew Cagney <ac131313@redhat.com> 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?
> >
> >NULL is not an object, and the C standard does not define any meaning for
> >the above expression.  On the other hand, the effect of a cast from
> >integer to pointer is implementation-defined (although it might trap).
> 
> What about this then:
> 
> static char *null_char_pointer = NULL;
> 
> 	(null_char_pointer + i)
> 
> and:
> 
> 	(i - null_char_pointer)
> 
> :-)

Also not defined, for the same reason.  I believe the only pointer
outside of an object that's guaranteed to have any useful value is the
one which points just past the end of it.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-10 14:19     ` Daniel Jacobowitz
  2003-04-10 14:35       ` Andrew Cagney
@ 2003-04-11  5:18       ` Michael Snyder
  2003-04-15  1:48         ` Elena Zannoni
  1 sibling, 1 reply; 16+ messages in thread
From: Michael Snyder @ 2003-04-11  5:18 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: Elena Zannoni, gdb-patches

Daniel Jacobowitz wrote:
> 
> On Thu, Apr 10, 2003 at 10:12:28AM -0400, Elena Zannoni wrote:
> > Daniel Jacobowitz writes:
> >  > On Tue, Apr 08, 2003 at 05:20:19PM -0400, Elena Zannoni wrote:
> >  > >
> >  > > I was getting warnings when compiling the test on 64-bit because of the casts.
> >  > >
> >
> >  >
> >  > Sigh, I was just sloppy writing this one.   Does it work if you pass
> >  > &args[i] instead of messing with my_number?  That's a little more
> >  > portable.
> >  >
> >
> > Ok, how about this? But now get_current_thread in schedlock.exp
> > doesn't work, because the output has changed. I am not sure I
> > understand what it should be doing now. There is no way to get the
> > thread number from the backtraces.
> 
> Oh, you're right - sorry for the wild goose chase.  I think your
> previous patch with the cast to long is OK then.  The test isn't
> terribly portable but it should be portable enough for our use.

Why don't you just declare 'i' a long and be done with it?


> > 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 14:00:41 -0000
> > @@ -18,19 +18,21 @@ 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 *) &args[i]);
> >        }
> >
> >      /* schedlock.exp: last thread start.  */
> >      args[i] = 1;
> > -    thread_function ((void *) i);
> > +    thread_function ((void *) &args[i]);
> >
> >      exit(EXIT_SUCCESS);
> >  }
> >
> >  void *thread_function(void *arg) {
> > -    int my_number = (int) arg;
> > -    int *myp = &args[my_number];
> > +    int *myp = (int *)arg;
> >
> >      /* Don't run forever.  Run just short of it :)  */
> >      while (*myp > 0)
> >
> >
> 
> --
> Daniel Jacobowitz
> MontaVista Software                         Debian GNU/Linux Developer


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-11  5:18       ` Michael Snyder
@ 2003-04-15  1:48         ` Elena Zannoni
  2003-04-15  2:06           ` Daniel Jacobowitz
  0 siblings, 1 reply; 16+ messages in thread
From: Elena Zannoni @ 2003-04-15  1:48 UTC (permalink / raw)
  To: Michael Snyder; +Cc: Daniel Jacobowitz, Elena Zannoni, gdb-patches

Michael Snyder writes:
 > Daniel Jacobowitz wrote:
 > > 
 > > On Thu, Apr 10, 2003 at 10:12:28AM -0400, Elena Zannoni wrote:
 > > > Daniel Jacobowitz writes:
 > > >  > On Tue, Apr 08, 2003 at 05:20:19PM -0400, Elena Zannoni wrote:
 > > >  > >
 > > >  > > I was getting warnings when compiling the test on 64-bit because of the casts.
 > > >  > >
 > > >
 > > >  >
 > > >  > Sigh, I was just sloppy writing this one.   Does it work if you pass
 > > >  > &args[i] instead of messing with my_number?  That's a little more
 > > >  > portable.
 > > >  >
 > > >
 > > > Ok, how about this? But now get_current_thread in schedlock.exp
 > > > doesn't work, because the output has changed. I am not sure I
 > > > understand what it should be doing now. There is no way to get the
 > > > thread number from the backtraces.
 > > 
 > > Oh, you're right - sorry for the wild goose chase.  I think your
 > > previous patch with the cast to long is OK then.  The test isn't
 > > terribly portable but it should be portable enough for our use.
 > 
 > Why don't you just declare 'i' a long and be done with it?

Daniel? 

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	15 Apr 2003 01:47:34 -0000
@@ -13,12 +13,15 @@ int main() {
     int res;
     pthread_t threads[NUM];
     void *thread_result;
-    int i;
+    long i;
 
     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 *) i);
       }
 
     /* schedlock.exp: last thread start.  */
@@ -29,7 +32,7 @@ int main() {
 }
 
 void *thread_function(void *arg) {
-    int my_number = (int) arg;
+    int my_number =  (long) arg;
     int *myp = &args[my_number];
 
     /* Don't run forever.  Run just short of it :)  */


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-15  1:48         ` Elena Zannoni
@ 2003-04-15  2:06           ` Daniel Jacobowitz
  2003-04-15  2:24             ` Elena Zannoni
  0 siblings, 1 reply; 16+ messages in thread
From: Daniel Jacobowitz @ 2003-04-15  2:06 UTC (permalink / raw)
  To: Elena Zannoni; +Cc: Michael Snyder, gdb-patches

On Mon, Apr 14, 2003 at 09:53:14PM -0400, Elena Zannoni wrote:
> Michael Snyder writes:
>  > Daniel Jacobowitz wrote:
>  > > 
>  > > On Thu, Apr 10, 2003 at 10:12:28AM -0400, Elena Zannoni wrote:
>  > > > Daniel Jacobowitz writes:
>  > > >  > On Tue, Apr 08, 2003 at 05:20:19PM -0400, Elena Zannoni wrote:
>  > > >  > >
>  > > >  > > I was getting warnings when compiling the test on 64-bit because of the casts.
>  > > >  > >
>  > > >
>  > > >  >
>  > > >  > Sigh, I was just sloppy writing this one.   Does it work if you pass
>  > > >  > &args[i] instead of messing with my_number?  That's a little more
>  > > >  > portable.
>  > > >  >
>  > > >
>  > > > Ok, how about this? But now get_current_thread in schedlock.exp
>  > > > doesn't work, because the output has changed. I am not sure I
>  > > > understand what it should be doing now. There is no way to get the
>  > > > thread number from the backtraces.
>  > > 
>  > > Oh, you're right - sorry for the wild goose chase.  I think your
>  > > previous patch with the cast to long is OK then.  The test isn't
>  > > terribly portable but it should be portable enough for our use.
>  > 
>  > Why don't you just declare 'i' a long and be done with it?
> 
> Daniel? 

Looks fine to me - portable enough for our purposes.

> 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	15 Apr 2003 01:47:34 -0000
> @@ -13,12 +13,15 @@ int main() {
>      int res;
>      pthread_t threads[NUM];
>      void *thread_result;
> -    int i;
> +    long i;
>  
>      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 *) i);
>        }
>  
>      /* schedlock.exp: last thread start.  */
> @@ -29,7 +32,7 @@ int main() {
>  }
>  
>  void *thread_function(void *arg) {
> -    int my_number = (int) arg;
> +    int my_number =  (long) arg;
>      int *myp = &args[my_number];
>  
>      /* Don't run forever.  Run just short of it :)  */
> 

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms
  2003-04-15  2:06           ` Daniel Jacobowitz
@ 2003-04-15  2:24             ` Elena Zannoni
  0 siblings, 0 replies; 16+ messages in thread
From: Elena Zannoni @ 2003-04-15  2:24 UTC (permalink / raw)
  To: Daniel Jacobowitz; +Cc: Elena Zannoni, Michael Snyder, gdb-patches

Daniel Jacobowitz writes:
 > On Mon, Apr 14, 2003 at 09:53:14PM -0400, Elena Zannoni wrote:
 > > Michael Snyder writes:
 > >  > Daniel Jacobowitz wrote:
 > >  > > 
 > >  > > On Thu, Apr 10, 2003 at 10:12:28AM -0400, Elena Zannoni wrote:
 > >  > > > Daniel Jacobowitz writes:
 > >  > > >  > On Tue, Apr 08, 2003 at 05:20:19PM -0400, Elena Zannoni wrote:
 > >  > > >  > >
 > >  > > >  > > I was getting warnings when compiling the test on 64-bit because of the casts.
 > >  > > >  > >
 > >  > > >
 > >  > > >  >
 > >  > > >  > Sigh, I was just sloppy writing this one.   Does it work if you pass
 > >  > > >  > &args[i] instead of messing with my_number?  That's a little more
 > >  > > >  > portable.
 > >  > > >  >
 > >  > > >
 > >  > > > Ok, how about this? But now get_current_thread in schedlock.exp
 > >  > > > doesn't work, because the output has changed. I am not sure I
 > >  > > > understand what it should be doing now. There is no way to get the
 > >  > > > thread number from the backtraces.
 > >  > > 
 > >  > > Oh, you're right - sorry for the wild goose chase.  I think your
 > >  > > previous patch with the cast to long is OK then.  The test isn't
 > >  > > terribly portable but it should be portable enough for our use.
 > >  > 
 > >  > Why don't you just declare 'i' a long and be done with it?
 > > 
 > > Daniel? 
 > 
 > Looks fine to me - portable enough for our purposes.

ok, I committed it.


 > 
 > > 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	15 Apr 2003 01:47:34 -0000
 > > @@ -13,12 +13,15 @@ int main() {
 > >      int res;
 > >      pthread_t threads[NUM];
 > >      void *thread_result;
 > > -    int i;
 > > +    long i;
 > >  
 > >      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 *) i);
 > >        }
 > >  
 > >      /* schedlock.exp: last thread start.  */
 > > @@ -29,7 +32,7 @@ int main() {
 > >  }
 > >  
 > >  void *thread_function(void *arg) {
 > > -    int my_number = (int) arg;
 > > +    int my_number =  (long) arg;
 > >      int *myp = &args[my_number];
 > >  
 > >      /* Don't run forever.  Run just short of it :)  */
 > > 
 > 
 > -- 
 > Daniel Jacobowitz
 > MontaVista Software                         Debian GNU/Linux Developer


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2003-04-15  2:24 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-04-08 21:16 [RFA/TESTSUITE] build schedlock.c on 64-bit platforms Elena Zannoni
2003-04-09 13:13 ` Daniel Jacobowitz
2003-04-10 14:08   ` Elena Zannoni
2003-04-10 14:19     ` Daniel Jacobowitz
2003-04-10 14:35       ` Andrew Cagney
2003-04-10 15:16         ` Andreas Schwab
2003-04-10 15:20           ` Daniel Jacobowitz
2003-04-10 16:05             ` Elena Zannoni
2003-04-10 16:36               ` Andreas Schwab
2003-04-10 16:12             ` Andreas Schwab
2003-04-10 17:45               ` Andrew Cagney
2003-04-10 17:48                 ` Daniel Jacobowitz
2003-04-11  5:18       ` Michael Snyder
2003-04-15  1:48         ` Elena Zannoni
2003-04-15  2:06           ` Daniel Jacobowitz
2003-04-15  2:24             ` Elena Zannoni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox