summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2012-07-19 16:12:35 +1000
committerChris Johns <chrisj@rtems.org>2012-07-19 16:12:35 +1000
commit2ffca5bcec9fa3a342f1aa320242ab5a3d8fe698 (patch)
treeeca0aab5cfca798213badb0a21bbd4cc1cc8478e
parente70bab513340a399e44f3386c3aa11e48e94b383 (diff)
Do not clear the unresolved on each relocation call.
Add some warning messages.
-rw-r--r--rtl-elf.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/rtl-elf.c b/rtl-elf.c
index cd96192..b8a7847 100644
--- a/rtl-elf.c
+++ b/rtl-elf.c
@@ -139,8 +139,6 @@ rtems_rtl_elf_relocator (rtems_rtl_obj_t* obj,
RTEMS_RTL_OBJ_SECT_RELA) ? true : false;
reloc_size = is_rela ? sizeof (Elf_Rela) : sizeof (Elf_Rel);
- obj->unresolved = 0;
-
for (reloc = 0; reloc < (sect->size / reloc_size); ++reloc)
{
uint8_t relbuf[reloc_size];
@@ -204,7 +202,6 @@ rtems_rtl_elf_relocator (rtems_rtl_obj_t* obj,
uint16_t flags = 0;
rtems_rtl_word_t rel_words[3];
- ++obj->unresolved;
relocate = false;
if (is_rela)
@@ -226,8 +223,9 @@ rtems_rtl_elf_relocator (rtems_rtl_obj_t* obj,
symname,
targetsect->section,
rel_words))
- {
- }
+ return false;
+
+ ++obj->unresolved;
}
}
@@ -275,7 +273,10 @@ rtems_rtl_obj_relocate_unresolved (rtems_rtl_unresolv_reloc_t* reloc,
sect = rtems_rtl_obj_find_section_by_index (reloc->obj, reloc->sect);
if (!sect)
+ {
+ rtems_rtl_set_error (ENOEXEC, "unresolved sect not found");
return false;
+ }
symvalue = (Elf_Word) (intptr_t) sym->value;
if (is_rela)