This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA/TESTSUITE] build schedlock.c on 64-bit platforms


On Thu, Apr 10, 2003 at 01:45:34PM -0400, Andrew Cagney wrote:
> >Daniel Jacobowitz <drow at mvista dot com> writes:
> >
> >|> On Thu, Apr 10, 2003 at 05:16:05PM +0200, Andreas Schwab wrote:
> >|> > Andrew Cagney <ac131313 at redhat dot 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]