On 22/7/2022 1:11 am, Ryan Long wrote: > On 7/20/2022 11:39 PM, Chris Johns wrote: >> On 21/7/2022 7:36 am, Ryan Long wrote: >>> rtl-mdreloc-aarch64.c and elf_machdep.h came from NetBSD. >>> +bool >>> +rtems_rtl_elf_unwind_deregister (rtems_rtl_obj* obj) >>> +{ >>> + obj->loader = NULL; >> You cannot touch this field. It belongs to the format loader. > I copied this method from rtl-mdreloc-arm.c, and it's the same way there.
I think it is wrong in both places. Should these calls also be moved to rtl-unwind-arm.[ch]? >>> +_Unwind_Ptr __gnu_Unwind_Find_exidx (_Unwind_Ptr return_address, >>> + int* nrec) >>> +{ >>> + rtems_rtl_data* 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* obj = (rtems_rtl_obj*) 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); >>> + } >> Can the RTL chain iterator be used here? > I got this from rtl-mdreloc-arm.c. I think using the iterator would a good change once the code moves. >>> + >>> + rtems_rtl_unlock (); >>> + >>> + *nrec = exidx_end - exidx_start; >>> + >>> + return (_Unwind_Ptr) exidx_start; >>> +} >> Can this exception unwind support be placed in rtl-unwind-arm.[ch]? >> >> I suppose you will need to reference the call from here to bring the symbol >> into >> the link and override the weak version in gcc? >> >> Chris > Is it alright if I implement this and take it out of rtl-mdreloc-aarch64.c and > rtl-mdreloc-arm.c in a follow up patch? Of course and thanks. Chris _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel