sanitizer_win.cc revision 94b5036ee6ba866e1702848855b6d687d1e70afa
1//===-- sanitizer_win.cc --------------------------------------------------===//
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 is shared between AddressSanitizer and ThreadSanitizer
11// run-time libraries and implements windows-specific functions from
12// sanitizer_libc.h.
13//===----------------------------------------------------------------------===//
14#ifdef _WIN32
15#include <windows.h>
16
17#include <assert.h>
18
19#include "sanitizer_internal_defs.h"
20#include "sanitizer_libc.h"
21
22#define UNIMPLEMENTED_WIN() assert(false)
23
24namespace __sanitizer {
25
26void *internal_mmap(void *addr, uptr length, int prot, int flags,
27                    int fd, u64 offset) {
28  UNIMPLEMENTED_WIN();
29  return 0;
30}
31
32int internal_munmap(void *addr, uptr length) {
33  UNIMPLEMENTED_WIN();
34  return 0;
35}
36
37int internal_close(fd_t fd) {
38  UNIMPLEMENTED_WIN();
39  return 0;
40}
41
42fd_t internal_open(const char *filename, bool write) {
43  UNIMPLEMENTED_WIN();
44  return 0;
45}
46
47uptr internal_read(fd_t fd, void *buf, uptr count) {
48  UNIMPLEMENTED_WIN();
49  return 0;
50}
51
52uptr internal_write(fd_t fd, const void *buf, uptr count) {
53  if (fd != 2) {
54    UNIMPLEMENTED_WIN();
55    return 0;
56  }
57  HANDLE err = GetStdHandle(STD_ERROR_HANDLE);
58  if (err == 0)
59    return 0;  // FIXME: this might not work on some apps.
60  DWORD ret;
61  if (!WriteFile(err, buf, count, &ret, 0))
62    return 0;
63  return ret;
64}
65
66int internal_sscanf(const char *str, const char *format, ...) {
67  UNIMPLEMENTED_WIN();
68  return -1;
69}
70
71}  // namespace __sanitizer
72
73#endif  // _WIN32
74