1 2013-11-29 Jakub Jelinek <jakub@redhat.com>
2 Yury Gribov <y.gribov@samsung.com>
5 * libsanitizer.spec.in: Add spec file to hold link flags for
6 various sanitizer libs.
7 * configure.ac: Check whether clock_* routines come from librt.
8 * asan/Makefile.am (libasan_la_LDFLAGS): Libs now come from
10 * tsan/Makefile.am (libtsan_la_LDFLAGS): Likewise.
11 * ubsan/Makefile.am (libubsan_la_LDFLAGS): Likewise.
12 * lsan/Makefile.am (liblsan_la_LDFLAGS): Likewise.
13 * asan/Makefile.in: Regenerate.
14 * interception/Makefile.in: Regenerate.
15 * lsan/Makefile.in: Regenerate.
16 * sanitizer_common/Makefile.in: Regenerate.
17 * tsan/Makefile.in: Regenerate.
18 * ubsan/Makefile.in: Regenerate.
19 * Makefile.in: Regenerate.
20 * configure: Regenerate.
22 2013-11-28 Jakub Jelinek <jakub@redhat.com>
23 Yury Gribov <y.gribov@samsung.com>
26 * ubsan/Makefile.am (AM_CXXFLAGS): Disable -frtti for files that
28 * ubsan/Makefile.in: Regenerated.
30 2013-11-22 Jakub Jelinek <jakub@redhat.com>
33 * configure.tgt: Set LSAN_SUPPORTED=yes for x86_64-linux.
34 * configure.ac (LSAN_SUPPORTED): New AM_CONDITIONAL.
35 * configure: Regenerated.
36 * lsan/Makefile.am (toolexeclib_LTLIBRARIES, lsan_files,
37 liblsan_la_SOURCES, liblsan_la_LIBADD, liblsan_la_LDFLAGS): Add.
38 * lsan/Makefile.in: Regenerated.
40 2013-11-22 Mike Stump <mikestump@comcast.net>
42 * sanitizer_common/sanitizer_linux.cc (__sanitizer): Grab one
43 change from upstream to fix build.
45 2013-11-18 Yury Gribov <y.gribov@samsung.com>
48 * asan/Makefile.am (AM_CXXFLAGS): Add -fno-rtti.
49 * interception/Makefile.am (AM_CXXFLAGS): Likewise.
50 * lsan/Makefile.am (AM_CXXFLAGS): Likewise.
51 * sanitizer_common/Makefile.am (AM_CXXFLAGS): Likewise.
52 * tsan/Makefile.am (AM_CXXFLAGS): Likewise.
53 * asan/Makefile.in: Regenerate.
54 * interception/Makefile.in: Regenerate.
55 * tsan/Makefile.in: Regenerate.
56 * lsan/Makefile.in: Regenerate.
57 * sanitizer_common/Makefile.in: Regenerate.
59 2013-11-15 Kostya Serebryany <kcc@google.com>
62 Backport from upstream revision 194573
63 * asan/asan_interceptors.cc (COMMON_INTERCEPTOR_ENTER): Fall
64 back to the original functions in the common libsanitizer
65 interceptors and the __cxa_atexit() interceptor on Darwin.
67 2013-11-13 Peter Bergner <bergner@vnet.ibm.com>
70 * sanitizer_common/sanitizer_platform_limits_posix.cc: Temporarily
71 ifdef out more source.
73 2013-11-12 Jakub Jelinek <jakub@redhat.com>
75 * sanitizer_common/sanitizer_platform_limits_linux.cc: Temporarily
76 ifdef out almost the whole source.
77 * sanitizer_common/sanitizer_common_syscalls.inc: Likewise.
79 2013-11-05 H.J. Lu <hongjiu.lu@intel.com>
82 * sanitizer_common/sanitizer_platform_limits_posix.cc
83 (struct_user_fpxregs_struct_sz): Initialize to 0 if __x86_64__ is
86 2013-11-05 H.J. Lu <hongjiu.lu@intel.com>
89 * sanitizer_common/sanitizer_platform_limits_linux.cc
90 (struct_kernel_stat64_sz): Initialize to 0 if __x86_64__ is
92 * sanitizer_common/sanitizer_platform_limits_posix.h
93 (__sanitizer_dirent): Use 64-bit d_ino/d_off if __x86_64__ is
95 (__sanitizer___kernel_uid_t): Typedef as unsigned if __x86_64__
97 (__sanitizer___kernel_gid_t): Likewise.
98 (__sanitizer___kernel_off_t): Typedef as long long if __x86_64__
101 2013-11-05 H.J. Lu <hongjiu.lu@intel.com>
104 * sanitizer_common/sanitizer_linux.cc (internal_clone): Allocate
105 2 64-bit integers to save and restore fn and arg. Properly load
106 newtls/child_tidptr into r8/r10.
108 2013-11-05 H.J. Lu <hongjiu.lu@intel.com>
111 * sanitizer_common/sanitizer_linux.cc (internal_mmap,
112 internal_munmap, internal_open, internal_read, internal_write,
113 internal_stat, internal_lstat, internal_fstat, internal_readlink,
114 internal_unlink, internal_execve, NanoTime, BlockingMutex::Lock,
115 BlockingMutex::Unlock, internal_ptrace, internal_getdents,
116 internal_sigaltstack): Cast pointers to uptr for 64-bit syscalls.
118 2013-11-04 Kostya Serebryany <kcc@google.com>
120 * All source files: Merge from upstream r191666.
121 * merge.sh: Added lsan.
122 * configure.ac (AC_CONFIG_FILES): Added lsan.
123 * Makefile.am (SUBDIRS): Added lsan.
124 * sanitizer_common/Makefile.am (sanitizer_common_files): Added new fles.
125 * asan/Makefile.am (asan_files): Added new files.
126 (libasan_la_LIBADD): Added a dependency on lsan.
127 * lsan/Makefile.am: New file.
128 * asan/Makefile.in: Regenerate.
129 * lsan/Makefile.in: Regenerate.
130 * Makefile.in: Regenerate.
131 * configure: Regenerate.
132 * sanitizer_common/Makefile.in: Regenerate.
134 2013-09-20 Alan Modra <amodra@gmail.com>
136 * configure: Regenerate.
138 2013-09-01 Iain Sandoe <iain@codesourcery.com>
140 * ubsan/Makefile.am (libubsan_la_LIBADD): Revise to omit
141 libinterception.la for Darwin.
142 * ubsan/Makefile.in: Regenerate.
144 2013-08-30 Jakub Jelinek <jakub@redhat.com>
146 * Makefile.am (SUBDIRS): Add ubsan.
147 * configure.ac (AC_CONFIG_FILES): Add ubsan/Makefile.
148 * merge.sh: Merge ubsan.
149 * sanitizer_common/sanitizer_report_decorator.h: Partial merge from trunk.
150 * sanitizer_common/sanitizer_printf.cc: Likewise.
151 * sanitizer_common/sanitizer_common.h: Likewise.
152 * ubsan: New directory. Import ubsan runtime from llvm.
154 2013-06-03 Christophe Lyon <christophe.lyon@linaro.org>
156 * sanitizer_common/sanitizer_linux.cc (MemoryMappingLayout::Next):
157 Cherry pick upstream r182922.
159 2013-05-07 Christophe Lyon <christophe.lyon@linaro.org>
161 * configure.tgt: Add ARM pattern.
163 2013-03-22 Jakub Jelinek <jakub@redhat.com>
166 * configure.ac (AM_INIT_AUTOMAKE): Add no-dist.
167 * Makefile.in: Regenerated.
168 * asan/Makefile.in: Regenerated.
169 * interception/Makefile.in: Regenerated.
170 * sanitizer_common/Makefile.in: Regenerated.
171 * tsan/Makefile.in: Regenerated.
173 2013-02-28 Jakub Jelinek <jakub@redhat.com>
175 * asan/asan_mapping.h (kMidMemEnd): Increase to 0x4fffffffffULL.
176 * asan/asan_rtl.cc (__asan_init): Increase kMidMemEnd to
179 2013-02-22 Jakub Jelinek <jakub@redhat.com>
182 * asan/Makefile.am (nodist_toolexeclib_HEADERS): Set to
184 (libasan_preinit.o): Depend on asan_preinit.o.
185 * asan/Makefile.in: Regenerated.
186 * asan/asan_preinit.cc: New file, synced from upstream.
187 * asan/asan_rtl.cc: Remove preinit stuff, synced from upstream.
189 2013-02-21 Jack Howarth <howarth@bromo.med.uc.edu>
191 * asan/Makefile.am (libasan_la_SOURCES): Remove deprecated
192 dynamic/asan_interceptors_dynamic.cc.
193 * asan/Makefile.in: Regenerated.
194 * merge.sh: Remove merge of deprecated lib/asan/dynamic.
196 2013-02-21 Jakub Jelinek <jakub@redhat.com>
198 * asan/asan_rtl.cc (__asan_preinit): Don't add if PIC macro is
199 defined. Add used attribute.
201 2013-02-21 Kostya Serebryany <kcc@google.com>
203 * All source files: Merge from upstream r175733.
204 * sanitizer_common/Makefile.am: Added a new file.
205 * sanitizer_common/Makefile.in: Regenerated.
207 2013-02-14 H.J. Lu <hongjiu.lu@intel.com>
210 * interception/interception.h (OFF_T): Merged from upstream
213 2013-02-13 Jakub Jelinek <jakub@redhat.com>
215 * asan/asan_mapping.h (SHADOW_OFFSET): Set to (1ULL << 44) on x86-64.
217 2013-02-13 Kostya Serebryany <kcc@google.com>
220 * All source files: Merge from upstream r175049.
221 * interception/Makefile.am: added include path.
222 * interception/Makefile.in: Regenerated.
224 2013-02-11 Jack Howarth <howarth@bromo.med.uc.edu>
226 * configure.tgt: Disable build on darwin9 and earlier.
228 2013-01-23 Kostya Serebryany <kcc@google.com>
231 * All source files: Merge from upstream r173241.
232 * merge.sh: Support merging .inc files.
234 2013-01-16 Jakub Jelinek <jakub@redhat.com>
236 * sanitizer_common/Makefile.am (AM_CXXFLAGS): Remove
238 * interception/Makefile.am (AM_CXXFLAGS): Likewise.
239 * asan/Makefile.am (AM_CXXFLAGS): Likewise.
240 * sanitizer_common/Makefile.in: Regenerated.
241 * interception/Makefile.in: Regenerated.
242 * asan/Makefile.in: Regenerated.
244 2013-01-10 Wei Mi <wmi@google.com>
247 * tsan/Makefile.am: Add tsan_rtl_amd64.S.
248 * tsan/Makefile.in: Regenerated.
249 * tsan/tsan_rtl.h: Enable HACKY_CALL.
251 2013-01-10 Kostya Serebryany <kcc@google.com>
253 * All source files: Merge from upstream r171973.
254 * sanitizer_common/Makefile.am: Added new files.
255 * asan/Makefile.am: Likewise.
256 * tsan/Makefile.am: Likewise.
257 * sanitizer_common/Makefile.in: Regenerated.
258 * asan/Makefile.in: Likewise.
259 * tsan/Makefile.in: Likewise.
261 2013-01-07 H.J. Lu <hongjiu.lu@intel.com>
263 * asan/Makefile.am (libasan_la_LIBADD): Replace
264 LIBSTDCXX_RAW_CXX_LDLAGS with LIBSTDCXX_RAW_CXX_LDFLAGS.
265 * tsan/Makefile.am (libtsan_la_LIBADD): Likewise.
266 * Makefile.in: Regenerated.
267 * configure: Likewise.
268 * asan/Makefile.in: Likewise.
269 * interception/Makefile.in: Likewise.
270 * sanitizer_common/Makefile.in: Likewise.
271 * tsan/Makefile.in: Likewise.
273 2012-12-12 H.J. Lu <hongjiu.lu@intel.com>
275 * Makefile.am (AM_MAKEFLAGS): Restored.
276 * interception/Makefile.am: Likewise.
277 * sanitizer_common/Makefile.am: Likewise.
278 * tsan/Makefile.am: Likewise.
279 * Makefile.in: Regenerated.
280 * asan/Makefile.in: Likewise.
281 * interception/Makefile.in: Likewise.
282 * sanitizer_common/Makefile.in: Likewise.
283 * tsan/Makefile.in: Likewise.
285 2012-12-12 H.J. Lu <hongjiu.lu@intel.com>
287 * Makefile.am (MAKEOVERRIDES): Restored.
288 * asan/Makefile.am: Likewise.
289 * interception/Makefile.am: Likewise.
290 * sanitizer_common/Makefile.am: Likewise.
291 * tsan/Makefile.am: Likewise.
292 * Makefile.in: Regenerated.
293 * asan/Makefile.in: Likewise.
294 * interception/Makefile.in: Likewise.
295 * sanitizer_common/Makefile.in: Likewise.
296 * tsan/Makefile.in: Likewise.
298 2012-12-12 H.J. Lu <hongjiu.lu@intel.com>
300 * asan/Makefile.am (libasan_la_LIBADD): Use $(LIBSTDCXX_RAW_CXX_LDLAGS).
301 * tsan/Makefile.am (libtsan_la_LIBADD): Likewise.
302 * Makefile.in: Regenerated.
303 * configure: Likewise.
304 * asan/Makefile.in: Likewise.
305 * interception/Makefile.in: Likewise.
306 * sanitizer_common/Makefile.in: Likewise.
307 * tsan/Makefile.in: Likewise.
309 2012-12-12 H.J. Lu <hongjiu.lu@intel.com>
311 * Makefile.am (AM_MAKEFLAGS): Removed.
312 (MAKEOVERRIDES): Likewise.
313 * asan/Makefile.am: Likewise.
314 * interception/Makefile.am: Likewise.
315 * sanitizer_common/Makefile.am: Likewise.
316 * tsan/Makefile.am: Likewise.
317 * Makefile.in: Regenerated.
318 * asan/Makefile.in: Likewise.
319 * interception/Makefile.in: Likewise.
320 * sanitizer_common/Makefile.in: Likewise.
321 * tsan/Makefile.in: Likewise.
323 2012-12-11 H.J. Lu <hongjiu.lu@intel.com>
326 * Makefile.am (AM_MAKEFLAGS): Remove CC and CXX.
327 * configure.ac (GCC_LIBSTDCXX_RAW_CXX_FLAGS): New.
328 * asan/Makefile.am (AM_CXXFLAGS): Add $(LIBSTDCXX_RAW_CXX_CXXFLAGS).
329 (AM_MAKEFLAGS): Remove CC and CXX.
330 * interception/Makefile.am: Likewise.
331 * sanitizer_common/Makefile.am: Likewise.
332 * tsan/Makefile.am: Likewise.
333 * Makefile.in: Regenerated.
334 * aclocal.m4: Likewise.
335 * configure: Likewise.
336 * asan/Makefile.in: Likewise.
337 * interception/Makefile.in: Likewise.
338 * sanitizer_common/Makefile.in: Likewise.
339 * tsan/Makefile.in: Likewise.
341 2012-12-06 Peter Bergner <bergner@vnet.ibm.com>
343 * configure.tgt: Enable build on powerpc*-linux.
345 2012-12-06 Jack Howarth <howarth@bromo.med.uc.edu>
348 * configure.ac: Set enable_static=no on darwin.
349 * configure: Regenerated.
351 2012-12-06 Kostya Serebryany <kcc@google.com>
353 * All files: Merge from upstream r169392.
355 2012-12-05 Kostya Serebryany <kcc@google.com>
357 * All files: Merge from upstream r169371.
359 2012-12-04 Kostya Serebryany <kcc@google.com>
360 Jack Howarth <howarth@bromo.med.uc.edu>
363 * configure.ac: Define USING_MAC_INTERPOSE when on darwin.
364 * Makefile.am: Don't build interception subdir when
365 USING_MAC_INTERPOSE defined.
366 * asan/Makefile.am: Pass -DMAC_INTERPOSE_FUNCTIONS and
367 -DMISSING_BLOCKS_SUPPORT when USING_MAC_INTERPOSE defined.
368 Compile asan_interceptors_dynamic.cc but not libinterception
369 when USING_MAC_INTERPOSE defined.
370 * interception/Makefile.am: Remove usage of USING_MACH_OVERRIDE.
371 * configure: Regenerated.
372 * Makefile.in: Likewise.
373 * asan/Makefile.in: Likewise.
374 * interception/Makefile.in: Likewise.
375 * asan/asan_intercepted_functions.h: Use MISSING_BLOCKS_SUPPORT.
376 * asan/asan_mac.cc: Likewise.
377 * asan/dynamic/asan_interceptors_dynamic.cc: Migrate from llvm
378 and use MISSING_BLOCKS_SUPPORT.
379 * merge.sh: Merge lib/asan/dynamic into asan/dynamic.
380 * interception/mach_override/LICENSE.txt: Remove unused file.
381 * interception/mach_override/mach_override.c: Likewise.
382 * interception/mach_override/mach_override.h: Likewise.
383 * interception/mach_override: Remove unused directory.
385 2012-11-28 H.J. Lu <hongjiu.lu@intel.com>
387 * Makefile.am (AM_MAKEFLAGS): Restore CC and CXX.
388 * configure.ac (ACX_NONCANONICAL_TARGET): Removed.
389 * asan/Makefile.am (AM_CXXFLAGS): Remove -I for libstdc++-v3 header
391 (AM_MAKEFLAGS): Restore CC and CXX.
392 * interception/Makefile.am: Likewise.
393 * sanitizer_common/Makefile.am: Likewise.
394 * tsan/Makefile.am: Likewise.
395 * Makefile.in: Regenerated.
396 * aclocal.m4: Likewise.
397 * configure: Likewise.
398 * asan/Makefile.in: Likewise.
399 * interception/Makefile.in: Likewise.
400 * sanitizer_common/Makefile.in: Likewise.
401 * tsan/Makefile.in: Likewise.
403 2012-11-28 H.J. Lu <hongjiu.lu@intel.com>
405 * Makefile.am (AM_MAKEFLAGS): Remove CC and CXX.
406 * configure.ac (ACX_NONCANONICAL_TARGET): New.
407 * asan/Makefile.am (AM_CXXFLAGS): Add -I for libstdc++-v3 header
409 (AM_MAKEFLAGS): Remove CC and CXX.
410 * interception/Makefile.am: Likewise.
411 * sanitizer_common/Makefile.am: Likewise.
412 * tsan/Makefile.am: Likewise.
413 * Makefile.in: Regenerated.
414 * aclocal.m4: Likewise.
415 * configure: Likewise.
416 * asan/Makefile.in: Likewise.
417 * interception/Makefile.in: Likewise.
418 * sanitizer_common/Makefile.in: Likewise.
419 * tsan/Makefile.in: Likewise.
421 2012-11-27 Kostya Serebryany <kcc@google.com>
423 * All files: Merge from upstream r168699.
425 2012-11-24 Kostya Serebryany <kcc@google.com>
426 Jack Howarth <howarth@bromo.med.uc.edu>
428 * interception/mach_override/mach_override.c: Migrate from llvm.
429 * interception/mach_override/mach_override.h: Likewise.
430 * interception/mach_override/LICENSE.txt: Likewise.
431 * configure.tgt: Add darwin to supported targets.
432 * configure.ac: Define USING_MACH_OVERRIDE when on darwin.
433 * interception/Makefile.am: Compile mach_override.c when
434 USING_MACH_OVERRIDE defined.
435 * configure: Regenerated.
436 * interception/Makefile.in: Likewise.
438 2012-11-23 H.J. Lu <hongjiu.lu@intel.com>
441 * tsan/Makefile.am (gcc_version): New.
442 * tsan/Makefile.in: Regenerated.
444 2012-11-23 Kostya Serebryany <kcc@google.com>
446 * merge.sh: Support tsan, support added/removed files.
447 * tsan/Makefile.am: Remove tsan_printf.cc.
448 * tsan/Makefile.in: Regenerated.
449 * other files: Merge from upstream r168514.
451 2012-11-23 Kostya Serebryany <kcc@google.com>
453 * merge.sh: New file.
455 2012-11-23 Jakub Jelinek <jakub@redhat.com>
457 * tsan/Makefile.am (AM_CXXFLAGS): Remove -Wno-variadic-macros.
458 * Makefile.am (SUBDIRS): Guard tsan addition with TSAN_SUPPORTED
459 automake conditional instead of !MULTISUBDIR32.
460 * configure.tgt: Set TSAN_SUPPORTED=yes for x86_64/i686-linux
462 * configure.ac: Check for void * size, source in configure.tgt,
463 define TSAN_SUPPORTED conditional instead of MULTILIBDIR32.
464 * configure: Regenerated.
465 * Makefile.in: Regenerated.
466 * tsan/Makefile.in: Regenerated.
468 2012-11-22 Wei Mi <wmi@google.com>
470 * tsan: New directory. Import tsan runtime from llvm.
471 * configure.ac: Add 64 bits tsan build.
472 * Makefile.am: Likewise.
473 * configure: Regenerated.
474 * Makefile.in: Likewise.
476 2012-11-21 Kostya Serebryany <kcc@google.com>
478 * README.gcc: Extend the README.gcc with mode details.
480 2012-11-20 Konstantin Serebryany <konstantin.s.serebryany@gmail.com>
482 * sanitizer_common/sanitizer_linux.cc
483 (SANITIZER_LINUX_USES_64BIT_SYSCALLS): Define.
484 (internal_mmap): Use it.
485 (internal_filesize): Likewise.
487 2012-11-16 Tom Tromey <tromey@redhat.com>
489 * configure.ac: Invoke AM_MAINTAINER_MODE.
490 * aclocal.m4, configure, Makefile.in, asan/Makefile.in,
491 interception/Makefile.in, sanitizer_common/Makefile.in: Rebuild.
493 2012-11-16 H.J. Lu <hongjiu.lu@intel.com>
496 * include/sanitizer/common_interface_defs.h (uhwptr): New type
497 for hardware pointer.
498 * sanitizer_common/sanitizer_stacktrace.cc (StackTrace::FastUnwindStack):
499 Replace uptr with uhwptr for stack unwind.
501 2012-11-16 Dodji Seketeli <dodji@redhat.com>
503 * configure.tgt: Enable build on sparc linux.
505 2012-11-15 H.J. Lu <hongjiu.lu@intel.com>
507 * configure.ac: Properly set MULTISUBDIR.
508 * asan/Makefile.am (gcc_version): New.
509 * interception/Makefile.am (gcc_version): Likewise.
510 * sanitizer_common/Makefile.am (gcc_version): Likewise.
511 * configure: Regenerated.
512 * asan/Makefile.in: Likewise.
513 * interception/Makefile.in: Likewise.
514 * sanitizer_common/Makefile.in: Likewise.
516 2012-11-14 H.J. Lu <hongjiu.lu@intel.com>
519 * configure.ac (--enable-version-specific-runtime-libs): New option.
520 (AC_CANONICAL_SYSTEM): New.
521 (AM_ENABLE_MULTILIB): Moved right after AM_INIT_AUTOMAKE.
522 (toolexecdir): Support multilib.
523 (toolexeclibdir): Likewise.
525 * Makefile.in: Regenerated.
526 * aclocal.m4: Likewise.
527 * configure: Likewise.
528 * asan/Makefile.in: Likewise.
529 * interception/Makefile.in: Likewise.
530 * sanitizer_common/Makefile.in: Likewise.
532 2012-11-14 H.J. Lu <hongjiu.lu@intel.com>
535 Backport from upstream revision 167883
536 * sanitizer_common/sanitizer_linux.cc (internal_mmap): Check
537 __x86_64__ instead of __WORDSIZE.
538 (internal_filesize): Likwise.
540 2012-11-14 H.J. Lu <hongjiu.lu@intel.com>
542 * configure.ac (AC_CONFIG_AUX_DIR): Removed.
543 * Makefile.in: Regenerated.
544 * configure: Likewise.
546 2012-11-13 H.J. Lu <hongjiu.lu@intel.com>
549 * acinclude.m4: New file.
550 * Makefile.am (ACLOCAL_AMFLAGS): New.
551 * configure.ac (AC_PREREQ): Set to 2.64.
552 (AC_CONFIG_AUX_DIR): Set to "..".
553 * Makefile.in: Regenerated.
554 * aclocal.m4: Likewise.
555 * configure: Likewise.
556 * asan/Makefile.in: Likewise.
557 * interception/Makefile.in: Likewise.
558 * sanitizer_common/Makefile.in: Likewise.
560 * config.guess: Removed.
561 * config.sub: Likewise.
563 * install-sh: Likewise.
564 * ltmain.sh: Likewise.
567 2012-11-13 Richard Henderson <rth@redhat.com>
569 * configure.tgt: New file.
571 2012-11-12 David S. Miller <davem@davemloft.net>
573 * asan/asan_linux.cc (GetPcSpBp): Add sparc support.
575 2012-10-29 Wei Mi <wmi@google.com>
577 Initial checkin: migrate asan runtime from llvm.