1// Copyright 2016 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//go:build windows 6 7// Package sysdll is an internal leaf package that records and reports 8// which Windows DLL names are used by Go itself. These DLLs are then 9// only loaded from the System32 directory. See Issue 14959. 10package sysdll 11 12// IsSystemDLL reports whether the named dll key (a base name, like 13// "foo.dll") is a system DLL which should only be loaded from the 14// Windows SYSTEM32 directory. 15// 16// Filenames are case sensitive, but that doesn't matter because 17// the case registered with Add is also the same case used with 18// LoadDLL later. 19// 20// It has no associated mutex and should only be mutated serially 21// (currently: during init), and not concurrent with DLL loading. 22var IsSystemDLL = map[string]bool{} 23 24// Add notes that dll is a system32 DLL which should only be loaded 25// from the Windows SYSTEM32 directory. It returns its argument back, 26// for ease of use in generated code. 27func Add(dll string) string { 28 IsSystemDLL[dll] = true 29 return dll 30} 31