diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2014-08-19 10:44:44 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@arm.com> | 2014-08-19 10:44:44 +0000 |
commit | 59c3d5a1a4c0d8ee4f1da2c9e449ed9ab4edd4b6 (patch) | |
tree | 4c5a8a27bdb1d4223785c257a1b6e8ce49f17a22 | |
parent | de1c312566d9d33b46e039505cc3d61b4de40b89 (diff) | |
download | cygnal-59c3d5a1a4c0d8ee4f1da2c9e449ed9ab4edd4b6.tar.gz cygnal-59c3d5a1a4c0d8ee4f1da2c9e449ed9ab4edd4b6.tar.bz2 cygnal-59c3d5a1a4c0d8ee4f1da2c9e449ed9ab4edd4b6.zip |
* libc/machine/aarch64/memchr.S: Add check for zero-sized buffer.
-rw-r--r-- | newlib/ChangeLog | 4 | ||||
-rw-r--r-- | newlib/libc/machine/aarch64/memchr.S | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index f5e66b58c..24b9a060d 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,7 @@ +2014-08-19 Richard Earnshaw <rearnsha@arm.com> + + * libc/machine/aarch64/memchr.S: Add check for zero-sized buffer. + 2014-08-18 Corinna Vinschen <vinschen@redhat.com> * libc/include/sys/signal.h: Declare sigaltstack for RTEMS only. diff --git a/newlib/libc/machine/aarch64/memchr.S b/newlib/libc/machine/aarch64/memchr.S index eb59a5aad..53f5d6bc0 100644 --- a/newlib/libc/machine/aarch64/memchr.S +++ b/newlib/libc/machine/aarch64/memchr.S @@ -79,6 +79,8 @@ .endm def_fn memchr + /* Do not dereference srcin if no bytes to compare. */ + cbz cntin, .Lzero_length /* * Magic constant 0x40100401 allows us to identify which lane matches * the requested byte. @@ -166,5 +168,9 @@ def_fn memchr csel result, xzr, result, eq ret +.Lzero_length: + mov result, #0 + ret + .size memchr, . - memchr #endif |