From c6eead1353e03542e5bad9efda3b6553125520d8 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Wed, 7 Dec 2016 17:20:38 +1100 Subject: libdl: Add C++ exception support to loaded modules. This has been tested on SPARC, i386, PowerPC and ARM. Closes #2767. --- .../sparc/erc32/make/custom/erc32-testsuite.tcfg | 4 - cpukit/libdl/Makefile.am | 1 + cpukit/libdl/dlfcn.c | 2 +- cpukit/libdl/rtl-allocator.c | 26 +- cpukit/libdl/rtl-allocator.h | 7 +- cpukit/libdl/rtl-debugger.c | 14 +- cpukit/libdl/rtl-elf.c | 94 +- cpukit/libdl/rtl-elf.h | 26 +- cpukit/libdl/rtl-error.c | 17 +- cpukit/libdl/rtl-mdreloc-arm.c | 121 +- cpukit/libdl/rtl-mdreloc-bfin.c | 29 + cpukit/libdl/rtl-mdreloc-h8300.c | 29 + cpukit/libdl/rtl-mdreloc-i386.c | 29 + cpukit/libdl/rtl-mdreloc-lm32.c | 29 + cpukit/libdl/rtl-mdreloc-m68k.c | 29 + cpukit/libdl/rtl-mdreloc-mips.c | 29 + cpukit/libdl/rtl-mdreloc-moxie.c | 29 + cpukit/libdl/rtl-mdreloc-powerpc.c | 43 + cpukit/libdl/rtl-mdreloc-sparc.c | 43 +- cpukit/libdl/rtl-mdreloc-v850.c | 29 + cpukit/libdl/rtl-obj.c | 178 +- cpukit/libdl/rtl-obj.h | 169 +- cpukit/libdl/rtl-rap.c | 55 +- cpukit/libdl/rtl-rap.h | 7 + cpukit/libdl/rtl-unwind-dw2.c | 71 + cpukit/libdl/rtl-unwind-dw2.h | 83 + cpukit/libdl/rtl-unwind.h | 63 + cpukit/libdl/rtl.c | 33 +- cpukit/libdl/rtl.h | 2 +- testsuites/libtests/dl01/init.c | 3 +- testsuites/libtests/dl02/init.c | 2 + testsuites/libtests/dl03/init.c | 2 + testsuites/libtests/dl04/init.c | 2 + testsuites/libtests/dl05/dl-cpp.cpp | 24 +- testsuites/libtests/dl05/dl-load.c | 34 +- testsuites/libtests/dl05/dl-load.h | 30 +- testsuites/libtests/dl05/dl-o5.cpp | 15 +- testsuites/libtests/dl05/dl05.scn | 2545 +++++++++++--------- testsuites/libtests/dl05/init.c | 8 +- 39 files changed, 2522 insertions(+), 1434 deletions(-) delete mode 100644 c/src/lib/libbsp/sparc/erc32/make/custom/erc32-testsuite.tcfg create mode 100644 cpukit/libdl/rtl-unwind-dw2.c create mode 100644 cpukit/libdl/rtl-unwind-dw2.h create mode 100644 cpukit/libdl/rtl-unwind.h diff --git a/c/src/lib/libbsp/sparc/erc32/make/custom/erc32-testsuite.tcfg b/c/src/lib/libbsp/sparc/erc32/make/custom/erc32-testsuite.tcfg deleted file mode 100644 index cee7ce59e5..0000000000 --- a/c/src/lib/libbsp/sparc/erc32/make/custom/erc32-testsuite.tcfg +++ /dev/null @@ -1,4 +0,0 @@ -# -# Excpected failures. -# -expected-fail: dl05 diff --git a/cpukit/libdl/Makefile.am b/cpukit/libdl/Makefile.am index 5c3cd15475..b21c16750a 100644 --- a/cpukit/libdl/Makefile.am +++ b/cpukit/libdl/Makefile.am @@ -25,6 +25,7 @@ libdl_a_SOURCES = \ rtl-string.c \ rtl-sym.c \ rtl-trace.c \ + rtl-unwind-dw2.c \ rtl-unresolved.c libdl_a_SOURCES += rtl-mdreloc-@RTEMS_CPU@.c diff --git a/cpukit/libdl/dlfcn.c b/cpukit/libdl/dlfcn.c index 19feaafd26..3b31bb2e8e 100644 --- a/cpukit/libdl/dlfcn.c +++ b/cpukit/libdl/dlfcn.c @@ -130,7 +130,7 @@ dlerror (void) { static char msg[64]; rtems_rtl_get_error (msg, sizeof (msg)); - return msg; + return msg; } int diff --git a/cpukit/libdl/rtl-allocator.c b/cpukit/libdl/rtl-allocator.c index 988094060f..39b4bcd1d0 100644 --- a/cpukit/libdl/rtl-allocator.c +++ b/cpukit/libdl/rtl-allocator.c @@ -152,6 +152,7 @@ rtems_rtl_alloc_indirect_del (rtems_rtl_alloc_tag_t tag, bool rtems_rtl_alloc_module_new (void** text_base, size_t text_size, void** const_base, size_t const_size, + void** eh_base, size_t eh_size, void** data_base, size_t data_size, void** bss_base, size_t bss_size) { @@ -173,7 +174,20 @@ rtems_rtl_alloc_module_new (void** text_base, size_t text_size, const_size, false); if (!*const_base) { - rtems_rtl_alloc_module_del (text_base, const_base, data_base, bss_base); + rtems_rtl_alloc_module_del (text_base, const_base, eh_base, + data_base, bss_base); + return false; + } + } + + if (eh_size) + { + *eh_base = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_READ, + eh_size, false); + if (!*eh_base) + { + rtems_rtl_alloc_module_del (text_base, const_base, eh_base, + data_base, bss_base); return false; } } @@ -184,7 +198,8 @@ rtems_rtl_alloc_module_new (void** text_base, size_t text_size, data_size, false); if (!*data_base) { - rtems_rtl_alloc_module_del (text_base, const_base, data_base, bss_base); + rtems_rtl_alloc_module_del (text_base, const_base, eh_base, + data_base, bss_base); return false; } } @@ -195,7 +210,8 @@ rtems_rtl_alloc_module_new (void** text_base, size_t text_size, bss_size, false); if (!*bss_base) { - rtems_rtl_alloc_module_del (text_base, const_base, data_base, bss_base); + rtems_rtl_alloc_module_del (text_base, const_base, eh_base, + data_base, bss_base); return false; } } @@ -206,12 +222,14 @@ rtems_rtl_alloc_module_new (void** text_base, size_t text_size, void rtems_rtl_alloc_module_del (void** text_base, void** const_base, + void** eh_base, void** data_base, void** bss_base) { rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_READ_WRITE, *bss_base); rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_READ_WRITE, *data_base); + rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_READ, *eh_base); rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_READ, *const_base); rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_READ_EXEC, *text_base); - *text_base = *const_base = *data_base = *bss_base = NULL; + *text_base = *const_base = *eh_base = *data_base = *bss_base = NULL; } diff --git a/cpukit/libdl/rtl-allocator.h b/cpukit/libdl/rtl-allocator.h index 4d996d3ccd..e8044ee1e8 100644 --- a/cpukit/libdl/rtl-allocator.h +++ b/cpukit/libdl/rtl-allocator.h @@ -146,6 +146,8 @@ void rtems_rtl_alloc_indirect_del (rtems_rtl_alloc_tag_t tag, * @param text_size The size of the read/exec section. * @param const_base Pointer to the const base pointer. * @param const_size The size of the read only section. + * @param eh_base Pointer to the eh base pointer. + * @param eh_size The size of the eh section. * @param data_base Pointer to the data base pointer. * @param data_size The size of the read/write secton. * @param bss_base Pointer to the bss base pointer. @@ -155,6 +157,7 @@ void rtems_rtl_alloc_indirect_del (rtems_rtl_alloc_tag_t tag, */ bool rtems_rtl_alloc_module_new (void** text_base, size_t text_size, void** const_base, size_t const_size, + void** eh_base, size_t eh_size, void** data_base, size_t data_size, void** bss_base, size_t bss_size); @@ -163,11 +166,13 @@ bool rtems_rtl_alloc_module_new (void** text_base, size_t text_size, * * @param text_base Pointer to the text base pointer. * @param const_base Pointer to the const base pointer. + * @param eh_base Pointer to the eh base pointer. * @param data_base Pointer to the data base pointer. * @param bss_base Pointer to the bss base pointer. */ void rtems_rtl_alloc_module_del (void** text_base, void** const_base, - void** data_base, void** bss_base); + void** eh_base, void** data_base, + void** bss_base); #ifdef __cplusplus } diff --git a/cpukit/libdl/rtl-debugger.c b/cpukit/libdl/rtl-debugger.c index 63add5956e..afbea8ab44 100644 --- a/cpukit/libdl/rtl-debugger.c +++ b/cpukit/libdl/rtl-debugger.c @@ -45,10 +45,10 @@ _rtld_debug_state (void) int _rtld_linkmap_add (rtems_rtl_obj_t* obj) { - struct link_map* l = (struct link_map*)obj->detail; + struct link_map* l = obj->linkmap; struct link_map* prev; - uint32_t obj_num = obj->obj_num; - int i; + uint32_t obj_num = obj->obj_num; + int i; if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) printf ("rtl: linkmap_add\n"); @@ -78,8 +78,10 @@ _rtld_linkmap_add (rtems_rtl_obj_t* obj) void _rtld_linkmap_delete (rtems_rtl_obj_t* obj) { - struct link_map* l = (struct link_map*)obj->detail; - /* link_maps are allocated together if not 1 */ + struct link_map* l = obj->linkmap; + /* + * link_maps are allocated together if not 1 + */ struct link_map* e = l + obj->obj_num - 1; while (e && e->l_next) e = e->l_next; @@ -90,7 +92,7 @@ _rtld_linkmap_delete (rtems_rtl_obj_t* obj) e->l_next->l_prev = NULL; return; } + if ((l->l_prev->l_next = e->l_next) != NULL) e->l_next->l_prev = l->l_prev; - return; } diff --git a/cpukit/libdl/rtl-elf.c b/cpukit/libdl/rtl-elf.c index b686a4812f..37775ff776 100644 --- a/cpukit/libdl/rtl-elf.c +++ b/cpukit/libdl/rtl-elf.c @@ -30,6 +30,7 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" #include "rtl-unresolved.h" /** @@ -169,6 +170,9 @@ rtems_rtl_elf_relocator (rtems_rtl_obj_t* obj, &relbuf[0], reloc_size)) return false; + /* + * Read the symbol details. + */ if (is_rela) off = (obj->ooffset + symsect->offset + (ELF_R_SYM (rela->r_info) * sizeof (sym))); @@ -246,7 +250,7 @@ rtems_rtl_elf_relocator (rtems_rtl_obj_t* obj, if (is_rela) { if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) - printf ("rtl: rela: sym:%s(%-2d)=%08lx type:%-2d off:%08lx addend:%d\n", + printf ("rtl: rela: sym:%s(%d)=%08lx type:%d off:%08lx addend:%d\n", symname, (int) ELF_R_SYM (rela->r_info), symvalue, (int) ELF_R_TYPE (rela->r_info), rela->r_offset, (int) rela->r_addend); if (!rtems_rtl_elf_relocate_rela (obj, rela, targetsect, @@ -256,7 +260,7 @@ rtems_rtl_elf_relocator (rtems_rtl_obj_t* obj, else { if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) - printf ("rtl: rel: sym:%s(%-2d)=%08lx type:%-2d off:%08lx\n", + printf ("rtl: rel: sym:%s(%d)=%08lx type:%d off:%08lx\n", symname, (int) ELF_R_SYM (rel->r_info), symvalue, (int) ELF_R_TYPE (rel->r_info), rel->r_offset); if (!rtems_rtl_elf_relocate_rel (obj, rel, targetsect, @@ -300,7 +304,7 @@ rtems_rtl_obj_relocate_unresolved (rtems_rtl_unresolv_reloc_t* reloc, rela.r_info = reloc->rel[REL_R_INFO]; rela.r_addend = reloc->rel[REL_R_ADDEND]; if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) - printf ("rtl: rela: sym:%-2d type:%-2d off:%08lx addend:%d\n", + printf ("rtl: rela: sym:%d type:%d off:%08lx addend:%d\n", (int) ELF_R_SYM (rela.r_info), (int) ELF_R_TYPE (rela.r_info), rela.r_offset, (int) rela.r_addend); if (!rtems_rtl_elf_relocate_rela (reloc->obj, &rela, sect, @@ -313,7 +317,7 @@ rtems_rtl_obj_relocate_unresolved (rtems_rtl_unresolv_reloc_t* reloc, rel.r_offset = reloc->rel[REL_R_OFFSET]; rel.r_info = reloc->rel[REL_R_INFO]; if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) - printf ("rtl: rel: sym:%-2d type:%-2d off:%08lx\n", + printf ("rtl: rel: sym:%d type:%d off:%08lx\n", (int) ELF_R_SYM (rel.r_info), (int) ELF_R_TYPE (rel.r_info), rel.r_offset); if (!rtems_rtl_elf_relocate_rel (reloc->obj, &rel, sect, @@ -707,9 +711,16 @@ rtems_rtl_elf_parse_sections (rtems_rtl_obj_t* obj, int fd, Elf_Ehdr* ehdr) break; default: - if (rtems_rtl_trace (RTEMS_RTL_TRACE_WARNING)) - printf ("rtl: unsupported section: %2d: type=%02d flags=%02x\n", - section, (int) shdr.sh_type, (int) shdr.sh_flags); + /* + * See there are architecture specific flags? + */ + flags = rtems_rtl_elf_section_flags (obj, &shdr); + if (flags == 0) + { + if (rtems_rtl_trace (RTEMS_RTL_TRACE_WARNING)) + printf ("rtl: unsupported section: %2d: type=%02d flags=%02x\n", + section, (int) shdr.sh_type, (int) shdr.sh_flags); + } break; } @@ -729,6 +740,12 @@ rtems_rtl_elf_parse_sections (rtems_rtl_obj_t* obj, int fd, Elf_Ehdr* ehdr) if (strcmp (".dtors", name) == 0) flags |= RTEMS_RTL_OBJ_SECT_DTOR; + if (rtems_rtl_elf_unwind_parse (obj, name, flags)) + { + flags &= ~(RTEMS_RTL_OBJ_SECT_TEXT | RTEMS_RTL_OBJ_SECT_CONST); + flags |= RTEMS_RTL_OBJ_SECT_EH; + } + if (!rtems_rtl_obj_add_section (obj, section, name, shdr.sh_size, shdr.sh_offset, shdr.sh_addralign, shdr.sh_link, @@ -771,16 +788,19 @@ rtems_rtl_elf_file_check (rtems_rtl_obj_t* obj, int fd) return true; } -bool rtems_rtl_elf_load_details (rtems_rtl_obj_t* obj) +static bool +rtems_rtl_elf_load_linkmap (rtems_rtl_obj_t* obj) { rtems_chain_control* sections = NULL; rtems_chain_node* node = NULL; size_t mask = 0; - struct link_map* l = NULL; int sec_num = 0; + section_detail* sd; int i = 0; - /* caculate the size of sections' name. */ + /* + * Caculate the size of sections' name. + */ for (mask = RTEMS_RTL_OBJ_SECT_TEXT; mask <= RTEMS_RTL_OBJ_SECT_BSS; @@ -791,7 +811,6 @@ bool rtems_rtl_elf_load_details (rtems_rtl_obj_t* obj) while (!rtems_chain_is_tail (sections, node)) { rtems_rtl_obj_sect_t* sect = (rtems_rtl_obj_sect_t*) node; - if ((sect->size != 0) && ((sect->flags & mask) != 0)) { ++sec_num; @@ -801,32 +820,31 @@ bool rtems_rtl_elf_load_details (rtems_rtl_obj_t* obj) } obj->obj_num = 1; - obj->detail = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, - sizeof(struct link_map) + - sec_num * sizeof (section_detail), true); - if (!obj->detail) + obj->linkmap = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, + sizeof(struct link_map) + + sec_num * sizeof (section_detail), true); + if (!obj->linkmap) { - rtems_rtl_set_error (ENOMEM, "no memory for obj global syms"); + rtems_rtl_set_error (ENOMEM, "no memory for obj linkmap"); return false; } - l = (struct link_map*) obj->detail; - l->name = obj->oname; - l->sec_num = sec_num; - l->sec_detail = (section_detail*) (l + 1); - l->rpathlen = 0; - l->rpath = NULL; - l->l_next = NULL; - l->l_prev = NULL; - l->sec_addr[rap_text] = obj->text_base; - l->sec_addr[rap_const] = obj->const_base; - l->sec_addr[rap_data] = obj->data_base; - l->sec_addr[rap_bss] = obj->bss_base; - - - section_detail* sd = l->sec_detail; + obj->linkmap->name = obj->oname; + obj->linkmap->sec_num = sec_num; + obj->linkmap->sec_detail = (section_detail*) (obj->linkmap + 1); + obj->linkmap->rpathlen = 0; + obj->linkmap->rpath = NULL; + obj->linkmap->l_next = NULL; + obj->linkmap->l_prev = NULL; + obj->linkmap->sec_addr[rap_text] = obj->text_base; + obj->linkmap->sec_addr[rap_const] = obj->const_base; + obj->linkmap->sec_addr[rap_data] = obj->data_base; + obj->linkmap->sec_addr[rap_bss] = obj->bss_base; + + sd = obj->linkmap->sec_detail; sections = &obj->sections; node = rtems_chain_first (sections); + for (mask = RTEMS_RTL_OBJ_SECT_TEXT; mask <= RTEMS_RTL_OBJ_SECT_BSS; mask <<= 1) @@ -948,7 +966,12 @@ rtems_rtl_elf_file_load (rtems_rtl_obj_t* obj, int fd) rtems_rtl_symbol_obj_erase_local (obj); - if (!rtems_rtl_elf_load_details (obj)) + if (!rtems_rtl_elf_load_linkmap (obj)) + { + return false; + } + + if (!rtems_rtl_elf_unwind_register (obj)) { return false; } @@ -956,6 +979,13 @@ rtems_rtl_elf_file_load (rtems_rtl_obj_t* obj, int fd) return true; } +bool +rtems_rtl_elf_file_unload (rtems_rtl_obj_t* obj) +{ + rtems_rtl_elf_unwind_deregister (obj); + return true; +} + rtems_rtl_loader_format_t* rtems_rtl_elf_file_sig (void) { diff --git a/cpukit/libdl/rtl-elf.h b/cpukit/libdl/rtl-elf.h index 7f6ea300a3..e3ac07f7ed 100644 --- a/cpukit/libdl/rtl-elf.h +++ b/cpukit/libdl/rtl-elf.h @@ -54,6 +54,18 @@ extern "C" { */ #define RTEMS_RTL_ELF_STRING_MAX (256) +/** + * Architecture specific handler to translate unknown section flags to RTL + * section flags. + * + * @param obj The object file being relocated. + * @param shdr The ELF section header. + * @retval 0 Unknown or unsupported flags. + * @retval uint32_t RTL object file flags. + */ +uint32_t rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr); + /** * Architecture specific handler to check is a relocation record's type is * required to resolve a symbol. @@ -136,13 +148,6 @@ bool rtems_rtl_elf_find_symbol (rtems_rtl_obj_t* obj, */ bool rtems_rtl_elf_file_check (rtems_rtl_obj_t* obj, int fd); -/** - * The ELF file details handler. - * - * @param obj Load the details of the obj. - */ -bool rtems_rtl_elf_load_details (rtems_rtl_obj_t* obj); - /** * The ELF format load handler. * @@ -151,6 +156,13 @@ bool rtems_rtl_elf_load_details (rtems_rtl_obj_t* obj); */ bool rtems_rtl_elf_file_load (rtems_rtl_obj_t* obj, int fd); +/** + * The ELF format unload handler. + * + * @param obj The object to unload. + */ +bool rtems_rtl_elf_file_unload (rtems_rtl_obj_t* obj); + /** * The ELF format signature handler. * diff --git a/cpukit/libdl/rtl-error.c b/cpukit/libdl/rtl-error.c index 3251fa5392..5ec4b26ef7 100644 --- a/cpukit/libdl/rtl-error.c +++ b/cpukit/libdl/rtl-error.c @@ -17,6 +17,7 @@ #include "config.h" #endif +#include #include #include @@ -39,9 +40,15 @@ int rtems_rtl_get_error (char* message, size_t max_message) { rtems_rtl_data_t* rtl = rtems_rtl_lock (); - int last_errno = rtl->last_errno; - strncpy (message, rtl->last_error, sizeof (rtl->last_error)); - rtems_rtl_unlock (); - return last_errno; -} + if (rtl != NULL) + { + int last_errno = rtl->last_errno; + strncpy (message, rtl->last_error, sizeof (rtl->last_error)); + rtems_rtl_unlock (); + return last_errno; + } + strncpy(message, "RTL init error", max_message); + + return EIO; +} diff --git a/cpukit/libdl/rtl-mdreloc-arm.c b/cpukit/libdl/rtl-mdreloc-arm.c index 84d58e3d2d..f2f91f171c 100644 --- a/cpukit/libdl/rtl-mdreloc-arm.c +++ b/cpukit/libdl/rtl-mdreloc-arm.c @@ -10,11 +10,14 @@ #include #include #include +#include +#include #include #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" /* * It is possible for the compiler to emit relocations for unaligned data. @@ -23,6 +26,8 @@ #define RELOC_ALIGNED_P(x) \ (((uintptr_t)(x) & (sizeof(void *) - 1)) == 0) +#define SHT_ARM_EXIDX 0x70000001 /* Section holds ARM unwind info. */ + static inline Elf_Addr load_ptr(void *where) { @@ -56,9 +61,18 @@ static inline Elf_SOff sign_extend31(Elf_Addr val) { if (0x40000000 & val) - return ~((Elf_Addr)0x7fffffff) | (0x7fffffff & val); - else - return 0x7fffffff & val; + val = ~((Elf_Addr)0x7fffffff) | (0x7fffffff & val); + return 0x7fffffff & val; +} + +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + uint32_t flags = 0; + if (shdr->sh_type == SHT_ARM_EXIDX) + flags = RTEMS_RTL_OBJ_SECT_EH | RTEMS_RTL_OBJ_SECT_LOAD; + return flags; } bool @@ -96,8 +110,11 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, where = (Elf_Addr *)(sect->base + rel->r_offset); switch (ELF_R_TYPE(rel->r_info)) { - case R_TYPE(NONE): - break; + case R_TYPE(NONE): + if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) { + printf ("rtl: NONE %p in %s\n", where, rtems_rtl_obj_oname (obj)); + } + break; case R_TYPE(CALL): /* BL/BLX */ case R_TYPE(JUMP24): /* B/BL */ @@ -175,29 +192,31 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, case R_TYPE(ABS32): /* word32 (S + A) | T */ case R_TYPE(GLOB_DAT): /* word32 (S + A) | T */ case R_TYPE(PREL31): /* word32 (S + A) | T - P */ - case R_TYPE(TARGET2): /* Equivalent to ABS32 */ + case R_TYPE(TARGET2): /* Equivalent to REL32 */ if (__predict_true(RELOC_ALIGNED_P(where))) { tmp = *where + symvalue; if (isThumb(symvalue)) tmp |= 1; - if (ELF_R_TYPE(rel->r_info) == R_TYPE(REL32)) + if (ELF_R_TYPE(rel->r_info) == R_TYPE(REL32) || + ELF_R_TYPE(rel->r_info) == R_TYPE(TARGET2)) tmp -= (Elf_Addr)where; else if (ELF_R_TYPE(rel->r_info) == R_TYPE(PREL31)) - tmp -= sign_extend31((Elf_Addr)where); + tmp = sign_extend31(tmp - (Elf_Addr)where); *where = tmp; } else { tmp = load_ptr(where) + symvalue; if (isThumb(symvalue)) tmp |= 1; - if (ELF_R_TYPE(rel->r_info) == R_TYPE(REL32)) + if (ELF_R_TYPE(rel->r_info) == R_TYPE(REL32) || + ELF_R_TYPE(rel->r_info) == R_TYPE(TARGET2)) tmp -= (Elf_Addr)where; else if (ELF_R_TYPE(rel->r_info) == R_TYPE(PREL31)) - tmp -= sign_extend31((Elf_Addr)where); + tmp = sign_extend31(tmp - (Elf_Addr)where); store_ptr(where, tmp); } if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) - printf ("rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 %p @ %p in %s", + printf ("rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 %p @ %p in %s\n", (void *)tmp, where, rtems_rtl_obj_oname (obj)); break; @@ -321,7 +340,7 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, (void *)*where, where, rtems_rtl_obj_oname (obj)); break; - default: + default: printf ("rtl: reloc unknown: sym = %lu, type = %lu, offset = %p, " "contents = %p\n", ELF_R_SYM(rel->r_info), (uint32_t) ELF_R_TYPE(rel->r_info), @@ -330,9 +349,83 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, "%s: Unsupported relocation type %ld " "in non-PLT relocations", sect->name, (uint32_t) ELF_R_TYPE(rel->r_info)); - return false; + return false; } - return true; + return true; +} + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + /* + * We location the EH sections in section flags. + */ + return false; +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return true; +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + obj->loader = NULL; + return true; } +/* An exception index table entry. */ +typedef struct __EIT_entry +{ + _uw fnoffset; + _uw content; +} __EIT_entry; + +/* The exception index table location in the base module */ +extern __EIT_entry __exidx_start; +extern __EIT_entry __exidx_end; + +/* + * A weak reference is in libgcc, provide a real version and provide a way to + * manage loaded modules. + * + * Passed in the return address and a reference to the number of records + * found. We set the start of the exidx data and the number of records. + */ +_Unwind_Ptr __gnu_Unwind_Find_exidx (_Unwind_Ptr return_address, + int* nrec) __attribute__ ((__noinline__, + __used__, + __noclone__)); + +_Unwind_Ptr __gnu_Unwind_Find_exidx (_Unwind_Ptr return_address, + int* nrec) +{ + rtems_rtl_data_t* rtl; + rtems_chain_node* node; + __EIT_entry* exidx_start = &__exidx_start; + __EIT_entry* exidx_end = &__exidx_end; + + rtl = rtems_rtl_lock (); + + node = rtems_chain_first (&rtl->objects); + while (!rtems_chain_is_tail (&rtl->objects, node)) { + rtems_rtl_obj_t* obj = (rtems_rtl_obj_t*) node; + if (rtems_rtl_obj_text_inside (obj, (void*) return_address)) { + exidx_start = (__EIT_entry*) obj->eh_base; + exidx_end = (__EIT_entry*) (obj->eh_base + obj->eh_size); + break; + } + node = rtems_chain_next (node); + } + + rtems_rtl_unlock (); + + *nrec = exidx_end - exidx_start; + + return (_Unwind_Ptr) exidx_start; +} diff --git a/cpukit/libdl/rtl-mdreloc-bfin.c b/cpukit/libdl/rtl-mdreloc-bfin.c index d855d3061e..5a1fd26e3c 100644 --- a/cpukit/libdl/rtl-mdreloc-bfin.c +++ b/cpukit/libdl/rtl-mdreloc-bfin.c @@ -6,6 +6,15 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" + +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) @@ -113,3 +122,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, rtems_rtl_set_error (EINVAL, "rel type record not supported"); return false; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-mdreloc-h8300.c b/cpukit/libdl/rtl-mdreloc-h8300.c index 925601b7d2..0ef717bfb3 100644 --- a/cpukit/libdl/rtl-mdreloc-h8300.c +++ b/cpukit/libdl/rtl-mdreloc-h8300.c @@ -9,6 +9,15 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" + +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) @@ -99,3 +108,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, rtems_rtl_set_error (EINVAL, "rel type record not supported"); return false; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-mdreloc-i386.c b/cpukit/libdl/rtl-mdreloc-i386.c index b6dd9b7306..c8f1e11c3e 100644 --- a/cpukit/libdl/rtl-mdreloc-i386.c +++ b/cpukit/libdl/rtl-mdreloc-i386.c @@ -15,6 +15,15 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" + +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) @@ -101,3 +110,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, return true; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-mdreloc-lm32.c b/cpukit/libdl/rtl-mdreloc-lm32.c index 057d6ce6dd..e7e2a4c9c5 100644 --- a/cpukit/libdl/rtl-mdreloc-lm32.c +++ b/cpukit/libdl/rtl-mdreloc-lm32.c @@ -9,6 +9,15 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" + +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) @@ -118,3 +127,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, rtems_rtl_set_error (EINVAL, "rela type record not supported"); return false; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-mdreloc-m68k.c b/cpukit/libdl/rtl-mdreloc-m68k.c index 36692ebf85..8a91ebcc44 100644 --- a/cpukit/libdl/rtl-mdreloc-m68k.c +++ b/cpukit/libdl/rtl-mdreloc-m68k.c @@ -15,6 +15,8 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" static inline int overflow_8_check(int value) { @@ -30,6 +32,13 @@ static inline int overflow_16_check(int value) return false; } +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} + bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) { @@ -146,3 +155,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, rtems_rtl_set_error (EINVAL, "rel type record not supported"); return false; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-mdreloc-mips.c b/cpukit/libdl/rtl-mdreloc-mips.c index c17dbc2ee2..7ceac54765 100644 --- a/cpukit/libdl/rtl-mdreloc-mips.c +++ b/cpukit/libdl/rtl-mdreloc-mips.c @@ -9,6 +9,15 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" + +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) @@ -188,3 +197,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, return true; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-mdreloc-moxie.c b/cpukit/libdl/rtl-mdreloc-moxie.c index 1fb05e6977..27b0cf6824 100644 --- a/cpukit/libdl/rtl-mdreloc-moxie.c +++ b/cpukit/libdl/rtl-mdreloc-moxie.c @@ -10,6 +10,15 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" + +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) @@ -86,3 +95,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, rtems_rtl_set_error (EINVAL, "rel type record not supported"); return false; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-mdreloc-powerpc.c b/cpukit/libdl/rtl-mdreloc-powerpc.c index 6909167704..43c0b83a27 100644 --- a/cpukit/libdl/rtl-mdreloc-powerpc.c +++ b/cpukit/libdl/rtl-mdreloc-powerpc.c @@ -15,11 +15,19 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" #define ha(x) ((((u_int32_t)(x) & 0x8000) ? \ ((u_int32_t)(x) + 0x10000) : (u_int32_t)(x)) >> 16) #define l(x) ((u_int32_t)(x) & 0xffff) +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) @@ -158,6 +166,21 @@ rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t* obj, (void *)*where, where, rtems_rtl_obj_oname (obj)); break; + case R_TYPE(SDAREL16): + /* + * A sign-extended 16 bit value relative to _SDA_BASE_, for use with + * small data items. + */ + mask = 0xffff; + tmp = *((Elf32_Half*) where); + tmp &= ~mask; + tmp |= (symvalue + rela->r_addend - (Elf_Addr)where) & mask; + *((Elf32_Half*) where) = tmp; + if (rtems_rtl_trace (RTEMS_RTL_TRACE_RELOC)) + printf ("rtl: SDAREL16 %p @ %p in %s\n", + (void *) *((Elf32_Half*) where), where, rtems_rtl_obj_oname (obj)); + break; + default: printf ("rtl: reloc unknown: sym = %lu, type = %lu, offset = %p, " "contents = %p\n", @@ -183,3 +206,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, printf ("rtl: rel type record not supported; please report\n"); return false; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-mdreloc-sparc.c b/cpukit/libdl/rtl-mdreloc-sparc.c index 509b62fb4a..38b385070e 100644 --- a/cpukit/libdl/rtl-mdreloc-sparc.c +++ b/cpukit/libdl/rtl-mdreloc-sparc.c @@ -41,6 +41,8 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" /* * The following table holds for each relocation type: @@ -128,6 +130,13 @@ static const int reloc_target_bitmask[] = { }; #define RELOC_VALUE_BITMASK(t) (reloc_target_bitmask[t]) +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} + bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) { @@ -220,21 +229,22 @@ rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t* obj, value &= mask; if (RELOC_UNALIGNED(type)) { - /* Handle unaligned relocations. */ - char *ptr = (char *)where; + /* + * Handle unaligned relocations. + */ + char *ptr = (char*) where; int i, size = RELOC_TARGET_SIZE (type) / 8; /* Read it in one byte at a time. */ - for (i=0; i= 0; i--) tmp = (tmp << 8) | ptr[i]; tmp &= ~mask; tmp |= value; /* Write it back out. */ - for (i=0; i> (8*i)) & 0xff); - + for (i = size - 1; i >= 0; i--, tmp >>= 8) + ptr[i] = tmp & 0xff; } else { *where &= ~mask; *where |= value; @@ -245,7 +255,6 @@ rtems_rtl_elf_relocate_rela (const rtems_rtl_obj_t* obj, printf ("rtl: %s %p @ %p in %s\n", reloc_names[type], (void *)tmp, where, rtems_rtl_obj_oname (obj)); - return true; } @@ -260,3 +269,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, printf ("rtl: rel type record not supported; please report\n"); return false; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-mdreloc-v850.c b/cpukit/libdl/rtl-mdreloc-v850.c index 5372e81e8d..7f958a5fb8 100644 --- a/cpukit/libdl/rtl-mdreloc-v850.c +++ b/cpukit/libdl/rtl-mdreloc-v850.c @@ -10,6 +10,15 @@ #include "rtl-elf.h" #include "rtl-error.h" #include "rtl-trace.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" + +uint32_t +rtems_rtl_elf_section_flags (const rtems_rtl_obj_t* obj, + const Elf_Shdr* shdr) +{ + return 0; +} bool rtems_rtl_elf_rel_resolve_sym (Elf_Word type) @@ -95,3 +104,23 @@ rtems_rtl_elf_relocate_rel (const rtems_rtl_obj_t* obj, rtems_rtl_set_error (EINVAL, "rel type record not supported"); return false; } + +bool +rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return rtems_rtl_elf_unwind_dw2_parse (obj, name, flags); +} + +bool +rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_register (obj); +} + +bool +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj) +{ + return rtems_rtl_elf_unwind_dw2_deregister (obj); +} diff --git a/cpukit/libdl/rtl-obj.c b/cpukit/libdl/rtl-obj.c index bdcebce61e..b27f28b9a9 100644 --- a/cpukit/libdl/rtl-obj.c +++ b/cpukit/libdl/rtl-obj.c @@ -49,14 +49,21 @@ /** * The table of supported loader formats. */ -static rtems_rtl_loader_table_t loaders[RTEMS_RTL_ELF_LOADER_COUNT + - RTEMS_RTL_RAP_LOADER_COUNT] = +#define RTEMS_RTL_LOADERS (RTEMS_RTL_ELF_LOADER_COUNT + RTEMS_RTL_RAP_LOADER_COUNT) +static const rtems_rtl_loader_table_t loaders[RTEMS_RTL_LOADERS] = { #if RTEMS_RTL_RAP_LOADER - { rtems_rtl_rap_file_check, rtems_rtl_rap_file_load, rtems_rtl_rap_file_sig }, + { .check = rtems_rtl_rap_file_check, + .load = rtems_rtl_rap_file_load, + .unload = rtems_rtl_rap_file_unload, + .unload = rtems_rtl_rap_file_unload, + .signature = rtems_rtl_rap_file_sig }, #endif #if RTEMS_RTL_ELF_LOADER - { rtems_rtl_elf_file_check, rtems_rtl_elf_file_load, rtems_rtl_elf_file_sig }, + { .check = rtems_rtl_elf_file_check, + .load = rtems_rtl_elf_file_load, + .unload = rtems_rtl_elf_file_unload, + .signature = rtems_rtl_elf_file_sig }, #endif }; @@ -72,6 +79,10 @@ rtems_rtl_obj_alloc (void) * Initialise the chains. */ rtems_chain_initialize_empty (&obj->sections); + /* + * No valid format. + */ + obj->format = -1; } return obj; } @@ -97,14 +108,14 @@ rtems_rtl_obj_free (rtems_rtl_obj_t* obj) } if (!rtems_chain_is_node_off_chain (&obj->link)) rtems_chain_extract (&obj->link); - rtems_rtl_alloc_module_del (&obj->text_base, &obj->const_base, + rtems_rtl_alloc_module_del (&obj->text_base, &obj->const_base, &obj->eh_base, &obj->data_base, &obj->bss_base); rtems_rtl_symbol_obj_erase (obj); rtems_rtl_obj_free_names (obj); if (obj->sec_num) free (obj->sec_num); - if (obj->detail) - rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, (void*)obj->detail); + if (obj->linkmap) + rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, (void*) obj->linkmap); rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, obj); return true; } @@ -238,7 +249,7 @@ rtems_rtl_scan_decimal (const uint8_t* string, size_t len) static size_t rtems_rtl_sect_align (size_t offset, uint32_t alignment) { - if ((alignment > 1) && ((offset & ~alignment) != 0)) + if ((alignment > 1) && ((offset & (alignment - 1)) != 0)) offset = (offset + alignment) & ~(alignment - 1); return offset; } @@ -264,12 +275,12 @@ rtems_rtl_obj_sect_summer (rtems_chain_node* node, void* data) } static size_t -rtems_rtl_obj_section_size (rtems_rtl_obj_t* obj, uint32_t mask) +rtems_rtl_obj_section_size (const rtems_rtl_obj_t* obj, uint32_t mask) { rtems_rtl_obj_sect_summer_t summer; summer.mask = mask; summer.size = 0; - rtems_rtl_chain_iterate (&obj->sections, + rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, rtems_rtl_obj_sect_summer, &summer); return summer.size; @@ -302,12 +313,12 @@ rtems_rtl_obj_sect_aligner (rtems_chain_node* node, void* data) } static size_t -rtems_rtl_obj_section_alignment (rtems_rtl_obj_t* obj, uint32_t mask) +rtems_rtl_obj_section_alignment (const rtems_rtl_obj_t* obj, uint32_t mask) { rtems_rtl_obj_sect_aligner_t aligner; aligner.mask = mask; aligner.alignment = 0; - rtems_rtl_chain_iterate (&obj->sections, + rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, rtems_rtl_obj_sect_aligner, &aligner); return aligner.alignment; @@ -401,26 +412,30 @@ rtems_rtl_obj_add_section (rtems_rtl_obj_t* obj, int info, uint32_t flags) { - rtems_rtl_obj_sect_t* sect = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, - sizeof (rtems_rtl_obj_sect_t), true); - if (!sect) + if (size > 0) { - rtems_rtl_set_error (ENOMEM, "adding allocated section"); - return false; + rtems_rtl_obj_sect_t* sect = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, + sizeof (rtems_rtl_obj_sect_t), + true); + if (!sect) + { + rtems_rtl_set_error (ENOMEM, "adding allocated section"); + return false; + } + sect->section = section; + sect->name = rtems_rtl_strdup (name); + sect->size = size; + sect->offset = offset; + sect->alignment = alignment; + sect->link = link; + sect->info = info; + sect->flags = flags; + sect->base = NULL; + rtems_chain_append (&obj->sections, §->node); + + if (rtems_rtl_trace (RTEMS_RTL_TRACE_SECTION)) + printf ("rtl: sect: %-2d: %s (%zu)\n", section, name, size); } - sect->section = section; - sect->name = rtems_rtl_strdup (name); - sect->size = size; - sect->offset = offset; - sect->alignment = alignment; - sect->link = link; - sect->info = info; - sect->flags = flags; - sect->base = NULL; - rtems_chain_append (&obj->sections, §->node); - - if (rtems_rtl_trace (RTEMS_RTL_TRACE_SECTION)) - printf ("rtl: sect: %-2d: %s\n", section, name); return true; } @@ -464,12 +479,13 @@ rtems_rtl_obj_sect_match_name (rtems_chain_node* node, void* data) } rtems_rtl_obj_sect_t* -rtems_rtl_obj_find_section (rtems_rtl_obj_t* obj, const char* name) +rtems_rtl_obj_find_section (const rtems_rtl_obj_t* obj, + const char* name) { rtems_rtl_obj_sect_finder_t match; match.sect = NULL; match.name = name; - rtems_rtl_chain_iterate (&obj->sections, + rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, rtems_rtl_obj_sect_match_name, &match); return match.sect; @@ -489,61 +505,74 @@ rtems_rtl_obj_sect_match_index (rtems_chain_node* node, void* data) } rtems_rtl_obj_sect_t* -rtems_rtl_obj_find_section_by_index (rtems_rtl_obj_t* obj, int index) +rtems_rtl_obj_find_section_by_index (const rtems_rtl_obj_t* obj, + int index) { rtems_rtl_obj_sect_finder_t match; match.sect = NULL; match.index = index; - rtems_rtl_chain_iterate (&obj->sections, + rtems_rtl_chain_iterate ((rtems_chain_control*) &obj->sections, rtems_rtl_obj_sect_match_index, &match); return match.sect; } size_t -rtems_rtl_obj_text_size (rtems_rtl_obj_t* obj) +rtems_rtl_obj_text_size (const rtems_rtl_obj_t* obj) { return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_TEXT); } uint32_t -rtems_rtl_obj_text_alignment (rtems_rtl_obj_t* obj) +rtems_rtl_obj_text_alignment (const rtems_rtl_obj_t* obj) { return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_TEXT); } size_t -rtems_rtl_obj_const_size (rtems_rtl_obj_t* obj) +rtems_rtl_obj_const_size (const rtems_rtl_obj_t* obj) { return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_CONST); } uint32_t -rtems_rtl_obj_const_alignment (rtems_rtl_obj_t* obj) +rtems_rtl_obj_eh_alignment (const rtems_rtl_obj_t* obj) +{ + return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_EH); +} + +size_t +rtems_rtl_obj_eh_size (const rtems_rtl_obj_t* obj) +{ + return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_EH); +} + +uint32_t +rtems_rtl_obj_const_alignment (const rtems_rtl_obj_t* obj) { return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_CONST); } size_t -rtems_rtl_obj_data_size (rtems_rtl_obj_t* obj) +rtems_rtl_obj_data_size (const rtems_rtl_obj_t* obj) { return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_DATA); } uint32_t -rtems_rtl_obj_data_alignment (rtems_rtl_obj_t* obj) +rtems_rtl_obj_data_alignment (const rtems_rtl_obj_t* obj) { return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_DATA); } size_t -rtems_rtl_obj_bss_size (rtems_rtl_obj_t* obj) +rtems_rtl_obj_bss_size (const rtems_rtl_obj_t* obj) { return rtems_rtl_obj_section_size (obj, RTEMS_RTL_OBJ_SECT_BSS); } uint32_t -rtems_rtl_obj_bss_alignment (rtems_rtl_obj_t* obj) +rtems_rtl_obj_bss_alignment (const rtems_rtl_obj_t* obj) { return rtems_rtl_obj_section_alignment (obj, RTEMS_RTL_OBJ_SECT_BSS); } @@ -580,13 +609,17 @@ rtems_rtl_obj_sect_sync_handler (rtems_chain_node* node, void* data) if ( !(sect->flags & sync_ctx->mask) || !sect->size) return true; - if (sync_ctx->end_va == sync_ctx->start_va) { + if (sync_ctx->end_va == sync_ctx->start_va) + { sync_ctx->start_va = sect->base; - } else { - old_end = (uintptr_t)sync_ctx->end_va & ~(sync_ctx->cache_line_size - 1); - new_start = (uintptr_t)sect->base & ~(sync_ctx->cache_line_size - 1); - if ( (sect->base < sync_ctx->start_va) || - (new_start - old_end > sync_ctx->cache_line_size) ) { + } + else + { + old_end = (uintptr_t) sync_ctx->end_va & ~(sync_ctx->cache_line_size - 1); + new_start = (uintptr_t) sect->base & ~(sync_ctx->cache_line_size - 1); + if ((sect->base < sync_ctx->start_va) || + (new_start - old_end > sync_ctx->cache_line_size)) + { rtems_cache_instruction_sync_after_code_change(sync_ctx->start_va, sync_ctx->end_va - sync_ctx->start_va + 1); sync_ctx->start_va = sect->base; @@ -658,8 +691,8 @@ rtems_rtl_obj_sections_loader (uint32_t mask, sect->base = base + base_offset; if (rtems_rtl_trace (RTEMS_RTL_TRACE_LOAD_SECT)) - printf ("rtl: loading: %s -> %8p (%zi)\n", - sect->name, sect->base, sect->size); + printf ("rtl: loading: %s -> %8p (l:%zi m:%04lx)\n", + sect->name, sect->base, sect->size, sect->flags); if ((sect->flags & RTEMS_RTL_OBJ_SECT_LOAD) == RTEMS_RTL_OBJ_SECT_LOAD) { @@ -698,20 +731,30 @@ rtems_rtl_obj_load_sections (rtems_rtl_obj_t* obj, { size_t text_size; size_t const_size; + size_t eh_size; size_t data_size; size_t bss_size; text_size = rtems_rtl_obj_text_size (obj) + rtems_rtl_obj_const_alignment (obj); - const_size = rtems_rtl_obj_const_size (obj) + rtems_rtl_obj_data_alignment (obj); + const_size = rtems_rtl_obj_const_size (obj) + rtems_rtl_obj_eh_alignment (obj); + eh_size = rtems_rtl_obj_eh_size (obj) + rtems_rtl_obj_data_alignment (obj); data_size = rtems_rtl_obj_data_size (obj) + rtems_rtl_obj_bss_alignment (obj); bss_size = rtems_rtl_obj_bss_size (obj); + /* + * Set the sizes held in the object data. We need this for a fast reference. + */ + obj->text_size = text_size; + obj->eh_size = eh_size; + obj->bss_size = bss_size; + /* * Let the allocator manage the actual allocation. The user can use the * standard heap or provide a specific allocator with memory protection. */ if (!rtems_rtl_alloc_module_new (&obj->text_base, text_size, &obj->const_base, const_size, + &obj->eh_base, eh_size, &obj->data_base, data_size, &obj->bss_base, bss_size)) { @@ -728,6 +771,8 @@ rtems_rtl_obj_load_sections (rtems_rtl_obj_t* obj, obj->text_base, text_size, rtems_rtl_obj_text_alignment (obj)); printf ("rtl: load sect: const - b:%p s:%zi a:%" PRIu32 "\n", obj->const_base, const_size, rtems_rtl_obj_const_alignment (obj)); + printf ("rtl: load sect: eh - b:%p s:%zi a:%" PRIu32 "\n", + obj->eh_base, eh_size, rtems_rtl_obj_eh_alignment (obj)); printf ("rtl: load sect: data - b:%p s:%zi a:%" PRIu32 "\n", obj->data_base, data_size, rtems_rtl_obj_data_alignment (obj)); printf ("rtl: load sect: bss - b:%p s:%zi a:%" PRIu32 "\n", @@ -742,12 +787,14 @@ rtems_rtl_obj_load_sections (rtems_rtl_obj_t* obj, obj, fd, obj->text_base, handler, data) || !rtems_rtl_obj_sections_loader (RTEMS_RTL_OBJ_SECT_CONST, obj, fd, obj->const_base, handler, data) || + !rtems_rtl_obj_sections_loader (RTEMS_RTL_OBJ_SECT_EH, + obj, fd, obj->eh_base, handler, data) || !rtems_rtl_obj_sections_loader (RTEMS_RTL_OBJ_SECT_DATA, obj, fd, obj->data_base, handler, data) || !rtems_rtl_obj_sections_loader (RTEMS_RTL_OBJ_SECT_BSS, obj, fd, obj->bss_base, handler, data)) { - rtems_rtl_alloc_module_del (&obj->text_base, &obj->const_base, + rtems_rtl_alloc_module_del (&obj->text_base, &obj->const_base, &obj->eh_base, &obj->data_base, &obj->bss_base); obj->exec_size = 0; return false; @@ -972,7 +1019,7 @@ rtems_rtl_obj_archive_find (rtems_rtl_obj_t* obj, int fd) * name from the table and compare with the name we are after. */ #define RTEMS_RTL_MAX_FILE_SIZE (256) - char name[RTEMS_RTL_MAX_FILE_SIZE]; + char name[RTEMS_RTL_MAX_FILE_SIZE]; if (!rtems_rtl_seek_read (fd, extended_file_names + extended_off, RTEMS_RTL_MAX_FILE_SIZE, (uint8_t*) &name[0])) @@ -1016,7 +1063,7 @@ rtems_rtl_obj_archive_find (rtems_rtl_obj_t* obj, int fd) return false; } -bool +static bool rtems_rtl_obj_file_load (rtems_rtl_obj_t* obj, int fd) { int l; @@ -1024,13 +1071,24 @@ rtems_rtl_obj_file_load (rtems_rtl_obj_t* obj, int fd) for (l = 0; l < (sizeof (loaders) / sizeof (rtems_rtl_loader_table_t)); ++l) { if (loaders[l].check (obj, fd)) + { + obj->format = l; return loaders[l].load (obj, fd); + } } rtems_rtl_set_error (ENOENT, "no format loader found"); return false; } +static bool +rtems_rtl_obj_file_unload (rtems_rtl_obj_t* obj) +{ + if (obj->format >= 0 && obj->format < RTEMS_RTL_LOADERS) + return loaders[obj->format].unload (obj); + return false; +} + bool rtems_rtl_obj_load (rtems_rtl_obj_t* obj) { @@ -1057,20 +1115,16 @@ rtems_rtl_obj_load (rtems_rtl_obj_t* obj) { if (!rtems_rtl_obj_archive_find (obj, fd)) { - rtems_rtl_obj_caches_flush (); close (fd); return false; } } /* - * Call the format specific loader. Currently this is a call to the ELF - * loader. This call could be changed to allow probes then calls if more than - * one format is supported. + * Call the format specific loader. */ if (!rtems_rtl_obj_file_load (obj, fd)) { - rtems_rtl_obj_caches_flush (); close (fd); return false; } @@ -1081,8 +1135,6 @@ rtems_rtl_obj_load (rtems_rtl_obj_t* obj) return false; } - rtems_rtl_obj_caches_flush (); - close (fd); return true; @@ -1092,6 +1144,6 @@ bool rtems_rtl_obj_unload (rtems_rtl_obj_t* obj) { _rtld_linkmap_delete(obj); - rtems_rtl_symbol_obj_erase (obj); - return rtems_rtl_obj_free (obj); + rtems_rtl_obj_file_unload (obj); + return true; } diff --git a/cpukit/libdl/rtl-obj.h b/cpukit/libdl/rtl-obj.h index 80fc60fb05..9ec184be1a 100644 --- a/cpukit/libdl/rtl-obj.h +++ b/cpukit/libdl/rtl-obj.h @@ -56,14 +56,20 @@ typedef struct rtems_rtl_loader_format_s typedef bool (*rtems_rtl_loader_check) (rtems_rtl_obj_t* obj, int fd); /** - * The type of the format loader handler. This handler loads the specific + * The type of the format loader load handler. This handler loads the specific * format. */ typedef bool (*rtems_rtl_loader_load) (rtems_rtl_obj_t* obj, int fd); /** - * The type of the format loader handler. This handler loads the specific - * format. + * The type of the format loader unload handler. This handler unloads the + * specific format. + */ +typedef bool (*rtems_rtl_loader_unload) (rtems_rtl_obj_t* obj); + +/** + * The type of the format loader signature handler. This handler checks the + * format signature. */ typedef rtems_rtl_loader_format_t* (*rtems_rtl_loader_sig) (void); @@ -72,9 +78,10 @@ typedef rtems_rtl_loader_format_t* (*rtems_rtl_loader_sig) (void); */ typedef struct rtems_rtl_loader_table_s { - rtems_rtl_loader_check check; /**< The check handler. */ - rtems_rtl_loader_load load; /**< The loader. */ - rtems_rtl_loader_sig signature; /**< The loader's signature. */ + rtems_rtl_loader_check check; /**< The check handler. */ + rtems_rtl_loader_load load; /**< The loader. */ + rtems_rtl_loader_unload unload; /**< The unloader. */ + rtems_rtl_loader_sig signature; /**< The loader's signature. */ } rtems_rtl_loader_table_t; /** @@ -84,18 +91,19 @@ typedef struct rtems_rtl_loader_table_s #define RTEMS_RTL_OBJ_SECT_CONST (1 << 1) /**< Section holds program text. */ #define RTEMS_RTL_OBJ_SECT_DATA (1 << 2) /**< Section holds program data. */ #define RTEMS_RTL_OBJ_SECT_BSS (1 << 3) /**< Section holds program bss. */ -#define RTEMS_RTL_OBJ_SECT_REL (1 << 4) /**< Section holds relocation records. */ -#define RTEMS_RTL_OBJ_SECT_RELA (1 << 5) /**< Section holds relocation addend +#define RTEMS_RTL_OBJ_SECT_EH (1 << 4) /**< Section holds exception data. */ +#define RTEMS_RTL_OBJ_SECT_REL (1 << 5) /**< Section holds relocation records. */ +#define RTEMS_RTL_OBJ_SECT_RELA (1 << 6) /**< Section holds relocation addend * records. */ -#define RTEMS_RTL_OBJ_SECT_SYM (1 << 6) /**< Section holds symbols. */ -#define RTEMS_RTL_OBJ_SECT_STR (1 << 7) /**< Section holds strings. */ -#define RTEMS_RTL_OBJ_SECT_ALLOC (1 << 8) /**< Section allocates runtime memory. */ -#define RTEMS_RTL_OBJ_SECT_LOAD (1 << 9) /**< Section is loaded from object file. */ -#define RTEMS_RTL_OBJ_SECT_WRITE (1 << 10) /**< Section is writable, ie data. */ -#define RTEMS_RTL_OBJ_SECT_EXEC (1 << 11) /**< Section is executable. */ -#define RTEMS_RTL_OBJ_SECT_ZERO (1 << 12) /**< Section is preset to zero. */ -#define RTEMS_RTL_OBJ_SECT_CTOR (1 << 13) /**< Section contains constructors. */ -#define RTEMS_RTL_OBJ_SECT_DTOR (1 << 14) /**< Section contains destructors. */ +#define RTEMS_RTL_OBJ_SECT_SYM (1 << 7) /**< Section holds symbols. */ +#define RTEMS_RTL_OBJ_SECT_STR (1 << 8) /**< Section holds strings. */ +#define RTEMS_RTL_OBJ_SECT_ALLOC (1 << 9) /**< Section allocates runtime memory. */ +#define RTEMS_RTL_OBJ_SECT_LOAD (1 << 10) /**< Section is loaded from object file. */ +#define RTEMS_RTL_OBJ_SECT_WRITE (1 << 11) /**< Section is writable, ie data. */ +#define RTEMS_RTL_OBJ_SECT_EXEC (1 << 12) /**< Section is executable. */ +#define RTEMS_RTL_OBJ_SECT_ZERO (1 << 13) /**< Section is preset to zero. */ +#define RTEMS_RTL_OBJ_SECT_CTOR (1 << 14) /**< Section contains constructors. */ +#define RTEMS_RTL_OBJ_SECT_DTOR (1 << 15) /**< Section contains destructors. */ /** * An object file is made up of sections and the can be more than @@ -109,7 +117,7 @@ struct rtems_rtl_obj_sect_s const char* name; /**< The section's name. */ size_t size; /**< The size of the section in memory. */ off_t offset; /**< Offset into the object file. Relative to - * the start of the object file. */ + * the start of the object file. */ uint32_t alignment; /**< Alignment of this section. */ int link; /**< Section link field. */ int info; /**< Secfion info field. */ @@ -135,6 +143,7 @@ struct rtems_rtl_obj_s rtems_chain_node link; /**< The node's link in the chain. */ uint32_t flags; /**< The status of the object file. */ uint32_t users; /**< References to the object file. */ + int format; /**< The format of the object file. */ const char* fname; /**< The file name for the object. */ const char* oname; /**< The object file name. Can be * relative. */ @@ -153,26 +162,27 @@ struct rtems_rtl_obj_s size_t global_size; /**< Global symbol memory usage. */ uint32_t unresolved; /**< The number of unresolved relocations. */ void* text_base; /**< The base address of the text section - * in memory. */ + * in memory. */ + size_t text_size; /**< The size of the text section. */ void* const_base; /**< The base address of the const section - * in memory. */ + * in memory. */ + void* eh_base; /**< The base address of the eh section + * in memory. */ + size_t eh_size; /**< The size of the eh section. */ void* data_base; /**< The base address of the data section - * in memory. */ + * in memory. */ void* bss_base; /**< The base address of the bss section - * in memory. */ + * in memory. */ size_t bss_size; /**< The size of the bss section. */ size_t exec_size; /**< The amount of executable memory - * allocated */ + * allocated */ void* entry; /**< The entry point of the module. */ uint32_t checksum; /**< The checksum of the text sections. A - * zero means do not checksum. */ - void* detail; /**< The file details. It contains the elf file - * detail, mainly including elf file name, - * section offset, section size, which - * elf this section belongs to.*/ + * zero means do not checksum. */ uint32_t* sec_num; /**< The sec nums of each obj. */ uint32_t obj_num; /**< The count of elf files in an rtl obj. */ struct link_map* linkmap; /**< For GDB. */ + void* loader; /**< The file details specific to a loader. */ }; /** @@ -257,6 +267,20 @@ static inline bool rtems_rtl_obj_aname_valid (const rtems_rtl_obj_t* obj) return obj->aname; } +/** + * Is the address inside the text section? + * + * @param obj The object file. + * @return bool There is an archive name + */ +static inline bool rtems_rtl_obj_text_inside (const rtems_rtl_obj_t* obj, + const void* address) +{ + return + (address >= obj->text_base) && + (address < (obj->text_base + obj->text_size)); +} + /** * Allocate an object structure on the heap. * @@ -299,18 +323,6 @@ bool rtems_rtl_parse_name (const char* name, const char** oname, off_t* ooffset); -/** - * Load the object file. - * - * @param obj The object file's descriptor. - * @param fd The file descriptor. - * @param load_syms Load symbols. - * @param load_dep Load dependent object files. - * @retval true The load was successful. - * @retval false The load failed. The RTL error has been set. - */ -bool rtems_rtl_obj_file_load (rtems_rtl_obj_t* obj, int fd); - /** * Check of the name matches the object file's object name. * @@ -371,8 +383,8 @@ void rtems_rtl_obj_erase_sections (rtems_rtl_obj_t* obj); * @retval NULL The section was not found. * @return rtems_rtl_obj_sect_t* The named section. */ -rtems_rtl_obj_sect_t* rtems_rtl_obj_find_section (rtems_rtl_obj_t* obj, - const char* name); +rtems_rtl_obj_sect_t* rtems_rtl_obj_find_section (const rtems_rtl_obj_t* obj, + const char* name); /** * Find a section given a section's index number. @@ -382,21 +394,21 @@ rtems_rtl_obj_sect_t* rtems_rtl_obj_find_section (rtems_rtl_obj_t* obj, * @retval NULL The section was not found. * @return rtems_rtl_obj_sect_t* The found section. */ -rtems_rtl_obj_sect_t* rtems_rtl_obj_find_section_by_index (rtems_rtl_obj_t* obj, - int index); +rtems_rtl_obj_sect_t* rtems_rtl_obj_find_section_by_index (const rtems_rtl_obj_t* obj, + int index); /** - * The text size of the object file. Only use once all the sections has been - * added. It includes alignments between sections that are part of the object's - * text area. The consts sections are included in this section. + * The text section size. Only use once all the sections has been added. It + * includes alignments between sections that are part of the object's text + * area. The consts sections are included in this section. * * @param obj The object file's descriptor. * @return size_t The size of the text area of the object file. */ -size_t rtems_rtl_obj_text_size (rtems_rtl_obj_t* obj); +size_t rtems_rtl_obj_text_size (const rtems_rtl_obj_t* obj); /** - * The text section alignment of the object file. Only use once all the + * The text section alignment for the object file. Only use once all the * sections has been added. The section alignment is the alignment of the first * text type section loaded the text section. * @@ -406,20 +418,20 @@ size_t rtems_rtl_obj_text_size (rtems_rtl_obj_t* obj); * @param obj The object file's descriptor. * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment. */ -uint32_t rtems_rtl_obj_text_alignment (rtems_rtl_obj_t* obj); +uint32_t rtems_rtl_obj_text_alignment (const rtems_rtl_obj_t* obj); /** - * The const size of the object file. Only use once all the sections has been - * added. It includes alignments between sections that are part of the object's - * const area. The consts sections are included in this section. + * The const section size. Only use once all the sections has been added. It + * includes alignments between sections that are part of the object's const + * area. The consts sections are included in this section. * * @param obj The object file's descriptor. * @return size_t The size of the const area of the object file. */ -size_t rtems_rtl_obj_const_size (rtems_rtl_obj_t* obj); +size_t rtems_rtl_obj_const_size (const rtems_rtl_obj_t* obj); /** - * The const section alignment of the object file. Only use once all the + * The const section alignment for the object file. Only use once all the * sections has been added. The section alignment is the alignment of the first * const type section loaded the const section. * @@ -429,20 +441,42 @@ size_t rtems_rtl_obj_const_size (rtems_rtl_obj_t* obj); * @param obj The object file's descriptor. * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment. */ -uint32_t rtems_rtl_obj_const_alignment (rtems_rtl_obj_t* obj); +uint32_t rtems_rtl_obj_const_alignment (const rtems_rtl_obj_t* obj); + +/** + * The eh section size. Only use once all the sections has been added. It + * includes alignments between sections that are part of the object's bss area. + * + * @param obj The object file's descriptor. + * @return size_t The size of the bss area of the object file. + */ +size_t rtems_rtl_obj_eh_size (const rtems_rtl_obj_t* obj); + +/** + * The eh section alignment for the object file. Only use once all the sections + * has been added. The section alignment is the alignment of the first bss type + * section loaded the bss section. + * + * You can assume the alignment is a positive integral power of 2 if not 0 or + * 1. If 0 or 1 then there is no alignment. + * + * @param obj The object file's descriptor. + * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment. + */ +uint32_t rtems_rtl_obj_eh_alignment (const rtems_rtl_obj_t* obj); /** - * The data size of the object file. Only use once all the sections has been - * added. It includes alignments between sections that are part of the object's - * data area. + * The data section size. Only use once all the sections has been added. It + * includes alignments between sections that are part of the object's data + * area. * * @param obj The object file's descriptor. * @return size_t The size of the data area of the object file. */ -size_t rtems_rtl_obj_data_size (rtems_rtl_obj_t* obj); +size_t rtems_rtl_obj_data_size (const rtems_rtl_obj_t* obj); /** - * The data section alignment of the object file. Only use once all the + * The data section alignment for the object file. Only use once all the * sections has been added. The section alignment is the alignment of the first * data type section loaded the data section. * @@ -452,20 +486,19 @@ size_t rtems_rtl_obj_data_size (rtems_rtl_obj_t* obj); * @param obj The object file's descriptor. * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment. */ -uint32_t rtems_rtl_obj_data_alignment (rtems_rtl_obj_t* obj); +uint32_t rtems_rtl_obj_data_alignment (const rtems_rtl_obj_t* obj); /** - * The bss size of the object file. Only use once all the sections has been - * added. It includes alignments between sections that are part of the object's - * bss area. + * The bss section size. Only use once all the sections has been added. It + * includes alignments between sections that are part of the object's bss area. * * @param obj The object file's descriptor. * @return size_t The size of the bss area of the object file. */ -size_t rtems_rtl_obj_bss_size (rtems_rtl_obj_t* obj); +size_t rtems_rtl_obj_bss_size (const rtems_rtl_obj_t* obj); /** - * The bss section alignment of the object file. Only use once all the + * The bss section alignment for the object file. Only use once all the * sections has been added. The section alignment is the alignment of the first * bss type section loaded the bss section. * @@ -475,7 +508,7 @@ size_t rtems_rtl_obj_bss_size (rtems_rtl_obj_t* obj); * @param obj The object file's descriptor. * @return uint32_t The alignment. Can be 0 or 1 for not aligned or the alignment. */ -uint32_t rtems_rtl_obj_bss_alignment (rtems_rtl_obj_t* obj); +uint32_t rtems_rtl_obj_bss_alignment (const rtems_rtl_obj_t* obj); /** * Relocate the object file. The object file's section are parsed for any diff --git a/cpukit/libdl/rtl-rap.c b/cpukit/libdl/rtl-rap.c index a7fcb9f953..cb7b751cd0 100644 --- a/cpukit/libdl/rtl-rap.c +++ b/cpukit/libdl/rtl-rap.c @@ -427,20 +427,22 @@ rtems_rtl_rap_relocate (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj) } /** - * The structure of obj->detail is + * The structure of obj->linkmap is: * * |object_detail(0..obj_num)|section_detail(0..sec_num[0..obj_num])| * obj_name(0..obj_num)|section_name(0..sec_num[0..obj_num]) * */ static bool -rtems_rtl_rap_load_details (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj) +rtems_rtl_rap_load_linkmap (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj) { + void* detail; struct link_map* tmp1; - section_detail* tmp2; - uint32_t obj_detail_size; - uint32_t pos = 0; - int i,j; + section_detail* tmp2; + uint32_t obj_detail_size; + uint32_t pos = 0; + int i; + int j; obj_detail_size = sizeof (struct link_map) * obj->obj_num; @@ -449,26 +451,31 @@ rtems_rtl_rap_load_details (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj) obj_detail_size += (obj->sec_num[i] * sizeof (section_detail)); } - obj->detail = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, - obj_detail_size + rap->strtable_size, true); + detail = rtems_rtl_alloc_new (RTEMS_RTL_ALLOC_OBJECT, + obj_detail_size + rap->strtable_size, true); - if (!obj->detail) + if (!detail) { rap->strtable_size = 0; rtems_rtl_set_error (ENOMEM, "no memory for obj global syms"); return false; } - rap->strtable = obj->detail + obj_detail_size; + rap->strtable = detail + obj_detail_size; - /* Read the obj names and section names */ - if (!rtems_rtl_obj_comp_read (rap->decomp, rap->strtable, + /* + * Read the obj names and section names + */ + if (!rtems_rtl_obj_comp_read (rap->decomp, + rap->strtable, rap->strtable_size)) { - rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, obj->detail); + rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_OBJECT, detail); return false; } + obj->linkmap = (struct link_map*) detail; + if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) { if (rap->rpathlen > 0) @@ -489,7 +496,7 @@ rtems_rtl_rap_load_details (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj) for (i = 0; i < obj->obj_num; ++i) { - tmp1 = (struct link_map*) (obj->detail) + i; + tmp1 = obj->linkmap + i; tmp1->name = rap->strtable + pos; tmp1->sec_num = obj->sec_num[i]; tmp1->rpathlen = rap->rpathlen; @@ -509,17 +516,17 @@ rtems_rtl_rap_load_details (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj) } } - tmp2 =(section_detail*) ((struct link_map*) (obj->detail) + obj->obj_num); + tmp2 = (section_detail*) (obj->linkmap + obj->obj_num); for (i = 0; i < obj->obj_num; ++i) { if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) { - printf ("File %d: %s\n", i, ((struct link_map*) obj->detail + i)->name); - printf ("Section: %d sections\n",(unsigned int) obj->sec_num[i]); + printf ("File %d: %s\n", i, (obj->linkmap + i)->name); + printf ("Section: %d sections\n", (unsigned int) obj->sec_num[i]); } - ((struct link_map*)obj->detail + i)->sec_detail = tmp2; + obj->linkmap[i].sec_detail = tmp2; for (j = 0; j < obj->sec_num[i]; ++j) { @@ -532,7 +539,8 @@ rtems_rtl_rap_load_details (rtems_rtl_rap_t* rap, rtems_rtl_obj_t* obj) !rtems_rtl_rap_read_uint32 (rap->decomp, &offset) || !rtems_rtl_rap_read_uint32 (rap->decomp, &size)) { - rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, obj->detail); + rtems_rtl_alloc_del (RTEMS_RTL_ALLOC_SYMBOL, obj->linkmap); + obj->linkmap = NULL; return false; } @@ -907,7 +915,7 @@ rtems_rtl_rap_file_load (rtems_rtl_obj_t* obj, int fd) if (rtems_rtl_trace (RTEMS_RTL_TRACE_DETAIL)) printf ("rtl: rap: details: obj_num=%lu\n", obj->obj_num); - if (!rtems_rtl_rap_load_details (&rap, obj)) + if (!rtems_rtl_rap_load_linkmap (&rap, obj)) return false; } @@ -975,6 +983,13 @@ rtems_rtl_rap_file_load (rtems_rtl_obj_t* obj, int fd) return true; } +bool +rtems_rtl_rap_file_unload (rtems_rtl_obj_t* obj) +{ + (void) obj; + return true; +} + rtems_rtl_loader_format_t* rtems_rtl_rap_file_sig (void) { diff --git a/cpukit/libdl/rtl-rap.h b/cpukit/libdl/rtl-rap.h index f828b1fbdc..eca6e9ea4a 100644 --- a/cpukit/libdl/rtl-rap.h +++ b/cpukit/libdl/rtl-rap.h @@ -40,6 +40,13 @@ bool rtems_rtl_rap_file_check (rtems_rtl_obj_t* obj, int fd); */ bool rtems_rtl_rap_file_load (rtems_rtl_obj_t* obj, int fd); +/** + * The RAP format unload handler. + * + * @param obj The object to unload. + */ +bool rtems_rtl_rap_file_unload (rtems_rtl_obj_t* obj); + /** * The RAP format signature handler. * diff --git a/cpukit/libdl/rtl-unwind-dw2.c b/cpukit/libdl/rtl-unwind-dw2.c new file mode 100644 index 0000000000..d9237c5b7e --- /dev/null +++ b/cpukit/libdl/rtl-unwind-dw2.c @@ -0,0 +1,71 @@ +/* + * COPYRIGHT (c) 2012-2016 Chris Johns + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ +/** + * @file + * + * @ingroup rtems_rtld + * + * @brief RTEMS Run-Time Link Editor + * + * This is the RTL implementation. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#include +#include "rtl-elf.h" +#include "rtl-error.h" +#include "rtl-unwind.h" +#include "rtl-unwind-dw2.h" + +/* + * These interfaces are not exported outside the GCC source. + */ +void __register_frame (void *begin); +void __deregister_frame (void *begin); + +bool +rtems_rtl_elf_unwind_dw2_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags) +{ + return + ((flags & RTEMS_RTL_OBJ_SECT_CONST) != 0) && + ((strcmp(name, ".eh_frame") == 0) || + (strncmp(name, ".gcc_except_table.", sizeof (".gcc_except_table.") - 1) == 0)); +} + +bool +rtems_rtl_elf_unwind_dw2_register (const rtems_rtl_obj_t* obj) +{ + rtems_rtl_obj_sect_t* sect = rtems_rtl_obj_find_section (obj, ".eh_frame"); + + if (sect != NULL && sect->size > 0 && sect->base != NULL) + { + __register_frame (sect->base); + } + + return true; +} + +bool rtems_rtl_elf_unwind_dw2_deregister (const rtems_rtl_obj_t* obj) +{ + rtems_rtl_obj_sect_t* sect = rtems_rtl_obj_find_section (obj, ".eh_frame"); + + if (sect != NULL && sect->size > 0 && sect->base != NULL) + { + __deregister_frame (sect->base); + } + + return true; +} diff --git a/cpukit/libdl/rtl-unwind-dw2.h b/cpukit/libdl/rtl-unwind-dw2.h new file mode 100644 index 0000000000..55b97970c2 --- /dev/null +++ b/cpukit/libdl/rtl-unwind-dw2.h @@ -0,0 +1,83 @@ +/* + * COPYRIGHT (c) 2016 Chris Johns + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ +/** + * @file + * + * @ingroup rtems_rtl + * + * @brief RTEMS Run-Time Linker Unwind DWARF Support. + */ + +#if !defined (_RTEMS_RTL_UNWIND_DW2_H_) +#define _RTEMS_RTL_UNWIND_DW2_H_ + +#include "rtl-elf.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#if __SIZEOF_LONG__ >= __SIZEOF_POINTER__ + typedef long rtems_rtl_elf_unwind_dw2_sleb128; + typedef unsigned long rtems_rtl_elf_unwind_dw2_uleb128; +#elif __SIZEOF_LONG_LONG__ >= __SIZEOF_POINTER__ + typedef long long rtems_rtl_elf_unwind_dw2_sleb128; + typedef unsigned long long rtems_rtl_elf_unwind_dw2_uleb128; +#else + #error No DW2 type available. +#endif + +/** + * Architecture specific handler to check if a section contains exception + * handler data.. + * + * @param obj The object file. + * @param name The section's name. + * @param uint32 flags The object file's flags. + * @retval true The section contains unwind information. + * @retval false The section does not contain unwind information. + */ +bool rtems_rtl_elf_unwind_dw2_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags); + +/** + * Architecture specific handler to add an object file's unwind information to + * the base image. + * + * @param obj The object file. + * @retval true The unwind information has been registered. + * @retval false The unwind information could not be registered. + */ +bool rtems_rtl_elf_unwind_dw2_register (const rtems_rtl_obj_t* obj); + +/** + * Architecture specific handler to remove an object file's unwind information + * from the base image. + * + * @param obj The object file. + * @retval true The unwind information has been deregistered. + * @retval false The unwind information could not be deregistered. + */ +bool rtems_rtl_elf_unwind_dw2_deregister (const rtems_rtl_obj_t* obj); + +/** + * Read signed and unsigned LEB128 values. + */ +const uint8_t* rtems_rtl_elf_unwind_dw2_read_uleb128 (const uint8_t* data, + rtems_rtl_elf_unwind_dw2_uleb128* val); +const uint8_t* rtems_rtl_elf_unwind_dw2_read_sleb128 (const uint8_t* data, + rtems_rtl_elf_unwind_dw2_sleb128* val); + +bool rtems_rtl_elf_unwind_dw2_relocate (const Elf_Addr* where, Elf_Word value, Elf_Word mask); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/cpukit/libdl/rtl-unwind.h b/cpukit/libdl/rtl-unwind.h new file mode 100644 index 0000000000..f88787e1ba --- /dev/null +++ b/cpukit/libdl/rtl-unwind.h @@ -0,0 +1,63 @@ +/* + * COPYRIGHT (c) 2016 Chris Johns + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ +/** + * @file + * + * @ingroup rtems_rtl + * + * @brief RTEMS Run-Time Linker Unwind Support. + */ + +#if !defined (_RTEMS_RTL_UNWIND_H_) +#define _RTEMS_RTL_UNWIND_H_ + +#include "rtl-elf.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/** + * Architecture specific handler to check if a section contains exception + * handler data.. + * + * @param obj The object file. + * @param name The section's name. + * @param uint32 flags The object file's flags. + * @retval true The section contains unwind information. + * @retval false The section does not contain unwind information. + */ +bool rtems_rtl_elf_unwind_parse (const rtems_rtl_obj_t* obj, + const char* name, + uint32_t flags); + +/** + * Architecture specific handler to add an object file's unwind information to + * the base image. + * + * @param obj The object file. + * @retval true The unwind information has been registered. + * @retval false The unwind information could not be registered. + */ +bool rtems_rtl_elf_unwind_register (rtems_rtl_obj_t* obj); + +/** + * Architecture specific handler to remove an object file's unwind information + * from the base image. + * + * @param obj The object file. + * @retval true The unwind information has been deregistered. + * @retval false The unwind information could not be deregistered. + */ +bool rtems_rtl_elf_unwind_deregister (rtems_rtl_obj_t* obj); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/cpukit/libdl/rtl.c b/cpukit/libdl/rtl.c index abfcf25f1c..505225116e 100644 --- a/cpukit/libdl/rtl.c +++ b/cpukit/libdl/rtl.c @@ -62,6 +62,7 @@ * Static RTL data is returned to the user when the linker is locked. */ static rtems_rtl_data_t* rtl; +static bool rtl_data_init; /** * Define a default base global symbol loader function that is weak @@ -94,12 +95,26 @@ rtems_rtl_data_init (void) rtems_status_code sc; rtems_id lock; + /* + * We cannot set an error in this code because there is no RTL data to + * hold it. + */ + + if (rtl_data_init) + { + rtems_libio_unlock (); + return false; + } + + rtl_data_init = true; + /* * Always in the heap. */ rtl = malloc (sizeof (rtems_rtl_data_t)); if (!rtl) { + rtems_libio_unlock (); errno = ENOMEM; return false; } @@ -120,6 +135,7 @@ rtems_rtl_data_init (void) if (sc != RTEMS_SUCCESSFUL) { free (rtl); + rtems_libio_unlock (); return false; } @@ -128,6 +144,7 @@ rtems_rtl_data_init (void) { rtems_semaphore_delete (lock); free (rtl); + rtems_libio_unlock (); return false; } @@ -143,6 +160,7 @@ rtems_rtl_data_init (void) { rtems_semaphore_delete (lock); free (rtl); + rtems_libio_unlock (); return false; } @@ -152,6 +170,7 @@ rtems_rtl_data_init (void) rtems_rtl_symbol_table_close (&rtl->globals); rtems_semaphore_delete (lock); free (rtl); + rtems_libio_unlock (); return false; } @@ -162,6 +181,7 @@ rtems_rtl_data_init (void) rtems_rtl_unresolved_table_close (&rtl->unresolved); rtems_semaphore_delete (lock); free (rtl); + rtems_libio_unlock (); return false; } @@ -173,6 +193,7 @@ rtems_rtl_data_init (void) rtems_rtl_symbol_table_close (&rtl->globals); rtems_semaphore_delete (lock); free (rtl); + rtems_libio_unlock (); return false; } @@ -185,6 +206,7 @@ rtems_rtl_data_init (void) rtems_rtl_symbol_table_close (&rtl->globals); rtems_semaphore_delete (lock); free (rtl); + rtems_libio_unlock (); return false; } @@ -198,6 +220,7 @@ rtems_rtl_data_init (void) rtems_rtl_symbol_table_close (&rtl->globals); rtems_semaphore_delete (lock); free (rtl); + rtems_libio_unlock (); return false; } @@ -212,6 +235,7 @@ rtems_rtl_data_init (void) rtems_rtl_symbol_table_close (&rtl->globals); rtems_semaphore_delete (lock); free (rtl); + rtems_libio_unlock (); return false; } @@ -288,7 +312,7 @@ rtems_rtl_obj_caches (rtems_rtl_obj_cache_t** symbols, } void -rtems_rtl_obj_caches_flush () +rtems_rtl_obj_caches_flush (void) { if (rtl) { @@ -438,6 +462,7 @@ rtems_rtl_load_object (const char* name, int mode) if (!rtems_rtl_obj_find_file (obj, name)) { rtems_rtl_obj_free (obj); + rtems_rtl_obj_caches_flush (); return NULL; } @@ -446,9 +471,12 @@ rtems_rtl_load_object (const char* name, int mode) if (!rtems_rtl_obj_load (obj)) { rtems_rtl_obj_free (obj); + rtems_rtl_obj_caches_flush (); return NULL; } + rtems_rtl_obj_caches_flush (); + rtems_rtl_unresolved_resolve (); } @@ -514,6 +542,9 @@ rtems_rtl_unload_object (rtems_rtl_obj_t* obj) obj->flags &= ~RTEMS_RTL_OBJ_LOCKED; ok = rtems_rtl_obj_unload (obj); + + rtems_rtl_obj_free (obj); + rtems_rtl_obj_caches_flush (); } return ok; diff --git a/cpukit/libdl/rtl.h b/cpukit/libdl/rtl.h index 234fc32428..fe9a7df081 100644 --- a/cpukit/libdl/rtl.h +++ b/cpukit/libdl/rtl.h @@ -112,7 +112,7 @@ struct rtems_rtl_data_s }; /** - * Get the RTL data with out locking. This call assmes the RTL is locked. + * Get the RTL data with out locking. This call assumes the RTL is locked. * * @return rtems_rtl_data_t* The RTL data after being locked. * @retval NULL The RTL data is not initialised. diff --git a/testsuites/libtests/dl01/init.c b/testsuites/libtests/dl01/init.c index 9fbdaa5618..e9c7a1a470 100644 --- a/testsuites/libtests/dl01/init.c +++ b/testsuites/libtests/dl01/init.c @@ -73,6 +73,8 @@ static void Init(rtems_task_argument arg) #define CONFIGURE_EXTRA_TASK_STACKS (8 * 1024) +#define CONFIGURE_MAXIMUM_SEMAPHORES 1 + #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION #define CONFIGURE_RTEMS_INIT_TASKS_TABLE @@ -80,4 +82,3 @@ static void Init(rtems_task_argument arg) #define CONFIGURE_INIT #include - diff --git a/testsuites/libtests/dl02/init.c b/testsuites/libtests/dl02/init.c index f761b465ae..bf2d1a9717 100644 --- a/testsuites/libtests/dl02/init.c +++ b/testsuites/libtests/dl02/init.c @@ -73,6 +73,8 @@ static void Init(rtems_task_argument arg) #define CONFIGURE_EXTRA_TASK_STACKS (8 * 1024) +#define CONFIGURE_MAXIMUM_SEMAPHORES 1 + #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION #define CONFIGURE_RTEMS_INIT_TASKS_TABLE diff --git a/testsuites/libtests/dl03/init.c b/testsuites/libtests/dl03/init.c index 68f8150301..ae8272294c 100644 --- a/testsuites/libtests/dl03/init.c +++ b/testsuites/libtests/dl03/init.c @@ -55,6 +55,8 @@ static void Init(rtems_task_argument arg) #define CONFIGURE_EXTRA_TASK_STACKS (8 * 1024) +#define CONFIGURE_MAXIMUM_SEMAPHORES 1 + #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION #define CONFIGURE_RTEMS_INIT_TASKS_TABLE diff --git a/testsuites/libtests/dl04/init.c b/testsuites/libtests/dl04/init.c index 566752bdd5..6e488649a9 100644 --- a/testsuites/libtests/dl04/init.c +++ b/testsuites/libtests/dl04/init.c @@ -73,6 +73,8 @@ static void Init(rtems_task_argument arg) #define CONFIGURE_EXTRA_TASK_STACKS (8 * 1024) +#define CONFIGURE_MAXIMUM_SEMAPHORES 1 + #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION #define CONFIGURE_RTEMS_INIT_TASKS_TABLE diff --git a/testsuites/libtests/dl05/dl-cpp.cpp b/testsuites/libtests/dl05/dl-cpp.cpp index fcb9e0af06..0e2005713e 100644 --- a/testsuites/libtests/dl05/dl-cpp.cpp +++ b/testsuites/libtests/dl05/dl-cpp.cpp @@ -4,11 +4,27 @@ #include #include #include "dl-load.h" -void exception_base(bool istrue) +void exception_base(bool throw_runtime) { - printf("exception_base called\n"); - if (istrue) + printf("%s: begin\n", __func__); + try { - throw std::runtime_error("dummy call to link in symbols"); + if (throw_runtime) + throw std::runtime_error("eb: throw std::runtime_error"); + else + throw dl_test_throw_me("eb: throw me"); } + catch (std::exception const& e) + { + printf("%s: caught: %s\n", __func__, e.what()); + } + catch (dl_test_throw_me const& e) + { + printf("%s: caught: %s\n", __func__, e.what()); + } + catch (...) + { + printf("%s: caught: unknown\n", __func__); + } + printf("%s: end\n", __func__); } diff --git a/testsuites/libtests/dl05/dl-load.c b/testsuites/libtests/dl05/dl-load.c index f94317db1a..c7d5698995 100644 --- a/testsuites/libtests/dl05/dl-load.c +++ b/testsuites/libtests/dl05/dl-load.c @@ -24,22 +24,38 @@ int dl_load_test(void) { void* handle; const char* err; - void (*func)(void); + void (*func)(bool ); +#if __i386__ + /* + * std::runtime_error destructor locks up in atomics. + */ + bool throw_runtime = false; +#else + bool throw_runtime = true; +#endif rtems_rtl_trace_set_mask(RTEMS_RTL_TRACE_ALL); + handle = dlopen("/dl-o5.o", RTLD_GLOBAL | RTLD_NOW); - err = dlerror(); - if (err != NULL) - printf("dlopen: %s\n", err); + if (handle == NULL) + { + err = dlerror(); + if (err != NULL) + printf("dlopen: %s\n", err); + } rtems_test_assert(handle != NULL); + func = dlsym(handle, "exception_dl"); - err = dlerror (); - if (err) - printf ("dlsym: %s\n", err); + if (func == NULL) { + err = dlerror (); + if (err) + printf ("dlsym: %s\n", err); + } rtems_test_assert(func != NULL); - exception_base(false); - func(); + exception_base(throw_runtime); + + func(throw_runtime); rtems_test_assert(dlclose(handle) == 0); diff --git a/testsuites/libtests/dl05/dl-load.h b/testsuites/libtests/dl05/dl-load.h index 98f41543b3..7a9e1382fd 100644 --- a/testsuites/libtests/dl05/dl-load.h +++ b/testsuites/libtests/dl05/dl-load.h @@ -13,11 +13,37 @@ extern "C" { #endif -void exception_base(bool istrue); -void exception_dl(void); +void exception_base(bool throw_runtime); +void exception_dl(bool throw_runtime); int dl_load_test(void); +#ifdef __cplusplus + class dl_test_throw_me + { + public: + dl_test_throw_me(const char* message) : + message (message) { + } + dl_test_throw_me(const dl_test_throw_me& orig) : + message (orig.message) { + } + dl_test_throw_me() : + message (0) { + } + + ~dl_test_throw_me() { + } + + const char* what() const { + return message; + } + + private: + const char* message; + }; +#endif + #ifdef __cplusplus } #endif diff --git a/testsuites/libtests/dl05/dl-o5.cpp b/testsuites/libtests/dl05/dl-o5.cpp index 6e8476d5e2..5918e8f2d5 100644 --- a/testsuites/libtests/dl05/dl-o5.cpp +++ b/testsuites/libtests/dl05/dl-o5.cpp @@ -1,12 +1,20 @@ #include #include #include "dl-load.h" /* make the symbol a C linkage */ -void exception_dl(void) +void exception_dl(bool throw_runtime) { + printf("exception_dl: begin\n"); try { - printf("exception_dl: throwing\n"); - throw std::runtime_error("exception_dl throw"); + printf("exception_dl: throwing...\n"); + if (throw_runtime) + throw std::runtime_error("throw std::runtime_error object"); + else + throw dl_test_throw_me("throw dl_test_throw_me object"); + } + catch (dl_test_throw_me const& e) + { + printf("%s: caught: %s\n", __func__, e.what()); } catch (std::exception const& e) { @@ -16,4 +24,5 @@ void exception_dl(void) { printf("%s: caught: unknown\n", __func__); } + printf("exception_dl: end\n"); } diff --git a/testsuites/libtests/dl05/dl05.scn b/testsuites/libtests/dl05/dl05.scn index 3a7e0d7b79..f80c08576a 100644 --- a/testsuites/libtests/dl05/dl05.scn +++ b/testsuites/libtests/dl05/dl05.scn @@ -1,620 +1,620 @@ *** BEGIN OF TEST libdl (RTL) 5 *** -rtl: alloc: new: SYMBOL addr=0x118cf8 size=384 -rtl: alloc: new: OBJECT addr=0x1192c8 size=2048 -rtl: alloc: new: OBJECT addr=0x119af0 size=2048 -rtl: alloc: new: OBJECT addr=0x11a318 size=2048 -rtl: alloc: new: OBJECT addr=0x11ab40 size=2048 -rtl: alloc: new: OBJECT addr=0x11b368 size=136 -rtl: alloc: new: OBJECT addr=0x11b418 size=13 -rtl: alloc: new: OBJECT addr=0x11b450 size=2 -rtl: adding global symbols, table size 29680 -rtl: global symbol add: 1070 -rtl: alloc: new: SYMBOL addr=0x11b480 size=21400 +rtl: alloc: new: SYMBOL addr=0x1347c0 size=384 +rtl: alloc: new: OBJECT addr=0x134d90 size=2048 +rtl: alloc: new: OBJECT addr=0x1355b8 size=2048 +rtl: alloc: new: OBJECT addr=0x135de0 size=2048 +rtl: alloc: new: OBJECT addr=0x136608 size=2048 +rtl: alloc: new: OBJECT addr=0x136e30 size=144 +rtl: alloc: new: OBJECT addr=0x136ee8 size=13 +rtl: alloc: new: OBJECT addr=0x136f20 size=2 +rtl: adding global symbols, table size 30208 +rtl: global symbol add: 1088 +rtl: alloc: new: SYMBOL addr=0x136f50 size=21760 rtl: esyms: BSP_output_char -> 0x101524 -rtl: esyms: Clock_driver_ticks -> 0x102f20 -rtl: esyms: Clock_exit -> 0xa74f -rtl: esyms: Clock_initialize -> 0xa75b -rtl: esyms: Clock_isr -> 0xa67b -rtl: esyms: Configuration -> 0x3b72c -rtl: esyms: Configuration_POSIX_API -> 0x1027a8 +rtl: esyms: Clock_driver_ticks -> 0x103000 +rtl: esyms: Clock_exit -> 0xadcd +rtl: esyms: Clock_initialize -> 0xadd9 +rtl: esyms: Clock_isr -> 0xacfb +rtl: esyms: Configuration -> 0x3d38c +rtl: esyms: Configuration_POSIX_API -> 0x102888 rtl: esyms: Configuration_RTEMS_API -> 0x101458 rtl: esyms: Console_Configuration_Count -> 0x101520 rtl: esyms: Console_Configuration_Ports -> 0x101498 -rtl: esyms: Console_Port_Count -> 0x1028f0 -rtl: esyms: Console_Port_Data -> 0x1028f8 -rtl: esyms: Console_Port_Minor -> 0x1028fc -rtl: esyms: Console_Port_Tbl -> 0x1028f4 +rtl: esyms: Console_Port_Count -> 0x1029d0 +rtl: esyms: Console_Port_Data -> 0x1029d8 +rtl: esyms: Console_Port_Minor -> 0x1029dc +rtl: esyms: Console_Port_Tbl -> 0x1029d4 rtl: esyms: HeapSize -> 0x0 -rtl: esyms: IMFS_LIMITS_AND_OPTIONS -> 0x4b8c4 -rtl: esyms: IMFS_chown -> 0xc423 -rtl: esyms: IMFS_create_node -> 0xc537 -rtl: esyms: IMFS_eval_path -> 0xcf91 -rtl: esyms: IMFS_fchmod -> 0xcfd3 -rtl: esyms: IMFS_initialize_node -> 0xd163 -rtl: esyms: IMFS_initialize_support -> 0xd1f5 -rtl: esyms: IMFS_link -> 0xd3ff -rtl: esyms: IMFS_memfile_write -> 0xdd53 -rtl: esyms: IMFS_mknod -> 0xe3cb -rtl: esyms: IMFS_mknod_control_device -> 0x4bb20 -rtl: esyms: IMFS_mknod_control_dir_default -> 0x4bac8 -rtl: esyms: IMFS_mknod_control_enosys -> 0x4bbcc -rtl: esyms: IMFS_mknod_control_memfile -> 0x4bdcc -rtl: esyms: IMFS_mount -> 0xe45d -rtl: esyms: IMFS_node_clone -> 0xd2a9 -rtl: esyms: IMFS_node_destroy -> 0xd2d1 -rtl: esyms: IMFS_node_destroy_default -> 0xd38d -rtl: esyms: IMFS_node_free -> 0xd311 -rtl: esyms: IMFS_node_initialize_default -> 0xd35f -rtl: esyms: IMFS_node_initialize_directory -> 0xc703 -rtl: esyms: IMFS_node_remove_default -> 0xd377 -rtl: esyms: IMFS_node_remove_directory -> 0xc747 -rtl: esyms: IMFS_readlink -> 0xe9c3 -rtl: esyms: IMFS_rename -> 0xe66b -rtl: esyms: IMFS_rmnod -> 0xe7d7 -rtl: esyms: IMFS_stat -> 0xe8b5 -rtl: esyms: IMFS_stat_file -> 0xe92b -rtl: esyms: IMFS_symlink -> 0xe969 -rtl: esyms: IMFS_unmount -> 0xeaa5 -rtl: esyms: IMFS_utime -> 0xeb07 +rtl: esyms: IMFS_LIMITS_AND_OPTIONS -> 0x50024 +rtl: esyms: IMFS_chown -> 0xcb2b +rtl: esyms: IMFS_create_node -> 0xcc3f +rtl: esyms: IMFS_eval_path -> 0xd699 +rtl: esyms: IMFS_fchmod -> 0xd6db +rtl: esyms: IMFS_initialize_node -> 0xea59 +rtl: esyms: IMFS_initialize_support -> 0xd86b +rtl: esyms: IMFS_link -> 0xd99b +rtl: esyms: IMFS_memfile_write -> 0xe2ef +rtl: esyms: IMFS_mknod -> 0xe967 +rtl: esyms: IMFS_mknod_control_device -> 0x5027c +rtl: esyms: IMFS_mknod_control_dir_default -> 0x50224 +rtl: esyms: IMFS_mknod_control_enosys -> 0x5030c +rtl: esyms: IMFS_mknod_control_memfile -> 0x504f4 +rtl: esyms: IMFS_mount -> 0xe9f9 +rtl: esyms: IMFS_node_clone -> 0xeaeb +rtl: esyms: IMFS_node_destroy -> 0xeb13 +rtl: esyms: IMFS_node_destroy_default -> 0xeb99 +rtl: esyms: IMFS_node_free -> 0xeb53 +rtl: esyms: IMFS_node_initialize_default -> 0xd93d +rtl: esyms: IMFS_node_initialize_directory -> 0xce0b +rtl: esyms: IMFS_node_remove_default -> 0xeb83 +rtl: esyms: IMFS_node_remove_directory -> 0xce4f +rtl: esyms: IMFS_readlink -> 0xf0cb +rtl: esyms: IMFS_rename -> 0xed73 +rtl: esyms: IMFS_rmnod -> 0xeedf +rtl: esyms: IMFS_stat -> 0xefbd +rtl: esyms: IMFS_stat_file -> 0xf033 +rtl: esyms: IMFS_symlink -> 0xf071 +rtl: esyms: IMFS_unmount -> 0xf1ad +rtl: esyms: IMFS_utime -> 0xf20f rtl: esyms: Initialization_tasks -> 0x10140c -rtl: esyms: RTEMS_Malloc_Area -> 0x102e78 +rtl: esyms: RTEMS_Malloc_Area -> 0x102f58 rtl: esyms: RTEMS_Malloc_Heap -> 0x101408 -rtl: esyms: RTEMS_Malloc_Initialize -> 0xfd27 +rtl: esyms: RTEMS_Malloc_Initialize -> 0x1042f rtl: esyms: RamBase -> 0x0 rtl: esyms: RamSize -> 0xfefc000 -rtl: esyms: Untar_FromMemory -> 0x32141 -rtl: esyms: Untar_FromMemory_Print -> 0x31fad -rtl: esyms: WorkAreaBase -> 0x103a30 -rtl: esyms: _API_Mutex_Allocate -> 0x2345f -rtl: esyms: _API_Mutex_Initialization -> 0x23431 -rtl: esyms: _API_Mutex_Is_owner -> 0x23521 -rtl: esyms: _API_Mutex_Lock -> 0x237cf -rtl: esyms: _API_Mutex_Unlock -> 0x23b51 -rtl: esyms: _ARMV4_Exception_data_abort_default -> 0x31790 -rtl: esyms: _ARMV4_Exception_fiq_default -> 0x317c0 -rtl: esyms: _ARMV4_Exception_interrupt -> 0x31690 -rtl: esyms: _ARMV4_Exception_irq_default -> 0x317b0 -rtl: esyms: _ARMV4_Exception_pref_abort_default -> 0x31780 -rtl: esyms: _ARMV4_Exception_reserved_default -> 0x317a0 -rtl: esyms: _ARMV4_Exception_swi_default -> 0x31770 -rtl: esyms: _ARMV4_Exception_undef_default -> 0x31760 -rtl: esyms: _ARM_Exception_default -> 0x31675 -rtl: esyms: _Balloc -> 0x34899 -rtl: esyms: _Bfree -> 0x348e5 -rtl: esyms: _CORE_mutex_Seize_no_protocol_slow -> 0x23fb1 -rtl: esyms: _CORE_mutex_Seize_slow -> 0x23f19 -rtl: esyms: _CORE_semaphore_Initialize -> 0x24013 -rtl: esyms: _CPU_Context_Initialize -> 0x3196f -rtl: esyms: _CPU_Context_restore -> 0x31a75 -rtl: esyms: _CPU_Context_restore_arm -> 0x31a78 -rtl: esyms: _CPU_Context_switch -> 0x31a35 -rtl: esyms: _CPU_Context_switch_arm -> 0x31a38 -rtl: esyms: _CPU_ISR_Get_level -> 0x319f9 -rtl: esyms: _CPU_ISR_Set_level -> 0x319c3 -rtl: esyms: _CPU_Initialize -> 0x31a25 -rtl: esyms: _CPU_Thread_Idle_body -> 0x31855 -rtl: esyms: _Chain_Initialize -> 0x23c01 -rtl: esyms: _Debug_Is_owner_of_allocator -> 0x24033 -rtl: esyms: _Event_Seize -> 0x1feb9 -rtl: esyms: _Event_Surrender -> 0x20423 -rtl: esyms: _Freechain_Get -> 0x242af -rtl: esyms: _Freechain_Initialize -> 0x2425b -rtl: esyms: _Freechain_Put -> 0x24339 -rtl: esyms: _Heap_Allocate_aligned_with_boundary -> 0x25349 -rtl: esyms: _Heap_Block_allocate -> 0x24d0b -rtl: esyms: _Heap_Extend -> 0x25859 -rtl: esyms: _Heap_Free -> 0x25dc3 -rtl: esyms: _Heap_Get_first_and_last_block -> 0x24789 -rtl: esyms: _Heap_Initialize -> 0x2480d -rtl: esyms: _Heap_Resize_block -> 0x263c3 -rtl: esyms: _IO_All_drivers_initialized -> 0x1038ec +rtl: esyms: Untar_FromMemory -> 0x33cc9 +rtl: esyms: Untar_FromMemory_Print -> 0x33b35 +rtl: esyms: WorkAreaBase -> 0x103b30 +rtl: esyms: _API_Mutex_Allocate -> 0x2407f +rtl: esyms: _API_Mutex_Initialization -> 0x24051 +rtl: esyms: _API_Mutex_Is_owner -> 0x24157 +rtl: esyms: _API_Mutex_Lock -> 0x243eb +rtl: esyms: _API_Mutex_Unlock -> 0x246e9 +rtl: esyms: _ARMV4_Exception_data_abort_default -> 0x332f0 +rtl: esyms: _ARMV4_Exception_fiq_default -> 0x33320 +rtl: esyms: _ARMV4_Exception_interrupt -> 0x331c8 +rtl: esyms: _ARMV4_Exception_irq_default -> 0x33310 +rtl: esyms: _ARMV4_Exception_pref_abort_default -> 0x332e0 +rtl: esyms: _ARMV4_Exception_reserved_default -> 0x33300 +rtl: esyms: _ARMV4_Exception_swi_default -> 0x332d0 +rtl: esyms: _ARMV4_Exception_undef_default -> 0x332c0 +rtl: esyms: _ARM_Exception_default -> 0x331ad +rtl: esyms: _Balloc -> 0x36499 +rtl: esyms: _Bfree -> 0x364e5 +rtl: esyms: _CORE_mutex_Seize_slow -> 0x24945 +rtl: esyms: _CORE_semaphore_Initialize -> 0x249a9 +rtl: esyms: _CPU_Context_Initialize -> 0x334cf +rtl: esyms: _CPU_Context_restore -> 0x335ed +rtl: esyms: _CPU_Context_restore_arm -> 0x335f0 +rtl: esyms: _CPU_Context_switch -> 0x33599 +rtl: esyms: _CPU_Context_switch_arm -> 0x3359c +rtl: esyms: _CPU_ISR_Get_level -> 0x3355f +rtl: esyms: _CPU_ISR_Set_level -> 0x33529 +rtl: esyms: _CPU_Initialize -> 0x3358b +rtl: esyms: _CPU_Thread_Idle_body -> 0x333b5 +rtl: esyms: _Chain_Initialize -> 0x247a5 +rtl: esyms: _Debug_Is_owner_of_allocator -> 0x249c9 +rtl: esyms: _Event_Seize -> 0x20b0f +rtl: esyms: _Event_Surrender -> 0x21079 +rtl: esyms: _Freechain_Get -> 0x24c45 +rtl: esyms: _Freechain_Initialize -> 0x24bf1 +rtl: esyms: _Freechain_Put -> 0x24ccf +rtl: esyms: _Heap_Allocate_aligned_with_boundary -> 0x25cf5 +rtl: esyms: _Heap_Block_allocate -> 0x256b7 +rtl: esyms: _Heap_Extend -> 0x26205 +rtl: esyms: _Heap_Free -> 0x26785 +rtl: esyms: _Heap_Get_first_and_last_block -> 0x25135 +rtl: esyms: _Heap_Initialize -> 0x251b9 +rtl: esyms: _Heap_Resize_block -> 0x26d85 +rtl: esyms: _IO_All_drivers_initialized -> 0x1039d0 rtl: esyms: _IO_Driver_address_table -> 0x101428 -rtl: esyms: _IO_Initialize_all_drivers -> 0x23131 -rtl: esyms: _IO_Number_of_drivers -> 0x3b694 -rtl: esyms: _ISR_Handler_initialization -> 0x26501 -rtl: esyms: _ISR_Is_in_progress -> 0x2651b -rtl: esyms: _Internal_errors_What_happened -> 0x1038f0 -rtl: esyms: _Linker_set__Sysinit__IO_Initialize_all_drivers -> 0x5341c -rtl: esyms: _Linker_set__Sysinit__POSIX_Keys_Manager_initialization -> 0x53408 -rtl: esyms: _Linker_set__Sysinit__POSIX_signals_Manager_Initialization -> 0x53404 -rtl: esyms: _Linker_set__Sysinit__RTEMS_tasks_Initialize_user_tasks_body -> 0x53420 -rtl: esyms: _Linker_set__Sysinit__RTEMS_tasks_Manager_initialization -> 0x533fc -rtl: esyms: _Linker_set__Sysinit__Semaphore_Manager_initialization -> 0x53400 -rtl: esyms: _Linker_set__Sysinit__Thread_Create_idle -> 0x5340c -rtl: esyms: _Linker_set__Sysinit__User_extensions_Handler_initialization -> 0x533f4 -rtl: esyms: _Linker_set__Sysinit_begin -> 0x533ec -rtl: esyms: _Linker_set__Sysinit_bsp_predriver_hook -> 0x53418 -rtl: esyms: _Linker_set__Sysinit_bsp_start -> 0x533f0 -rtl: esyms: _Linker_set__Sysinit_bsp_work_area_initialize -> 0x533ec -rtl: esyms: _Linker_set__Sysinit_end -> 0x53428 -rtl: esyms: _Linker_set__Sysinit_rtems_filesystem_initialize -> 0x53414 -rtl: esyms: _Linker_set__Sysinit_rtems_initialize_data_structures -> 0x533f8 -rtl: esyms: _Linker_set__Sysinit_rtems_libio_init -> 0x53410 -rtl: esyms: _Linker_set__Sysinit_rtems_libio_post_driver -> 0x53424 -rtl: esyms: _Malloc_Deferred_free -> 0xfcef -rtl: esyms: _Malloc_Process_deferred_frees -> 0xfc23 -rtl: esyms: _Malloc_System_state -> 0xfbab -rtl: esyms: _Mutex_Acquire -> 0x26fd7 -rtl: esyms: _Mutex_Release -> 0x27053 -rtl: esyms: _Mutex_recursive_Acquire -> 0x270d1 -rtl: esyms: _Mutex_recursive_Release -> 0x27173 -rtl: esyms: _Objects_API_maximum_class -> 0x274b9 -rtl: esyms: _Objects_Allocate -> 0x2749d -rtl: esyms: _Objects_Allocate_unprotected -> 0x273d1 -rtl: esyms: _Objects_Close -> 0x275ab -rtl: esyms: _Objects_Do_initialize_information -> 0x27edb -rtl: esyms: _Objects_Extend_information -> 0x277b1 -rtl: esyms: _Objects_Free -> 0x27b77 -rtl: esyms: _Objects_Get -> 0x27d5d -rtl: esyms: _Objects_Get_information -> 0x27c2f -rtl: esyms: _Objects_Get_information_id -> 0x27cf1 -rtl: esyms: _Objects_Get_no_protection -> 0x27db7 -rtl: esyms: _Objects_Information_table -> 0x4f5f8 -rtl: esyms: _Objects_Namespace_remove -> 0x27fc3 -rtl: esyms: _Objects_Shrink_information -> 0x280bb -rtl: esyms: _Once_Mutex -> 0x1038e8 -rtl: esyms: _POSIX_Keys_Information -> 0x103520 -rtl: esyms: _POSIX_Keys_Key_value_allocate -> 0x1ce6b -rtl: esyms: _POSIX_Keys_Keypool -> 0x103514 -rtl: esyms: _POSIX_signals_Abnormal_termination_handler -> 0x1e67f -rtl: esyms: _POSIX_signals_Clear_process_signals -> 0x1e7c3 -rtl: esyms: _POSIX_signals_Clear_signals -> 0x1ec11 -rtl: esyms: _POSIX_signals_Default_vectors -> 0x4e268 -rtl: esyms: _POSIX_signals_Inactive_siginfo -> 0x103558 -rtl: esyms: _POSIX_signals_Pending -> 0x103864 -rtl: esyms: _POSIX_signals_Send -> 0x1e25d -rtl: esyms: _POSIX_signals_Set_process_signals -> 0x1eee7 -rtl: esyms: _POSIX_signals_Siginfo -> 0x103564 -rtl: esyms: _POSIX_signals_Unblock_thread -> 0x1f575 -rtl: esyms: _POSIX_signals_Vectors -> 0x1036e4 -rtl: esyms: _POSIX_signals_Wait_queue -> 0x102b18 -rtl: esyms: _Per_CPU_Information -> 0x103900 -rtl: esyms: _Protected_heap_Free -> 0x2821d -rtl: esyms: _RBTree_Extract -> 0x287a3 -rtl: esyms: _RBTree_Insert_color -> 0x28a29 -rtl: esyms: _RBTree_Minimum -> 0x28a85 -rtl: esyms: _RTEMS_Allocator_Mutex -> 0x1038e4 -rtl: esyms: _RTEMS_tasks_Information -> 0x1038a0 -rtl: esyms: _RTEMS_tasks_Initialize_user_tasks_body -> 0x228e1 -rtl: esyms: _RTEMS_tasks_User_extensions -> 0x101694 -rtl: esyms: _Scheduler_Handler_initialization -> 0x28aa1 -rtl: esyms: _Scheduler_Table -> 0x3b640 -rtl: esyms: _Scheduler_default_Cancel_job -> 0x28b33 -rtl: esyms: _Scheduler_default_Map_priority -> 0x28ae5 -rtl: esyms: _Scheduler_default_Node_destroy -> 0x28b01 -rtl: esyms: _Scheduler_default_Release_job -> 0x28b17 -rtl: esyms: _Scheduler_default_Start_idle -> 0x28bcd -rtl: esyms: _Scheduler_default_Tick -> 0x28c09 -rtl: esyms: _Scheduler_priority_Block -> 0x29601 -rtl: esyms: _Scheduler_priority_Initialize -> 0x28f21 -rtl: esyms: _Scheduler_priority_Node_initialize -> 0x28f57 -rtl: esyms: _Scheduler_priority_Schedule -> 0x2a313 -rtl: esyms: _Scheduler_priority_Unblock -> 0x2a7cf -rtl: esyms: _Scheduler_priority_Update_priority -> 0x29ec7 -rtl: esyms: _Scheduler_priority_Yield -> 0x2ad99 -rtl: esyms: _Semaphore_Information -> 0x103868 -rtl: esyms: _System_state_Current -> 0x1038fc +rtl: esyms: _IO_Initialize_all_drivers -> 0x23d51 +rtl: esyms: _IO_Number_of_drivers -> 0x3d2f4 +rtl: esyms: _ISR_Handler_initialization -> 0x26ec3 +rtl: esyms: _ISR_Is_in_progress -> 0x26edd +rtl: esyms: _Internal_errors_What_happened -> 0x1039d4 +rtl: esyms: _Linker_set__Sysinit__IO_Initialize_all_drivers -> 0x58448 +rtl: esyms: _Linker_set__Sysinit__POSIX_Keys_Manager_initialization -> 0x58434 +rtl: esyms: _Linker_set__Sysinit__POSIX_signals_Manager_Initialization -> 0x58430 +rtl: esyms: _Linker_set__Sysinit__RTEMS_tasks_Initialize_user_tasks_body -> 0x5844c +rtl: esyms: _Linker_set__Sysinit__RTEMS_tasks_Manager_initialization -> 0x58428 +rtl: esyms: _Linker_set__Sysinit__Semaphore_Manager_initialization -> 0x5842c +rtl: esyms: _Linker_set__Sysinit__Thread_Create_idle -> 0x58438 +rtl: esyms: _Linker_set__Sysinit__User_extensions_Handler_initialization -> 0x58420 +rtl: esyms: _Linker_set__Sysinit_begin -> 0x58418 +rtl: esyms: _Linker_set__Sysinit_bsp_predriver_hook -> 0x58444 +rtl: esyms: _Linker_set__Sysinit_bsp_start -> 0x5841c +rtl: esyms: _Linker_set__Sysinit_bsp_work_area_initialize -> 0x58418 +rtl: esyms: _Linker_set__Sysinit_end -> 0x58454 +rtl: esyms: _Linker_set__Sysinit_rtems_filesystem_initialize -> 0x58440 +rtl: esyms: _Linker_set__Sysinit_rtems_initialize_data_structures -> 0x58424 +rtl: esyms: _Linker_set__Sysinit_rtems_libio_init -> 0x5843c +rtl: esyms: _Linker_set__Sysinit_rtems_libio_post_driver -> 0x58450 +rtl: esyms: _Malloc_Deferred_free -> 0x103f7 +rtl: esyms: _Malloc_Process_deferred_frees -> 0x1032b +rtl: esyms: _Malloc_System_state -> 0x102b3 +rtl: esyms: _Mutex_Acquire -> 0x279b3 +rtl: esyms: _Mutex_Release -> 0x27a37 +rtl: esyms: _Mutex_recursive_Acquire -> 0x27abb +rtl: esyms: _Mutex_recursive_Release -> 0x27b63 +rtl: esyms: _Objects_API_maximum_class -> 0x27eaf +rtl: esyms: _Objects_Allocate -> 0x27e93 +rtl: esyms: _Objects_Allocate_unprotected -> 0x27dc7 +rtl: esyms: _Objects_Close -> 0x27fa1 +rtl: esyms: _Objects_Do_initialize_information -> 0x288d1 +rtl: esyms: _Objects_Extend_information -> 0x281a7 +rtl: esyms: _Objects_Free -> 0x2856d +rtl: esyms: _Objects_Get -> 0x28753 +rtl: esyms: _Objects_Get_information -> 0x28625 +rtl: esyms: _Objects_Get_information_id -> 0x286e7 +rtl: esyms: _Objects_Get_no_protection -> 0x287ad +rtl: esyms: _Objects_Information_table -> 0x53dfc +rtl: esyms: _Objects_Namespace_remove -> 0x289b9 +rtl: esyms: _Objects_Shrink_information -> 0x28ab1 +rtl: esyms: _Once_Mutex -> 0x1039cc +rtl: esyms: _POSIX_Keys_Information -> 0x103604 +rtl: esyms: _POSIX_Keys_Key_value_allocate -> 0x1db13 +rtl: esyms: _POSIX_Keys_Keypool -> 0x1035f8 +rtl: esyms: _POSIX_signals_Abnormal_termination_handler -> 0x1f395 +rtl: esyms: _POSIX_signals_Clear_process_signals -> 0x1f4d9 +rtl: esyms: _POSIX_signals_Clear_signals -> 0x1f8a3 +rtl: esyms: _POSIX_signals_Default_vectors -> 0x52a94 +rtl: esyms: _POSIX_signals_Inactive_siginfo -> 0x10363c +rtl: esyms: _POSIX_signals_Pending -> 0x103948 +rtl: esyms: _POSIX_signals_Send -> 0x1ef0f +rtl: esyms: _POSIX_signals_Set_process_signals -> 0x1faf5 +rtl: esyms: _POSIX_signals_Siginfo -> 0x103648 +rtl: esyms: _POSIX_signals_Unblock_thread -> 0x2019b +rtl: esyms: _POSIX_signals_Vectors -> 0x1037c8 +rtl: esyms: _POSIX_signals_Wait_queue -> 0x102bfc +rtl: esyms: _Per_CPU_Information -> 0x103a00 +rtl: esyms: _Protected_heap_Free -> 0x28c13 +rtl: esyms: _RBTree_Extract -> 0x291b5 +rtl: esyms: _RBTree_Insert_color -> 0x29463 +rtl: esyms: _RBTree_Minimum -> 0x294eb +rtl: esyms: _RTEMS_Allocator_Mutex -> 0x1039c8 +rtl: esyms: _RTEMS_tasks_Information -> 0x103984 +rtl: esyms: _RTEMS_tasks_Initialize_user_tasks_body -> 0x23537 +rtl: esyms: _RTEMS_tasks_User_extensions -> 0x10167c +rtl: esyms: _Scheduler_Handler_initialization -> 0x29507 +rtl: esyms: _Scheduler_Table -> 0x3d2a0 +rtl: esyms: _Scheduler_default_Cancel_job -> 0x29595 +rtl: esyms: _Scheduler_default_Map_priority -> 0x2954b +rtl: esyms: _Scheduler_default_Node_destroy -> 0x29567 +rtl: esyms: _Scheduler_default_Release_job -> 0x2957d +rtl: esyms: _Scheduler_default_Start_idle -> 0x2960f +rtl: esyms: _Scheduler_default_Tick -> 0x29649 +rtl: esyms: _Scheduler_priority_Block -> 0x2a04d +rtl: esyms: _Scheduler_priority_Initialize -> 0x29967 +rtl: esyms: _Scheduler_priority_Node_initialize -> 0x2999d +rtl: esyms: _Scheduler_priority_Schedule -> 0x2ad4b +rtl: esyms: _Scheduler_priority_Unblock -> 0x2b247 +rtl: esyms: _Scheduler_priority_Update_priority -> 0x2a8ff +rtl: esyms: _Scheduler_priority_Yield -> 0x2b7e7 +rtl: esyms: _Semaphore_Information -> 0x10394c +rtl: esyms: _System_state_Current -> 0x1039e0 rtl: esyms: _TLS_Alignment -> 0x1 -rtl: esyms: _TLS_BSS_begin -> 0x533c4 -rtl: esyms: _TLS_BSS_end -> 0x533c4 +rtl: esyms: _TLS_BSS_begin -> 0x583f0 +rtl: esyms: _TLS_BSS_end -> 0x583f0 rtl: esyms: _TLS_BSS_size -> 0x0 -rtl: esyms: _TLS_Data_begin -> 0x533c4 +rtl: esyms: _TLS_Data_begin -> 0x583f0 rtl: esyms: _TLS_Data_size -> 0x0 rtl: esyms: _TLS_Size -> 0x0 -rtl: esyms: _Terminate -> 0x264ab -rtl: esyms: _Thread_Apply_priority -> 0x2b28b -rtl: esyms: _Thread_Cancel -> 0x2f275 -rtl: esyms: _Thread_Change_life -> 0x2f525 -rtl: esyms: _Thread_Change_priority -> 0x2b30d -rtl: esyms: _Thread_Clear_state -> 0x2b6ef -rtl: esyms: _Thread_Clear_state_locked -> 0x2b65b -rtl: esyms: _Thread_Close -> 0x2f36f -rtl: esyms: _Thread_Control_add_on_count -> 0x3b728 -rtl: esyms: _Thread_Control_add_ons -> 0x3b708 -rtl: esyms: _Thread_Control_size -> 0x3b704 -rtl: esyms: _Thread_Create_idle -> 0x2b985 -rtl: esyms: _Thread_Dispatch -> 0x2bf01 -rtl: esyms: _Thread_Do_dispatch -> 0x2be05 -rtl: esyms: _Thread_Entry_adaptor_idle -> 0x2bf47 -rtl: esyms: _Thread_Entry_adaptor_numeric -> 0x2bf65 -rtl: esyms: _Thread_Exit -> 0x2f3c7 -rtl: esyms: _Thread_Get -> 0x2c055 -rtl: esyms: _Thread_Global_construction -> 0x2c0cd -rtl: esyms: _Thread_Handler -> 0x2c179 -rtl: esyms: _Thread_Handler_initialization -> 0x2ae59 -rtl: esyms: _Thread_Initialize -> 0x2c5fd -rtl: esyms: _Thread_Initialize_information -> 0x2adff -rtl: esyms: _Thread_Internal_information -> 0x103940 -rtl: esyms: _Thread_Join -> 0x2f1cd -rtl: esyms: _Thread_Kill_zombies -> 0x2eddb -rtl: esyms: _Thread_Load_environment -> 0x2c895 -rtl: esyms: _Thread_Raise_priority -> 0x2b36b -rtl: esyms: _Thread_Restart_self -> 0x2f469 -rtl: esyms: _Thread_Restore_priority -> 0x2b3dd -rtl: esyms: _Thread_Set_life_protection -> 0x2f57b -rtl: esyms: _Thread_Set_priority -> 0x2f663 -rtl: esyms: _Thread_Set_state -> 0x2f969 -rtl: esyms: _Thread_Set_state_locked -> 0x2f8df -rtl: esyms: _Thread_Stack_Allocate -> 0x2f9dd -rtl: esyms: _Thread_Stack_Free -> 0x2fa23 -rtl: esyms: _Thread_Start -> 0x2fcbd -rtl: esyms: _Thread_Start_multitasking -> 0x2fd73 -rtl: esyms: _Thread_Timeout -> 0x2ffa3 -rtl: esyms: _Thread_Update_priority -> 0x2b2d9 -rtl: esyms: _Thread_Yield -> 0x3029b -rtl: esyms: _Thread_queue_Deadlock_fatal -> 0x2cf85 -rtl: esyms: _Thread_queue_Deadlock_status -> 0x2cf69 -rtl: esyms: _Thread_queue_Do_extract_locked -> 0x2d147 -rtl: esyms: _Thread_queue_Enqueue_critical -> 0x2cf9f -rtl: esyms: _Thread_queue_Extract -> 0x2d1e3 -rtl: esyms: _Thread_queue_Extract_critical -> 0x2d1b3 -rtl: esyms: _Thread_queue_Extract_with_proxy -> 0x2d2cf -rtl: esyms: _Thread_queue_Flush_critical -> 0x2d679 -rtl: esyms: _Thread_queue_Flush_status_object_was_deleted -> 0x2d657 -rtl: esyms: _Thread_queue_Initialize -> 0x2c925 -rtl: esyms: _Thread_queue_Operations_FIFO -> 0x51700 -rtl: esyms: _Thread_queue_Operations_default -> 0x516ec -rtl: esyms: _Thread_queue_Operations_priority -> 0x51714 -rtl: esyms: _Thread_queue_Operations_priority_inherit -> 0x51728 -rtl: esyms: _Thread_queue_Surrender -> 0x2d253 -rtl: esyms: _Thread_queue_Unblock_critical -> 0x2d16d -rtl: esyms: _Timecounter -> 0x10175c -rtl: esyms: _Timecounter_Bintime -> 0x26841 -rtl: esyms: _Timecounter_Binuptime -> 0x267cd -rtl: esyms: _Timecounter_Boottimebin -> 0x101770 -rtl: esyms: _Timecounter_Getnanotime -> 0x2688b -rtl: esyms: _Timecounter_Install -> 0x268d1 -rtl: esyms: _Timecounter_Microtime -> 0x26865 -rtl: esyms: _Timecounter_Tick -> 0x26c29 -rtl: esyms: _Timecounter_Tick_simple -> 0x26c57 -rtl: esyms: _Timecounter_Time_second -> 0x101764 -rtl: esyms: _Timecounter_Time_uptime -> 0x101768 -rtl: esyms: _Unwind_Backtrace -> 0x9fc1 -rtl: esyms: _Unwind_Complete -> 0x9755 -rtl: esyms: _Unwind_DeleteException -> 0x9759 -rtl: esyms: _Unwind_ForcedUnwind -> 0x9f9d -rtl: esyms: _Unwind_GetCFA -> 0x9685 -rtl: esyms: _Unwind_GetDataRelBase -> 0xa365 -rtl: esyms: _Unwind_GetLanguageSpecificData -> 0xa349 -rtl: esyms: _Unwind_GetRegionStart -> 0xa33d -rtl: esyms: _Unwind_GetTextRelBase -> 0xa35d -rtl: esyms: _Unwind_RaiseException -> 0x9f31 -rtl: esyms: _Unwind_Resume -> 0x9f55 -rtl: esyms: _Unwind_Resume_or_Rethrow -> 0x9f79 -rtl: esyms: _Unwind_VRS_Get -> 0x9765 -rtl: esyms: _Unwind_VRS_Pop -> 0x9bad -rtl: esyms: _Unwind_VRS_Set -> 0x97b9 -rtl: esyms: _User_extensions_Add_set -> 0x30589 -rtl: esyms: _User_extensions_Fatal_visitor -> 0x309cd -rtl: esyms: _User_extensions_Handler_initialization -> 0x303ad -rtl: esyms: _User_extensions_Iterate -> 0x30a29 -rtl: esyms: _User_extensions_List -> 0x101798 -rtl: esyms: _User_extensions_Switches_list -> 0x101780 -rtl: esyms: _User_extensions_Thread_begin_visitor -> 0x30981 -rtl: esyms: _User_extensions_Thread_create_visitor -> 0x308bb -rtl: esyms: _User_extensions_Thread_delete_visitor -> 0x30909 -rtl: esyms: _User_extensions_Thread_exitted_visitor -> 0x309a7 -rtl: esyms: _User_extensions_Thread_restart_visitor -> 0x30959 -rtl: esyms: _User_extensions_Thread_start_visitor -> 0x30931 -rtl: esyms: _User_extensions_Thread_terminate_visitor -> 0x30a01 -rtl: esyms: _Watchdog_Do_tickle -> 0x310ed -rtl: esyms: _Watchdog_Insert -> 0x30c5f -rtl: esyms: _Watchdog_Remove -> 0x30e11 -rtl: esyms: _Watchdog_Tick -> 0x3116d -rtl: esyms: _Watchdog_Ticks_since_boot -> 0x103984 -rtl: esyms: _Workspace_Allocate -> 0x315df -rtl: esyms: _Workspace_Allocate_aligned -> 0x31601 -rtl: esyms: _Workspace_Allocate_or_fatal_error -> 0x31643 -rtl: esyms: _Workspace_Area -> 0x103988 -rtl: esyms: _Workspace_Free -> 0x31625 -rtl: esyms: _Workspace_Handler_initialization -> 0x31435 -rtl: esyms: _ZGTtNKSt13bad_exception4whatEv -> 0x14bd -rtl: esyms: _ZN10__cxxabiv111__terminateEPFvvE -> 0x1c09 -rtl: esyms: _ZN10__cxxabiv112__unexpectedEPFvvE -> 0x1c45 -rtl: esyms: _ZN10__cxxabiv117__class_type_infoD0Ev -> 0xe69 -rtl: esyms: _ZN10__cxxabiv117__class_type_infoD1Ev -> 0xe55 -rtl: esyms: _ZN10__cxxabiv117__class_type_infoD2Ev -> 0xe55 +rtl: esyms: _Terminate -> 0x26e6d +rtl: esyms: _Thread_Cancel -> 0x30f4f +rtl: esyms: _Thread_Change_life -> 0x3124b +rtl: esyms: _Thread_Clear_state -> 0x2c5f9 +rtl: esyms: _Thread_Clear_state_locked -> 0x2c565 +rtl: esyms: _Thread_Close -> 0x3106f +rtl: esyms: _Thread_Control_add_on_count -> 0x3d388 +rtl: esyms: _Thread_Control_add_ons -> 0x3d368 +rtl: esyms: _Thread_Control_size -> 0x3d364 +rtl: esyms: _Thread_Create_idle -> 0x2c851 +rtl: esyms: _Thread_Dispatch_direct -> 0x2cd91 +rtl: esyms: _Thread_Do_dispatch -> 0x2cc97 +rtl: esyms: _Thread_Entry_adaptor_idle -> 0x2cdc1 +rtl: esyms: _Thread_Entry_adaptor_numeric -> 0x2cddf +rtl: esyms: _Thread_Exit -> 0x310b9 +rtl: esyms: _Thread_Get -> 0x2cee7 +rtl: esyms: _Thread_Global_construction -> 0x2cf7b +rtl: esyms: _Thread_Handler -> 0x2d041 +rtl: esyms: _Thread_Handler_initialization -> 0x2b8a9 +rtl: esyms: _Thread_Initialize -> 0x2d615 +rtl: esyms: _Thread_Initialize_information -> 0x2b84f +rtl: esyms: _Thread_Internal_information -> 0x103a40 +rtl: esyms: _Thread_Join -> 0x30ea3 +rtl: esyms: _Thread_Kill_zombies -> 0x30ae1 +rtl: esyms: _Thread_Load_environment -> 0x2d8a9 +rtl: esyms: _Thread_Priority_add -> 0x2c2af +rtl: esyms: _Thread_Priority_changed -> 0x2c2f7 +rtl: esyms: _Thread_Priority_perform_actions -> 0x2c17d +rtl: esyms: _Thread_Priority_remove -> 0x2c2d3 +rtl: esyms: _Thread_Priority_update -> 0x2c321 +rtl: esyms: _Thread_Restart_self -> 0x3115b +rtl: esyms: _Thread_Set_life_protection -> 0x312a1 +rtl: esyms: _Thread_Set_state -> 0x3153f +rtl: esyms: _Thread_Set_state_locked -> 0x314b5 +rtl: esyms: _Thread_Stack_Allocate -> 0x315b3 +rtl: esyms: _Thread_Stack_Free -> 0x315f9 +rtl: esyms: _Thread_Start -> 0x31857 +rtl: esyms: _Thread_Start_multitasking -> 0x3190d +rtl: esyms: _Thread_Timeout -> 0x31b47 +rtl: esyms: _Thread_Yield -> 0x31dff +rtl: esyms: _Thread_queue_Deadlock_fatal -> 0x2dfcf +rtl: esyms: _Thread_queue_Deadlock_status -> 0x2dfb3 +rtl: esyms: _Thread_queue_Enqueue -> 0x2e04b +rtl: esyms: _Thread_queue_Enqueue_do_nothing -> 0x2df9b +rtl: esyms: _Thread_queue_Extract -> 0x2e2cf +rtl: esyms: _Thread_queue_Extract_critical -> 0x2e29d +rtl: esyms: _Thread_queue_Extract_locked -> 0x2e227 +rtl: esyms: _Thread_queue_Extract_with_proxy -> 0x2e3d7 +rtl: esyms: _Thread_queue_Flush_critical -> 0x2e7c7 +rtl: esyms: _Thread_queue_Flush_status_object_was_deleted -> 0x2e7a5 +rtl: esyms: _Thread_queue_Initialize -> 0x2d937 +rtl: esyms: _Thread_queue_Operations_FIFO -> 0x56624 +rtl: esyms: _Thread_queue_Operations_default -> 0x56610 +rtl: esyms: _Thread_queue_Operations_priority -> 0x56638 +rtl: esyms: _Thread_queue_Operations_priority_inherit -> 0x5664c +rtl: esyms: _Thread_queue_Surrender -> 0x2e341 +rtl: esyms: _Thread_queue_Unblock_critical -> 0x2e257 +rtl: esyms: _Timecounter -> 0x101744 +rtl: esyms: _Timecounter_Bintime -> 0x27203 +rtl: esyms: _Timecounter_Binuptime -> 0x2718f +rtl: esyms: _Timecounter_Boottimebin -> 0x101758 +rtl: esyms: _Timecounter_Getnanotime -> 0x2724d +rtl: esyms: _Timecounter_Install -> 0x27293 +rtl: esyms: _Timecounter_Microtime -> 0x27227 +rtl: esyms: _Timecounter_Tick -> 0x275eb +rtl: esyms: _Timecounter_Tick_simple -> 0x27619 +rtl: esyms: _Timecounter_Time_second -> 0x10174c +rtl: esyms: _Timecounter_Time_uptime -> 0x101750 +rtl: esyms: _Unwind_Backtrace -> 0xa629 +rtl: esyms: _Unwind_Complete -> 0x9dbd +rtl: esyms: _Unwind_DeleteException -> 0x9dc1 +rtl: esyms: _Unwind_ForcedUnwind -> 0xa605 +rtl: esyms: _Unwind_GetCFA -> 0x9ced +rtl: esyms: _Unwind_GetDataRelBase -> 0xa9cd +rtl: esyms: _Unwind_GetLanguageSpecificData -> 0xa9b1 +rtl: esyms: _Unwind_GetRegionStart -> 0xa9a5 +rtl: esyms: _Unwind_GetTextRelBase -> 0xa9c5 +rtl: esyms: _Unwind_RaiseException -> 0xa599 +rtl: esyms: _Unwind_Resume -> 0xa5bd +rtl: esyms: _Unwind_Resume_or_Rethrow -> 0xa5e1 +rtl: esyms: _Unwind_VRS_Get -> 0x9dcd +rtl: esyms: _Unwind_VRS_Pop -> 0xa215 +rtl: esyms: _Unwind_VRS_Set -> 0x9e21 +rtl: esyms: _User_extensions_Add_set -> 0x320ed +rtl: esyms: _User_extensions_Fatal_visitor -> 0x32547 +rtl: esyms: _User_extensions_Handler_initialization -> 0x31f11 +rtl: esyms: _User_extensions_Iterate -> 0x325a1 +rtl: esyms: _User_extensions_List -> 0x101780 +rtl: esyms: _User_extensions_Switches_list -> 0x101768 +rtl: esyms: _User_extensions_Thread_begin_visitor -> 0x324fb +rtl: esyms: _User_extensions_Thread_create_visitor -> 0x32435 +rtl: esyms: _User_extensions_Thread_delete_visitor -> 0x32483 +rtl: esyms: _User_extensions_Thread_exitted_visitor -> 0x32521 +rtl: esyms: _User_extensions_Thread_restart_visitor -> 0x324d3 +rtl: esyms: _User_extensions_Thread_start_visitor -> 0x324ab +rtl: esyms: _User_extensions_Thread_terminate_visitor -> 0x3257b +rtl: esyms: _Watchdog_Do_tickle -> 0x32c25 +rtl: esyms: _Watchdog_Insert -> 0x327dd +rtl: esyms: _Watchdog_Remove -> 0x3298f +rtl: esyms: _Watchdog_Tick -> 0x32ca5 +rtl: esyms: _Watchdog_Ticks_since_boot -> 0x103a84 +rtl: esyms: _Workspace_Allocate -> 0x33117 +rtl: esyms: _Workspace_Allocate_aligned -> 0x33139 +rtl: esyms: _Workspace_Allocate_or_fatal_error -> 0x3317b +rtl: esyms: _Workspace_Area -> 0x103a88 +rtl: esyms: _Workspace_Free -> 0x3315d +rtl: esyms: _Workspace_Handler_initialization -> 0x32f6d +rtl: esyms: _ZGTtNKSt13bad_exception4whatEv -> 0x1675 +rtl: esyms: _ZN10__cxxabiv111__terminateEPFvvE -> 0x1dc1 +rtl: esyms: _ZN10__cxxabiv112__unexpectedEPFvvE -> 0x1dfd +rtl: esyms: _ZN10__cxxabiv117__class_type_infoD0Ev -> 0x1021 +rtl: esyms: _ZN10__cxxabiv117__class_type_infoD1Ev -> 0x100d +rtl: esyms: _ZN10__cxxabiv117__class_type_infoD2Ev -> 0x100d rtl: esyms: _ZN10__cxxabiv119__terminate_handlerE -> 0x101488 -rtl: esyms: _ZN10__cxxabiv120__si_class_type_infoD0Ev -> 0x1e35 -rtl: esyms: _ZN10__cxxabiv120__si_class_type_infoD1Ev -> 0x1e21 -rtl: esyms: _ZN10__cxxabiv120__si_class_type_infoD2Ev -> 0x1e21 +rtl: esyms: _ZN10__cxxabiv120__si_class_type_infoD0Ev -> 0x1fed +rtl: esyms: _ZN10__cxxabiv120__si_class_type_infoD1Ev -> 0x1fd9 +rtl: esyms: _ZN10__cxxabiv120__si_class_type_infoD2Ev -> 0x1fd9 rtl: esyms: _ZN10__cxxabiv120__unexpected_handlerE -> 0x10148c -rtl: esyms: _ZN9__gnu_cxx27__verbose_terminate_handlerEv -> 0x1f8d -rtl: esyms: _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj -> 0xe9d -rtl: esyms: _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE -> 0xe85 -rtl: esyms: _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv -> 0xe11 -rtl: esyms: _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE -> 0xec9 -rtl: esyms: _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_ -> 0xe49 -rtl: esyms: _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE -> 0x1f2d -rtl: esyms: _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE -> 0x1e8d -rtl: esyms: _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ -> 0x1e51 -rtl: esyms: _ZNKSt11logic_error4whatEv -> 0x8465 -rtl: esyms: _ZNKSt13bad_exception4whatEv -> 0x14bd -rtl: esyms: _ZNKSt13runtime_error4whatEv -> 0x8469 -rtl: esyms: _ZNKSt3_V214error_category10_M_messageB5cxx11Ei -> 0x86a5 -rtl: esyms: _ZNKSt3_V214error_category10equivalentERKSt10error_codei -> 0x866d -rtl: esyms: _ZNKSt3_V214error_category10equivalentEiRKSt15error_condition -> 0x8771 -rtl: esyms: _ZNKSt3_V214error_category23default_error_conditionEi -> 0x8665 -rtl: esyms: _ZNKSt9bad_alloc4whatEv -> 0xdd5 -rtl: esyms: _ZNKSt9type_info14__is_pointer_pEv -> 0x1f5d -rtl: esyms: _ZNKSt9type_info15__is_function_pEv -> 0x1f5d -rtl: esyms: _ZNKSt9type_infoeqERKS_ -> 0x1f61 -rtl: esyms: _ZNSt11logic_errorC1EPKc -> 0x856d -rtl: esyms: _ZNSt11logic_errorC2EPKc -> 0x856d -rtl: esyms: _ZNSt11logic_errorD0Ev -> 0x84c1 -rtl: esyms: _ZNSt11logic_errorD1Ev -> 0x846d -rtl: esyms: _ZNSt11logic_errorD2Ev -> 0x846d -rtl: esyms: _ZNSt12__cow_stringC1EPKcj -> 0x85d1 -rtl: esyms: _ZNSt12__cow_stringC2EPKcj -> 0x85d1 -rtl: esyms: _ZNSt12length_errorC1EPKc -> 0x8595 -rtl: esyms: _ZNSt12length_errorC2EPKc -> 0x8595 -rtl: esyms: _ZNSt12length_errorD0Ev -> 0x84e9 -rtl: esyms: _ZNSt12length_errorD1Ev -> 0x84d5 -rtl: esyms: _ZNSt12length_errorD2Ev -> 0x84d5 -rtl: esyms: _ZNSt13bad_exceptionD0Ev -> 0x14c9 -rtl: esyms: _ZNSt13bad_exceptionD1Ev -> 0x14b9 -rtl: esyms: _ZNSt13bad_exceptionD2Ev -> 0x14b9 -rtl: esyms: _ZNSt13runtime_errorC1EPKc -> 0x85a9 -rtl: esyms: _ZNSt13runtime_errorC2EPKc -> 0x85a9 -rtl: esyms: _ZNSt13runtime_errorD0Ev -> 0x8559 -rtl: esyms: _ZNSt13runtime_errorD1Ev -> 0x8505 -rtl: esyms: _ZNSt13runtime_errorD2Ev -> 0x8505 -rtl: esyms: _ZNSt9bad_allocD0Ev -> 0xdf5 -rtl: esyms: _ZNSt9bad_allocD1Ev -> 0xde1 -rtl: esyms: _ZNSt9bad_allocD2Ev -> 0xde1 -rtl: esyms: _ZNSt9exceptionD1Ev -> 0x14b5 -rtl: esyms: _ZNSt9exceptionD2Ev -> 0x14b5 -rtl: esyms: _ZNSt9type_infoD1Ev -> 0x1f59 -rtl: esyms: _ZNSt9type_infoD2Ev -> 0x1f59 -rtl: esyms: _ZSt10unexpectedv -> 0x1c4d -rtl: esyms: _ZSt13get_terminatev -> 0x1c61 -rtl: esyms: _ZSt14get_unexpectedv -> 0x1c71 -rtl: esyms: _ZSt15get_new_handlerv -> 0x1dd1 -rtl: esyms: _ZSt19__throw_logic_errorPKc -> 0x85e5 -rtl: esyms: _ZSt20__throw_length_errorPKc -> 0x8619 -rtl: esyms: _ZSt9terminatev -> 0x1c31 -rtl: esyms: _ZTIN10__cxxabiv115__forced_unwindE -> 0x4a524 -rtl: esyms: _ZTIN10__cxxabiv117__class_type_infoE -> 0x4a4b4 -rtl: esyms: _ZTIN10__cxxabiv119__foreign_exceptionE -> 0x4a52c -rtl: esyms: _ZTIN10__cxxabiv120__si_class_type_infoE -> 0x4a5c4 -rtl: esyms: _ZTINSt3_V214error_categoryE -> 0x4b6f0 -rtl: esyms: _ZTISt11logic_error -> 0x4b604 -rtl: esyms: _ZTISt12length_error -> 0x4b610 -rtl: esyms: _ZTISt13bad_exception -> 0x4a534 -rtl: esyms: _ZTISt13runtime_error -> 0x4b61c -rtl: esyms: _ZTISt9bad_alloc -> 0x4a484 -rtl: esyms: _ZTISt9exception -> 0x4a540 -rtl: esyms: _ZTISt9type_info -> 0x4a624 -rtl: esyms: _ZTSN10__cxxabiv115__forced_unwindE -> 0x4a548 -rtl: esyms: _ZTSN10__cxxabiv117__class_type_infoE -> 0x4a4c0 -rtl: esyms: _ZTSN10__cxxabiv119__foreign_exceptionE -> 0x4a568 -rtl: esyms: _ZTSN10__cxxabiv120__si_class_type_infoE -> 0x4a5d0 -rtl: esyms: _ZTSNSt3_V214error_categoryE -> 0x4b750 -rtl: esyms: _ZTSSt11logic_error -> 0x4b628 -rtl: esyms: _ZTSSt12length_error -> 0x4b638 -rtl: esyms: _ZTSSt13bad_exception -> 0x4a58c -rtl: esyms: _ZTSSt13runtime_error -> 0x4b64c -rtl: esyms: _ZTSSt9bad_alloc -> 0x4a490 -rtl: esyms: _ZTSSt9exception -> 0x4a5a0 -rtl: esyms: _ZTSSt9type_info -> 0x4a62c -rtl: esyms: _ZTVN10__cxxabiv117__class_type_infoE -> 0x4a4e4 -rtl: esyms: _ZTVN10__cxxabiv120__si_class_type_infoE -> 0x4a5f8 -rtl: esyms: _ZTVSt11logic_error -> 0x4b660 -rtl: esyms: _ZTVSt12length_error -> 0x4b674 -rtl: esyms: _ZTVSt13bad_exception -> 0x4a5b0 -rtl: esyms: _ZTVSt13runtime_error -> 0x4b688 -rtl: esyms: _ZTVSt9bad_alloc -> 0x4a4a0 -rtl: esyms: _ZdlPv -> 0xf09 -rtl: esyms: _ZdlPvj -> 0xf0d -rtl: esyms: _Znwj -> 0x1de1 +rtl: esyms: _ZN9__gnu_cxx27__verbose_terminate_handlerEv -> 0x2145 +rtl: esyms: _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj -> 0x1055 +rtl: esyms: _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE -> 0x103d +rtl: esyms: _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv -> 0xfc9 +rtl: esyms: _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE -> 0x1081 +rtl: esyms: _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_ -> 0x1001 +rtl: esyms: _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE -> 0x20e5 +rtl: esyms: _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE -> 0x2045 +rtl: esyms: _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ -> 0x2009 +rtl: esyms: _ZNKSt11logic_error4whatEv -> 0x8ac9 +rtl: esyms: _ZNKSt13bad_exception4whatEv -> 0x1675 +rtl: esyms: _ZNKSt13runtime_error4whatEv -> 0x8acd +rtl: esyms: _ZNKSt3_V214error_category10_M_messageB5cxx11Ei -> 0x8d09 +rtl: esyms: _ZNKSt3_V214error_category10equivalentERKSt10error_codei -> 0x8cd1 +rtl: esyms: _ZNKSt3_V214error_category10equivalentEiRKSt15error_condition -> 0x8dd5 +rtl: esyms: _ZNKSt3_V214error_category23default_error_conditionEi -> 0x8cc9 +rtl: esyms: _ZNKSt9bad_alloc4whatEv -> 0xf8d +rtl: esyms: _ZNKSt9type_info14__is_pointer_pEv -> 0x2115 +rtl: esyms: _ZNKSt9type_info15__is_function_pEv -> 0x2115 +rtl: esyms: _ZNKSt9type_infoeqERKS_ -> 0x2119 +rtl: esyms: _ZNSt11logic_errorC1EPKc -> 0x8bd1 +rtl: esyms: _ZNSt11logic_errorC2EPKc -> 0x8bd1 +rtl: esyms: _ZNSt11logic_errorD0Ev -> 0x8b25 +rtl: esyms: _ZNSt11logic_errorD1Ev -> 0x8ad1 +rtl: esyms: _ZNSt11logic_errorD2Ev -> 0x8ad1 +rtl: esyms: _ZNSt12__cow_stringC1EPKcj -> 0x8c35 +rtl: esyms: _ZNSt12__cow_stringC2EPKcj -> 0x8c35 +rtl: esyms: _ZNSt12length_errorC1EPKc -> 0x8bf9 +rtl: esyms: _ZNSt12length_errorC2EPKc -> 0x8bf9 +rtl: esyms: _ZNSt12length_errorD0Ev -> 0x8b4d +rtl: esyms: _ZNSt12length_errorD1Ev -> 0x8b39 +rtl: esyms: _ZNSt12length_errorD2Ev -> 0x8b39 +rtl: esyms: _ZNSt13bad_exceptionD0Ev -> 0x1681 +rtl: esyms: _ZNSt13bad_exceptionD1Ev -> 0x1671 +rtl: esyms: _ZNSt13bad_exceptionD2Ev -> 0x1671 +rtl: esyms: _ZNSt13runtime_errorC1EPKc -> 0x8c0d +rtl: esyms: _ZNSt13runtime_errorC2EPKc -> 0x8c0d +rtl: esyms: _ZNSt13runtime_errorD0Ev -> 0x8bbd +rtl: esyms: _ZNSt13runtime_errorD1Ev -> 0x8b69 +rtl: esyms: _ZNSt13runtime_errorD2Ev -> 0x8b69 +rtl: esyms: _ZNSt9bad_allocD0Ev -> 0xfad +rtl: esyms: _ZNSt9bad_allocD1Ev -> 0xf99 +rtl: esyms: _ZNSt9bad_allocD2Ev -> 0xf99 +rtl: esyms: _ZNSt9exceptionD1Ev -> 0x166d +rtl: esyms: _ZNSt9exceptionD2Ev -> 0x166d +rtl: esyms: _ZNSt9type_infoD1Ev -> 0x2111 +rtl: esyms: _ZNSt9type_infoD2Ev -> 0x2111 +rtl: esyms: _ZSt10unexpectedv -> 0x1e05 +rtl: esyms: _ZSt13get_terminatev -> 0x1e19 +rtl: esyms: _ZSt14get_unexpectedv -> 0x1e29 +rtl: esyms: _ZSt15get_new_handlerv -> 0x1f89 +rtl: esyms: _ZSt19__throw_logic_errorPKc -> 0x8c49 +rtl: esyms: _ZSt20__throw_length_errorPKc -> 0x8c7d +rtl: esyms: _ZSt9terminatev -> 0x1de9 +rtl: esyms: _ZTIN10__cxxabiv115__forced_unwindE -> 0x4ebf4 +rtl: esyms: _ZTIN10__cxxabiv117__class_type_infoE -> 0x4eb84 +rtl: esyms: _ZTIN10__cxxabiv119__foreign_exceptionE -> 0x4ebfc +rtl: esyms: _ZTIN10__cxxabiv120__si_class_type_infoE -> 0x4ec94 +rtl: esyms: _ZTINSt3_V214error_categoryE -> 0x4fe50 +rtl: esyms: _ZTISt11logic_error -> 0x4fd64 +rtl: esyms: _ZTISt12length_error -> 0x4fd70 +rtl: esyms: _ZTISt13bad_exception -> 0x4ec04 +rtl: esyms: _ZTISt13runtime_error -> 0x4fd7c +rtl: esyms: _ZTISt9bad_alloc -> 0x4eb54 +rtl: esyms: _ZTISt9exception -> 0x4ec10 +rtl: esyms: _ZTISt9type_info -> 0x4ecf4 +rtl: esyms: _ZTSN10__cxxabiv115__forced_unwindE -> 0x4ec18 +rtl: esyms: _ZTSN10__cxxabiv117__class_type_infoE -> 0x4eb90 +rtl: esyms: _ZTSN10__cxxabiv119__foreign_exceptionE -> 0x4ec38 +rtl: esyms: _ZTSN10__cxxabiv120__si_class_type_infoE -> 0x4eca0 +rtl: esyms: _ZTSNSt3_V214error_categoryE -> 0x4feb0 +rtl: esyms: _ZTSSt11logic_error -> 0x4fd88 +rtl: esyms: _ZTSSt12length_error -> 0x4fd98 +rtl: esyms: _ZTSSt13bad_exception -> 0x4ec5c +rtl: esyms: _ZTSSt13runtime_error -> 0x4fdac +rtl: esyms: _ZTSSt9bad_alloc -> 0x4eb60 +rtl: esyms: _ZTSSt9exception -> 0x4ec70 +rtl: esyms: _ZTSSt9type_info -> 0x4ecfc +rtl: esyms: _ZTVN10__cxxabiv117__class_type_infoE -> 0x4ebb4 +rtl: esyms: _ZTVN10__cxxabiv120__si_class_type_infoE -> 0x4ecc8 +rtl: esyms: _ZTVSt11logic_error -> 0x4fdc0 +rtl: esyms: _ZTVSt12length_error -> 0x4fdd4 +rtl: esyms: _ZTVSt13bad_exception -> 0x4ec80 +rtl: esyms: _ZTVSt13runtime_error -> 0x4fde8 +rtl: esyms: _ZTVSt9bad_alloc -> 0x4eb70 +rtl: esyms: _ZdlPv -> 0x10c1 +rtl: esyms: _ZdlPvj -> 0x10c5 +rtl: esyms: _Znwj -> 0x1f99 rtl: esyms: __TMC_END__ -> 0x0 -rtl: esyms: ___Unwind_Backtrace -> 0x9fc1 -rtl: esyms: ___Unwind_ForcedUnwind -> 0x9f9d -rtl: esyms: ___Unwind_RaiseException -> 0x9f31 -rtl: esyms: ___Unwind_Resume -> 0x9f55 -rtl: esyms: ___Unwind_Resume_or_Rethrow -> 0x9f79 -rtl: esyms: __aeabi_atexit -> 0xdc9 -rtl: esyms: __aeabi_idiv -> 0x8f31 -rtl: esyms: __aeabi_idivmod -> 0x91c5 -rtl: esyms: __aeabi_ldivmod -> 0x91e5 -rtl: esyms: __aeabi_uidiv -> 0x8cb9 -rtl: esyms: __aeabi_uidivmod -> 0x8f15 -rtl: esyms: __aeabi_uldivmod -> 0x9285 -rtl: esyms: __aeabi_unwind_cpp_pr0 -> 0x9ba1 -rtl: esyms: __any_on -> 0x35131 -rtl: esyms: __ascii_wctomb -> 0x3b431 -rtl: esyms: __assert -> 0x323b1 -rtl: esyms: __assert_func -> 0xebcf -rtl: esyms: __atexit_lock -> 0x102d5c -rtl: esyms: __b2d -> 0x34ee9 -rtl: esyms: __call_exitprocs -> 0x32281 -rtl: esyms: __copybits -> 0x350e9 -rtl: esyms: __ctype_ptr__ -> 0x1017b4 -rtl: esyms: __cxa_allocate_exception -> 0x1031 -rtl: esyms: __cxa_atexit -> 0x323c9 -rtl: esyms: __cxa_begin_catch -> 0x13a5 -rtl: esyms: __cxa_begin_cleanup -> 0x1185 -rtl: esyms: __cxa_call_terminate -> 0x1295 -rtl: esyms: __cxa_call_unexpected -> 0x12b5 -rtl: esyms: __cxa_current_exception_type -> 0x1db5 -rtl: esyms: __cxa_demangle -> 0x8379 -rtl: esyms: __cxa_end_catch -> 0x1429 -rtl: esyms: __cxa_end_cleanup -> 0x10b5 -rtl: esyms: __cxa_free_exception -> 0x1061 -rtl: esyms: __cxa_get_globals -> 0x152d -rtl: esyms: __cxa_get_globals_fast -> 0x1511 -rtl: esyms: __cxa_rethrow -> 0x1d45 -rtl: esyms: __cxa_throw -> 0x1cc5 -rtl: esyms: __cxa_type_match -> 0x10c1 -rtl: esyms: __d2b -> 0x34fad -rtl: esyms: __divsi3 -> 0x8f31 +rtl: esyms: ___Unwind_Backtrace -> 0xa629 +rtl: esyms: ___Unwind_ForcedUnwind -> 0xa605 +rtl: esyms: ___Unwind_RaiseException -> 0xa599 +rtl: esyms: ___Unwind_Resume -> 0xa5bd +rtl: esyms: ___Unwind_Resume_or_Rethrow -> 0xa5e1 +rtl: esyms: __aeabi_atexit -> 0xf81 +rtl: esyms: __aeabi_idiv -> 0x9599 +rtl: esyms: __aeabi_idivmod -> 0x982d +rtl: esyms: __aeabi_ldivmod -> 0x984d +rtl: esyms: __aeabi_uidiv -> 0x9321 +rtl: esyms: __aeabi_uidivmod -> 0x957d +rtl: esyms: __aeabi_uldivmod -> 0x98ed +rtl: esyms: __aeabi_unwind_cpp_pr0 -> 0xa209 +rtl: esyms: __any_on -> 0x36d31 +rtl: esyms: __ascii_mbtowc -> 0x35d15 +rtl: esyms: __ascii_wctomb -> 0x3d0bd +rtl: esyms: __assert -> 0x33f39 +rtl: esyms: __assert_func -> 0xf2d7 +rtl: esyms: __atexit_lock -> 0x102e3c +rtl: esyms: __b2d -> 0x36ae9 +rtl: esyms: __call_exitprocs -> 0x33e09 +rtl: esyms: __copybits -> 0x36ce9 +rtl: esyms: __cxa_allocate_exception -> 0x11e9 +rtl: esyms: __cxa_atexit -> 0x33f51 +rtl: esyms: __cxa_begin_catch -> 0x155d +rtl: esyms: __cxa_begin_cleanup -> 0x133d +rtl: esyms: __cxa_call_terminate -> 0x144d +rtl: esyms: __cxa_call_unexpected -> 0x146d +rtl: esyms: __cxa_current_exception_type -> 0x1f6d +rtl: esyms: __cxa_demangle -> 0x89dd +rtl: esyms: __cxa_end_catch -> 0x15e1 +rtl: esyms: __cxa_end_cleanup -> 0x126d +rtl: esyms: __cxa_free_exception -> 0x1219 +rtl: esyms: __cxa_get_globals -> 0x16e5 +rtl: esyms: __cxa_get_globals_fast -> 0x16c9 +rtl: esyms: __cxa_rethrow -> 0x1efd +rtl: esyms: __cxa_throw -> 0x1e7d +rtl: esyms: __cxa_type_match -> 0x1279 +rtl: esyms: __d2b -> 0x36bad +rtl: esyms: __divsi3 -> 0x9599 rtl: esyms: __dso_handle -> 0x101400 -rtl: esyms: __errno -> 0x331fd -rtl: esyms: __exidx_end -> 0x533c0 -rtl: esyms: __exidx_start -> 0x53140 -rtl: esyms: __fp_lock_all -> 0x33739 -rtl: esyms: __fp_unlock_all -> 0x33759 -rtl: esyms: __fputwc -> 0x3394d -rtl: esyms: __gcclibcxx_demangle_callback -> 0x8445 -rtl: esyms: __getreent -> 0xc13 -rtl: esyms: __gnu_Unwind_Backtrace -> 0x9811 -rtl: esyms: __gnu_Unwind_ForcedUnwind -> 0x96e9 -rtl: esyms: __gnu_Unwind_RaiseException -> 0x9689 -rtl: esyms: __gnu_Unwind_Restore_VFP -> 0x9e51 -rtl: esyms: __gnu_Unwind_Restore_VFP_D -> 0x9e61 -rtl: esyms: __gnu_Unwind_Restore_VFP_D_16_to_31 -> 0x9e71 -rtl: esyms: __gnu_Unwind_Restore_WMMXC -> 0x9f09 -rtl: esyms: __gnu_Unwind_Restore_WMMXD -> 0x9e81 -rtl: esyms: __gnu_Unwind_Resume -> 0x96fd -rtl: esyms: __gnu_Unwind_Resume_or_Rethrow -> 0x9741 -rtl: esyms: __gnu_Unwind_Save_VFP -> 0x9e59 -rtl: esyms: __gnu_Unwind_Save_VFP_D -> 0x9e69 -rtl: esyms: __gnu_Unwind_Save_VFP_D_16_to_31 -> 0x9e79 -rtl: esyms: __gnu_Unwind_Save_WMMXC -> 0x9f1d -rtl: esyms: __gnu_Unwind_Save_WMMXD -> 0x9ec5 -rtl: esyms: __gnu_end_cleanup -> 0x11e9 -rtl: esyms: __gnu_unwind_execute -> 0xa041 -rtl: esyms: __gnu_unwind_frame -> 0xa311 -rtl: esyms: __gxx_personality_v0 -> 0x1745 -rtl: esyms: __hi0bits -> 0x34a1d -rtl: esyms: __i2b -> 0x34ab9 -rtl: esyms: __libc_fini_array -> 0x33779 -rtl: esyms: __libc_init_array -> 0x33f05 -rtl: esyms: __lo0bits -> 0x34a5d -rtl: esyms: __locale_charset -> 0x33fb5 -rtl: esyms: __locale_cjk_lang -> 0x33fd5 -rtl: esyms: __locale_mb_cur_max -> 0x33fc1 -rtl: esyms: __locale_msgcharset -> 0x33fcd -rtl: esyms: __lshift -> 0x34ca1 -rtl: esyms: __mb_cur_max -> 0x101ab8 -rtl: esyms: __mcmp -> 0x34d45 -rtl: esyms: __mdiff -> 0x34d7d -rtl: esyms: __mprec_bigtens -> 0x52758 -rtl: esyms: __mprec_tens -> 0x52668 -rtl: esyms: __mprec_tinytens -> 0x52730 -rtl: esyms: __multadd -> 0x348f9 -rtl: esyms: __multiply -> 0x34acd -rtl: esyms: __pow5mult -> 0x34bfd -rtl: esyms: __ratio -> 0x35069 -rtl: esyms: __register_exitproc -> 0x321b1 -rtl: esyms: __restore_core_regs -> 0x9e39 -rtl: esyms: __s2b -> 0x34981 -rtl: esyms: __sclose -> 0x35571 -rtl: esyms: __seofread -> 0x354f9 -rtl: esyms: __sflush_r -> 0x332fd -rtl: esyms: __sfmoreglue -> 0x33595 -rtl: esyms: __sfp -> 0x33649 -rtl: esyms: __sfp_lock_acquire -> 0x33709 -rtl: esyms: __sfp_lock_release -> 0x33715 -rtl: esyms: __sfvwrite_r -> 0x33a7d -rtl: esyms: __sinit -> 0x335d9 -rtl: esyms: __sinit_lock_acquire -> 0x33721 -rtl: esyms: __sinit_lock_release -> 0x3372d -rtl: esyms: __smakebuf_r -> 0x34079 -rtl: esyms: __sprint_r -> 0x38989 -rtl: esyms: __sread -> 0x354cd -rtl: esyms: __sseek -> 0x35541 -rtl: esyms: __ssprint_r -> 0x36281 -rtl: esyms: __start_set_sysctl_set -> 0x533ec -rtl: esyms: __stop_set_sysctl_set -> 0x533ec -rtl: esyms: __swbuf -> 0x3b365 -rtl: esyms: __swbuf_r -> 0x3b2b9 -rtl: esyms: __swhatbuf_r -> 0x34009 -rtl: esyms: __swrite -> 0x354fd -rtl: esyms: __swsetup_r -> 0x3b479 -rtl: esyms: __udivmoddi4 -> 0x92b9 -rtl: esyms: __udivsi3 -> 0x8cb9 -rtl: esyms: __ulp -> 0x34e95 -rtl: esyms: __wctomb -> 0x101b14 -rtl: esyms: _calloc_r -> 0xee6f -rtl: esyms: _cleanup -> 0x335c1 -rtl: esyms: _cleanup_r -> 0x334ed -rtl: esyms: _close_r -> 0xf2a5 -rtl: esyms: _ctype_ -> 0x52530 -rtl: esyms: _dtoa_r -> 0x32519 -rtl: esyms: _exit -> 0x10665 -rtl: esyms: _fclose_r -> 0x33225 -rtl: esyms: _fflush_r -> 0x33469 -rtl: esyms: _fini -> 0x3b545 -rtl: esyms: _fiprintf_r -> 0x337ad -rtl: esyms: _fputc_r -> 0x337f5 -rtl: esyms: _fputs_r -> 0x338a9 -rtl: esyms: _fputwc_r -> 0x339ed -rtl: esyms: _free_r -> 0xee8d -rtl: esyms: _fstat_r -> 0xf447 -rtl: esyms: _fwalk -> 0x33d99 -rtl: esyms: _fwalk_reent -> 0x33de1 -rtl: esyms: _fwrite_r -> 0x33e31 -rtl: esyms: _getpid_r -> 0xf55f -rtl: esyms: _gettimeofday_r -> 0xec87 -rtl: esyms: _global_atexit -> 0x102d58 -rtl: esyms: _global_impure_ptr -> 0x52648 -rtl: esyms: _impure_ptr -> 0x1017b8 -rtl: esyms: _init -> 0x3b539 -rtl: esyms: _isatty -> 0x32365 -rtl: esyms: _isatty_r -> 0xf575 -rtl: esyms: _kill_r -> 0x1dce9 -rtl: esyms: _localeconv_r -> 0x33fd9 -rtl: esyms: _lseek_r -> 0xf817 -rtl: esyms: _malloc_r -> 0xeea5 -rtl: esyms: _mprec_log10 -> 0x350c1 -rtl: esyms: _printf_r -> 0x35191 -rtl: esyms: _putc_r -> 0x351d9 -rtl: esyms: _puts_r -> 0x352c5 -rtl: esyms: _raise_r -> 0x3539d -rtl: esyms: _read_r -> 0x10d5b -rtl: esyms: _realloc_r -> 0xeebf -rtl: esyms: _reclaim_reent -> 0x353d1 -rtl: esyms: _rtems_octal2ulong -> 0x31a9b -rtl: esyms: _rtems_tar_header_checksum -> 0x3215f -rtl: esyms: _rtld_debug -> 0x103508 -rtl: esyms: _rtld_debug_state -> 0x15b8d -rtl: esyms: _rtld_linkmap_add -> 0x15b9b -rtl: esyms: _rtld_linkmap_delete -> 0x15c73 -rtl: esyms: _setlocale_r -> 0x33f61 -rtl: esyms: _sprintf_r -> 0x35441 +rtl: esyms: __errno -> 0x34d85 +rtl: esyms: __exidx_end -> 0x583ec +rtl: esyms: __exidx_start -> 0x58164 +rtl: esyms: __fp_lock_all -> 0x352c1 +rtl: esyms: __fp_unlock_all -> 0x352e1 +rtl: esyms: __fputwc -> 0x354d5 +rtl: esyms: __gcclibcxx_demangle_callback -> 0x8aa9 +rtl: esyms: __getreent -> 0xc69 +rtl: esyms: __global_locale -> 0x101a80 +rtl: esyms: __gnu_Unwind_Backtrace -> 0x9e79 +rtl: esyms: __gnu_Unwind_Find_exidx -> 0x18707 +rtl: esyms: __gnu_Unwind_ForcedUnwind -> 0x9d51 +rtl: esyms: __gnu_Unwind_RaiseException -> 0x9cf1 +rtl: esyms: __gnu_Unwind_Restore_VFP -> 0xa4b9 +rtl: esyms: __gnu_Unwind_Restore_VFP_D -> 0xa4c9 +rtl: esyms: __gnu_Unwind_Restore_VFP_D_16_to_31 -> 0xa4d9 +rtl: esyms: __gnu_Unwind_Restore_WMMXC -> 0xa571 +rtl: esyms: __gnu_Unwind_Restore_WMMXD -> 0xa4e9 +rtl: esyms: __gnu_Unwind_Resume -> 0x9d65 +rtl: esyms: __gnu_Unwind_Resume_or_Rethrow -> 0x9da9 +rtl: esyms: __gnu_Unwind_Save_VFP -> 0xa4c1 +rtl: esyms: __gnu_Unwind_Save_VFP_D -> 0xa4d1 +rtl: esyms: __gnu_Unwind_Save_VFP_D_16_to_31 -> 0xa4e1 +rtl: esyms: __gnu_Unwind_Save_WMMXC -> 0xa585 +rtl: esyms: __gnu_Unwind_Save_WMMXD -> 0xa52d +rtl: esyms: __gnu_end_cleanup -> 0x13a1 +rtl: esyms: __gnu_unwind_execute -> 0xa6a9 +rtl: esyms: __gnu_unwind_frame -> 0xa979 +rtl: esyms: __gxx_personality_v0 -> 0x18fd +rtl: esyms: __hi0bits -> 0x3661d +rtl: esyms: __i2b -> 0x366b9 +rtl: esyms: __libc_fini_array -> 0x35301 +rtl: esyms: __libc_init_array -> 0x35a8d +rtl: esyms: __lo0bits -> 0x3665d +rtl: esyms: __locale_ctype_ptr -> 0x35b79 +rtl: esyms: __locale_ctype_ptr_l -> 0x35b71 +rtl: esyms: __locale_mb_cur_max -> 0x35b55 +rtl: esyms: __localeconv_l -> 0x35ba1 +rtl: esyms: __lshift -> 0x368a1 +rtl: esyms: __mcmp -> 0x36945 +rtl: esyms: __mdiff -> 0x3697d +rtl: esyms: __mprec_bigtens -> 0x57748 +rtl: esyms: __mprec_tens -> 0x57658 +rtl: esyms: __mprec_tinytens -> 0x57720 +rtl: esyms: __multadd -> 0x364f9 +rtl: esyms: __multiply -> 0x366cd +rtl: esyms: __pow5mult -> 0x367fd +rtl: esyms: __ratio -> 0x36c69 +rtl: esyms: __register_exitproc -> 0x33d39 +rtl: esyms: __restore_core_regs -> 0xa4a1 +rtl: esyms: __s2b -> 0x36581 +rtl: esyms: __sclose -> 0x37171 +rtl: esyms: __seofread -> 0x370f9 +rtl: esyms: __sflush_r -> 0x34e85 +rtl: esyms: __sfmoreglue -> 0x3511d +rtl: esyms: __sfp -> 0x351d1 +rtl: esyms: __sfp_lock_acquire -> 0x35291 +rtl: esyms: __sfp_lock_release -> 0x3529d +rtl: esyms: __sfvwrite_r -> 0x35605 +rtl: esyms: __sinit -> 0x35161 +rtl: esyms: __sinit_lock_acquire -> 0x352a9 +rtl: esyms: __sinit_lock_release -> 0x352b5 +rtl: esyms: __smakebuf_r -> 0x35c4d +rtl: esyms: __sprint_r -> 0x3a5e1 +rtl: esyms: __sread -> 0x370cd +rtl: esyms: __sseek -> 0x37141 +rtl: esyms: __ssprint_r -> 0x37edd +rtl: esyms: __start_set_sysctl_set -> 0x58418 +rtl: esyms: __stop_set_sysctl_set -> 0x58418 +rtl: esyms: __swbuf -> 0x3cfbd +rtl: esyms: __swbuf_r -> 0x3cf11 +rtl: esyms: __swhatbuf_r -> 0x35bdd +rtl: esyms: __swrite -> 0x370fd +rtl: esyms: __swsetup_r -> 0x3d0d5 +rtl: esyms: __udivmoddi4 -> 0x9921 +rtl: esyms: __udivsi3 -> 0x9321 +rtl: esyms: __ulp -> 0x36a95 +rtl: esyms: _calloc_r -> 0xf577 +rtl: esyms: _cleanup -> 0x35149 +rtl: esyms: _cleanup_r -> 0x35075 +rtl: esyms: _close_r -> 0xf9ad +rtl: esyms: _ctype_ -> 0x57520 +rtl: esyms: _dtoa_r -> 0x340a1 +rtl: esyms: _exit -> 0x10d6d +rtl: esyms: _fclose_r -> 0x34dad +rtl: esyms: _fflush_r -> 0x34ff1 +rtl: esyms: _fini -> 0x3d1a1 +rtl: esyms: _fiprintf_r -> 0x35335 +rtl: esyms: _fputc_r -> 0x3537d +rtl: esyms: _fputs_r -> 0x35431 +rtl: esyms: _fputwc_r -> 0x35575 +rtl: esyms: _free_r -> 0xf595 +rtl: esyms: _fstat_r -> 0xfb4f +rtl: esyms: _fwalk -> 0x35921 +rtl: esyms: _fwalk_reent -> 0x35969 +rtl: esyms: _fwrite_r -> 0x359b9 +rtl: esyms: _getpid_r -> 0xfc67 +rtl: esyms: _gettimeofday_r -> 0xf38f +rtl: esyms: _global_atexit -> 0x102e38 +rtl: esyms: _global_impure_ptr -> 0x57638 +rtl: esyms: _impure_ptr -> 0x1017a0 +rtl: esyms: _init -> 0x3d195 +rtl: esyms: _isatty -> 0x33eed +rtl: esyms: _isatty_r -> 0xfc7d +rtl: esyms: _kill_r -> 0x1e9ad +rtl: esyms: _localeconv_r -> 0x35ba5 +rtl: esyms: _lseek_r -> 0xff1f +rtl: esyms: _malloc_r -> 0xf5ad +rtl: esyms: _mbtowc_r -> 0x35cdd +rtl: esyms: _mprec_log10 -> 0x36cc1 +rtl: esyms: _printf_r -> 0x36d91 +rtl: esyms: _putc_r -> 0x36dd9 +rtl: esyms: _puts_r -> 0x36ec5 +rtl: esyms: _raise_r -> 0x36f9d +rtl: esyms: _read_r -> 0x11453 +rtl: esyms: _realloc_r -> 0xf5c7 +rtl: esyms: _reclaim_reent -> 0x36fd1 +rtl: esyms: _rtems_octal2ulong -> 0x3361b +rtl: esyms: _rtems_tar_header_checksum -> 0x33ce7 +rtl: esyms: _rtld_debug -> 0x1035ec +rtl: esyms: _rtld_debug_state -> 0x16331 +rtl: esyms: _rtld_linkmap_add -> 0x1633f +rtl: esyms: _rtld_linkmap_delete -> 0x1641b +rtl: esyms: _setlocale_r -> 0x35b01 +rtl: esyms: _sprintf_r -> 0x37041 rtl: esyms: _start -> 0x40 -rtl: esyms: _strdup_r -> 0x35a15 -rtl: esyms: _strerror_r -> 0x35a3d -rtl: esyms: _strtoul_r -> 0x3610d -rtl: esyms: _svfiprintf_r -> 0x36379 -rtl: esyms: _svfprintf_r -> 0x36ee1 -rtl: esyms: _user_strerror -> 0x38905 -rtl: esyms: _vfiprintf_r -> 0x3899d -rtl: esyms: _vfprintf_r -> 0x39789 -rtl: esyms: _vsnprintf_r -> 0x3b22d -rtl: esyms: _wcrtomb_r -> 0x3b37d -rtl: esyms: _wctomb_r -> 0x3b449 -rtl: esyms: _write_r -> 0x15073 -rtl: esyms: abort -> 0x323a1 -rtl: esyms: arm_cp15_set_exception_handler -> 0xa8b5 -rtl: esyms: arm_cpu_mode -> 0x1017b0 -rtl: esyms: atexit -> 0x323bd -rtl: esyms: boot_card -> 0xabf5 -rtl: esyms: bsp_boot_cmdline -> 0x102f24 -rtl: esyms: bsp_console_select -> 0xb525 -rtl: esyms: bsp_fatal_extension -> 0xac1b -rtl: esyms: bsp_interrupt_dispatch -> 0xaa87 -rtl: esyms: bsp_interrupt_facility_initialize -> 0xab43 -rtl: esyms: bsp_interrupt_handler_default -> 0xb55b -rtl: esyms: bsp_interrupt_handler_table -> 0x102f28 -rtl: esyms: bsp_interrupt_initialize -> 0xb811 -rtl: esyms: bsp_interrupt_lock -> 0xb7d5 -rtl: esyms: bsp_interrupt_unlock -> 0xb7f3 -rtl: esyms: bsp_interrupt_vector_enable -> 0xaad3 -rtl: esyms: bsp_predriver_hook -> 0xaca5 +rtl: esyms: _strdup_r -> 0x37615 +rtl: esyms: _strerror_r -> 0x3763d +rtl: esyms: _strtoul_r -> 0x37e49 +rtl: esyms: _svfiprintf_r -> 0x37fd5 +rtl: esyms: _svfprintf_r -> 0x38b39 +rtl: esyms: _user_strerror -> 0x3a55d +rtl: esyms: _vfiprintf_r -> 0x3a5f5 +rtl: esyms: _vfprintf_r -> 0x3b3e1 +rtl: esyms: _vsnprintf_r -> 0x3ce85 +rtl: esyms: _wcrtomb_r -> 0x3cfd5 +rtl: esyms: _wctomb_r -> 0x3d089 +rtl: esyms: _write_r -> 0x157c5 +rtl: esyms: abort -> 0x33f29 +rtl: esyms: arm_cp15_set_exception_handler -> 0xaf51 +rtl: esyms: arm_cpu_mode -> 0x101798 +rtl: esyms: atexit -> 0x33f45 +rtl: esyms: boot_card -> 0xb291 +rtl: esyms: bsp_boot_cmdline -> 0x103004 +rtl: esyms: bsp_console_select -> 0xbbef +rtl: esyms: bsp_fatal_extension -> 0xb2b7 +rtl: esyms: bsp_interrupt_dispatch -> 0xb123 +rtl: esyms: bsp_interrupt_facility_initialize -> 0xb1df +rtl: esyms: bsp_interrupt_handler_default -> 0xbc25 +rtl: esyms: bsp_interrupt_handler_table -> 0x103008 +rtl: esyms: bsp_interrupt_initialize -> 0xbedb +rtl: esyms: bsp_interrupt_lock -> 0xbe9f +rtl: esyms: bsp_interrupt_unlock -> 0xbebd +rtl: esyms: bsp_interrupt_vector_enable -> 0xb16f +rtl: esyms: bsp_predriver_hook -> 0xb341 rtl: esyms: bsp_processor_count -> 0x1 -rtl: esyms: bsp_reset -> 0xacb3 -rtl: esyms: bsp_section_bss_begin -> 0x101b20 -rtl: esyms: bsp_section_bss_end -> 0x103a30 -rtl: esyms: bsp_section_bss_size -> 0x1f10 +rtl: esyms: bsp_reset -> 0xb34f +rtl: esyms: bsp_section_bss_begin -> 0x101c00 +rtl: esyms: bsp_section_bss_end -> 0x103b30 +rtl: esyms: bsp_section_bss_size -> 0x1f30 rtl: esyms: bsp_section_data_begin -> 0x101400 -rtl: esyms: bsp_section_data_end -> 0x101b18 +rtl: esyms: bsp_section_data_end -> 0x101bec rtl: esyms: bsp_section_data_load_begin -> 0x101400 -rtl: esyms: bsp_section_data_load_end -> 0x101b18 -rtl: esyms: bsp_section_data_size -> 0x718 +rtl: esyms: bsp_section_data_load_end -> 0x101bec +rtl: esyms: bsp_section_data_size -> 0x7ec rtl: esyms: bsp_section_fast_data_begin -> 0x101400 rtl: esyms: bsp_section_fast_data_end -> 0x101400 rtl: esyms: bsp_section_fast_data_load_begin -> 0x101400 @@ -634,29 +634,29 @@ rtl: esyms: bsp_section_nocachenoload_begin -> 0xfefc000 rtl: esyms: bsp_section_nocachenoload_end -> 0xfffc000 rtl: esyms: bsp_section_nocachenoload_size -> 0x100000 rtl: esyms: bsp_section_robarrier_align -> 0x1 -rtl: esyms: bsp_section_rodata_begin -> 0x3b550 -rtl: esyms: bsp_section_rodata_end -> 0x53428 -rtl: esyms: bsp_section_rodata_load_begin -> 0x3b550 -rtl: esyms: bsp_section_rodata_load_end -> 0x53428 -rtl: esyms: bsp_section_rodata_size -> 0x17ed8 +rtl: esyms: bsp_section_rodata_begin -> 0x3d1b0 +rtl: esyms: bsp_section_rodata_end -> 0x58454 +rtl: esyms: bsp_section_rodata_load_begin -> 0x3d1b0 +rtl: esyms: bsp_section_rodata_load_end -> 0x58454 +rtl: esyms: bsp_section_rodata_size -> 0x1b2a4 rtl: esyms: bsp_section_rwbarrier_align -> 0x100000 rtl: esyms: bsp_section_stack_begin -> 0xfefc000 rtl: esyms: bsp_section_stack_end -> 0xfefc000 rtl: esyms: bsp_section_stack_size -> 0x0 rtl: esyms: bsp_section_start_begin -> 0x0 -rtl: esyms: bsp_section_start_end -> 0xa70 -rtl: esyms: bsp_section_start_size -> 0xa70 -rtl: esyms: bsp_section_text_begin -> 0xa80 -rtl: esyms: bsp_section_text_end -> 0x3b550 -rtl: esyms: bsp_section_text_load_begin -> 0xa80 -rtl: esyms: bsp_section_text_load_end -> 0x3b550 -rtl: esyms: bsp_section_text_size -> 0x3aad0 +rtl: esyms: bsp_section_start_end -> 0xaa4 +rtl: esyms: bsp_section_start_size -> 0xaa4 +rtl: esyms: bsp_section_text_begin -> 0xac0 +rtl: esyms: bsp_section_text_end -> 0x3d1ac +rtl: esyms: bsp_section_text_load_begin -> 0xac0 +rtl: esyms: bsp_section_text_load_end -> 0x3d1ac +rtl: esyms: bsp_section_text_size -> 0x3c6ec rtl: esyms: bsp_section_vector_begin -> 0x100000 rtl: esyms: bsp_section_vector_end -> 0x101400 rtl: esyms: bsp_section_vector_size -> 0x1400 -rtl: esyms: bsp_section_work_begin -> 0x103a30 +rtl: esyms: bsp_section_work_begin -> 0x103b30 rtl: esyms: bsp_section_work_end -> 0xfefc000 -rtl: esyms: bsp_section_work_size -> 0xfdf85d0 +rtl: esyms: bsp_section_work_size -> 0xfdf84d0 rtl: esyms: bsp_section_xbarrier_align -> 0x1 rtl: esyms: bsp_stack_abt_begin -> 0x101000 rtl: esyms: bsp_stack_abt_end -> 0x101400 @@ -683,9 +683,10 @@ rtl: esyms: bsp_stack_svc_size -> 0x0 rtl: esyms: bsp_stack_und_begin -> 0x101000 rtl: esyms: bsp_stack_und_end -> 0x101000 rtl: esyms: bsp_stack_und_size -> 0x0 -rtl: esyms: bsp_start -> 0xacef -rtl: esyms: bsp_start_hook_0 -> 0x735 -rtl: esyms: bsp_start_hook_1 -> 0x791 +rtl: esyms: bsp_start -> 0xb3a9 +rtl: esyms: bsp_start_hook_0 -> 0x769 +rtl: esyms: bsp_start_hook_0_done -> 0xc8 +rtl: esyms: bsp_start_hook_1 -> 0x7c5 rtl: esyms: bsp_start_memcpy -> 0x129 rtl: esyms: bsp_start_memcpy_arm -> 0x12c rtl: esyms: bsp_start_vector_table_begin -> 0x0 @@ -697,585 +698,771 @@ rtl: esyms: bsp_vector_table_begin -> 0x0 rtl: esyms: bsp_vector_table_end -> 0x40 rtl: esyms: bsp_vector_table_in_start_section -> 0x1 rtl: esyms: bsp_vector_table_size -> 0x40 -rtl: esyms: bsp_work_area_initialize -> 0xac6b -rtl: esyms: calloc -> 0xeb99 -rtl: esyms: cleanup_glue -> 0x353b5 -rtl: esyms: close -> 0xf20f -rtl: esyms: console_close -> 0xb381 -rtl: esyms: console_control -> 0xb4ed -rtl: esyms: console_initialize -> 0xb403 -rtl: esyms: console_initialize_data -> 0xb151 -rtl: esyms: console_open -> 0xb22d -rtl: esyms: console_read -> 0xb509 -rtl: esyms: console_write -> 0xb53f -rtl: esyms: device_close -> 0xc321 -rtl: esyms: device_ftruncate -> 0xc3e7 -rtl: esyms: device_ioctl -> 0xc3b3 -rtl: esyms: device_open -> 0xc2e9 -rtl: esyms: device_read -> 0xc34b -rtl: esyms: device_write -> 0xc37f -rtl: esyms: dl_load_test -> 0xc25 -rtl: esyms: dl_tar -> 0x3b87c -rtl: esyms: dl_tar_size -> 0x4307c -rtl: esyms: dlclose -> 0x15129 -rtl: esyms: dlerror -> 0x15201 -rtl: esyms: dlopen -> 0x150c7 -rtl: esyms: dlsym -> 0x1519d -rtl: esyms: exception_base -> 0xd55 -rtl: esyms: exit -> 0x33205 -rtl: esyms: fastlz_decompress -> 0x156c7 -rtl: esyms: fclose -> 0x332e9 -rtl: esyms: fflush -> 0x334c1 -rtl: esyms: fiprintf -> 0x337cd -rtl: esyms: fputc -> 0x33851 -rtl: esyms: fputs -> 0x33935 -rtl: esyms: fputwc -> 0x33a59 -rtl: esyms: free -> 0xf2bf -rtl: esyms: frexp -> 0x8c39 -rtl: esyms: fstat -> 0xf39d -rtl: esyms: ftruncate -> 0xf465 -rtl: esyms: fwrite -> 0x33ee5 -rtl: esyms: getegid -> 0xf52f -rtl: esyms: geteuid -> 0xf53f -rtl: esyms: getpid -> 0xf54f -rtl: esyms: gettimeofday -> 0xec57 -rtl: esyms: imfs_memfile_bytes_per_block -> 0x102910 +rtl: esyms: bsp_work_area_initialize -> 0xb307 +rtl: esyms: calloc -> 0xf2a1 +rtl: esyms: cleanup_glue -> 0x36fb5 +rtl: esyms: close -> 0xf917 +rtl: esyms: console_close -> 0xba4b +rtl: esyms: console_control -> 0xbbb7 +rtl: esyms: console_initialize -> 0xbacd +rtl: esyms: console_initialize_data -> 0xb81b +rtl: esyms: console_open -> 0xb8f7 +rtl: esyms: console_read -> 0xbbd3 +rtl: esyms: console_write -> 0xbc09 +rtl: esyms: device_close -> 0xca29 +rtl: esyms: device_ftruncate -> 0xcaef +rtl: esyms: device_ioctl -> 0xcabb +rtl: esyms: device_open -> 0xc9f1 +rtl: esyms: device_read -> 0xca53 +rtl: esyms: device_write -> 0xca87 +rtl: esyms: dl_load_test -> 0xc7b +rtl: esyms: dl_tar -> 0x3d53c +rtl: esyms: dl_tar_size -> 0x4753c +rtl: esyms: dlclose -> 0x1587b +rtl: esyms: dlerror -> 0x15953 +rtl: esyms: dlopen -> 0x15819 +rtl: esyms: dlsym -> 0x158ef +rtl: esyms: exception_base -> 0xe0d +rtl: esyms: exit -> 0x34d8d +rtl: esyms: fastlz_decompress -> 0x15e19 +rtl: esyms: fclose -> 0x34e71 +rtl: esyms: fflush -> 0x35049 +rtl: esyms: fiprintf -> 0x35355 +rtl: esyms: fputc -> 0x353d9 +rtl: esyms: fputs -> 0x354bd +rtl: esyms: fputwc -> 0x355e1 +rtl: esyms: free -> 0xf9c7 +rtl: esyms: frexp -> 0x92a1 +rtl: esyms: fstat -> 0xfaa5 +rtl: esyms: ftruncate -> 0xfb6d +rtl: esyms: fwrite -> 0x35a6d +rtl: esyms: getegid -> 0xfc37 +rtl: esyms: geteuid -> 0xfc47 +rtl: esyms: getpid -> 0xfc57 +rtl: esyms: gettimeofday -> 0xf35f +rtl: esyms: imfs_memfile_bytes_per_block -> 0x1035d8 rtl: esyms: imfs_rq_memfile_bytes_per_block -> 0x101404 -rtl: esyms: isatty -> 0x33f5d -rtl: esyms: libchip_serial_default_probe -> 0xbdcb -rtl: esyms: localeconv -> 0x33ff9 -rtl: esyms: lseek -> 0xf781 -rtl: esyms: malloc -> 0xf841 -rtl: esyms: memchr -> 0x34111 -rtl: esyms: memcmp -> 0x341b1 -rtl: esyms: memcpy -> 0x34240 -rtl: esyms: memfile_blocks_allocated -> 0x102914 -rtl: esyms: memmove -> 0x34721 -rtl: esyms: memset -> 0x347f5 -rtl: esyms: mkdir -> 0xfdbd -rtl: esyms: mknod -> 0xfea7 -rtl: esyms: mount -> 0x10583 -rtl: esyms: newlib_create_hook -> 0x10681 -rtl: esyms: newlib_terminate_hook -> 0x1075d -rtl: esyms: open -> 0x10a9b -rtl: esyms: printf -> 0x351b1 -rtl: esyms: printk -> 0x10bed -rtl: esyms: pthread_getspecific -> 0x1d5f5 -rtl: esyms: pthread_key_create -> 0x1d0ed -rtl: esyms: pthread_key_delete -> 0x1d3c1 -rtl: esyms: pthread_kill -> 0x1f7b5 -rtl: esyms: pthread_self -> 0x1f883 -rtl: esyms: pthread_setspecific -> 0x1dc71 -rtl: esyms: putc -> 0x3524d -rtl: esyms: puts -> 0x3536d -rtl: esyms: raise -> 0x35381 -rtl: esyms: read -> 0x10c95 -rtl: esyms: realloc -> 0x10df1 -rtl: esyms: restore_core_regs -> 0x9e39 -rtl: esyms: rmdir -> 0x10f01 -rtl: esyms: rtems_assoc_local_by_remote -> 0xeedd -rtl: esyms: rtems_assoc_local_by_remote_bitfield -> 0xef07 -rtl: esyms: rtems_assoc_ptr_by_local -> 0xef4b -rtl: esyms: rtems_assoc_ptr_by_remote -> 0xefab -rtl: esyms: rtems_assoc_remote_by_local -> 0xf00b -rtl: esyms: rtems_cache_coherent_add_area -> 0xf171 -rtl: esyms: rtems_cache_flush_multiple_data_lines -> 0xafeb -rtl: esyms: rtems_cache_get_instruction_line_size -> 0xb01f -rtl: esyms: rtems_cache_instruction_sync_after_code_change -> 0xb02f -rtl: esyms: rtems_cache_invalidate_multiple_instruction_lines -> 0xb005 -rtl: esyms: rtems_chain_append -> 0x22f45 -rtl: esyms: rtems_chain_extract -> 0x22f1b -rtl: esyms: rtems_clock_get_ticks_per_second -> 0x1f8c1 -rtl: esyms: rtems_counter_initialize_converter -> 0x22f79 -rtl: esyms: rtems_current_user_env_get -> 0x10c15 -rtl: esyms: rtems_current_user_env_key -> 0x1034f8 -rtl: esyms: rtems_deviceio_close -> 0x1117b -rtl: esyms: rtems_deviceio_control -> 0x112ab -rtl: esyms: rtems_deviceio_open -> 0x1113b -rtl: esyms: rtems_deviceio_read -> 0x111b7 -rtl: esyms: rtems_deviceio_write -> 0x11231 -rtl: esyms: rtems_event_receive -> 0x1f9c1 -rtl: esyms: rtems_event_send -> 0x1ffd5 -rtl: esyms: rtems_event_system_send -> 0x222f1 -rtl: esyms: rtems_fatal -> 0x23115 -rtl: esyms: rtems_fatal_error_occurred -> 0x230fb -rtl: esyms: rtems_filesystem_check_access -> 0x1107b -rtl: esyms: rtems_filesystem_default_are_nodes_equal -> 0xbde1 -rtl: esyms: rtems_filesystem_default_close -> 0xbe09 -rtl: esyms: rtems_filesystem_default_eval_path -> 0xbe1f -rtl: esyms: rtems_filesystem_default_fcntl -> 0xbe3f -rtl: esyms: rtems_filesystem_default_freenode -> 0xbe57 -rtl: esyms: rtems_filesystem_default_fstat -> 0xbe6b -rtl: esyms: rtems_filesystem_default_fsunmount -> 0xbe8b -rtl: esyms: rtems_filesystem_default_fsync_or_fdatasync -> 0xbe9f -rtl: esyms: rtems_filesystem_default_fsync_or_fdatasync_success -> 0xbebd -rtl: esyms: rtems_filesystem_default_ftruncate -> 0xbed3 -rtl: esyms: rtems_filesystem_default_ftruncate_directory -> 0xbef5 -rtl: esyms: rtems_filesystem_default_ioctl -> 0xbf17 -rtl: esyms: rtems_filesystem_default_kqfilter -> 0xbf39 -rtl: esyms: rtems_filesystem_default_lock -> 0xbf85 -rtl: esyms: rtems_filesystem_default_lseek -> 0xbfad -rtl: esyms: rtems_filesystem_default_lseek_directory -> 0xbfd5 -rtl: esyms: rtems_filesystem_default_lseek_file -> 0xc023 -rtl: esyms: rtems_filesystem_default_open -> 0xc145 -rtl: esyms: rtems_filesystem_default_pathconf -> 0x4c41c -rtl: esyms: rtems_filesystem_default_poll -> 0xc161 -rtl: esyms: rtems_filesystem_default_read -> 0xc179 -rtl: esyms: rtems_filesystem_default_readv -> 0xc19b -rtl: esyms: rtems_filesystem_default_statvfs -> 0xc215 -rtl: esyms: rtems_filesystem_default_unlock -> 0xbf99 -rtl: esyms: rtems_filesystem_default_write -> 0xc235 -rtl: esyms: rtems_filesystem_default_writev -> 0xc257 -rtl: esyms: rtems_filesystem_do_unmount -> 0x12433 -rtl: esyms: rtems_filesystem_eval_path_check_access -> 0x110ff -rtl: esyms: rtems_filesystem_eval_path_cleanup -> 0x118ff -rtl: esyms: rtems_filesystem_eval_path_cleanup_with_parent -> 0x11937 -rtl: esyms: rtems_filesystem_eval_path_continue -> 0x115ed -rtl: esyms: rtems_filesystem_eval_path_eat_delimiter -> 0x124c3 -rtl: esyms: rtems_filesystem_eval_path_error -> 0x11871 -rtl: esyms: rtems_filesystem_eval_path_generic -> 0x11b3d -rtl: esyms: rtems_filesystem_eval_path_next_token -> 0x12583 -rtl: esyms: rtems_filesystem_eval_path_recursive -> 0x117d1 -rtl: esyms: rtems_filesystem_eval_path_restart -> 0x11955 -rtl: esyms: rtems_filesystem_eval_path_start -> 0x116e5 -rtl: esyms: rtems_filesystem_eval_path_start_with_parent -> 0x11721 -rtl: esyms: rtems_filesystem_eval_path_start_with_root_and_current -> 0x11683 -rtl: esyms: rtems_filesystem_get_mount_handler -> 0x10111 -rtl: esyms: rtems_filesystem_global_location_assign -> 0x12205 +rtl: esyms: isatty -> 0x35ae5 +rtl: esyms: libchip_serial_default_probe -> 0xc4d3 +rtl: esyms: localeconv -> 0x35bc1 +rtl: esyms: lseek -> 0xfe89 +rtl: esyms: malloc -> 0xff49 +rtl: esyms: memchr -> 0x35d41 +rtl: esyms: memcmp -> 0x35de1 +rtl: esyms: memcpy -> 0x35e40 +rtl: esyms: memfile_blocks_allocated -> 0x1029f0 +rtl: esyms: memmove -> 0x36321 +rtl: esyms: memset -> 0x363f5 +rtl: esyms: mkdir -> 0x104c5 +rtl: esyms: mknod -> 0x105af +rtl: esyms: mount -> 0x10c8b +rtl: esyms: newlib_create_hook -> 0x10d89 +rtl: esyms: newlib_terminate_hook -> 0x10e55 +rtl: esyms: open -> 0x11193 +rtl: esyms: printf -> 0x36db1 +rtl: esyms: printk -> 0x112e5 +rtl: esyms: pthread_getspecific -> 0x1e29d +rtl: esyms: pthread_key_create -> 0x1dd95 +rtl: esyms: pthread_key_delete -> 0x1e053 +rtl: esyms: pthread_kill -> 0x203db +rtl: esyms: pthread_self -> 0x204bf +rtl: esyms: pthread_setspecific -> 0x1e935 +rtl: esyms: putc -> 0x36e4d +rtl: esyms: puts -> 0x36f6d +rtl: esyms: raise -> 0x36f81 +rtl: esyms: read -> 0x1138d +rtl: esyms: realloc -> 0x114e9 +rtl: esyms: restore_core_regs -> 0xa4a1 +rtl: esyms: rmdir -> 0x115f9 +rtl: esyms: rtems_assoc_local_by_remote -> 0xf5e5 +rtl: esyms: rtems_assoc_local_by_remote_bitfield -> 0xf60f +rtl: esyms: rtems_assoc_ptr_by_local -> 0xf653 +rtl: esyms: rtems_assoc_ptr_by_remote -> 0xf6b3 +rtl: esyms: rtems_assoc_remote_by_local -> 0xf713 +rtl: esyms: rtems_cache_coherent_add_area -> 0xf879 +rtl: esyms: rtems_cache_flush_multiple_data_lines -> 0xb6a5 +rtl: esyms: rtems_cache_get_instruction_line_size -> 0xb6d9 +rtl: esyms: rtems_cache_get_maximal_line_size -> 0xb6e9 +rtl: esyms: rtems_cache_instruction_sync_after_code_change -> 0xb6f9 +rtl: esyms: rtems_cache_invalidate_multiple_instruction_lines -> 0xb6bf +rtl: esyms: rtems_chain_append -> 0x23b4b +rtl: esyms: rtems_chain_extract -> 0x23b21 +rtl: esyms: rtems_clock_get_ticks_per_second -> 0x204fd +rtl: esyms: rtems_counter_initialize_converter -> 0x23b79 +rtl: esyms: rtems_current_user_env_get -> 0x1130d +rtl: esyms: rtems_current_user_env_key -> 0x1035dc +rtl: esyms: rtems_deviceio_close -> 0x11873 +rtl: esyms: rtems_deviceio_control -> 0x119a3 +rtl: esyms: rtems_deviceio_open -> 0x11833 +rtl: esyms: rtems_deviceio_read -> 0x118af +rtl: esyms: rtems_deviceio_write -> 0x11929 +rtl: esyms: rtems_event_receive -> 0x20617 +rtl: esyms: rtems_event_send -> 0x20c2b +rtl: esyms: rtems_event_system_send -> 0x22eb9 +rtl: esyms: rtems_fatal -> 0x23d35 +rtl: esyms: rtems_fatal_error_occurred -> 0x23d1b +rtl: esyms: rtems_filesystem_check_access -> 0x11773 +rtl: esyms: rtems_filesystem_default_are_nodes_equal -> 0xc4e9 +rtl: esyms: rtems_filesystem_default_close -> 0xc511 +rtl: esyms: rtems_filesystem_default_eval_path -> 0xc527 +rtl: esyms: rtems_filesystem_default_fcntl -> 0xc547 +rtl: esyms: rtems_filesystem_default_freenode -> 0xc55f +rtl: esyms: rtems_filesystem_default_fstat -> 0xc573 +rtl: esyms: rtems_filesystem_default_fsunmount -> 0xc593 +rtl: esyms: rtems_filesystem_default_fsync_or_fdatasync -> 0xc5a7 +rtl: esyms: rtems_filesystem_default_fsync_or_fdatasync_success -> 0xc5c5 +rtl: esyms: rtems_filesystem_default_ftruncate -> 0xc5db +rtl: esyms: rtems_filesystem_default_ftruncate_directory -> 0xc5fd +rtl: esyms: rtems_filesystem_default_ioctl -> 0xc61f +rtl: esyms: rtems_filesystem_default_kqfilter -> 0xc641 +rtl: esyms: rtems_filesystem_default_lock -> 0xc68d +rtl: esyms: rtems_filesystem_default_lseek -> 0xc6b5 +rtl: esyms: rtems_filesystem_default_lseek_directory -> 0xc6dd +rtl: esyms: rtems_filesystem_default_lseek_file -> 0xc72b +rtl: esyms: rtems_filesystem_default_open -> 0xc84d +rtl: esyms: rtems_filesystem_default_pathconf -> 0x50bc0 +rtl: esyms: rtems_filesystem_default_poll -> 0xc869 +rtl: esyms: rtems_filesystem_default_read -> 0xc881 +rtl: esyms: rtems_filesystem_default_readv -> 0xc8a3 +rtl: esyms: rtems_filesystem_default_statvfs -> 0xc91d +rtl: esyms: rtems_filesystem_default_unlock -> 0xc6a1 +rtl: esyms: rtems_filesystem_default_write -> 0xc93d +rtl: esyms: rtems_filesystem_default_writev -> 0xc95f +rtl: esyms: rtems_filesystem_do_unmount -> 0x12b2b +rtl: esyms: rtems_filesystem_eval_path_check_access -> 0x117f7 +rtl: esyms: rtems_filesystem_eval_path_cleanup -> 0x11ff7 +rtl: esyms: rtems_filesystem_eval_path_cleanup_with_parent -> 0x1202f +rtl: esyms: rtems_filesystem_eval_path_continue -> 0x11ce5 +rtl: esyms: rtems_filesystem_eval_path_eat_delimiter -> 0x12bbb +rtl: esyms: rtems_filesystem_eval_path_error -> 0x11f69 +rtl: esyms: rtems_filesystem_eval_path_generic -> 0x12235 +rtl: esyms: rtems_filesystem_eval_path_next_token -> 0x12c7b +rtl: esyms: rtems_filesystem_eval_path_recursive -> 0x11ec9 +rtl: esyms: rtems_filesystem_eval_path_restart -> 0x1204d +rtl: esyms: rtems_filesystem_eval_path_start -> 0x11ddd +rtl: esyms: rtems_filesystem_eval_path_start_with_parent -> 0x11e19 +rtl: esyms: rtems_filesystem_eval_path_start_with_root_and_current -> 0x11d7b +rtl: esyms: rtems_filesystem_get_mount_handler -> 0x10819 +rtl: esyms: rtems_filesystem_global_location_assign -> 0x128fd rtl: esyms: rtems_filesystem_global_location_null -> 0x101568 -rtl: esyms: rtems_filesystem_global_location_obtain -> 0x12311 -rtl: esyms: rtems_filesystem_global_location_release -> 0x12381 -rtl: esyms: rtems_filesystem_handlers_default -> 0x4b888 -rtl: esyms: rtems_filesystem_initialize -> 0xf035 -rtl: esyms: rtems_filesystem_iterate -> 0x10023 -rtl: esyms: rtems_filesystem_location_clone -> 0xf1cf -rtl: esyms: rtems_filesystem_location_copy -> 0x12125 -rtl: esyms: rtems_filesystem_location_copy_and_detach -> 0x12183 -rtl: esyms: rtems_filesystem_location_detach -> 0x12167 -rtl: esyms: rtems_filesystem_location_free -> 0xf36f -rtl: esyms: rtems_filesystem_location_remove_from_mt_entry -> 0x123ed -rtl: esyms: rtems_filesystem_location_transform_to_global -> 0x121a9 -rtl: esyms: rtems_filesystem_mknod -> 0xfe15 +rtl: esyms: rtems_filesystem_global_location_obtain -> 0x12a09 +rtl: esyms: rtems_filesystem_global_location_release -> 0x12a79 +rtl: esyms: rtems_filesystem_handlers_default -> 0x4ffe8 +rtl: esyms: rtems_filesystem_initialize -> 0xf73d +rtl: esyms: rtems_filesystem_iterate -> 0x1072b +rtl: esyms: rtems_filesystem_location_clone -> 0xf8d7 +rtl: esyms: rtems_filesystem_location_copy -> 0x1281d +rtl: esyms: rtems_filesystem_location_copy_and_detach -> 0x1287b +rtl: esyms: rtems_filesystem_location_detach -> 0x1285f +rtl: esyms: rtems_filesystem_location_free -> 0xfa77 +rtl: esyms: rtems_filesystem_location_remove_from_mt_entry -> 0x12ae5 +rtl: esyms: rtems_filesystem_location_transform_to_global -> 0x128a1 +rtl: esyms: rtems_filesystem_mknod -> 0x1051d rtl: esyms: rtems_filesystem_mount_table -> 0x1015ec -rtl: esyms: rtems_filesystem_null_handlers -> 0x4c150 +rtl: esyms: rtems_filesystem_null_handlers -> 0x508f4 rtl: esyms: rtems_filesystem_null_mt_entry -> 0x101528 -rtl: esyms: rtems_filesystem_root_configuration -> 0x3b628 -rtl: esyms: rtems_filesystem_table -> 0x3b5b0 +rtl: esyms: rtems_filesystem_root_configuration -> 0x3d288 +rtl: esyms: rtems_filesystem_table -> 0x3d210 rtl: esyms: rtems_global_user_env -> 0x10158c -rtl: esyms: rtems_heap_allocate_aligned_with_boundary -> 0xfc45 -rtl: esyms: rtems_heap_null_extend -> 0x10faf -rtl: esyms: rtems_initialize_executive -> 0x2309f -rtl: esyms: rtems_interrupt_handler_install -> 0xbac9 -rtl: esyms: rtems_io_close -> 0x23171 -rtl: esyms: rtems_io_control -> 0x231c9 -rtl: esyms: rtems_io_initialize -> 0x23221 -rtl: esyms: rtems_io_open -> 0x23277 -rtl: esyms: rtems_io_read -> 0x232cf -rtl: esyms: rtems_io_register_name -> 0xeb5d -rtl: esyms: rtems_io_write -> 0x23327 -rtl: esyms: rtems_libio_allocate -> 0xf611 -rtl: esyms: rtems_libio_exit -> 0xf6a9 -rtl: esyms: rtems_libio_fcntl_flags -> 0xf5c3 -rtl: esyms: rtems_libio_free -> 0xf667 -rtl: esyms: rtems_libio_free_user_env -> 0x10c47 -rtl: esyms: rtems_libio_iop_freelist -> 0x1034fc -rtl: esyms: rtems_libio_iops -> 0x102d98 -rtl: esyms: rtems_libio_number_iops -> 0x3b5ac -rtl: esyms: rtems_libio_post_driver -> 0x10afd -rtl: esyms: rtems_libio_semaphore -> 0x103500 -rtl: esyms: rtems_malloc_dirty_helper -> 0x1027a4 -rtl: esyms: rtems_malloc_extend_handler -> 0x3b690 +rtl: esyms: rtems_heap_allocate_aligned_with_boundary -> 0x1034d +rtl: esyms: rtems_heap_null_extend -> 0x116a7 +rtl: esyms: rtems_initialize_executive -> 0x23cbd +rtl: esyms: rtems_interrupt_handler_install -> 0xc193 +rtl: esyms: rtems_io_close -> 0x23d91 +rtl: esyms: rtems_io_control -> 0x23de9 +rtl: esyms: rtems_io_initialize -> 0x23e41 +rtl: esyms: rtems_io_open -> 0x23e97 +rtl: esyms: rtems_io_read -> 0x23eef +rtl: esyms: rtems_io_register_name -> 0xf265 +rtl: esyms: rtems_io_write -> 0x23f47 +rtl: esyms: rtems_libio_allocate -> 0xfd19 +rtl: esyms: rtems_libio_exit -> 0xfdb1 +rtl: esyms: rtems_libio_fcntl_flags -> 0xfccb +rtl: esyms: rtems_libio_free -> 0xfd6f +rtl: esyms: rtems_libio_free_user_env -> 0x1133f +rtl: esyms: rtems_libio_iop_freelist -> 0x1035e0 +rtl: esyms: rtems_libio_iops -> 0x102e78 +rtl: esyms: rtems_libio_number_iops -> 0x3d20c +rtl: esyms: rtems_libio_post_driver -> 0x111f5 +rtl: esyms: rtems_libio_semaphore -> 0x1035e4 +rtl: esyms: rtems_malloc_dirty_helper -> 0x102884 +rtl: esyms: rtems_malloc_extend_handler -> 0x3d2f0 rtl: esyms: rtems_minimum_stack_size -> 0x101484 -rtl: esyms: rtems_printf -> 0x10bad -rtl: esyms: rtems_putc -> 0x10fc7 -rtl: esyms: rtems_rtl_alloc_del -> 0x158b9 -rtl: esyms: rtems_rtl_alloc_heap -> 0x15717 -rtl: esyms: rtems_rtl_alloc_initialise -> 0x157f3 -rtl: esyms: rtems_rtl_alloc_module_del -> 0x159ff -rtl: esyms: rtems_rtl_alloc_module_new -> 0x1591d -rtl: esyms: rtems_rtl_alloc_new -> 0x15837 -rtl: esyms: rtems_rtl_base_sym_global_add -> 0x1cbef -rtl: esyms: rtems_rtl_baseimage -> 0x1cc4d -rtl: esyms: rtems_rtl_chain_iterate -> 0x15b35 -rtl: esyms: rtems_rtl_check_handle -> 0x1c795 -rtl: esyms: rtems_rtl_elf_file_check -> 0x16d15 -rtl: esyms: rtems_rtl_elf_file_load -> 0x16fdd -rtl: esyms: rtems_rtl_elf_file_sig -> 0x171a5 -rtl: esyms: rtems_rtl_elf_find_symbol -> 0x15e31 -rtl: esyms: rtems_rtl_elf_load_details -> 0x16d9d -rtl: esyms: rtems_rtl_elf_rel_resolve_sym -> 0x17471 -rtl: esyms: rtems_rtl_elf_relocate_rel -> 0x174ad -rtl: esyms: rtems_rtl_elf_relocate_rela -> 0x17487 -rtl: esyms: rtems_rtl_find_file -> 0x1725f -rtl: esyms: rtems_rtl_find_obj -> 0x1c7f9 -rtl: esyms: rtems_rtl_get_error -> 0x171fb -rtl: esyms: rtems_rtl_global_symbols -> 0x1c559 -rtl: esyms: rtems_rtl_load_object -> 0x1c8e9 -rtl: esyms: rtems_rtl_lock -> 0x1c6f5 -rtl: esyms: rtems_rtl_match_name -> 0x18c49 -rtl: esyms: rtems_rtl_obj_add_section -> 0x18d5f -rtl: esyms: rtems_rtl_obj_alloc -> 0x18771 -rtl: esyms: rtems_rtl_obj_bss_alignment -> 0x18f91 -rtl: esyms: rtems_rtl_obj_bss_size -> 0x18f77 -rtl: esyms: rtems_rtl_obj_cache_close -> 0x17d4f -rtl: esyms: rtems_rtl_obj_cache_flush -> 0x17da5 -rtl: esyms: rtems_rtl_obj_cache_open -> 0x17ced -rtl: esyms: rtems_rtl_obj_cache_read -> 0x17df3 -rtl: esyms: rtems_rtl_obj_cache_read_byval -> 0x181d7 -rtl: esyms: rtems_rtl_obj_caches -> 0x1c5c1 -rtl: esyms: rtems_rtl_obj_caches_flush -> 0x1c655 -rtl: esyms: rtems_rtl_obj_comp -> 0x1c6a1 -rtl: esyms: rtems_rtl_obj_comp_close -> 0x182a5 -rtl: esyms: rtems_rtl_obj_comp_open -> 0x18237 -rtl: esyms: rtems_rtl_obj_comp_read -> 0x18331 -rtl: esyms: rtems_rtl_obj_comp_set -> 0x182f1 -rtl: esyms: rtems_rtl_obj_const_alignment -> 0x18f29 -rtl: esyms: rtems_rtl_obj_const_size -> 0x18f0f -rtl: esyms: rtems_rtl_obj_data_alignment -> 0x18f5d -rtl: esyms: rtems_rtl_obj_data_size -> 0x18f43 -rtl: esyms: rtems_rtl_obj_file_load -> 0x1992d -rtl: esyms: rtems_rtl_obj_find_file -> 0x18cd5 -rtl: esyms: rtems_rtl_obj_find_section -> 0x18e41 -rtl: esyms: rtems_rtl_obj_find_section_by_index -> 0x18ea9 -rtl: esyms: rtems_rtl_obj_free -> 0x187f5 -rtl: esyms: rtems_rtl_obj_load -> 0x199a5 -rtl: esyms: rtems_rtl_obj_load_sections -> 0x1922d -rtl: esyms: rtems_rtl_obj_load_symbols -> 0x190d7 -rtl: esyms: rtems_rtl_obj_relocate -> 0x18fab -rtl: esyms: rtems_rtl_obj_relocate_unresolved -> 0x162cb -rtl: esyms: rtems_rtl_obj_run_ctors -> 0x19485 -rtl: esyms: rtems_rtl_obj_run_dtors -> 0x1949d -rtl: esyms: rtems_rtl_obj_synchronize_cache -> 0x1907d -rtl: esyms: rtems_rtl_obj_text_alignment -> 0x18ef5 -rtl: esyms: rtems_rtl_obj_text_size -> 0x18edb -rtl: esyms: rtems_rtl_obj_unload -> 0x19a75 -rtl: esyms: rtems_rtl_parse_name -> 0x1889d -rtl: esyms: rtems_rtl_path_append -> 0x1cbd5 -rtl: esyms: rtems_rtl_rap_file_check -> 0x1a6dd -rtl: esyms: rtems_rtl_rap_file_load -> 0x1a775 -rtl: esyms: rtems_rtl_rap_file_sig -> 0x1ad6d -rtl: esyms: rtems_rtl_set_error -> 0x171bb -rtl: esyms: rtems_rtl_strdup -> 0x1ad83 -rtl: esyms: rtems_rtl_symbol_global_add -> 0x1b089 -rtl: esyms: rtems_rtl_symbol_global_find -> 0x1b299 -rtl: esyms: rtems_rtl_symbol_obj_add -> 0x1b3b5 -rtl: esyms: rtems_rtl_symbol_obj_erase -> 0x1b42b -rtl: esyms: rtems_rtl_symbol_obj_erase_local -> 0x1b3f5 -rtl: esyms: rtems_rtl_symbol_obj_find -> 0x1b31b -rtl: esyms: rtems_rtl_symbol_table_close -> 0x1b06d -rtl: esyms: rtems_rtl_symbol_table_open -> 0x1afe5 -rtl: esyms: rtems_rtl_trace -> 0x1b4a5 -rtl: esyms: rtems_rtl_trace_set_mask -> 0x1b4d5 -rtl: esyms: rtems_rtl_unload_object -> 0x1c9cf -rtl: esyms: rtems_rtl_unlock -> 0x1c74f -rtl: esyms: rtems_rtl_unresolved -> 0x1c58d -rtl: esyms: rtems_rtl_unresolved_add -> 0x1bd27 -rtl: esyms: rtems_rtl_unresolved_interate -> 0x1bc9d -rtl: esyms: rtems_rtl_unresolved_resolve -> 0x1bed9 -rtl: esyms: rtems_rtl_unresolved_table_close -> 0x1bc55 -rtl: esyms: rtems_rtl_unresolved_table_open -> 0x1bc25 -rtl: esyms: rtems_semaphore_create -> 0x20b1b -rtl: esyms: rtems_semaphore_delete -> 0x20fef -rtl: esyms: rtems_semaphore_obtain -> 0x2188f -rtl: esyms: rtems_semaphore_release -> 0x22145 -rtl: esyms: rtems_shutdown_executive -> 0x230e1 -rtl: esyms: rtems_status_code_to_errno -> 0x222ad -rtl: esyms: rtems_task_create -> 0x22579 -rtl: esyms: rtems_task_delete -> 0x227f9 -rtl: esyms: rtems_task_start -> 0x22ad3 -rtl: esyms: rtems_task_wake_after -> 0x22d63 -rtl: esyms: rtems_termios_baud_table -> 0x4c674 -rtl: esyms: rtems_termios_close -> 0x1314d -rtl: esyms: rtems_termios_enqueue_raw_characters -> 0x143fb -rtl: esyms: rtems_termios_initialize -> 0x149ed -rtl: esyms: rtems_termios_ioctl -> 0x133a9 -rtl: esyms: rtems_termios_linesw -> 0x1029c8 -rtl: esyms: rtems_termios_number_to_baud -> 0x1497b -rtl: esyms: rtems_termios_open -> 0x12f91 -rtl: esyms: rtems_termios_puts -> 0x1377b -rtl: esyms: rtems_termios_read -> 0x142b3 -rtl: esyms: rtems_termios_set_initial_baud -> 0x149a7 -rtl: esyms: rtems_termios_ttyMutex -> 0x103504 -rtl: esyms: rtems_termios_write -> 0x13aa1 -rtl: esyms: rtems_test_fatal_extension -> 0x31a81 -rtl: esyms: rtems_test_name -> 0x3b550 -rtl: esyms: setlocale -> 0x33fe1 -rtl: esyms: sigemptyset -> 0x1f893 -rtl: esyms: sprintf -> 0x35485 -rtl: esyms: stat -> 0x10fe9 -rtl: esyms: strchr -> 0x35579 -rtl: esyms: strcmp -> 0x35669 -rtl: esyms: strcpy -> 0x3593d -rtl: esyms: strdup -> 0x35a01 -rtl: esyms: strerror -> 0x35ead -rtl: esyms: strlen -> 0x35f01 -rtl: esyms: strncmp -> 0x35fdd -rtl: esyms: strncpy -> 0x36079 -rtl: esyms: strrchr -> 0x360e9 -rtl: esyms: strtoul -> 0x36265 -rtl: esyms: symlink -> 0x125cf -rtl: esyms: time -> 0x388e1 -rtl: esyms: unlink -> 0x14a5f -rtl: esyms: vfiprintf -> 0x396d5 -rtl: esyms: vfprintf -> 0x3b17d -rtl: esyms: vprintk -> 0x14ae5 -rtl: esyms: vsnprintf -> 0x3b299 -rtl: esyms: wcrtomb -> 0x3b3d9 -rtl: esyms: write -> 0x14fad -rtl: esyms: zynq_uart_fns -> 0x4b864 -rtl: esyms: _ZGVNSt10moneypunctIcLb0EE2idE -> 0x10288c -rtl: esyms: _ZGVNSt10moneypunctIcLb1EE2idE -> 0x102888 -rtl: esyms: _ZGVNSt10moneypunctIwLb0EE2idE -> 0x1028bc -rtl: esyms: _ZGVNSt10moneypunctIwLb1EE2idE -> 0x1028b8 -rtl: esyms: _ZGVNSt11__timepunctIcE2idE -> 0x102870 -rtl: esyms: _ZGVNSt11__timepunctIwE2idE -> 0x1028a0 -rtl: esyms: _ZGVNSt7__cxx1110moneypunctIcLb0EE2idE -> 0x10283c -rtl: esyms: _ZGVNSt7__cxx1110moneypunctIcLb1EE2idE -> 0x102838 -rtl: esyms: _ZGVNSt7__cxx1110moneypunctIwLb0EE2idE -> 0x10285c -rtl: esyms: _ZGVNSt7__cxx1110moneypunctIwLb1EE2idE -> 0x102858 -rtl: esyms: _ZGVNSt7__cxx117collateIcE2idE -> 0x102820 -rtl: esyms: _ZGVNSt7__cxx117collateIwE2idE -> 0x102840 -rtl: esyms: _ZGVNSt7__cxx118messagesIcE2idE -> 0x102824 -rtl: esyms: _ZGVNSt7__cxx118messagesIwE2idE -> 0x102844 -rtl: esyms: _ZGVNSt7__cxx118numpunctIcE2idE -> 0x10282c -rtl: esyms: _ZGVNSt7__cxx118numpunctIwE2idE -> 0x10284c -rtl: esyms: _ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102828 -rtl: esyms: _ZGVNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102848 -rtl: esyms: _ZGVNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102834 -rtl: esyms: _ZGVNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102854 -rtl: esyms: _ZGVNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102830 -rtl: esyms: _ZGVNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102850 -rtl: esyms: _ZGVNSt7collateIcE2idE -> 0x102860 -rtl: esyms: _ZGVNSt7collateIwE2idE -> 0x102890 -rtl: esyms: _ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102878 -rtl: esyms: _ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x1028a8 -rtl: esyms: _ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102874 -rtl: esyms: _ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x1028a4 -rtl: esyms: _ZGVNSt8messagesIcE2idE -> 0x102864 -rtl: esyms: _ZGVNSt8messagesIwE2idE -> 0x102894 -rtl: esyms: _ZGVNSt8numpunctIcE2idE -> 0x10287c -rtl: esyms: _ZGVNSt8numpunctIwE2idE -> 0x1028ac -rtl: esyms: _ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102868 -rtl: esyms: _ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102898 -rtl: esyms: _ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x10286c -rtl: esyms: _ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x10289c -rtl: esyms: _ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102884 -rtl: esyms: _ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x1028b4 -rtl: esyms: _ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102880 -rtl: esyms: _ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x1028b0 -rtl: esyms: _ZN17__eh_globals_initD1Ev -> 0x14d9 -rtl: esyms: _ZN17__eh_globals_initD2Ev -> 0x14d9 -rtl: esyms: _ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag -> 0x8899 -rtl: esyms: _ZNSs4_Rep10_M_destroyERKSaIcE -> 0x8895 -rtl: esyms: _ZNSs4_Rep20_S_empty_rep_storageE -> 0x102810 -rtl: esyms: _ZNSs4_Rep9_S_createEjjRKSaIcE -> 0x87e9 -rtl: esyms: _ZNSsC1EPKcRKSaIcE -> 0x88e9 -rtl: esyms: _ZNSsC1EPKcjRKSaIcE -> 0x88cd -rtl: esyms: _ZNSsC2EPKcRKSaIcE -> 0x88e9 -rtl: esyms: _ZNSsC2EPKcjRKSaIcE -> 0x88cd -rtl: esyms: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERjj -> 0x8b19 -rtl: esyms: __aeabi_idiv0 -> 0x91e1 -rtl: esyms: __aeabi_ldiv0 -> 0x91e1 -rtl: esyms: __aeabi_unwind_cpp_pr1 -> 0x9ba5 -rtl: esyms: __aeabi_unwind_cpp_pr2 -> 0x9ba9 -rtl: esyms: a9mpcore_clock_periphclk -> 0xa3cf -rtl: esyms: rtems_rtl_base_global_syms_init -> 0xdb1 -rtl: esyms: zynq_setup_mmu_and_cache -> 0x7a9 -rtl: esyms: zynq_uart_input_clock -> 0xbb41 +rtl: esyms: rtems_printf -> 0x112a5 +rtl: esyms: rtems_putc -> 0x116bf +rtl: esyms: rtems_rtl_alloc_del -> 0x1600b +rtl: esyms: rtems_rtl_alloc_heap -> 0x15e69 +rtl: esyms: rtems_rtl_alloc_initialise -> 0x15f45 +rtl: esyms: rtems_rtl_alloc_module_del -> 0x1618f +rtl: esyms: rtems_rtl_alloc_module_new -> 0x1606f +rtl: esyms: rtems_rtl_alloc_new -> 0x15f89 +rtl: esyms: rtems_rtl_base_sym_global_add -> 0x1d897 +rtl: esyms: rtems_rtl_baseimage -> 0x1d8f5 +rtl: esyms: rtems_rtl_chain_iterate -> 0x162d9 +rtl: esyms: rtems_rtl_check_handle -> 0x1d427 +rtl: esyms: rtems_rtl_elf_file_check -> 0x174f5 +rtl: esyms: rtems_rtl_elf_file_load -> 0x177eb +rtl: esyms: rtems_rtl_elf_file_sig -> 0x179e1 +rtl: esyms: rtems_rtl_elf_file_unload -> 0x179c9 +rtl: esyms: rtems_rtl_elf_find_symbol -> 0x165d7 +rtl: esyms: rtems_rtl_elf_rel_resolve_sym -> 0x17e05 +rtl: esyms: rtems_rtl_elf_relocate_rel -> 0x17e41 +rtl: esyms: rtems_rtl_elf_relocate_rela -> 0x17e1b +rtl: esyms: rtems_rtl_elf_section_flags -> 0x17dd5 +rtl: esyms: rtems_rtl_elf_unwind_deregister -> 0x186e9 +rtl: esyms: rtems_rtl_elf_unwind_parse -> 0x186b9 +rtl: esyms: rtems_rtl_elf_unwind_register -> 0x186d3 +rtl: esyms: rtems_rtl_find_file -> 0x17ab5 +rtl: esyms: rtems_rtl_find_obj -> 0x1d48b +rtl: esyms: rtems_rtl_get_error -> 0x17a37 +rtl: esyms: rtems_rtl_global_symbols -> 0x1d1eb +rtl: esyms: rtems_rtl_load_object -> 0x1d57b +rtl: esyms: rtems_rtl_lock -> 0x1d387 +rtl: esyms: rtems_rtl_match_name -> 0x19729 +rtl: esyms: rtems_rtl_obj_add_section -> 0x1983f +rtl: esyms: rtems_rtl_obj_alloc -> 0x19237 +rtl: esyms: rtems_rtl_obj_bss_alignment -> 0x19aad +rtl: esyms: rtems_rtl_obj_bss_size -> 0x19a93 +rtl: esyms: rtems_rtl_obj_cache_close -> 0x187ff +rtl: esyms: rtems_rtl_obj_cache_flush -> 0x18855 +rtl: esyms: rtems_rtl_obj_cache_open -> 0x1879d +rtl: esyms: rtems_rtl_obj_cache_read -> 0x188a3 +rtl: esyms: rtems_rtl_obj_cache_read_byval -> 0x18c87 +rtl: esyms: rtems_rtl_obj_caches -> 0x1d253 +rtl: esyms: rtems_rtl_obj_caches_flush -> 0x1d2e7 +rtl: esyms: rtems_rtl_obj_comp -> 0x1d333 +rtl: esyms: rtems_rtl_obj_comp_close -> 0x18d55 +rtl: esyms: rtems_rtl_obj_comp_open -> 0x18ce7 +rtl: esyms: rtems_rtl_obj_comp_read -> 0x18de1 +rtl: esyms: rtems_rtl_obj_comp_set -> 0x18da1 +rtl: esyms: rtems_rtl_obj_const_alignment -> 0x19a45 +rtl: esyms: rtems_rtl_obj_const_size -> 0x199f7 +rtl: esyms: rtems_rtl_obj_data_alignment -> 0x19a79 +rtl: esyms: rtems_rtl_obj_data_size -> 0x19a5f +rtl: esyms: rtems_rtl_obj_eh_alignment -> 0x19a11 +rtl: esyms: rtems_rtl_obj_eh_size -> 0x19a2b +rtl: esyms: rtems_rtl_obj_find_file -> 0x197b5 +rtl: esyms: rtems_rtl_obj_find_section -> 0x19929 +rtl: esyms: rtems_rtl_obj_find_section_by_index -> 0x19991 +rtl: esyms: rtems_rtl_obj_free -> 0x192c3 +rtl: esyms: rtems_rtl_obj_load -> 0x1a591 +rtl: esyms: rtems_rtl_obj_load_sections -> 0x19d6b +rtl: esyms: rtems_rtl_obj_load_symbols -> 0x19c0b +rtl: esyms: rtems_rtl_obj_relocate -> 0x19ac7 +rtl: esyms: rtems_rtl_obj_relocate_unresolved -> 0x16a71 +rtl: esyms: rtems_rtl_obj_run_ctors -> 0x1a039 +rtl: esyms: rtems_rtl_obj_run_dtors -> 0x1a051 +rtl: esyms: rtems_rtl_obj_synchronize_cache -> 0x19ba9 +rtl: esyms: rtems_rtl_obj_text_alignment -> 0x199dd +rtl: esyms: rtems_rtl_obj_text_size -> 0x199c3 +rtl: esyms: rtems_rtl_obj_unload -> 0x1a655 +rtl: esyms: rtems_rtl_parse_name -> 0x1937d +rtl: esyms: rtems_rtl_path_append -> 0x1d87d +rtl: esyms: rtems_rtl_rap_file_check -> 0x1b2d7 +rtl: esyms: rtems_rtl_rap_file_load -> 0x1b36f +rtl: esyms: rtems_rtl_rap_file_sig -> 0x1b989 +rtl: esyms: rtems_rtl_rap_file_unload -> 0x1b973 +rtl: esyms: rtems_rtl_set_error -> 0x179f7 +rtl: esyms: rtems_rtl_strdup -> 0x1b99f +rtl: esyms: rtems_rtl_symbol_global_add -> 0x1bcbb +rtl: esyms: rtems_rtl_symbol_global_find -> 0x1becb +rtl: esyms: rtems_rtl_symbol_obj_add -> 0x1bfe7 +rtl: esyms: rtems_rtl_symbol_obj_erase -> 0x1c05d +rtl: esyms: rtems_rtl_symbol_obj_erase_local -> 0x1c027 +rtl: esyms: rtems_rtl_symbol_obj_find -> 0x1bf4d +rtl: esyms: rtems_rtl_symbol_table_close -> 0x1bc9f +rtl: esyms: rtems_rtl_symbol_table_open -> 0x1bc17 +rtl: esyms: rtems_rtl_trace -> 0x1c0d7 +rtl: esyms: rtems_rtl_trace_set_mask -> 0x1c107 +rtl: esyms: rtems_rtl_unload_object -> 0x1d66d +rtl: esyms: rtems_rtl_unlock -> 0x1d3e1 +rtl: esyms: rtems_rtl_unresolved -> 0x1d21f +rtl: esyms: rtems_rtl_unresolved_add -> 0x1c959 +rtl: esyms: rtems_rtl_unresolved_interate -> 0x1c8cf +rtl: esyms: rtems_rtl_unresolved_resolve -> 0x1cb0b +rtl: esyms: rtems_rtl_unresolved_table_close -> 0x1c887 +rtl: esyms: rtems_rtl_unresolved_table_open -> 0x1c857 +rtl: esyms: rtems_semaphore_create -> 0x2183b +rtl: esyms: rtems_semaphore_delete -> 0x21ccb +rtl: esyms: rtems_semaphore_obtain -> 0x2256f +rtl: esyms: rtems_semaphore_release -> 0x22d09 +rtl: esyms: rtems_shutdown_executive -> 0x23d01 +rtl: esyms: rtems_status_code_to_errno -> 0x22e75 +rtl: esyms: rtems_task_create -> 0x23177 +rtl: esyms: rtems_task_delete -> 0x23423 +rtl: esyms: rtems_task_start -> 0x23729 +rtl: esyms: rtems_task_wake_after -> 0x23967 +rtl: esyms: rtems_termios_baud_table -> 0x50e20 +rtl: esyms: rtems_termios_close -> 0x13881 +rtl: esyms: rtems_termios_enqueue_raw_characters -> 0x14b4d +rtl: esyms: rtems_termios_initialize -> 0x1513f +rtl: esyms: rtems_termios_ioctl -> 0x13ac1 +rtl: esyms: rtems_termios_linesw -> 0x102aa8 +rtl: esyms: rtems_termios_number_to_baud -> 0x150cd +rtl: esyms: rtems_termios_open -> 0x136ed +rtl: esyms: rtems_termios_puts -> 0x13ec1 +rtl: esyms: rtems_termios_read -> 0x14aa3 +rtl: esyms: rtems_termios_set_initial_baud -> 0x150f9 +rtl: esyms: rtems_termios_ttyMutex -> 0x1035e8 +rtl: esyms: rtems_termios_write -> 0x1422b +rtl: esyms: rtems_test_fatal_extension -> 0x33601 +rtl: esyms: rtems_test_name -> 0x3d1b0 +rtl: esyms: setlocale -> 0x35b89 +rtl: esyms: sigemptyset -> 0x204cf +rtl: esyms: sprintf -> 0x37085 +rtl: esyms: stat -> 0x116e1 +rtl: esyms: strchr -> 0x37179 +rtl: esyms: strcmp -> 0x37269 +rtl: esyms: strcpy -> 0x3753d +rtl: esyms: strdup -> 0x37601 +rtl: esyms: strerror -> 0x37aad +rtl: esyms: strerror_l -> 0x37ac5 +rtl: esyms: strlen -> 0x37b01 +rtl: esyms: strncmp -> 0x37bdd +rtl: esyms: strncpy -> 0x37c79 +rtl: esyms: strrchr -> 0x37ce9 +rtl: esyms: strtoul -> 0x37ea1 +rtl: esyms: strtoul_l -> 0x37e81 +rtl: esyms: symlink -> 0x12cc7 +rtl: esyms: time -> 0x3a539 +rtl: esyms: unlink -> 0x151b1 +rtl: esyms: vfiprintf -> 0x3b32d +rtl: esyms: vfprintf -> 0x3cdd5 +rtl: esyms: vprintk -> 0x15237 +rtl: esyms: vsnprintf -> 0x3cef1 +rtl: esyms: wcrtomb -> 0x3d02d +rtl: esyms: write -> 0x156ff +rtl: esyms: zynq_uart_fns -> 0x4ffc4 +rtl: esyms: zynq_uart_reset_tx_flush -> 0xc495 +rtl: esyms: _ZGVNSt10moneypunctIcLb0EE2idE -> 0x102968 +rtl: esyms: _ZGVNSt10moneypunctIcLb1EE2idE -> 0x102964 +rtl: esyms: _ZGVNSt10moneypunctIwLb0EE2idE -> 0x102998 +rtl: esyms: _ZGVNSt10moneypunctIwLb1EE2idE -> 0x102994 +rtl: esyms: _ZGVNSt11__timepunctIcE2idE -> 0x10294c +rtl: esyms: _ZGVNSt11__timepunctIwE2idE -> 0x10297c +rtl: esyms: _ZGVNSt7__cxx1110moneypunctIcLb0EE2idE -> 0x102918 +rtl: esyms: _ZGVNSt7__cxx1110moneypunctIcLb1EE2idE -> 0x102914 +rtl: esyms: _ZGVNSt7__cxx1110moneypunctIwLb0EE2idE -> 0x102938 +rtl: esyms: _ZGVNSt7__cxx1110moneypunctIwLb1EE2idE -> 0x102934 +rtl: esyms: _ZGVNSt7__cxx117collateIcE2idE -> 0x1028fc +rtl: esyms: _ZGVNSt7__cxx117collateIwE2idE -> 0x10291c +rtl: esyms: _ZGVNSt7__cxx118messagesIcE2idE -> 0x102900 +rtl: esyms: _ZGVNSt7__cxx118messagesIwE2idE -> 0x102920 +rtl: esyms: _ZGVNSt7__cxx118numpunctIcE2idE -> 0x102908 +rtl: esyms: _ZGVNSt7__cxx118numpunctIwE2idE -> 0x102928 +rtl: esyms: _ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102904 +rtl: esyms: _ZGVNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102924 +rtl: esyms: _ZGVNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102910 +rtl: esyms: _ZGVNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102930 +rtl: esyms: _ZGVNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x10290c +rtl: esyms: _ZGVNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x10292c +rtl: esyms: _ZGVNSt7collateIcE2idE -> 0x10293c +rtl: esyms: _ZGVNSt7collateIwE2idE -> 0x10296c +rtl: esyms: _ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102954 +rtl: esyms: _ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102984 +rtl: esyms: _ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102950 +rtl: esyms: _ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102980 +rtl: esyms: _ZGVNSt8messagesIcE2idE -> 0x102940 +rtl: esyms: _ZGVNSt8messagesIwE2idE -> 0x102970 +rtl: esyms: _ZGVNSt8numpunctIcE2idE -> 0x102958 +rtl: esyms: _ZGVNSt8numpunctIwE2idE -> 0x102988 +rtl: esyms: _ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102944 +rtl: esyms: _ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102974 +rtl: esyms: _ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102948 +rtl: esyms: _ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102978 +rtl: esyms: _ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x102960 +rtl: esyms: _ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x102990 +rtl: esyms: _ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE -> 0x10295c +rtl: esyms: _ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE -> 0x10298c +rtl: esyms: _ZN16dl_test_throw_meC1EPKc -> 0xdc1 +rtl: esyms: _ZN16dl_test_throw_meC2EPKc -> 0xdc1 +rtl: esyms: _ZN16dl_test_throw_meD1Ev -> 0xddf +rtl: esyms: _ZN16dl_test_throw_meD2Ev -> 0xddf +rtl: esyms: _ZN17__eh_globals_initD1Ev -> 0x1691 +rtl: esyms: _ZN17__eh_globals_initD2Ev -> 0x1691 +rtl: esyms: _ZNK16dl_test_throw_me4whatEv -> 0xdf5 +rtl: esyms: _ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag -> 0x8efd +rtl: esyms: _ZNSs4_Rep10_M_destroyERKSaIcE -> 0x8ef9 +rtl: esyms: _ZNSs4_Rep20_S_empty_rep_storageE -> 0x1028ec +rtl: esyms: _ZNSs4_Rep9_S_createEjjRKSaIcE -> 0x8e4d +rtl: esyms: _ZNSsC1EPKcRKSaIcE -> 0x8f4d +rtl: esyms: _ZNSsC1EPKcjRKSaIcE -> 0x8f31 +rtl: esyms: _ZNSsC2EPKcRKSaIcE -> 0x8f4d +rtl: esyms: _ZNSsC2EPKcjRKSaIcE -> 0x8f31 +rtl: esyms: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERjj -> 0x917d +rtl: esyms: _ZTI16dl_test_throw_me -> 0x3d510 +rtl: esyms: _ZTS16dl_test_throw_me -> 0x3d518 +rtl: esyms: __aeabi_idiv0 -> 0x9849 +rtl: esyms: __aeabi_ldiv0 -> 0x9849 +rtl: esyms: __aeabi_unwind_cpp_pr1 -> 0xa20d +rtl: esyms: __aeabi_unwind_cpp_pr2 -> 0xa211 +rtl: esyms: a9mpcore_clock_periphclk -> 0xaa4f +rtl: esyms: rtems_rtl_base_global_syms_init -> 0xf69 +rtl: esyms: zynq_setup_mmu_and_cache -> 0x7dd +rtl: esyms: zynq_uart_input_clock -> 0xc20b rtl: loading '/dl-o5.o' -rtl: alloc: new: OBJECT addr=0x120840 size=9 +rtl: alloc: new: OBJECT addr=0x13c478 size=9 rtl: alloc: del: OBJECT addr=0x0 -rtl: alloc: new: OBJECT addr=0x120870 size=136 -rtl: alloc: new: OBJECT addr=0x120920 size=9 -rtl: alloc: new: OBJECT addr=0x120950 size=9 -rtl: section header: 0: offset=24576 -rtl: section header: 1: offset=24616 -rtl: alloc: new: OBJECT addr=0x120980 size=56 -rtl: alloc: new: OBJECT addr=0x1209e0 size=6 -rtl: sect: 1 : .text -rtl: section header: 2: offset=24656 -rtl: alloc: new: OBJECT addr=0x120a10 size=56 -rtl: alloc: new: OBJECT addr=0x120a70 size=6 -rtl: sect: 2 : .data -rtl: section header: 3: offset=24696 -rtl: alloc: new: OBJECT addr=0x120aa0 size=56 -rtl: alloc: new: OBJECT addr=0x120b00 size=5 -rtl: sect: 3 : .bss -rtl: section header: 4: offset=24736 -rtl: alloc: new: OBJECT addr=0x120b30 size=56 -rtl: alloc: new: OBJECT addr=0x120b90 size=35 -rtl: sect: 4 : .rodata._ZStL19piecewise_construct -rtl: section header: 5: offset=24776 -rtl: alloc: new: OBJECT addr=0x120bd8 size=56 -rtl: alloc: new: OBJECT addr=0x120c38 size=8 -rtl: sect: 5 : .rodata -rtl: section header: 6: offset=24816 -rtl: alloc: new: OBJECT addr=0x120c68 size=56 -rtl: alloc: new: OBJECT addr=0x120cc8 size=19 -rtl: sect: 6 : .text.exception_dl -rtl: section header: 7: offset=24856 -rtl: alloc: new: OBJECT addr=0x120d00 size=56 -rtl: alloc: new: OBJECT addr=0x120d60 size=23 -rtl: sect: 7 : .rel.text.exception_dl -rtl: section header: 8: offset=24896 -rtl: alloc: new: OBJECT addr=0x120da0 size=56 -rtl: alloc: new: OBJECT addr=0x120e00 size=29 -rtl: sect: 8 : .ARM.extab.text.exception_dl -rtl: section header: 9: offset=24936 -rtl: alloc: new: OBJECT addr=0x120e48 size=56 -rtl: alloc: new: OBJECT addr=0x120ea8 size=33 -rtl: sect: 9 : .rel.ARM.extab.text.exception_dl -rtl: section header: 10: offset=24976 -rtl: unsupported section: 10: type=1879048193 flags=82 -rtl: section header: 11: offset=25016 -rtl: alloc: new: OBJECT addr=0x120ef0 size=56 -rtl: alloc: new: OBJECT addr=0x120f50 size=33 -rtl: sect: 11: .rel.ARM.exidx.text.exception_dl -rtl: section header: 12: offset=25056 -rtl: alloc: new: OBJECT addr=0x120f98 size=56 -rtl: alloc: new: OBJECT addr=0x120ff8 size=36 -rtl: sect: 12: .rodata._ZZ12exception_dlE8__func__ -rtl: section header: 13: offset=25096 -rtl: section header: 14: offset=25136 -rtl: alloc: new: OBJECT addr=0x121040 size=56 -rtl: alloc: new: OBJECT addr=0x1210a0 size=16 -rtl: sect: 14: .rel.debug_info -rtl: section header: 15: offset=25176 -rtl: section header: 16: offset=25216 -rtl: section header: 17: offset=25256 -rtl: alloc: new: OBJECT addr=0x1210d8 size=56 -rtl: alloc: new: OBJECT addr=0x121138 size=19 -rtl: sect: 17: .rel.debug_aranges -rtl: section header: 18: offset=25296 -rtl: section header: 19: offset=25336 -rtl: alloc: new: OBJECT addr=0x121170 size=56 -rtl: alloc: new: OBJECT addr=0x1211d0 size=18 -rtl: sect: 19: .rel.debug_ranges -rtl: section header: 20: offset=25376 -rtl: section header: 21: offset=25416 -rtl: alloc: new: OBJECT addr=0x121208 size=56 -rtl: alloc: new: OBJECT addr=0x121268 size=16 -rtl: sect: 21: .rel.debug_line -rtl: section header: 22: offset=25456 -rtl: section header: 23: offset=25496 -rtl: section header: 24: offset=25536 -rtl: section header: 25: offset=25576 -rtl: alloc: new: OBJECT addr=0x1212a0 size=56 -rtl: alloc: new: OBJECT addr=0x121300 size=17 -rtl: sect: 25: .rel.debug_frame -rtl: section header: 26: offset=25616 -rtl: unsupported section: 26: type=1879048195 flags=00 -rtl: section header: 27: offset=25656 -rtl: alloc: new: OBJECT addr=0x121338 size=56 -rtl: alloc: new: OBJECT addr=0x121398 size=10 -rtl: sect: 27: .shstrtab -rtl: section header: 28: offset=25696 -rtl: alloc: new: OBJECT addr=0x1213c8 size=56 -rtl: alloc: new: OBJECT addr=0x121428 size=8 -rtl: sect: 28: .symtab -rtl: section header: 29: offset=25736 -rtl: alloc: new: OBJECT addr=0x121458 size=56 -rtl: alloc: new: OBJECT addr=0x1214b8 size=8 -rtl: sect: 29: .strtab -rtl: alloc: new: READ_EXEC addr=0x1214e8 size=202 -rtl: alloc: new: READ addr=0x1215d8 size=170 -rtl: alloc: new: READ_WRITE addr=0x1216a8 size=1 -rtl: load sect: text - b:0x1214e8 s:202 a:1 -rtl: load sect: const - b:0x1215d8 s:170 a:4 -rtl: load sect: data - b:0x1216a8 s:1 a:1 -rtl: load sect: bss - b:0x0 s:0 a:1 -rtl: loading: .text.exception_dl -> 0x1214e8 (198) -rtl: loading: .rodata._ZStL19piecewise_construct -> 0x1215d8 (1) -rtl: loading: .rodata -> 0x1215dc (81) -rtl: loading: .ARM.extab.text.exception_dl -> 0x121630 (64) -rtl: loading: .rodata._ZZ12exception_dlE8__func__ -> 0x121674 (13) -rtl: alloc: new: SYMBOL addr=0x1216d8 size=310 -rtl: alloc: new: SYMBOL addr=0x121838 size=33 -rtl: sym:add:6 name:11:$d bind:0 type:0 val:0x1215d8 sect:4 size:0 -rtl: sym:add:7 name:14:_ZStL19piecewise_construct bind:0 type:1 val:0x1215d8 sect:4 size:1 -rtl: sym:add:9 name:11:$d bind:0 type:0 val:0x1215dc sect:5 size:0 -rtl: sym:add:10 name:41:.LC0 bind:0 type:0 val:0x1215dc sect:5 size:0 -rtl: sym:add:11 name:46:.LC1 bind:0 type:0 val:0x1215f4 sect:5 size:0 -rtl: sym:add:12 name:51:.LC2 bind:0 type:0 val:0x121608 sect:5 size:0 -rtl: sym:add:13 name:56:.LC3 bind:0 type:0 val:0x121618 sect:5 size:0 -rtl: sym:add:15 name:61:$t bind:0 type:0 val:0x1214e8 sect:6 size:0 -rtl: sym:add:16 name:64:_ZZ12exception_dlE8__func__ bind:0 type:1 val:0x121674 sect:12 size:13 -rtl: sym:add:18 name:11:$d bind:0 type:0 val:0x121630 sect:8 size:0 -rtl: sym:add:22 name:11:$d bind:0 type:0 val:0x121674 sect:12 size:0 -rtl: sym:add:33 name:92:exception_dl bind:1 type:2 val:0x1214e9 sect:6 size:198 +rtl: alloc: new: OBJECT addr=0x13c4a8 size=144 +rtl: alloc: new: OBJECT addr=0x13c560 size=9 +rtl: alloc: new: OBJECT addr=0x13c590 size=9 +rtl: section header: 0: offset=28164 +rtl: section header: 1: offset=28204 +rtl: unsupported section: 1: type=17 flags=00 +rtl: section header: 2: offset=28244 +rtl: unsupported section: 2: type=17 flags=00 +rtl: section header: 3: offset=28284 +rtl: unsupported section: 3: type=17 flags=00 +rtl: section header: 4: offset=28324 +rtl: unsupported section: 4: type=17 flags=00 +rtl: section header: 5: offset=28364 +rtl: unsupported section: 5: type=17 flags=00 +rtl: section header: 6: offset=28404 +rtl: section header: 7: offset=28444 +rtl: section header: 8: offset=28484 +rtl: section header: 9: offset=28524 +rtl: alloc: new: OBJECT addr=0x13c5c0 size=56 +rtl: alloc: new: OBJECT addr=0x13c620 size=35 +rtl: sect: 9 : .rodata._ZStL19piecewise_construct (1) +rtl: section header: 10: offset=28564 +rtl: alloc: new: OBJECT addr=0x13c668 size=56 +rtl: alloc: new: OBJECT addr=0x13c6c8 size=34 +rtl: sect: 10: .text._ZN16dl_test_throw_meC2EPKc (30) +rtl: section header: 11: offset=28604 +rtl: section header: 12: offset=28644 +rtl: alloc: new: OBJECT addr=0x13c710 size=56 +rtl: alloc: new: OBJECT addr=0x13c770 size=44 +rtl: sect: 12: .ARM.exidx.text._ZN16dl_test_throw_meC2EPKc (8) +rtl: section header: 13: offset=28684 +rtl: alloc: new: OBJECT addr=0x13c7c0 size=56 +rtl: alloc: new: OBJECT addr=0x13c820 size=48 +rtl: sect: 13: .rel.ARM.exidx.text._ZN16dl_test_throw_meC2EPKc (8) +rtl: section header: 14: offset=28724 +rtl: alloc: new: OBJECT addr=0x13c878 size=56 +rtl: alloc: new: OBJECT addr=0x13c8d8 size=32 +rtl: sect: 14: .text._ZN16dl_test_throw_meD2Ev (22) +rtl: section header: 15: offset=28764 +rtl: section header: 16: offset=28804 +rtl: alloc: new: OBJECT addr=0x13c920 size=56 +rtl: alloc: new: OBJECT addr=0x13c980 size=42 +rtl: sect: 16: .ARM.exidx.text._ZN16dl_test_throw_meD2Ev (8) +rtl: section header: 17: offset=28844 +rtl: alloc: new: OBJECT addr=0x13c9d0 size=56 +rtl: alloc: new: OBJECT addr=0x13ca30 size=46 +rtl: sect: 17: .rel.ARM.exidx.text._ZN16dl_test_throw_meD2Ev (8) +rtl: section header: 18: offset=28884 +rtl: alloc: new: OBJECT addr=0x13ca88 size=56 +rtl: alloc: new: OBJECT addr=0x13cae8 size=36 +rtl: sect: 18: .text._ZNK16dl_test_throw_me4whatEv (24) +rtl: section header: 19: offset=28924 +rtl: section header: 20: offset=28964 +rtl: alloc: new: OBJECT addr=0x13cb30 size=56 +rtl: alloc: new: OBJECT addr=0x13cb90 size=46 +rtl: sect: 20: .ARM.exidx.text._ZNK16dl_test_throw_me4whatEv (8) +rtl: section header: 21: offset=29004 +rtl: alloc: new: OBJECT addr=0x13cbe8 size=56 +rtl: alloc: new: OBJECT addr=0x13cc48 size=50 +rtl: sect: 21: .rel.ARM.exidx.text._ZNK16dl_test_throw_me4whatEv (8) +rtl: section header: 22: offset=29044 +rtl: alloc: new: OBJECT addr=0x13cca0 size=56 +rtl: alloc: new: OBJECT addr=0x13cd00 size=8 +rtl: sect: 22: .rodata (169) +rtl: section header: 23: offset=29084 +rtl: alloc: new: OBJECT addr=0x13cd30 size=56 +rtl: alloc: new: OBJECT addr=0x13cd90 size=19 +rtl: sect: 23: .text.exception_dl (342) +rtl: section header: 24: offset=29124 +rtl: alloc: new: OBJECT addr=0x13cdc8 size=56 +rtl: alloc: new: OBJECT addr=0x13ce28 size=23 +rtl: sect: 24: .rel.text.exception_dl (448) +rtl: section header: 25: offset=29164 +rtl: alloc: new: OBJECT addr=0x13ce68 size=56 +rtl: alloc: new: OBJECT addr=0x13cec8 size=29 +rtl: sect: 25: .ARM.extab.text.exception_dl (88) +rtl: section header: 26: offset=29204 +rtl: alloc: new: OBJECT addr=0x13cf10 size=56 +rtl: alloc: new: OBJECT addr=0x13cf70 size=33 +rtl: sect: 26: .rel.ARM.extab.text.exception_dl (24) +rtl: section header: 27: offset=29244 +rtl: alloc: new: OBJECT addr=0x13cfb8 size=56 +rtl: alloc: new: OBJECT addr=0x13d018 size=29 +rtl: sect: 27: .ARM.exidx.text.exception_dl (8) +rtl: section header: 28: offset=29284 +rtl: alloc: new: OBJECT addr=0x13d060 size=56 +rtl: alloc: new: OBJECT addr=0x13d0c0 size=33 +rtl: sect: 28: .rel.ARM.exidx.text.exception_dl (16) +rtl: section header: 29: offset=29324 +rtl: alloc: new: OBJECT addr=0x13d108 size=56 +rtl: alloc: new: OBJECT addr=0x13d168 size=31 +rtl: sect: 29: .rodata._ZTI16dl_test_throw_me (8) +rtl: section header: 30: offset=29364 +rtl: alloc: new: OBJECT addr=0x13d1b0 size=56 +rtl: alloc: new: OBJECT addr=0x13d210 size=35 +rtl: sect: 30: .rel.rodata._ZTI16dl_test_throw_me (16) +rtl: section header: 31: offset=29404 +rtl: alloc: new: OBJECT addr=0x13d258 size=56 +rtl: alloc: new: OBJECT addr=0x13d2b8 size=31 +rtl: sect: 31: .rodata._ZTS16dl_test_throw_me (19) +rtl: section header: 32: offset=29444 +rtl: alloc: new: OBJECT addr=0x13d300 size=56 +rtl: alloc: new: OBJECT addr=0x13d360 size=36 +rtl: sect: 32: .rodata._ZZ12exception_dlE8__func__ (13) +rtl: section header: 33: offset=29484 +rtl: section header: 34: offset=29524 +rtl: alloc: new: OBJECT addr=0x13d3a8 size=56 +rtl: alloc: new: OBJECT addr=0x13d408 size=16 +rtl: sect: 34: .rel.debug_info (4120) +rtl: section header: 35: offset=29564 +rtl: section header: 36: offset=29604 +rtl: section header: 37: offset=29644 +rtl: alloc: new: OBJECT addr=0x13d440 size=56 +rtl: alloc: new: OBJECT addr=0x13d4a0 size=19 +rtl: sect: 37: .rel.debug_aranges (40) +rtl: section header: 38: offset=29684 +rtl: section header: 39: offset=29724 +rtl: alloc: new: OBJECT addr=0x13d4d8 size=56 +rtl: alloc: new: OBJECT addr=0x13d538 size=18 +rtl: sect: 39: .rel.debug_ranges (128) +rtl: section header: 40: offset=29764 +rtl: section header: 41: offset=29804 +rtl: alloc: new: OBJECT addr=0x13d570 size=56 +rtl: alloc: new: OBJECT addr=0x13d5d0 size=16 +rtl: sect: 41: .rel.debug_line (32) +rtl: section header: 42: offset=29844 +rtl: section header: 43: offset=29884 +rtl: section header: 44: offset=29924 +rtl: section header: 45: offset=29964 +rtl: alloc: new: OBJECT addr=0x13d608 size=56 +rtl: alloc: new: OBJECT addr=0x13d668 size=17 +rtl: sect: 45: .rel.debug_frame (64) +rtl: section header: 46: offset=30004 +rtl: unsupported section: 46: type=1879048195 flags=00 +rtl: section header: 47: offset=30044 +rtl: alloc: new: OBJECT addr=0x13d6a0 size=56 +rtl: alloc: new: OBJECT addr=0x13d700 size=10 +rtl: sect: 47: .shstrtab (697) +rtl: section header: 48: offset=30084 +rtl: alloc: new: OBJECT addr=0x13d730 size=56 +rtl: alloc: new: OBJECT addr=0x13d790 size=8 +rtl: sect: 48: .symtab (1344) +rtl: section header: 49: offset=30124 +rtl: alloc: new: OBJECT addr=0x13d7c0 size=56 +rtl: alloc: new: OBJECT addr=0x13d820 size=8 +rtl: sect: 49: .strtab (630) +rtl: alloc: new: READ_EXEC addr=0x13d850 size=422 +rtl: alloc: new: READ addr=0x13da20 size=309 +rtl: alloc: new: READ addr=0x13db80 size=32 +rtl: load sect: text - b:0x13d850 s:422 a:2 +rtl: load sect: const - b:0x13da20 s:309 a:4 +rtl: load sect: eh - b:0x13db80 s:32 a:4 +rtl: load sect: data - b:0x0 s:0 a:0 +rtl: load sect: bss - b:0x0 s:0 a:0 +rtl: loading: .text._ZN16dl_test_throw_meC2EPKc -> 0x13d850 (l:30 m:0401) +rtl: loading: .text._ZN16dl_test_throw_meD2Ev -> 0x13d86e (l:22 m:0401) +rtl: loading: .text._ZNK16dl_test_throw_me4whatEv -> 0x13d884 (l:24 m:0401) +rtl: loading: .text.exception_dl -> 0x13d89c (l:342 m:0401) +rtl: loading: .rodata._ZStL19piecewise_construct -> 0x13da20 (l:1 m:0402) +rtl: loading: .rodata -> 0x13da24 (l:169 m:0402) +rtl: loading: .ARM.extab.text.exception_dl -> 0x13dad0 (l:88 m:0402) +rtl: loading: .rodata._ZTI16dl_test_throw_me -> 0x13db28 (l:8 m:0402) +rtl: loading: .rodata._ZTS16dl_test_throw_me -> 0x13db30 (l:19 m:0402) +rtl: loading: .rodata._ZZ12exception_dlE8__func__ -> 0x13db44 (l:13 m:0402) +rtl: loading: .ARM.exidx.text._ZN16dl_test_throw_meC2EPKc -> 0x13db80 (l:8 m:0410) +rtl: loading: .ARM.exidx.text._ZN16dl_test_throw_meD2Ev -> 0x13db88 (l:8 m:0410) +rtl: loading: .ARM.exidx.text._ZNK16dl_test_throw_me4whatEv -> 0x13db90 (l:8 m:0410) +rtl: loading: .ARM.exidx.text.exception_dl -> 0x13db98 (l:8 m:0410) +rtl: alloc: new: SYMBOL addr=0x13dbc8 size=592 +rtl: alloc: new: SYMBOL addr=0x13de40 size=357 +rtl: sym:add:6 name:11:$d bind:0 type:0 val:0x13da20 sect:9 size:0 +rtl: sym:add:7 name:14:_ZStL19piecewise_construct bind:0 type:1 val:0x13da20 sect:9 size:1 +rtl: sym:add:9 name:41:$t bind:0 type:0 val:0x13d850 sect:10 size:0 +rtl: sym:add:12 name:11:$d bind:0 type:0 val:0x13db80 sect:12 size:0 +rtl: sym:add:14 name:41:$t bind:0 type:0 val:0x13d86e sect:14 size:0 +rtl: sym:add:17 name:11:$d bind:0 type:0 val:0x13db88 sect:16 size:0 +rtl: sym:add:19 name:41:$t bind:0 type:0 val:0x13d884 sect:18 size:0 +rtl: sym:add:22 name:11:$d bind:0 type:0 val:0x13db90 sect:20 size:0 +rtl: sym:add:24 name:11:$d bind:0 type:0 val:0x13da24 sect:22 size:0 +rtl: sym:add:25 name:44:.LC0 bind:0 type:0 val:0x13da24 sect:22 size:0 +rtl: sym:add:26 name:49:.LC1 bind:0 type:0 val:0x13da38 sect:22 size:0 +rtl: sym:add:27 name:54:.LC2 bind:0 type:0 val:0x13da54 sect:22 size:0 +rtl: sym:add:28 name:59:.LC3 bind:0 type:0 val:0x13da74 sect:22 size:0 +rtl: sym:add:29 name:64:.LC4 bind:0 type:0 val:0x13da94 sect:22 size:0 +rtl: sym:add:30 name:69:.LC5 bind:0 type:0 val:0x13daa8 sect:22 size:0 +rtl: sym:add:31 name:74:.LC6 bind:0 type:0 val:0x13dab8 sect:22 size:0 +rtl: sym:add:33 name:41:$t bind:0 type:0 val:0x13d89c sect:23 size:0 +rtl: sym:add:34 name:79:_ZZ12exception_dlE8__func__ bind:0 type:1 val:0x13db44 sect:32 size:13 +rtl: sym:add:36 name:11:$d bind:0 type:0 val:0x13dad0 sect:25 size:0 +rtl: sym:add:38 name:11:$d bind:0 type:0 val:0x13db98 sect:27 size:0 +rtl: sym:add:40 name:11:$d bind:0 type:0 val:0x13db28 sect:29 size:0 +rtl: sym:add:42 name:11:$d bind:0 type:0 val:0x13db30 sect:31 size:0 +rtl: sym:add:44 name:11:$d bind:0 type:0 val:0x13db44 sect:32 size:0 +rtl: sym:add:62 name:161:_ZN16dl_test_throw_meC2EPKc bind:2 type:2 val:0x13d851 sect:10 size:30 +rtl: sym:add:63 name:189:_ZN16dl_test_throw_meC1EPKc bind:2 type:2 val:0x13d851 sect:10 size:30 +rtl: sym:add:64 name:217:_ZN16dl_test_throw_meD2Ev bind:2 type:2 val:0x13d86f sect:14 size:22 +rtl: sym:add:65 name:243:_ZN16dl_test_throw_meD1Ev bind:2 type:2 val:0x13d86f sect:14 size:22 +rtl: sym:add:66 name:269:_ZNK16dl_test_throw_me4whatEv bind:2 type:2 val:0x13d885 sect:18 size:24 +rtl: sym:add:67 name:299:exception_dl bind:1 type:2 val:0x13d89d sect:23 size:342 +rtl: sym:add:75 name:449:_ZTI16dl_test_throw_me bind:2 type:1 val:0x13db28 sect:29 size:8 +rtl: sym:add:83 name:607:_ZTS16dl_test_throw_me bind:2 type:1 val:0x13db30 sect:31 size:19 +rtl: relocation: .rel.ARM.exidx.text._ZN16dl_test_throw_meC2EPKc, syms:.symtab +rtl: rel: sym:(null)(8)=0013d850 type:42 off:00000000 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x7ffffcd0 @ 0x13db80 in /dl-o5.o +rtl: relocation: .rel.ARM.exidx.text._ZN16dl_test_throw_meD2Ev, syms:.symtab +rtl: rel: sym:(null)(13)=0013d86e type:42 off:00000000 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x7ffffce6 @ 0x13db88 in /dl-o5.o +rtl: relocation: .rel.ARM.exidx.text._ZNK16dl_test_throw_me4whatEv, syms:.symtab +rtl: rel: sym:(null)(18)=0013d884 type:42 off:00000000 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x7ffffcf4 @ 0x13db90 in /dl-o5.o rtl: relocation: .rel.text.exception_dl, syms:.symtab -rtl: rel: sym:.LC0(10)=001215dc type:47 off:00000006 -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x50dcf241 @ 0x1214ee in /dl-o5.o -rtl: rel: sym:.LC0(10)=001215dc type:48 off:0000000a -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x12f2c0 @ 0x1214f2 in /dl-o5.o -rtl: rel: sym:puts(35)=0003536d type:10 off:0000000e -rtl: THM_CALL/JUMP24 0xff39f713 @ 0x1214f6 in /dl-o5.o -rtl: rel: sym:__cxa_allocate_exception(36)=00001031 type:10 off:00000014 -rtl: THM_CALL/JUMP24 0xfd98f6df @ 0x1214fc in /dl-o5.o -rtl: rel: sym:.LC1(11)=001215f4 type:47 off:0000001c -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x51f4f241 @ 0x121504 in /dl-o5.o -rtl: rel: sym:.LC1(11)=001215f4 type:48 off:00000020 -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x112f2c0 @ 0x121508 in /dl-o5.o -rtl: rel: sym:_ZNSt13runtime_errorC1EPKc(37)=000085a9 type:10 off:00000026 -rtl: THM_CALL/JUMP24 0xf84bf6e7 @ 0x12150e in /dl-o5.o -rtl: rel: sym:_ZNSt13runtime_errorD1Ev(38)=00008505 type:47 off:0000002a -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x5205f248 @ 0x121512 in /dl-o5.o -rtl: rel: sym:_ZNSt13runtime_errorD1Ev(38)=00008505 type:48 off:0000002e -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x200f2c0 @ 0x121516 in /dl-o5.o -rtl: rel: sym:_ZTISt13runtime_error(39)=0004b61c type:47 off:00000032 -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x611cf24b @ 0x12151a in /dl-o5.o -rtl: rel: sym:_ZTISt13runtime_error(39)=0004b61c type:48 off:00000036 -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x104f2c0 @ 0x12151e in /dl-o5.o -rtl: rel: sym:__cxa_throw(40)=00001cc5 type:10 off:0000003c -rtl: THM_CALL/JUMP24 0xfbcef6e0 @ 0x121524 in /dl-o5.o -rtl: rel: sym:__cxa_free_exception(41)=00001061 type:10 off:00000046 -rtl: THM_CALL/JUMP24 0xfd97f6df @ 0x12152e in /dl-o5.o -rtl: rel: sym:__cxa_begin_catch(42)=000013a5 type:10 off:0000005c -rtl: THM_CALL/JUMP24 0xff2ef6df @ 0x121544 in /dl-o5.o -rtl: rel: sym:(null)(16)=00121674 type:47 off:00000074 -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x6174f241 @ 0x12155c in /dl-o5.o -rtl: rel: sym:(null)(16)=00121674 type:48 off:00000078 -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x112f2c0 @ 0x121560 in /dl-o5.o -rtl: rel: sym:.LC2(12)=00121608 type:47 off:0000007c -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x6008f241 @ 0x121564 in /dl-o5.o -rtl: rel: sym:.LC2(12)=00121608 type:48 off:00000080 -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x12f2c0 @ 0x121568 in /dl-o5.o -rtl: rel: sym:printf(43)=000351b1 type:10 off:00000084 -rtl: THM_CALL/JUMP24 0xfe20f713 @ 0x12156c in /dl-o5.o -rtl: rel: sym:__cxa_end_catch(44)=00001429 type:10 off:00000088 -rtl: THM_CALL/JUMP24 0xff5af6df @ 0x121570 in /dl-o5.o -rtl: rel: sym:__cxa_begin_catch(42)=000013a5 type:10 off:00000092 -rtl: THM_CALL/JUMP24 0xff13f6df @ 0x12157a in /dl-o5.o -rtl: rel: sym:(null)(16)=00121674 type:47 off:00000096 -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x6174f241 @ 0x12157e in /dl-o5.o -rtl: rel: sym:(null)(16)=00121674 type:48 off:0000009a -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x112f2c0 @ 0x121582 in /dl-o5.o -rtl: rel: sym:.LC3(13)=00121618 type:47 off:0000009e -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x6018f241 @ 0x121586 in /dl-o5.o -rtl: rel: sym:.LC3(13)=00121618 type:48 off:000000a2 -rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x12f2c0 @ 0x12158a in /dl-o5.o -rtl: rel: sym:printf(43)=000351b1 type:10 off:000000a6 -rtl: THM_CALL/JUMP24 0xfe0ff713 @ 0x12158e in /dl-o5.o -rtl: rel: sym:__cxa_end_catch(44)=00001429 type:10 off:000000aa -rtl: THM_CALL/JUMP24 0xff49f6df @ 0x121592 in /dl-o5.o -rtl: rel: sym:__cxa_end_catch(44)=00001429 type:10 off:000000b0 -rtl: THM_CALL/JUMP24 0xff46f6df @ 0x121598 in /dl-o5.o -rtl: rel: sym:__cxa_end_cleanup(45)=000010b5 type:10 off:000000b4 -rtl: THM_CALL/JUMP24 0xfd8af6df @ 0x12159c in /dl-o5.o -rtl: rel: sym:__cxa_end_catch(44)=00001429 type:10 off:000000b8 -rtl: THM_CALL/JUMP24 0xff42f6df @ 0x1215a0 in /dl-o5.o -rtl: rel: sym:__cxa_end_cleanup(45)=000010b5 type:10 off:000000bc -rtl: THM_CALL/JUMP24 0xfd86f6df @ 0x1215a4 in /dl-o5.o +rtl: rel: sym:.LC0(25)=0013da24 type:47 off:0000000a +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x2024f64d @ 0x13d8a6 in /dl-o5.o +rtl: rel: sym:.LC0(25)=0013da24 type:48 off:0000000e +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x13f2c0 @ 0x13d8aa in /dl-o5.o +rtl: rel: sym:puts(69)=00036f6d type:10 off:00000012 +rtl: THM_CALL/JUMP24 0xfb5df6f9 @ 0x13d8ae in /dl-o5.o +rtl: rel: sym:.LC1(26)=0013da38 type:47 off:00000016 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x2038f64d @ 0x13d8b2 in /dl-o5.o +rtl: rel: sym:.LC1(26)=0013da38 type:48 off:0000001a +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x13f2c0 @ 0x13d8b6 in /dl-o5.o +rtl: rel: sym:puts(69)=00036f6d type:10 off:0000001e +rtl: THM_CALL/JUMP24 0xfb57f6f9 @ 0x13d8ba in /dl-o5.o +rtl: rel: sym:__cxa_allocate_exception(70)=000011e9 type:10 off:0000002a +rtl: THM_CALL/JUMP24 0xfc8ff6c3 @ 0x13d8c6 in /dl-o5.o +rtl: rel: sym:.LC2(27)=0013da54 type:47 off:00000032 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x2154f64d @ 0x13d8ce in /dl-o5.o +rtl: rel: sym:.LC2(27)=0013da54 type:48 off:00000036 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x113f2c0 @ 0x13d8d2 in /dl-o5.o +rtl: rel: sym:_ZNSt13runtime_errorC1EPKc(71)=00008c0d type:10 off:0000003c +rtl: THM_CALL/JUMP24 0xf998f6cb @ 0x13d8d8 in /dl-o5.o +rtl: rel: sym:_ZNSt13runtime_errorD1Ev(72)=00008b69 type:47 off:00000040 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x3269f648 @ 0x13d8dc in /dl-o5.o +rtl: rel: sym:_ZNSt13runtime_errorD1Ev(72)=00008b69 type:48 off:00000044 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x200f2c0 @ 0x13d8e0 in /dl-o5.o +rtl: rel: sym:_ZTISt13runtime_error(73)=0004fd7c type:47 off:00000048 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x517cf64f @ 0x13d8e4 in /dl-o5.o +rtl: rel: sym:_ZTISt13runtime_error(73)=0004fd7c type:48 off:0000004c +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x104f2c0 @ 0x13d8e8 in /dl-o5.o +rtl: rel: sym:__cxa_throw(74)=00001e7d type:10 off:00000052 +rtl: THM_CALL/JUMP24 0xfac5f6c4 @ 0x13d8ee in /dl-o5.o +rtl: rel: sym:__cxa_allocate_exception(70)=000011e9 type:10 off:00000058 +rtl: THM_CALL/JUMP24 0xfc78f6c3 @ 0x13d8f4 in /dl-o5.o +rtl: rel: sym:.LC3(28)=0013da74 type:47 off:00000060 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x2174f64d @ 0x13d8fc in /dl-o5.o +rtl: rel: sym:.LC3(28)=0013da74 type:48 off:00000064 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x113f2c0 @ 0x13d900 in /dl-o5.o +rtl: rel: sym:(null)(63)=0013d851 type:10 off:0000006a +rtl: THM_CALL/JUMP24 0xffa3f7ff @ 0x13d906 in /dl-o5.o +rtl: rel: sym:(null)(65)=0013d86f type:47 off:0000006e +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x26ff64d @ 0x13d90a in /dl-o5.o +rtl: rel: sym:(null)(65)=0013d86f type:48 off:00000072 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x213f2c0 @ 0x13d90e in /dl-o5.o +rtl: rel: sym:(null)(75)=0013db28 type:47 off:00000076 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x3128f64d @ 0x13d912 in /dl-o5.o +rtl: rel: sym:(null)(75)=0013db28 type:48 off:0000007a +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x113f2c0 @ 0x13d916 in /dl-o5.o +rtl: rel: sym:__cxa_throw(74)=00001e7d type:10 off:00000080 +rtl: THM_CALL/JUMP24 0xfaaef6c4 @ 0x13d91c in /dl-o5.o +rtl: rel: sym:.LC4(29)=0013da94 type:47 off:00000084 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x2094f64d @ 0x13d920 in /dl-o5.o +rtl: rel: sym:.LC4(29)=0013da94 type:48 off:00000088 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x13f2c0 @ 0x13d924 in /dl-o5.o +rtl: rel: sym:puts(69)=00036f6d type:10 off:0000008c +rtl: THM_CALL/JUMP24 0xfb20f6f9 @ 0x13d928 in /dl-o5.o +rtl: rel: sym:__cxa_free_exception(76)=00001219 type:10 off:00000098 +rtl: THM_CALL/JUMP24 0xfc70f6c3 @ 0x13d934 in /dl-o5.o +rtl: rel: sym:__cxa_begin_catch(77)=0000155d type:10 off:000000b4 +rtl: THM_CALL/JUMP24 0xfe04f6c3 @ 0x13d950 in /dl-o5.o +rtl: rel: sym:(null)(66)=0013d885 type:10 off:000000be +rtl: THM_CALL/JUMP24 0xff93f7ff @ 0x13d95a in /dl-o5.o +rtl: rel: sym:(null)(34)=0013db44 type:47 off:000000c6 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x3144f64d @ 0x13d962 in /dl-o5.o +rtl: rel: sym:(null)(34)=0013db44 type:48 off:000000ca +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x113f2c0 @ 0x13d966 in /dl-o5.o +rtl: rel: sym:.LC5(30)=0013daa8 type:47 off:000000ce +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x20a8f64d @ 0x13d96a in /dl-o5.o +rtl: rel: sym:.LC5(30)=0013daa8 type:48 off:000000d2 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x13f2c0 @ 0x13d96e in /dl-o5.o +rtl: rel: sym:printf(78)=00036db1 type:10 off:000000d6 +rtl: THM_CALL/JUMP24 0xfa1df6f9 @ 0x13d972 in /dl-o5.o +rtl: rel: sym:__cxa_end_catch(79)=000015e1 type:10 off:000000da +rtl: THM_CALL/JUMP24 0xfe33f6c3 @ 0x13d976 in /dl-o5.o +rtl: rel: sym:__cxa_begin_catch(77)=0000155d type:10 off:000000e4 +rtl: THM_CALL/JUMP24 0xfdecf6c3 @ 0x13d980 in /dl-o5.o +rtl: rel: sym:(null)(34)=0013db44 type:47 off:000000fc +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x3144f64d @ 0x13d998 in /dl-o5.o +rtl: rel: sym:(null)(34)=0013db44 type:48 off:00000100 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x113f2c0 @ 0x13d99c in /dl-o5.o +rtl: rel: sym:.LC5(30)=0013daa8 type:47 off:00000104 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x20a8f64d @ 0x13d9a0 in /dl-o5.o +rtl: rel: sym:.LC5(30)=0013daa8 type:48 off:00000108 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x13f2c0 @ 0x13d9a4 in /dl-o5.o +rtl: rel: sym:printf(78)=00036db1 type:10 off:0000010c +rtl: THM_CALL/JUMP24 0xfa02f6f9 @ 0x13d9a8 in /dl-o5.o +rtl: rel: sym:__cxa_end_catch(79)=000015e1 type:10 off:00000110 +rtl: THM_CALL/JUMP24 0xfe18f6c3 @ 0x13d9ac in /dl-o5.o +rtl: rel: sym:__cxa_begin_catch(77)=0000155d type:10 off:0000011a +rtl: THM_CALL/JUMP24 0xfdd1f6c3 @ 0x13d9b6 in /dl-o5.o +rtl: rel: sym:(null)(34)=0013db44 type:47 off:0000011e +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x3144f64d @ 0x13d9ba in /dl-o5.o +rtl: rel: sym:(null)(34)=0013db44 type:48 off:00000122 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x113f2c0 @ 0x13d9be in /dl-o5.o +rtl: rel: sym:.LC6(31)=0013dab8 type:47 off:00000126 +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x20b8f64d @ 0x13d9c2 in /dl-o5.o +rtl: rel: sym:.LC6(31)=0013dab8 type:48 off:0000012a +rtl: THM_MOVT_ABS/THM_MOVW_ABS_NC 0x13f2c0 @ 0x13d9c6 in /dl-o5.o +rtl: rel: sym:printf(78)=00036db1 type:10 off:0000012e +rtl: THM_CALL/JUMP24 0xf9f1f6f9 @ 0x13d9ca in /dl-o5.o +rtl: rel: sym:__cxa_end_catch(79)=000015e1 type:10 off:00000132 +rtl: THM_CALL/JUMP24 0xfe07f6c3 @ 0x13d9ce in /dl-o5.o +rtl: rel: sym:__cxa_end_catch(79)=000015e1 type:10 off:00000138 +rtl: THM_CALL/JUMP24 0xfe04f6c3 @ 0x13d9d4 in /dl-o5.o +rtl: rel: sym:__cxa_end_cleanup(80)=0000126d type:10 off:0000013c +rtl: THM_CALL/JUMP24 0xfc48f6c3 @ 0x13d9d8 in /dl-o5.o +rtl: rel: sym:__cxa_end_catch(79)=000015e1 type:10 off:00000140 +rtl: THM_CALL/JUMP24 0xfe00f6c3 @ 0x13d9dc in /dl-o5.o +rtl: rel: sym:__cxa_end_cleanup(80)=0000126d type:10 off:00000144 +rtl: THM_CALL/JUMP24 0xfc44f6c3 @ 0x13d9e0 in /dl-o5.o +rtl: rel: sym:__cxa_end_catch(79)=000015e1 type:10 off:00000148 +rtl: THM_CALL/JUMP24 0xfdfcf6c3 @ 0x13d9e4 in /dl-o5.o +rtl: rel: sym:__cxa_end_cleanup(80)=0000126d type:10 off:0000014c +rtl: THM_CALL/JUMP24 0xfc40f6c3 @ 0x13d9e8 in /dl-o5.o rtl: relocation: .rel.ARM.extab.text.exception_dl, syms:.symtab -rtl: rel: sym:__gxx_personality_v0(34)=00001745 type:42 off:00000000 -rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0xffee0115 @ 0x121630 in /dl-o5.ortl: rel: sym:_ZTISt9exception(46)=0004a540 type:41 off:0000003c -rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x4a540 @ 0x12166c in /dl-o5.ortl: alloc: del: SYMBOL addr=0x1216d8 -rtl: alloc: new: OBJECT addr=0x121880 size=132 +rtl: rel: sym:__gxx_personality_v0(68)=000018fd type:42 off:00000000 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x7fec3e2d @ 0x13dad0 in /dl-o5.o +rtl: rel: sym:_ZTISt9exception(81)=0004ec10 type:41 off:00000050 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0xfff110f0 @ 0x13db20 in /dl-o5.o +rtl: rel: sym:(null)(75)=0013db28 type:41 off:00000054 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x4 @ 0x13db24 in /dl-o5.o +rtl: relocation: .rel.ARM.exidx.text.exception_dl, syms:.symtab +rtl: rel: sym:(null)(32)=0013d89c type:42 off:00000000 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x7ffffd04 @ 0x13db98 in /dl-o5.o +rtl: rel: sym:(null)(35)=0013dad0 type:42 off:00000004 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x7fffff34 @ 0x13db9c in /dl-o5.o +rtl: relocation: .rel.rodata._ZTI16dl_test_throw_me, syms:.symtab +rtl: rel: sym:_ZTVN10__cxxabiv117__class_type_infoE(82)=0004ebb4 type:2 off:00000000 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x4ebbc @ 0x13db28 in /dl-o5.o +rtl: rel: sym:(null)(83)=0013db30 type:2 off:00000004 +rtl: REL32/ABS32/GLOB_DAT/PREL31/TARGET2 0x13db30 @ 0x13db2c in /dl-o5.o +rtl: alloc: del: SYMBOL addr=0x13dbc8 +rtl: alloc: new: OBJECT addr=0x13dfd0 size=212 rtl: linkmap_add rtl: unresolv: global resolve -dlopen: -dlsym: -exception_base called -exception_dl: throwing -terminate called after throwing an instance of 'std::runtime_error' - what(): exception_dl throw +exception_base: begin +exception_base: caught: eb: throw std::runtime_error +exception_base: end +exception_dl: begin +exception_dl: throwing... +exception_dl: caught: throw std::runtime_error object +exception_dl: end +rtl: unloading '/dl-o5.o' +rtl: alloc: del: READ_WRITE addr=0x0 +rtl: alloc: del: READ_WRITE addr=0x0 +rtl: alloc: del: READ addr=0x13db80 +rtl: alloc: del: READ addr=0x13da20 +rtl: alloc: del: READ_EXEC addr=0x13d850 +rtl: alloc: del: SYMBOL addr=0x13de40 +rtl: alloc: del: OBJECT addr=0x13c560 +rtl: alloc: del: OBJECT addr=0x13c590 +rtl: alloc: del: OBJECT addr=0x13dfd0 +rtl: alloc: del: OBJECT addr=0x13c4a8 +*** END OF TEST libdl (RTL) 5 *** diff --git a/testsuites/libtests/dl05/init.c b/testsuites/libtests/dl05/init.c index f6e0c20eee..9c7f0062b3 100644 --- a/testsuites/libtests/dl05/init.c +++ b/testsuites/libtests/dl05/init.c @@ -69,9 +69,13 @@ static void Init(rtems_task_argument arg) #define CONFIGURE_MAXIMUM_TASKS 1 -#define CONFIGURE_MINIMUM_TASK_STACK_SIZE (8U * 1024U) +#define CONFIGURE_MINIMUM_TASK_STACK_SIZE (32U * 1024U) -#define CONFIGURE_EXTRA_TASK_STACKS (8 * 1024) +#define CONFIGURE_EXTRA_TASK_STACKS (64 * 1024) + +#define CONFIGURE_MAXIMUM_POSIX_KEYS 2 + +#define CONFIGURE_MAXIMUM_SEMAPHORES 1 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION -- cgit v1.2.3