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
This commit is contained in:
Chris Johns
2019-01-22 08:48:19 +11:00
parent d8c70ba65b
commit 194eb403c3
16 changed files with 687 additions and 460 deletions

View File

@@ -15,11 +15,13 @@
RTEMS_RTL_TRACE_UNLOAD | \
RTEMS_RTL_TRACE_SYMBOL | \
RTEMS_RTL_TRACE_RELOC | \
RTEMS_RTL_TRACE_LOAD_SECT | \
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 */
/* RTEMS_RTL_TRACE_ALL */
#define DL_DEBUG_TRACE DEBUG_TRACE
#define DL_RTL_CMDS 1
#else
#define DL_DEBUG_TRACE 0