• 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
builtin.c 8.88 KB