Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.84 KB | None | 0 0
  1. diff --git a/lib/asan/asan_linux.cc b/lib/asan/asan_linux.cc
  2. index a150b19..7379297 100644
  3. --- a/lib/asan/asan_linux.cc
  4. +++ b/lib/asan/asan_linux.cc
  5. @@ -46,7 +46,7 @@
  6. #include <link.h>
  7. #endif
  8.  
  9. -#if SANITIZER_ANDROID || SANITIZER_FREEBSD || SANITIZER_SOLARIS
  10. +#if SANITIZER_ANDROID || SANITIZER_FREEBSD || SANITIZER_SOLARIS || SANITIZER_NONGNU
  11. #include <ucontext.h>
  12. extern "C" void* _DYNAMIC;
  13. #elif SANITIZER_NETBSD
  14. @@ -139,7 +139,7 @@ void AsanApplyToGlobals(globals_op_fptr op, const void *needle) {
  15. UNIMPLEMENTED();
  16. }
  17.  
  18. -#if SANITIZER_ANDROID
  19. +#if SANITIZER_ANDROID || SANITIZER_NONGNU
  20. // FIXME: should we do anything for Android?
  21. void AsanCheckDynamicRTPrereqs() {}
  22. void AsanCheckIncompatibleRT() {}
  23. diff --git a/lib/interception/interception_linux.cc b/lib/interception/interception_linux.cc
  24. index 26bfcd8..60f5cf0 100644
  25. --- a/lib/interception/interception_linux.cc
  26. +++ b/lib/interception/interception_linux.cc
  27. @@ -43,7 +43,7 @@ bool GetRealFunctionAddress(const char *func_name, uptr *func_addr,
  28. }
  29.  
  30. // Android and Solaris do not have dlvsym
  31. -#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS && !SANITIZER_OPENBSD
  32. +#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS && !SANITIZER_OPENBSD && defined(__GLIBC__)
  33. void *GetFuncAddrVer(const char *func_name, const char *ver) {
  34. return dlvsym(RTLD_NEXT, func_name, ver);
  35. }
  36. diff --git a/lib/msan/msan_interceptors.cc b/lib/msan/msan_interceptors.cc
  37. index 497f943..f7b0618 100644
  38. --- a/lib/msan/msan_interceptors.cc
  39. +++ b/lib/msan/msan_interceptors.cc
  40. @@ -1466,6 +1466,7 @@ static int msan_dl_iterate_phdr_cb(__sanitizer_dl_phdr_info *info, SIZE_T size,
  41. return cbdata->callback(info, size, cbdata->data);
  42. }
  43.  
  44. +/* does not compile with musl
  45. INTERCEPTOR(void *, shmat, int shmid, const void *shmaddr, int shmflg) {
  46. ENSURE_MSAN_INITED();
  47. void *p = REAL(shmat)(shmid, shmaddr, shmflg);
  48. @@ -1478,6 +1479,7 @@ INTERCEPTOR(void *, shmat, int shmid, const void *shmaddr, int shmflg) {
  49. }
  50. return p;
  51. }
  52. +*/
  53.  
  54. INTERCEPTOR(int, dl_iterate_phdr, dl_iterate_phdr_cb callback, void *data) {
  55. void *ctx;
  56. @@ -1694,7 +1696,7 @@ void InitializeInterceptors() {
  57. INTERCEPT_FUNCTION(tzset);
  58. INTERCEPT_FUNCTION(atexit);
  59. INTERCEPT_FUNCTION(__cxa_atexit);
  60. - INTERCEPT_FUNCTION(shmat);
  61. + // INTERCEPT_FUNCTION(shmat); // does not compile with musl
  62. INTERCEPT_FUNCTION(fork);
  63. MSAN_MAYBE_INTERCEPT_OPENPTY;
  64. MSAN_MAYBE_INTERCEPT_FORKPTY;
  65. diff --git a/lib/msan/msan_linux.cc b/lib/msan/msan_linux.cc
  66. index 0b02088..a29d4c8 100644
  67. --- a/lib/msan/msan_linux.cc
  68. +++ b/lib/msan/msan_linux.cc
  69. @@ -13,7 +13,7 @@
  70. //===----------------------------------------------------------------------===//
  71.  
  72. #include "sanitizer_common/sanitizer_platform.h"
  73. -#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD
  74. +#if SANITIZER_FREEBSD || SANITIZER_LINUX && !SANITIZER_NONGNU || SANITIZER_NETBSD
  75.  
  76. #include "msan.h"
  77. #include "msan_report.h"
  78. diff --git a/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
  79. index 2d633c1..b6eb231 100644
  80. --- a/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
  81. +++ b/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
  82. @@ -104,7 +104,7 @@ static void ioctl_table_fill() {
  83. _(SIOCGETVIFCNT, WRITE, struct_sioc_vif_req_sz);
  84. #endif
  85.  
  86. -#if SANITIZER_LINUX
  87. +#if SANITIZER_LINUX && !SANITIZER_NONGNU
  88. // Conflicting request ids.
  89. // _(CDROMAUDIOBUFSIZ, NONE, 0);
  90. // _(SNDCTL_TMR_CONTINUE, NONE, 0);
  91. @@ -365,7 +365,7 @@ static void ioctl_table_fill() {
  92. _(VT_WAITACTIVE, NONE, 0);
  93. #endif
  94.  
  95. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  96. +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  97. // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
  98. _(CYGETDEFTHRESH, WRITE, sizeof(int));
  99. _(CYGETDEFTIMEOUT, WRITE, sizeof(int));
  100. diff --git a/lib/sanitizer_common/sanitizer_common_syscalls.inc b/lib/sanitizer_common/sanitizer_common_syscalls.inc
  101. index 469c8eb..24f8786 100644
  102. --- a/lib/sanitizer_common/sanitizer_common_syscalls.inc
  103. +++ b/lib/sanitizer_common/sanitizer_common_syscalls.inc
  104. @@ -2038,7 +2038,7 @@ POST_SYSCALL(setrlimit)(long res, long resource, void *rlim) {
  105. }
  106. }
  107.  
  108. -#if !SANITIZER_ANDROID
  109. +#if !SANITIZER_ANDROID && !SANITIZER_NONGNU
  110. PRE_SYSCALL(prlimit64)(long pid, long resource, const void *new_rlim,
  111. void *old_rlim) {
  112. if (new_rlim) PRE_READ(new_rlim, struct_rlimit64_sz);
  113. diff --git a/lib/sanitizer_common/sanitizer_platform.h b/lib/sanitizer_common/sanitizer_platform.h
  114. index 82bb1af..7a64a84 100644
  115. --- a/lib/sanitizer_common/sanitizer_platform.h
  116. +++ b/lib/sanitizer_common/sanitizer_platform.h
  117. @@ -26,6 +26,12 @@
  118. # define SANITIZER_LINUX 0
  119. #endif
  120.  
  121. +#if defined(__linux__) && !defined(__GLIBC__)
  122. +# define SANITIZER_NONGNU 1
  123. +#else
  124. +# define SANITIZER_NONGNU 0
  125. +#endif
  126. +
  127. #if defined(__FreeBSD__)
  128. # define SANITIZER_FREEBSD 1
  129. #else
  130. diff --git a/lib/sanitizer_common/sanitizer_platform_interceptors.h b/lib/sanitizer_common/sanitizer_platform_interceptors.h
  131. index 4d14665..e91bf97 100644
  132. --- a/lib/sanitizer_common/sanitizer_platform_interceptors.h
  133. +++ b/lib/sanitizer_common/sanitizer_platform_interceptors.h
  134. @@ -40,7 +40,7 @@
  135. # include "sanitizer_platform_limits_solaris.h"
  136. #endif
  137.  
  138. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  139. +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  140. # define SI_LINUX_NOT_ANDROID 1
  141. #else
  142. # define SI_LINUX_NOT_ANDROID 0
  143. diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
  144. index ecc69bc..72571e3 100644
  145. --- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
  146. +++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
  147. @@ -54,7 +54,7 @@
  148. #include <net/route.h>
  149. #endif
  150.  
  151. -#if !SANITIZER_ANDROID
  152. +#if !SANITIZER_ANDROID && defined(__GLIBC__)
  153. #include <fstab.h>
  154. #include <sys/mount.h>
  155. #include <sys/timeb.h>
  156. @@ -62,6 +62,7 @@
  157. #endif
  158.  
  159. #if SANITIZER_LINUX
  160. +#include <stdio.h>
  161. #include <malloc.h>
  162. #include <mntent.h>
  163. #include <netinet/ether.h>
  164. @@ -108,12 +109,14 @@ typedef struct user_fpregs elf_fpregset_t;
  165.  
  166. #if SANITIZER_LINUX && !SANITIZER_ANDROID
  167. #include <glob.h>
  168. -#include <obstack.h>
  169. +#if !SANITIZER_NONGNU
  170. +# include <obstack.h>
  171. +#endif
  172. #include <mqueue.h>
  173. -#include <net/if_ppp.h>
  174. -#include <netax25/ax25.h>
  175. -#include <netipx/ipx.h>
  176. -#include <netrom/netrom.h>
  177. +#include <linux/if_ppp.h>
  178. +#include <linux/ax25.h>
  179. +#include <linux/ipx.h>
  180. +#include <linux/netrom.h>
  181. #if HAVE_RPC_XDR_H
  182. # include <rpc/xdr.h>
  183. #endif
  184. @@ -196,7 +199,7 @@ namespace __sanitizer {
  185. unsigned struct_statfs64_sz = sizeof(struct statfs64);
  186. #endif // SANITIZER_MAC && !SANITIZER_IOS
  187.  
  188. -#if !SANITIZER_ANDROID
  189. +#if !SANITIZER_ANDROID && defined(__GLIBC__)
  190. unsigned struct_fstab_sz = sizeof(struct fstab);
  191. unsigned struct_statfs_sz = sizeof(struct statfs);
  192. unsigned struct_sockaddr_sz = sizeof(struct sockaddr);
  193. @@ -221,7 +224,7 @@ namespace __sanitizer {
  194. unsigned struct_itimerspec_sz = sizeof(struct itimerspec);
  195. #endif // SANITIZER_LINUX
  196.  
  197. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  198. +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  199. // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
  200. // has been removed from glibc 2.28.
  201. #if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
  202. @@ -256,9 +259,9 @@ namespace __sanitizer {
  203. #endif
  204.  
  205.  
  206. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  207. +#if (SANITIZER_LINUX && !SANITIZER_NONGNU) && !SANITIZER_ANDROID
  208. unsigned struct_shminfo_sz = sizeof(struct shminfo);
  209. - unsigned struct_shm_info_sz = sizeof(struct shm_info);
  210. + unsigned struct_shm_info_sz = sizeof(nstruct shm_info);
  211. int shmctl_ipc_stat = (int)IPC_STAT;
  212. int shmctl_ipc_info = (int)IPC_INFO;
  213. int shmctl_shm_info = (int)SHM_INFO;
  214. @@ -292,7 +295,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(ElfW(Phdr));
  215. unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
  216. #endif
  217.  
  218. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  219. +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  220. int glob_nomatch = GLOB_NOMATCH;
  221. int glob_altdirfunc = GLOB_ALTDIRFUNC;
  222. #endif
  223. @@ -386,7 +389,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
  224. unsigned struct_termios_sz = sizeof(struct termios);
  225. unsigned struct_winsize_sz = sizeof(struct winsize);
  226.  
  227. -#if SANITIZER_LINUX
  228. +#if SANITIZER_LINUX && !SANITIZER_NONGNU
  229. unsigned struct_arpreq_sz = sizeof(struct arpreq);
  230. unsigned struct_cdrom_msf_sz = sizeof(struct cdrom_msf);
  231. unsigned struct_cdrom_multisession_sz = sizeof(struct cdrom_multisession);
  232. @@ -436,7 +439,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
  233. unsigned struct_vt_mode_sz = sizeof(struct vt_mode);
  234. #endif // SANITIZER_LINUX
  235.  
  236. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  237. +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  238. unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
  239. unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
  240. #if EV_VERSION > (0x010000)
  241. @@ -803,7 +806,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
  242. unsigned IOCTL_VT_WAITACTIVE = VT_WAITACTIVE;
  243. #endif // SANITIZER_LINUX
  244.  
  245. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  246. +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  247. unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
  248. unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
  249. unsigned IOCTL_CYGETMON = CYGETMON;
  250. @@ -958,7 +961,7 @@ CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phdr);
  251. CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phnum);
  252. #endif // SANITIZER_LINUX || SANITIZER_FREEBSD
  253.  
  254. -#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID
  255. +#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  256. CHECK_TYPE_SIZE(glob_t);
  257. CHECK_SIZE_AND_OFFSET(glob_t, gl_pathc);
  258. CHECK_SIZE_AND_OFFSET(glob_t, gl_pathv);
  259. @@ -992,6 +995,7 @@ CHECK_TYPE_SIZE(iovec);
  260. CHECK_SIZE_AND_OFFSET(iovec, iov_base);
  261. CHECK_SIZE_AND_OFFSET(iovec, iov_len);
  262.  
  263. +#if !SANITIZER_NONGNU
  264. CHECK_TYPE_SIZE(msghdr);
  265. CHECK_SIZE_AND_OFFSET(msghdr, msg_name);
  266. CHECK_SIZE_AND_OFFSET(msghdr, msg_namelen);
  267. @@ -1005,6 +1009,7 @@ CHECK_TYPE_SIZE(cmsghdr);
  268. CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_len);
  269. CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level);
  270. CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type);
  271. +#endif
  272.  
  273. #ifndef __GLIBC_PREREQ
  274. #define __GLIBC_PREREQ(x, y) 0
  275. @@ -1114,7 +1119,7 @@ CHECK_SIZE_AND_OFFSET(mntent, mnt_passno);
  276.  
  277. CHECK_TYPE_SIZE(ether_addr);
  278.  
  279. -#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID
  280. +#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  281. CHECK_TYPE_SIZE(ipc_perm);
  282. # if SANITIZER_FREEBSD
  283. CHECK_SIZE_AND_OFFSET(ipc_perm, key);
  284. @@ -1175,11 +1180,11 @@ CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_dstaddr);
  285. CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_data);
  286. #endif
  287.  
  288. -#if SANITIZER_LINUX
  289. +#if SANITIZER_LINUX && !SANITIZER_NONGNU
  290. COMPILER_CHECK(sizeof(__sanitizer_struct_mallinfo) == sizeof(struct mallinfo));
  291. #endif
  292.  
  293. -#if !SANITIZER_ANDROID
  294. +#if !SANITIZER_ANDROID && !SANITIZER_NONGNU
  295. CHECK_TYPE_SIZE(timeb);
  296. CHECK_SIZE_AND_OFFSET(timeb, time);
  297. CHECK_SIZE_AND_OFFSET(timeb, millitm);
  298. @@ -1225,7 +1230,7 @@ COMPILER_CHECK(__sanitizer_XDR_DECODE == XDR_DECODE);
  299. COMPILER_CHECK(__sanitizer_XDR_FREE == XDR_FREE);
  300. #endif
  301.  
  302. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  303. +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  304. COMPILER_CHECK(sizeof(__sanitizer_FILE) <= sizeof(FILE));
  305. CHECK_SIZE_AND_OFFSET(FILE, _flags);
  306. CHECK_SIZE_AND_OFFSET(FILE, _IO_read_ptr);
  307. @@ -1244,7 +1249,7 @@ CHECK_SIZE_AND_OFFSET(FILE, _chain);
  308. CHECK_SIZE_AND_OFFSET(FILE, _fileno);
  309. #endif
  310.  
  311. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  312. +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  313. COMPILER_CHECK(sizeof(__sanitizer__obstack_chunk) <= sizeof(_obstack_chunk));
  314. CHECK_SIZE_AND_OFFSET(_obstack_chunk, limit);
  315. CHECK_SIZE_AND_OFFSET(_obstack_chunk, prev);
  316. diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  317. index de69852..38ca0bc 100644
  318. --- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  319. +++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  320. @@ -52,7 +52,7 @@ namespace __sanitizer {
  321. extern unsigned struct_regex_sz;
  322. extern unsigned struct_regmatch_sz;
  323.  
  324. -#if !SANITIZER_ANDROID
  325. +#if !SANITIZER_ANDROID && defined(__GLIBC__)
  326. extern unsigned struct_fstab_sz;
  327. extern unsigned struct_statfs_sz;
  328. extern unsigned struct_sockaddr_sz;
  329. diff --git a/lib/tsan/rtl/tsan_platform_linux.cc b/lib/tsan/rtl/tsan_platform_linux.cc
  330. index d2ce607..b57e95c 100644
  331. --- a/lib/tsan/rtl/tsan_platform_linux.cc
  332. +++ b/lib/tsan/rtl/tsan_platform_linux.cc
  333. @@ -302,7 +302,7 @@ void InitializePlatform() {
  334. // This is required to properly "close" the fds, because we do not see internal
  335. // closes within glibc. The code is a pure hack.
  336. int ExtractResolvFDs(void *state, int *fds, int nfd) {
  337. -#if SANITIZER_LINUX && !SANITIZER_ANDROID
  338. +#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_NONGNU
  339. int cnt = 0;
  340. struct __res_state *statp = (struct __res_state*)state;
  341. for (int i = 0; i < MAXNS && cnt < nfd; i++) {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement