github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/link/ld/issue33808_test.go (about)

     1  // Copyright 2019 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package ld
     6  
     7  import (
     8  	"runtime"
     9  	"strings"
    10  	"testing"
    11  
    12  	"github.com/go-asm/go/testenv"
    13  )
    14  
    15  const prog = `
    16  package main
    17  
    18  import "log"
    19  
    20  func main() {
    21  	log.Fatalf("HERE")
    22  }
    23  `
    24  
    25  func TestIssue33808(t *testing.T) {
    26  	if runtime.GOOS != "darwin" {
    27  		return
    28  	}
    29  	testenv.MustHaveGoBuild(t)
    30  	testenv.MustHaveCGO(t)
    31  	t.Parallel()
    32  
    33  	dir := t.TempDir()
    34  
    35  	f := gobuild(t, dir, prog, "-ldflags=-linkmode=external")
    36  	f.Close()
    37  
    38  	syms, err := f.Symbols()
    39  	if err != nil {
    40  		t.Fatalf("Error reading symbols: %v", err)
    41  	}
    42  
    43  	name := "log.Fatalf"
    44  	for _, sym := range syms {
    45  		if strings.Contains(sym.Name, name) {
    46  			return
    47  		}
    48  	}
    49  	t.Fatalf("Didn't find %v", name)
    50  }