bionic/libc/include
Vadim Markovtsev 323d4b6f68 Add "__noreturn" to assert and assert2
These functions should print assertion violation messages and then
call abort(). They do really not return control flow afterwards.
Consider the declaration of the similar __assert_fail from glibc:

extern void __assert_fail (const char *__assertion,
                           const char *__file,
			   unsigned int __line,
                           const char *__function)
     __THROW __attribute__ ((__noreturn__));

Bionic has __noreturn defined in sys/cdefs.h to be that GNU
noreturn attribute.

This patch has a practical value. Consider the following function:

void check(void* ptr) {
  assert(ptr != NULL);
}

Without this patch applied, gcc (and presumably clang) shows even in
debug mode:

warning: unused parameter 'ptr' [-Wunused-parameter]

In release mode, NDEBUG is defined and assert() becomes a no-op, as
one should expect. Thus, the warning is shown correctly then.

Another code sample:

float array[2];
int i = 3;
...
assert(i < 2);
array[i] = 0;

gcc says,

warning: array subscript is below array bounds [-Warray-bounds]

In other words, without noreturn attribute, assertions do not
allow a compiler's static analyzer to properly understand
the preconditions.

Change-Id: I3be92e99787c528899cf243ed448c4730c00c45b
Signed-off-by: Vadim Markovtsev <gmarkhor@gmail.com>
2014-01-15 07:32:52 +00:00
..
android libc: Add <android/api-level.h> 2010-12-06 12:05:11 +01:00
arpa Upgrade more functions to the current upstream NetBSD copy. 2012-10-23 12:29:53 -07:00
asm Add x86_64 to the bionic headers. 2013-09-30 18:42:13 -07:00
net Update the kernel headers to match external/kernel-headers. 2012-09-12 12:30:22 -07:00
netinet Add TCPOPT_* constants. 2014-01-03 15:58:40 -08:00
netpacket auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
sys Add some more headers. 2014-01-10 15:32:31 -08:00
alloca.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
ar.h New additions/bug fixes required/found when porting perf. 2012-03-20 12:54:55 -07:00
assert.h Add "__noreturn" to assert and assert2 2014-01-15 07:32:52 +00:00
byteswap.h Fixes for the ARM-specific bswap_16, bswap_32, and bswap_64. 2010-09-26 11:26:53 -07:00
ctype.h Make ctype.h a little less unhygienic. 2013-08-13 14:30:59 -07:00
dirent.h Add the glibc-compatible d_fileno. 2014-01-09 12:37:12 -08:00
dlfcn.h fix prototype of dladdr 2011-09-28 12:17:34 -07:00
elf.h Add NT_PRSTATUS to <elf.h>. 2014-01-09 15:45:07 -08:00
endian.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
err.h Add more __restricts, clean up __format__ attributes. 2013-05-14 16:08:43 -07:00
errno.h Reduce the exposure of the __set_errno implementation detail. 2012-11-30 12:05:18 -08:00
fcntl.h <fcntl.h> should get you the POSIX_FADV_* constants. 2014-01-07 17:47:20 -08:00
features.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
fnmatch.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
fts.h Add fts, err, and sys/queue for grep 2010-01-15 15:57:02 -08:00
ftw.h libc: add ftw / nftw functions 2012-09-13 16:54:57 -07:00
getopt.h Switch to current upstream getopt_long. 2013-06-25 14:56:17 -07:00
grp.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
inttypes.h Fix inttypes.h and stdint.h for 64-bit (and C++11). 2013-09-30 14:46:47 -07:00
lastlog.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
libgen.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
limits.h LONG_LONG_MIN/MAX: Move declarations to <limits.h> 2012-10-15 18:52:55 +02:00
link.h Remove 32-bit assumptions from the ELF code. 2013-09-30 18:43:46 -07:00
locale.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
malloc.h Use alloc_size attribute on *alloc functions 2013-10-02 14:14:40 -07:00
memory.h Fix <memory.h> to be a synonym for <string.h> like in glibc. 2013-02-22 11:11:48 -08:00
mntent.h Add extra libc stubs for mntent related functions. 2014-01-10 01:24:34 +00:00
netdb.h Add marking of DNS sockets for mark based routing 2013-07-09 13:16:22 -07:00
nsswitch.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
pathconf.h libc: Add missing C++ guards to <pathconf.h> 2010-09-27 17:27:14 +02:00
paths.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
poll.h Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls. 2013-10-24 15:48:32 -07:00
pthread.h <pthread.h> fixes and pthread cleanup. 2013-10-31 12:31:16 -07:00
pwd.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
regex.h Import regex from OpenBSD 2010-01-15 15:01:44 -08:00
resolv.h Expose dn_comp and dn_expand to system C code. 2013-07-02 15:57:57 -07:00
sched.h <sched.h> should offer both __sched_priority and sched_priority. 2014-01-07 17:48:30 -08:00
search.h Remove (near-)duplicate definitions of size_t and ssize_t. 2012-11-29 17:25:23 -08:00
semaphore.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
setjmp.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
sgidefs.h Add <sgidefs.h>. 2014-01-09 13:54:49 -08:00
sgtty.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
sha1.h Upgrade more functions to the current upstream NetBSD copy. 2012-10-23 12:29:53 -07:00
signal.h Remove some old kernel header cruft not needed with uapi. 2013-12-20 17:26:30 -08:00
stdint.h AArch64: Fix definitions for STDINT_LIMITS 2013-10-22 12:40:16 -07:00
stdio.h Allow GCC-built fortified code to run on a clang-built bionic. 2013-12-19 14:20:22 -08:00
stdlib.h Move bionic over to GCC's 'warning' attribute. 2013-12-17 20:43:30 -08:00
string.h Fix unnecessary call to __strncpy_chk2 2013-09-27 13:21:24 -07:00
strings.h More FORTIFY_SOURCE functions under clang 2013-06-29 08:16:22 -07:00
syslog.h Merge "syslog needs a valid socket path for _PATH_LOG" 2013-08-05 20:41:50 +00:00
termio.h libc: Add missing <termio.h> header 2010-06-11 14:39:39 -07:00
termios.h termios: add tcdrain 2012-09-04 14:11:28 +02:00
time64.h libc: allow usage of time64.h from cpp code 2009-11-23 16:25:32 -05:00
time.h Prepare to switch to the uapi <linux/signal.h>. 2013-11-07 12:29:07 -08:00
unistd.h Switch to upstream sleep(3) and usleep(3). 2013-11-20 16:24:16 -08:00
util.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
utime.h Fix utime/utimes when passed a NULL pointer. 2013-10-28 13:21:06 -07:00
utmp.h libc: remove C++ comments from public headers. 2010-09-27 17:35:26 +02:00
wchar.h Ensure that <stdint.h> defines SIZE_MAX and friends. 2013-06-13 16:02:53 -07:00
wctype.h auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00