Chris Quenelle wrote: > Roland Mainz wrote: > > Does Sun Studio 12 have a warning for statements like... > > -- snip -- > > int pd; > > char *ptr1, > > *ptr2; > > /* ... */ > > pd = ptr2-ptr1; > > -- snip -- > > ... on 64bit targets ? > > > > I've spend today some hours to dig-out this kind of bug where a pointer > > difference (32bit on 32bit SPARC and 64bit on 64bit SPARC, e.g. a > > |ptrdiff_t|) is stored in an |int| (32bit integer) the loss of bits > > trigged a malfunction... > > ... somehow I was wondering why Sun Studio didn't warn about this. > > There's a chapter in the C user's guide about porting programs > from 32-bits to 64-bits. It mentions a lint flag > > -errchk=longptr64 flag checks assignments of pointer > expressions and long integer expressions to plain > integers, even when explicit casts are used. > > http://docs.sun.com/app/docs/doc/819-5265/bjami?a=view
Is there any way to enable this specific warning for the compiler pass ? Right now "lint" doesn't work for any of the AST/ksh93 sources properly because it doesn't like stuff like the following: -- snip -- int foo(int c); int foo(register int c) { /* ... */ return x; } -- snip -- ... that's valid for ISO-C99 but "lint" generates lots of noise on this kind of things ... ;-( ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) roland.mainz at nrubsig.org \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 3992797 (;O/ \/ \O;)