From 194eb403c39f5ad346e63dc3352e29570857fd93 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Tue, 22 Jan 2019 08:48:19 +1100 Subject: libdl: Add support for large memory programs - Add trampolines to support relocs that are out of range on support architectures. - Support not loading separate text/data sections in an object file if the symbol provided in the section is a duplicate. A base image may have pulled in part of an object and another part needs to be dynamically loaded. - Refactor the unresolved handling to scale to hundreds of unresolved symbols when loading large number of files. Updates #3685 --- testsuites/libtests/dl09/dl-load.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'testsuites/libtests/dl09/dl-load.c') diff --git a/testsuites/libtests/dl09/dl-load.c b/testsuites/libtests/dl09/dl-load.c index ee0ef0a335..160f8157d9 100644 --- a/testsuites/libtests/dl09/dl-load.c +++ b/testsuites/libtests/dl09/dl-load.c @@ -99,7 +99,7 @@ static void dl_check_resolved(void* handle, bool has_unresolved) handle, unresolved != 0 ? "" : "no "); } -static void* dl_load_obj(const char* name, bool has_unresolved) +static void* dl_load_obj (const char* name, bool has_unresolved) { void* handle; @@ -184,11 +184,17 @@ int dl_load_test(void) dl_load_dump (); + /* + * Check for any resolved externals. + */ + printf ("Check is any unresolved externals exist:\n"); + dl_check_resolved (RTLD_SELF, false); + printf ("Running rtems_main_o1:\n"); if (dl_call (o[0].handle, "rtems_main_o1")) return 1; - for (i = 0; i < NUMOF(od); ++i) + for (i = 0; i < NUMOF (od); ++i) dl_object_close (&o[i]); return 0; -- cgit v1.2.3