Hi,
I traced a long standing cifs issue to 5c the compiler.
The code in lib9p to validate wstat calls
uses a neat bit of casting which fails when using 5c.
/sys/src/lib9p/srv.c:658-669
These following lines missfire reporting type or qid change
when trying to rename files over cifs.
if((ushort)~r->d.type){
...
if((uchar)~r->d.qid.type || .. ){
but rewriting them like this makes the code work as expected:
if(r->d.type != (ushort)~0){
...
if(r->d.qid.type != (uchar)~0 || ... )
Personally I am happy to hack lib9p but the worry is that
this bug might be affecting other things.
I have no knowledge of the internals of the compilers so
I am afraid I have made no attempt to dig deeper.
-Steve