The compiler team is working on folding lint functionality into the C compiler. I there will be some progress in Sun Studio 12.1 (Ceres release). I have no idea about the specific details of specific error messages though. I'm pretty sure you're out of luck with SS12 for that specific error.
--chris Roland Mainz wrote: > 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 >