diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-09-17 13:11:47 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-09-18 08:38:24 +0200 |
commit | 56530c61bfdd87c5bfba4b6de20612d356bd289c (patch) | |
tree | 6f83993fd8f4241ffe21431d407cf82bb5e1f696 | |
parent | b8e1e1b92547066befe8cea5678e4fbaad9f8dd9 (diff) |
unit: Add test for misaligned builtin memcpy()unit-tests
-rw-r--r-- | spec/build/testsuites/unit/misc.yml | 1 | ||||
-rw-r--r-- | testsuites/unit/tc-misaligned-builtin-memcpy.c | 51 |
2 files changed, 52 insertions, 0 deletions
diff --git a/spec/build/testsuites/unit/misc.yml b/spec/build/testsuites/unit/misc.yml index a9263a37c9..da454d8960 100644 --- a/spec/build/testsuites/unit/misc.yml +++ b/spec/build/testsuites/unit/misc.yml @@ -11,6 +11,7 @@ includes: [] ldflags: [] links: [] source: +- testsuites/unit/tc-misaligned-builtin-memcpy.c - testsuites/unit/ts-unit-misc.c stlib: [] target: testsuites/unit/unitmisc.exe diff --git a/testsuites/unit/tc-misaligned-builtin-memcpy.c b/testsuites/unit/tc-misaligned-builtin-memcpy.c new file mode 100644 index 0000000000..2021a68551 --- /dev/null +++ b/testsuites/unit/tc-misaligned-builtin-memcpy.c @@ -0,0 +1,51 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/* + * Copyright (C) 2019 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <string.h> + +#include <rtems.h> + +#include <rtems/test.h> + +T_TEST_CASE(MisalignedBuiltinMemcpy) +{ + double a; + double b; + char buf[2 * sizeof(double)]; + void *p; + + p = &buf[0]; + p = (void *)((uintptr_t)p | 1); + RTEMS_OBFUSCATE_VARIABLE(p); + a = 123e4; + RTEMS_OBFUSCATE_VARIABLE(a); + a *= a; + memcpy(p, &a, sizeof(a)); + RTEMS_OBFUSCATE_VARIABLE(p); + memcpy(&b, p, sizeof(b)); + T_eq(a, b, "%f == %f", a, b); +} |