diff options
author | Chris Johns <chrisj@rtems.org> | 2018-11-20 14:56:11 +1100 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2018-11-22 12:43:31 +1100 |
commit | 03139d5b1cf95d5b2f699e8f56e1f0ba2d7f89e4 (patch) | |
tree | 33fd489eac7497cdebe61560bc43e613b3eef0a9 /testsuites/libtests/dl07/init.c | |
parent | 8e7c72a7f532d0945de16f7f861f5e0277d92fd1 (diff) |
libdl: Add object file dependencies to track references
Tracking references lets us manage when an object file can be
unloaded. If an object file has references to it, it cannot be
unloaded.
Modules that depend on each other cannot be unloaded.
Updates #3605
Diffstat (limited to 'testsuites/libtests/dl07/init.c')
-rw-r--r-- | testsuites/libtests/dl07/init.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/testsuites/libtests/dl07/init.c b/testsuites/libtests/dl07/init.c new file mode 100644 index 0000000000..7c482c4944 --- /dev/null +++ b/testsuites/libtests/dl07/init.c @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2018 Chris Johns <chrisj@rtems.org>. All rights reserved. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include "tmacros.h" + +#include <errno.h> +#include <string.h> +#include <stdint.h> +#include <unistd.h> + +#include <rtems/rtl/rtl.h> +#include <rtems/untar.h> + +#include "dl-load.h" + +const char rtems_test_name[] = "libdl (RTL) 7"; + +/* forward declarations to avoid warnings */ +static rtems_task Init(rtems_task_argument argument); + +#include "dl07-tar.h" + +#define TARFILE_START dl07_tar +#define TARFILE_SIZE dl07_tar_size + +static int test(void) +{ + int ret; + ret = dl_load_test(); + if (ret) + rtems_test_exit(ret); + return 0; +} + +static void Init(rtems_task_argument arg) +{ + int te; + int i; + + TEST_BEGIN(); + + te = Untar_FromMemory((void *)TARFILE_START, (size_t)TARFILE_SIZE); + if (te != 0) + { + printf("untar failed: %d\n", te); + rtems_test_exit(1); + exit (1); + } + + for (i = 0; i < 100; ++i) + { + printf ("--------------------------------------------------\n"); + printf (" Run: %d\n", i); + test(); + } + + TEST_END(); + + rtems_test_exit(0); +} + +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER + +#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4 + +#define CONFIGURE_MAXIMUM_TASKS 1 + +#define CONFIGURE_MAXIMUM_SEMAPHORES 1 + +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#define CONFIGURE_INIT_TASK_STACK_SIZE (8U * 1024U) + +#define CONFIGURE_INIT_TASK_ATTRIBUTES (RTEMS_DEFAULT_ATTRIBUTES | RTEMS_FLOATING_POINT) + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> |