1c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov//===-- asan_interface_internal.h -------------------------------*- C++ -*-===// 2c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov// 3c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov// The LLVM Compiler Infrastructure 4c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov// 5c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov// This file is distributed under the University of Illinois Open Source 6c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov// License. See LICENSE.TXT for details. 7c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov// 8c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov//===----------------------------------------------------------------------===// 9c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov// 10c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov// This file is a part of AddressSanitizer, an address sanity checker. 11c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov// 1286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// This header declares the AddressSanitizer runtime interface functions. 1386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// The runtime library has to define these functions so the instrumented program 1486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// could call them. 1586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// 1686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// See also include/sanitizer/asan_interface.h 17c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov//===----------------------------------------------------------------------===// 18c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov#ifndef ASAN_INTERFACE_INTERNAL_H 19c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov#define ASAN_INTERFACE_INTERNAL_H 20c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 21c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov#include "sanitizer_common/sanitizer_internal_defs.h" 22c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 236a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#include "asan_init_version.h" 246a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines 25c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonovusing __sanitizer::uptr; 26c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 27c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonovextern "C" { 286d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // This function should be called at the very beginning of the process, 296d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // before any instrumented code is executed and before any call to malloc. 306d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // Please note that __asan_init is a macro that is replaced with 316d1862363c88c183b0ed7740fca876342cf0474bStephen Hines // __asan_init_vXXX at compile-time. 326d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_init(); 336d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 346a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines // This structure is used to describe the source location of a place where 356a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines // global was defined. 366a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines struct __asan_global_source_location { 376a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines const char *filename; 386a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines int line_no; 396a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines int column_no; 406a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines }; 41c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 42c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // This structure describes an instrumented global variable. 43c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov struct __asan_global { 44c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov uptr beg; // The address of the global. 45c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov uptr size; // The original size of the global. 46c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov uptr size_with_redzone; // The size with the redzone. 47c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov const char *name; // Name as a C string. 4805e16a028d26503153a8fe512a500676cad66031Alexey Samsonov const char *module_name; // Module name as a C string. This pointer is a 4905e16a028d26503153a8fe512a500676cad66031Alexey Samsonov // unique identifier of a module. 50c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov uptr has_dynamic_init; // Non-zero if the global has dynamic initializer. 516a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines __asan_global_source_location *location; // Source location of a global, 526a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines // or NULL if it is unknown. 53c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov }; 54c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 55c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // These two functions should be called by the instrumented code. 56c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // 'globals' is an array of structures describing 'n' globals. 573c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 583c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_register_globals(__asan_global *globals, uptr n); 593c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 603c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_unregister_globals(__asan_global *globals, uptr n); 61c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 62c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // These two functions should be called before and after dynamic initializers 6305e16a028d26503153a8fe512a500676cad66031Alexey Samsonov // of a single module run, respectively. 643c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 653c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_before_dynamic_init(const char *module_name); 663c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 673c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_after_dynamic_init(); 68c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 69c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // These two functions are used by instrumented code in the 70c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // use-after-scope mode. They mark memory for local variables as 71c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // unaddressable when they leave scope and addressable before the 72c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // function exits. 733c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 743c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_poison_stack_memory(uptr addr, uptr size); 753c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 763c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_unpoison_stack_memory(uptr addr, uptr size); 77c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 78c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // Performs cleanup before a NoReturn function. Must be called before things 79c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov // like _exit and execl to avoid false positives on stack. 803c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE void __asan_handle_no_return(); 81c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 823c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 833c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_poison_memory_region(void const volatile *addr, uptr size); 843c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 853c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_unpoison_memory_region(void const volatile *addr, uptr size); 86c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 873c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int __asan_address_is_poisoned(void const volatile *addr); 89c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 903c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 913c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov uptr __asan_region_is_poisoned(uptr beg, uptr size); 92c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 933c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 943c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_describe_address(uptr addr); 95c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 963c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 976d1862363c88c183b0ed7740fca876342cf0474bStephen Hines int __asan_report_present(); 986d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 996d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1006d1862363c88c183b0ed7740fca876342cf0474bStephen Hines uptr __asan_get_report_pc(); 1016d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1026d1862363c88c183b0ed7740fca876342cf0474bStephen Hines uptr __asan_get_report_bp(); 1036d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1046d1862363c88c183b0ed7740fca876342cf0474bStephen Hines uptr __asan_get_report_sp(); 1056d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1066d1862363c88c183b0ed7740fca876342cf0474bStephen Hines uptr __asan_get_report_address(); 1076d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1086d1862363c88c183b0ed7740fca876342cf0474bStephen Hines int __asan_get_report_access_type(); 1096d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1106d1862363c88c183b0ed7740fca876342cf0474bStephen Hines uptr __asan_get_report_access_size(); 1116d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1126d1862363c88c183b0ed7740fca876342cf0474bStephen Hines const char * __asan_get_report_description(); 1136d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 1146d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1156d1862363c88c183b0ed7740fca876342cf0474bStephen Hines const char * __asan_locate_address(uptr addr, char *name, uptr name_size, 1166d1862363c88c183b0ed7740fca876342cf0474bStephen Hines uptr *region_address, uptr *region_size); 1176d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 1186d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1196d1862363c88c183b0ed7740fca876342cf0474bStephen Hines uptr __asan_get_alloc_stack(uptr addr, uptr *trace, uptr size, 1206d1862363c88c183b0ed7740fca876342cf0474bStephen Hines u32 *thread_id); 1216d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 1226d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1236d1862363c88c183b0ed7740fca876342cf0474bStephen Hines uptr __asan_get_free_stack(uptr addr, uptr *trace, uptr size, 1246d1862363c88c183b0ed7740fca876342cf0474bStephen Hines u32 *thread_id); 1256d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 1266d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1276d1862363c88c183b0ed7740fca876342cf0474bStephen Hines void __asan_get_shadow_mapping(uptr *shadow_scale, uptr *shadow_offset); 1286d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 1296d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 130c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov void __asan_report_error(uptr pc, uptr bp, uptr sp, 1317c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar uptr addr, int is_write, uptr access_size, u32 exp); 132c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 1333c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 1343c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov int __asan_set_error_exit_code(int exit_code); 1353c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 1363c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_set_death_callback(void (*callback)(void)); 1373c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE 1383c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov void __asan_set_error_report_callback(void (*callback)(const char*)); 139c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 1403c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 1413c80c6c574850106481f82b9e23d1c728458d4a9Timur Iskhodzhanov /* OPTIONAL */ void __asan_on_error(); 142c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 1436a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_print_accumulated_stats(); 1446a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines 1456a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE 1466a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines /* OPTIONAL */ const char* __asan_default_options(); 147230e52f4e91b53f05ce19dbbf11047f4a0113483Kostya Serebryany 148230e52f4e91b53f05ce19dbbf11047f4a0113483Kostya Serebryany // Global flag, copy of ASAN_OPTIONS=detect_stack_use_after_return 149230e52f4e91b53f05ce19dbbf11047f4a0113483Kostya Serebryany SANITIZER_INTERFACE_ATTRIBUTE 150230e52f4e91b53f05ce19dbbf11047f4a0113483Kostya Serebryany extern int __asan_option_detect_stack_use_after_return; 1512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines extern uptr *__asan_test_only_reported_buggy_pointer; 1542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_load1(uptr p); 1562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_load2(uptr p); 1572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_load4(uptr p); 1582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_load8(uptr p); 1592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_load16(uptr p); 1602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_store1(uptr p); 1612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_store2(uptr p); 1622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_store4(uptr p); 1632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_store8(uptr p); 1642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_store16(uptr p); 1652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_loadN(uptr p, uptr size); 1662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE void __asan_storeN(uptr p, uptr size); 1672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 1687c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load1(uptr p, u32 exp); 1697c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load2(uptr p, u32 exp); 1707c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load4(uptr p, u32 exp); 1717c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load8(uptr p, u32 exp); 1727c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load16(uptr p, u32 exp); 1737c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store1(uptr p, u32 exp); 1747c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store2(uptr p, u32 exp); 1757c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store4(uptr p, u32 exp); 1767c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store8(uptr p, u32 exp); 1777c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store16(uptr p, u32 exp); 1787c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_loadN(uptr p, uptr size, 1797c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar u32 exp); 1807c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_storeN(uptr p, uptr size, 1817c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar u32 exp); 1827c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 1832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void* __asan_memcpy(void *dst, const void *src, uptr size); 1852d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void* __asan_memset(void *s, int c, uptr n); 1872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines void* __asan_memmove(void* dest, const void* src, uptr n); 1896d1862363c88c183b0ed7740fca876342cf0474bStephen Hines 1906d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1916d1862363c88c183b0ed7740fca876342cf0474bStephen Hines void __asan_poison_cxx_array_cookie(uptr p); 1926d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1936d1862363c88c183b0ed7740fca876342cf0474bStephen Hines uptr __asan_load_cxx_array_cookie(uptr *p); 1946d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1956d1862363c88c183b0ed7740fca876342cf0474bStephen Hines void __asan_poison_intra_object_redzone(uptr p, uptr size); 1966d1862363c88c183b0ed7740fca876342cf0474bStephen Hines SANITIZER_INTERFACE_ATTRIBUTE 1976d1862363c88c183b0ed7740fca876342cf0474bStephen Hines void __asan_unpoison_intra_object_redzone(uptr p, uptr size); 198c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov} // extern "C" 199c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov 200c70fa28caaaec2134f2c2230821fcc0f0d7ac27eAlexey Samsonov#endif // ASAN_INTERFACE_INTERNAL_H 201