]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: add -dumpdep flag to dump linker dependency graph
authorBrad Fitzpatrick <bradfitz@golang.org>
Sat, 23 Apr 2016 01:49:59 +0000 (18:49 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Sat, 23 Apr 2016 18:59:38 +0000 (18:59 +0000)
This is what led to https://golang.org/cl/20763 and
https://golang.org/cl/20765 to shrink binary sizes.

Change-Id: Id360d474e6153cfe32a525b0a720810fd113195b
Reviewed-on: https://go-review.googlesource.com/22392
Reviewed-by: David Crawshaw <crawshaw@golang.org>
src/cmd/link/internal/ld/deadcode.go
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/ld/pobj.go

index 6a70ff581fa6a8343146c9f6ddbb037f5320170c..aaed6cde213a29d7b47cca97ef3932ffc99b1930 100644 (file)
@@ -196,6 +196,13 @@ func (d *deadcodepass) mark(s, parent *LSym) {
        if s.Attr.ReflectMethod() {
                d.reflectMethod = true
        }
+       if flag_dumpdep {
+               p := "_"
+               if parent != nil {
+                       p = parent.Name
+               }
+               fmt.Printf("%s -> %s\n", p, s.Name)
+       }
        s.Attr |= AttrReachable
        s.Reachparent = parent
        d.markQueue = append(d.markQueue, s)
index 77db672bfdd2fe94a9a7f743ef288bb02fef756f..f7b9b79c2f78635694da1af57d6205186b4b059e 100644 (file)
@@ -196,6 +196,7 @@ var (
        Funcalign          int
        iscgo              bool
        elfglobalsymndx    int
+       flag_dumpdep       bool
        flag_installsuffix string
        flag_race          int
        flag_msan          int
index f4fb4d484563477c2a41367bd8c9f7cd1e4ca979..b64bb5deaf32d43a16601081fa51fafc87454e63 100644 (file)
@@ -90,6 +90,7 @@ func Ldmain() {
        flag.Var(&Buildmode, "buildmode", "set build `mode`")
        obj.Flagcount("c", "dump call graph", &Debug['c'])
        obj.Flagcount("d", "disable dynamic executable", &Debug['d'])
+       flag.BoolVar(&flag_dumpdep, "dumpdep", false, "dump symbol dependency graph")
        obj.Flagstr("extar", "archive program for buildmode=c-archive", &extar)
        obj.Flagstr("extld", "use `linker` when linking in external mode", &extld)
        obj.Flagstr("extldflags", "pass `flags` to external linker", &extldflags)