> How %p is treated is really upto the implementation but
> it should not crash since p is never dereferenced. Does
> this work?
> 
>       uintptr q;
>       print("%p", q);

no.  if i change the print to print an integer, it still fails.

in fact, it's really the indirect call in print that fails.
this is the instruction

        CALL    *AX

acid; *AX
0x002014b300000000
acid; src(*AX>>32)
/sys/src/libc/fmt/dofmt.c:310
 305            return _fmtrcpy(f, x, 1);
 306    }
 307    
 308    /* fmt an integer */
 309    int
>310    _ifmt(Fmt *f)
 311    {
 312            char buf[88], *p, *conv;
 313            uvlong vu;
 314            ulong u;
 315            uintptr pu;

- erik

Reply via email to