work around _FORTIFY_SOURCE false positive

In builds with profiling disabled (default), the opt_prof_prefix array
has a one byte length as a micro-optimization. This will cause the usage
of write in the unused profiling code to be statically detected as a
buffer overflow by Bionic's _FORTIFY_SOURCE implementation as it tries
to detect read overflows in addition to write overflows.

This works around the problem by informing the compiler that
not_reached() means code in unreachable in release builds.
This commit is contained in:
Daniel Micay 2015-08-01 15:06:12 -04:00
parent c1a6a51e40
commit 67c46a9e53

View File

@ -60,9 +60,11 @@
#ifdef __GNUC__
# define likely(x) __builtin_expect(!!(x), 1)
# define unlikely(x) __builtin_expect(!!(x), 0)
# define unreachable() __builtin_unreachable()
#else
# define likely(x) !!(x)
# define unlikely(x) !!(x)
# define unreachable()
#endif
/*
@ -88,6 +90,7 @@
__FILE__, __LINE__); \
abort(); \
} \
unreachable(); \
} while (0)
#endif