From: Cherry Zhang Date: Fri, 24 Apr 2020 17:02:37 +0000 (-0400) Subject: [dev.link] cmd/link: panic if HeadType is not set X-Git-Tag: go1.15beta1~270^2^2~34 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=880ef2da7b81fe2e4e9fb75f4677377eeba70d1e;p=gostls13.git [dev.link] cmd/link: panic if HeadType is not set In the code there are conditions like !ctxt.IsDarwin(). This will accidentally be true if HeadType is not yet set. Panic when HeadType is not set, to catch errors. Change-Id: Ic891123f27f0276fff5a4b5d29e5b1f7ebbb94ee Reviewed-on: https://go-review.googlesource.com/c/go/+/229869 Run-TryBot: Cherry Zhang Reviewed-by: Than McIntosh TryBot-Result: Gobot Gobot --- diff --git a/src/cmd/link/internal/ld/target.go b/src/cmd/link/internal/ld/target.go index 7aa2c1ccd0..8c07d77fd8 100644 --- a/src/cmd/link/internal/ld/target.go +++ b/src/cmd/link/internal/ld/target.go @@ -61,6 +61,7 @@ func (t *Target) CanUsePlugins() bool { } func (t *Target) IsElf() bool { + t.mustSetHeadType() return t.IsELF } @@ -112,37 +113,51 @@ func (t *Target) IsWasm() bool { // func (t *Target) IsLinux() bool { + t.mustSetHeadType() return t.HeadType == objabi.Hlinux } func (t *Target) IsDarwin() bool { + t.mustSetHeadType() return t.HeadType == objabi.Hdarwin } func (t *Target) IsWindows() bool { + t.mustSetHeadType() return t.HeadType == objabi.Hwindows } func (t *Target) IsPlan9() bool { + t.mustSetHeadType() return t.HeadType == objabi.Hplan9 } func (t *Target) IsAIX() bool { + t.mustSetHeadType() return t.HeadType == objabi.Haix } func (t *Target) IsSolaris() bool { + t.mustSetHeadType() return t.HeadType == objabi.Hsolaris } func (t *Target) IsNetbsd() bool { + t.mustSetHeadType() return t.HeadType == objabi.Hnetbsd } func (t *Target) IsOpenbsd() bool { + t.mustSetHeadType() return t.HeadType == objabi.Hopenbsd } +func (t *Target) mustSetHeadType() { + if t.HeadType == objabi.Hunknown { + panic("HeadType is not set") + } +} + // // MISC //