From 5f9412911b7ba96b31f0924d66190b242cff334d Mon Sep 17 00:00:00 2001 From: Cherry Mui Date: Wed, 7 Jun 2023 22:28:20 -0400 Subject: [PATCH] cmd/internal/obj: print relocation type by name in -S output The compiler/assembler's -S output prints relocation type numerically, which is hard to understand. Every time I need to count the relocation type constants to figure out which relocation it actually is. Print the symbolic name instead. Change-Id: I4866873bbae8b3dc0ee212609cb00280f9164243 Reviewed-on: https://go-review.googlesource.com/c/go/+/501856 TryBot-Result: Gopher Robot Reviewed-by: Than McIntosh Run-TryBot: Cherry Mui --- src/cmd/internal/obj/objfile.go | 4 ++-- test/fixedbugs/issue9355.go | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/cmd/internal/obj/objfile.go b/src/cmd/internal/obj/objfile.go index 0113eddbfd..36001b06d7 100644 --- a/src/cmd/internal/obj/objfile.go +++ b/src/cmd/internal/obj/objfile.go @@ -914,9 +914,9 @@ func (ctxt *Link) writeSymDebugNamed(s *LSym, name string) { name = "TLS" } if ctxt.Arch.InFamily(sys.ARM, sys.PPC64) { - fmt.Fprintf(ctxt.Bso, "\trel %d+%d t=%d %s%s+%x\n", int(r.Off), r.Siz, r.Type, name, ver, uint64(r.Add)) + fmt.Fprintf(ctxt.Bso, "\trel %d+%d t=%v %s%s+%x\n", int(r.Off), r.Siz, r.Type, name, ver, uint64(r.Add)) } else { - fmt.Fprintf(ctxt.Bso, "\trel %d+%d t=%d %s%s+%d\n", int(r.Off), r.Siz, r.Type, name, ver, r.Add) + fmt.Fprintf(ctxt.Bso, "\trel %d+%d t=%v %s%s+%d\n", int(r.Off), r.Siz, r.Type, name, ver, r.Add) } } } diff --git a/test/fixedbugs/issue9355.go b/test/fixedbugs/issue9355.go index 2670f15574..075e7ebbff 100644 --- a/test/fixedbugs/issue9355.go +++ b/test/fixedbugs/issue9355.go @@ -32,10 +32,10 @@ func main() { // 6g/8g print the offset as dec, but 5g/9g print the offset as hex. patterns := []string{ - `rel 0\+\d t=1 p\.x\+8\r?\n`, // y = &x.b - `rel 0\+\d t=1 p\.x\+(28|1c)\r?\n`, // z = &x.d.q - `rel 0\+\d t=1 p\.b\+5\r?\n`, // c = &b[5] - `rel 0\+\d t=1 p\.x\+(88|58)\r?\n`, // w = &x.f[3].r + `rel 0\+\d t=R_ADDR p\.x\+8\r?\n`, // y = &x.b + `rel 0\+\d t=R_ADDR p\.x\+(28|1c)\r?\n`, // z = &x.d.q + `rel 0\+\d t=R_ADDR p\.b\+5\r?\n`, // c = &b[5] + `rel 0\+\d t=R_ADDR p\.x\+(88|58)\r?\n`, // w = &x.f[3].r } for _, p := range patterns { if ok, err := regexp.Match(p, out); !ok || err != nil { -- 2.50.0