Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gcc.dg/asan/nosanitize-and-inline.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* { dg-do run } */ /* This is a simplified version of what Emacs does internally, when marking its stack. */ static unsigned long sum; static void *stack_base; /* A simple substitute for what Emacs actually does. */ static void mark_maybe_pointer (void *p) { sum ^= (unsigned long) p; } static inline void __attribute__ ((no_sanitize_address)) mark_memory (void **start, void **end) { void **pp; if (end < start) { void **tem = start; start = end; end = tem; } for (pp = start; pp < end; pp++) { /* This is the dereference that we don't want sanitized. */ void *p = *pp; mark_maybe_pointer (p); } } static void mark_stack (void) { void *end; mark_memory (stack_base, &end); } void garbage_collect (void) { mark_stack (); } int main (void) { void *dummy; stack_base = &dummy; garbage_collect (); return 0; }