summaryrefslogtreecommitdiffstats
path: root/cpukit/libdl/rtl-unresolved.c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2019-01-09 22:14:11 +1100
committerChris Johns <chrisj@rtems.org>2019-02-09 10:06:34 +1100
commit4408603e27d028c5c735cf5d9d8160807ce1d591 (patch)
treec27bef5ceb630e13724bd11791659c0fae3e0543 /cpukit/libdl/rtl-unresolved.c
parentlibtest/dl08: Add a test for archives. (diff)
downloadrtems-4408603e27d028c5c735cf5d9d8160807ce1d591.tar.bz2
libdl: Fix the support for constructors and desctructors.
- Fix the handling of pending objects. - Add a constructor flags in objects to track then being called. Closes #2921
Diffstat (limited to 'cpukit/libdl/rtl-unresolved.c')
-rw-r--r--cpukit/libdl/rtl-unresolved.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/cpukit/libdl/rtl-unresolved.c b/cpukit/libdl/rtl-unresolved.c
index 4e81c3c64e..7e2d920594 100644
--- a/cpukit/libdl/rtl-unresolved.c
+++ b/cpukit/libdl/rtl-unresolved.c
@@ -181,7 +181,8 @@ rtems_rtl_unresolved_resolve_reloc (rtems_rtl_unresolv_rec* rec,
if (rec->rec.reloc.name == rd->name && rec->rec.reloc.obj != NULL)
{
if (rtems_rtl_trace (RTEMS_RTL_TRACE_UNRESOLVED))
- printf ("rtl: unresolv: resolve reloc: %s\n", rd->name_rec->rec.name.name);
+ printf ("rtl: unresolv: resolve reloc: %s\n",
+ rd->name_rec->rec.name.name);
rtems_rtl_obj_relocate_unresolved (&rec->rec.reloc, rd->sym);
@@ -193,6 +194,7 @@ rtems_rtl_unresolved_resolve_reloc (rtems_rtl_unresolv_rec* rec,
if (rec->rec.reloc.obj->unresolved == 0)
{
pending = rtems_rtl_pending_unprotected ();
+ rtems_chain_extract (&rec->rec.reloc.obj->link);
rtems_chain_append (pending, &rec->rec.reloc.obj->link);
}