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/dl-o4.c | |
parent | libdl: Reindex unresolved names after removing used records. (diff) | |
download | rtems-03139d5b1cf95d5b2f699e8f56e1f0ba2d7f89e4.tar.bz2 |
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 '')
-rw-r--r-- | testsuites/libtests/dl07/dl-o4.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/testsuites/libtests/dl07/dl-o4.c b/testsuites/libtests/dl07/dl-o4.c new file mode 100644 index 0000000000..a3cb1fb6c5 --- /dev/null +++ b/testsuites/libtests/dl07/dl-o4.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2014 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. + */ + +#include "dl-load.h" +#include "dl-o1.h" +#include "dl-o4.h" + +#include <rtems/test.h> + +#define printf(...) rtems_printf(&rtems_test_printer, __VA_ARGS__); + + +int dl04_unresolv_1; +float dl04_unresolv_2; +char dl04_unresolv_3; +char* dl04_unresolv_4; +const int dl04_unresolv_5 = 4; +const char* dl04_unresolv_6 = "dl-O4"; + +/* + * Yes a decl in the source. This is a modules main and I could not find which + * header main is defined in. + */ +int rtems_main_o4 (int argc, const char* argv[]); + +#define DL_NAME "dlo4" +#define PAINT_VAR(_v) sizeof(_v), &_v, _v + +int rtems_main_o4 (int argc, const char* argv[]) +{ + printf (DL_NAME ": module: %s\n", dl_localise_file (__FILE__)); + printf (DL_NAME ": dl01_bss1: %4u: %p: %d\n", PAINT_VAR (dl01_bss1)); + printf (DL_NAME ": dl01_bss2: %4u: %p: %f\n", PAINT_VAR (dl01_bss2[0])); + printf (DL_NAME ": dl01_bss3: %4u: %p: %02x\n", PAINT_VAR (dl01_bss3[0])); + printf (DL_NAME ": dl01_data1: %4u: %p: %d\n", PAINT_VAR (dl01_data1)); + /* no %f in the rtems test printer */ + printf (DL_NAME ": dl01_data2: %4u: %p: %f\n", PAINT_VAR (dl01_data2)); + printf (DL_NAME ": dl01_const1: %4u: %p: %d\n", PAINT_VAR (dl01_const1)); + printf (DL_NAME ": dl01_const2: %4u: %p: %f\n", PAINT_VAR (dl01_const2)); + printf (DL_NAME ": dl01_func1: %4u: %p\n", sizeof(dl01_func1), &dl01_func1); + printf (DL_NAME ": dl04_unresolv_1: %4u: %p: %d\n", PAINT_VAR (dl04_unresolv_1)); + printf (DL_NAME ": dl04_unresolv_2: %4u: %p: %f\n", PAINT_VAR (dl04_unresolv_2)); + printf (DL_NAME ": dl04_unresolv_3: %4u: %p: %02x\n", PAINT_VAR (dl04_unresolv_3)); + printf (DL_NAME ": dl04_unresolv_4: %4u: %p: %p\n", PAINT_VAR (dl04_unresolv_4)); + printf (DL_NAME ": dl04_unresolv_5: %4u: %p: %d\n", PAINT_VAR (dl04_unresolv_5)); + printf (DL_NAME ": dl04_unresolv_6: %4u: %p: %s\n", PAINT_VAR (dl04_unresolv_6)); + return 0; +} |