sysdll.mx raw

   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.
  10  package 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.
  22  var 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.
  27  func Add(dll string) string {
  28  	IsSystemDLL[dll] = true
  29  	return dll
  30  }
  31