source: rtems/testsuites/sptests/spcxx01/init.cc @ 3ecb207

5
Last change on this file since 3ecb207 was 8b59916, checked in by Sebastian Huber <sebastian.huber@…>, on 12/21/18 at 12:31:32

spcxx01: Add test case

  • Property mode set to 100644
File size: 2.3 KB
Line 
1/*
2 * SPDX-License-Identifier: BSD-2-Clause
3 *
4 * Copyright (C) 2018 embedded brains GmbH
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 * POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#ifdef HAVE_CONFIG_H
29#include "config.h"
30#endif
31
32#include <new>
33
34#include <rtems.h>
35
36#include <tmacros.h>
37
38const char rtems_test_name[] = "SPCXX 1";
39
40struct alignas(256) S {
41  int i;
42};
43
44extern "C" void Init(rtems_task_argument arg)
45{
46  TEST_BEGIN();
47
48  int *i = static_cast<decltype(i)>(
49    ::operator new(sizeof(*i), std::align_val_t(256))
50  );
51  RTEMS_OBFUSCATE_VARIABLE(i);
52  rtems_test_assert(i != nullptr);
53  rtems_test_assert(reinterpret_cast<uintptr_t>(i) % 256 == 0);
54  ::delete(i);
55
56  S *s = new S;
57  RTEMS_OBFUSCATE_VARIABLE(s);
58  rtems_test_assert(s != nullptr);
59  rtems_test_assert(reinterpret_cast<uintptr_t>(s) % 256 == 0);
60  delete s;
61
62  TEST_END();
63  exit(0);
64}
65
66#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
67
68#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
69
70#define CONFIGURE_MAXIMUM_TASKS 1
71
72#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
73
74#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
75
76#define CONFIGURE_INIT
77
78#include <rtems/confdefs.h>
Note: See TracBrowser for help on using the repository browser.