• Russ Cox's avatar
    cmd/gc: allow runtime to define a hex integer type for printing · 4af796fb
    Russ Cox authored
    As part of the translation of the runtime, we need to rewrite
    C printf calls to Go print calls. Consider this C printf:
    
            runtime·printf("[signal %x code=%p addr=%p pc=%p]\n",
                    g->sig, g->sigcode0, g->sigcode1, g->sigpc);
    
    Today the only way to write that in Go is:
    
            print("[signal ")
            printhex(uint64(g->sig))
            print(" code=")
            printhex(uint64(g->sigcode0))
            print(" addr=")
            printhex(uint64(g->sigcode1))
            print(" pc=")
            printhex(uint64(g->sigpc))
            print("]\n")
    
    (That's nearly exactly what runtime code looked like in C before
    I added runtime·printf.)
    
    This CL recognizes the unexported type runtime.hex as an integer
    that should be printed in hexadecimal instead of decimal.
    It's a little kludgy, but it's restricted to package runtime.
    Other packages can define type hex with no effect at all.
    
    Now we can translate that original printf as the more compact:
    
            print("[signal ", hex(g->sig), " code=", hex(g->sigcode0),
                    " addr=", hex(g->sigcode1), " pc=", hex(g->sigpc), "]\n")
    
    LGTM=r, iant
    R=r, iant
    CC=golang-codereviews
    https://golang.org/cl/133220043
    4af796fb
Name
Last commit
Last update
api Loading commit data...
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...