pass machinemoduleinfo down into getSymbolForDwarfGlobalReference,
[llvm/avr.git] / lib / System / Win32 / Win32.h
blob8f505b1a6cdb496ce83428b69440221388aa9f75
1 //===- Win32/Win32.h - Common Win32 Include File ----------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file defines things specific to Win32 implementations.
12 //===----------------------------------------------------------------------===//
14 //===----------------------------------------------------------------------===//
15 //=== WARNING: Implementation here must contain only generic Win32 code that
16 //=== is guaranteed to work on *all* Win32 variants.
17 //===----------------------------------------------------------------------===//
19 // Require at least Windows 2000 API.
20 #define _WIN32_WINNT 0x0500
22 #include "llvm/Config/config.h" // Get autoconf configuration settings
23 #include "windows.h"
24 #include <cassert>
25 #include <string>
27 inline bool MakeErrMsg(std::string* ErrMsg, const std::string& prefix) {
28 if (!ErrMsg)
29 return true;
30 char *buffer = NULL;
31 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
32 NULL, GetLastError(), 0, (LPSTR)&buffer, 1, NULL);
33 *ErrMsg = prefix + buffer;
34 LocalFree(buffer);
35 return true;
38 class AutoHandle {
39 HANDLE handle;
41 public:
42 AutoHandle(HANDLE h) : handle(h) {}
44 ~AutoHandle() {
45 if (handle)
46 CloseHandle(handle);
49 operator HANDLE() {
50 return handle;
53 AutoHandle &operator=(HANDLE h) {
54 handle = h;
55 return *this;