aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2025-09-12 12:36:38 -0400
committerCherry Mui <cherryyz@google.com>2025-09-12 10:20:07 -0700
commit911455fe1893bcd90d30246117415dfbce658d88 (patch)
treebc2e570c37a5da5d3f9c4ccd03bed535bfef118a /src/cmd
parentf1fd13016ab51b93f5d39b0c46aa8c2b42e8f761 (diff)
downloadgo-911455fe1893bcd90d30246117415dfbce658d88.tar.xz
cmd/link: don't count tbss section in TestFlagD
TestFlagD looks for a data-like section at the lowest address. On OpenBSD, the .tbss section matches the current condition, which has address 0, causing the test fail. Don't count TLS sections. Also, print the section name on error. Fixes #75444. Change-Id: Ic0aa1a2bb7c6bd5c0023d4482405a482095ff68b Reviewed-on: https://go-review.googlesource.com/c/go/+/703375 Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/link/elf_test.go20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/cmd/link/elf_test.go b/src/cmd/link/elf_test.go
index c82eae8866..dc52c091f6 100644
--- a/src/cmd/link/elf_test.go
+++ b/src/cmd/link/elf_test.go
@@ -627,30 +627,30 @@ func testFlagD(t *testing.T, dataAddr string, roundQuantum string, expectedAddr
defer ef.Close()
// Find the first data-related section to verify segment placement
- var firstDataSectionAddr uint64
- var found bool = false
+ var firstDataSection *elf.Section
for _, sec := range ef.Sections {
if sec.Type == elf.SHT_PROGBITS || sec.Type == elf.SHT_NOBITS {
// These sections are writable, allocated at runtime, but not executable
+ // nor TLS.
isWrite := sec.Flags&elf.SHF_WRITE != 0
isExec := sec.Flags&elf.SHF_EXECINSTR != 0
isAlloc := sec.Flags&elf.SHF_ALLOC != 0
+ isTLS := sec.Flags&elf.SHF_TLS != 0
- if isWrite && !isExec && isAlloc {
- addrLower := sec.Addr < firstDataSectionAddr
- if !found || addrLower {
- firstDataSectionAddr = sec.Addr
- found = true
+ if isWrite && !isExec && isAlloc && !isTLS {
+ if firstDataSection == nil || sec.Addr < firstDataSection.Addr {
+ firstDataSection = sec
}
}
}
}
- if !found {
+ if firstDataSection == nil {
t.Fatalf("can't find any writable data sections")
}
- if firstDataSectionAddr != expectedAddr {
- t.Errorf("data section starts at 0x%x, expected 0x%x", firstDataSectionAddr, expectedAddr)
+ if firstDataSection.Addr != expectedAddr {
+ t.Errorf("data section starts at 0x%x for section %s, expected 0x%x",
+ firstDataSection.Addr, firstDataSection.Name, expectedAddr)
}
}