diff options
Diffstat (limited to 'testsuites/libtests/dl01/dl-load.c')
-rw-r--r-- | testsuites/libtests/dl01/dl-load.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/testsuites/libtests/dl01/dl-load.c b/testsuites/libtests/dl01/dl-load.c index 5438196e67..d93550d15b 100644 --- a/testsuites/libtests/dl01/dl-load.c +++ b/testsuites/libtests/dl01/dl-load.c @@ -12,8 +12,41 @@ #include "dl-load.h" -typedef int (*call_t)(int argc, const char* argv[]); +#include <rtems/rtl/rtl-shell.h> +#include <rtems/rtl/rtl-trace.h> + +#define TEST_TRACE 0 +#if TEST_TRACE + #define DEBUG_TRACE (RTEMS_RTL_TRACE_DETAIL | \ + RTEMS_RTL_TRACE_WARNING | \ + RTEMS_RTL_TRACE_LOAD | \ + RTEMS_RTL_TRACE_UNLOAD | \ + RTEMS_RTL_TRACE_SYMBOL | \ + RTEMS_RTL_TRACE_RELOC | \ + RTEMS_RTL_TRACE_ALLOCATOR | \ + RTEMS_RTL_TRACE_UNRESOLVED | \ + RTEMS_RTL_TRACE_ARCHIVES | \ + RTEMS_RTL_TRACE_DEPENDENCY) + #define DL_DEBUG_TRACE DEBUG_TRACE /* RTEMS_RTL_TRACE_ALL */ + #define DL_RTL_CMDS 1 +#else + #define DL_DEBUG_TRACE 0 + #define DL_RTL_CMDS 0 +#endif + +static void dl_load_dump (void) +{ +#if DL_RTL_CMDS + char* list[] = { "rtl", "list", NULL }; + char* sym[] = { "rtl", "sym", NULL }; + printf ("RTL List:\n"); + rtems_rtl_shell_command (2, list); + printf ("RTL Sym:\n"); + rtems_rtl_shell_command (2, sym); +#endif +} +typedef int (*call_t)(int argc, const char* argv[]); static const char* call_1[] = { "Line 1", "Line 2" }; static const char* call_2[] = { "Call 2, line 1", @@ -28,6 +61,10 @@ int dl_load_test(void) int unresolved; char* message = "loaded"; +#if DL_DEBUG_TRACE + rtems_rtl_trace_set_mask (DL_DEBUG_TRACE); +#endif + printf("load: /dl01-o1.o\n"); handle = dlopen ("/dl01-o1.o", RTLD_NOW | RTLD_GLOBAL); @@ -44,6 +81,8 @@ int dl_load_test(void) printf ("handle: %p %s\n", handle, message); + dl_load_dump (); + call = dlsym (handle, "rtems_main"); if (call == NULL) { |