The former didn't work because of memory management issues (there was no
reasonable way to allocate/free the memory needed for the string).
Shorten unwind_info_size from size_t to int.
(unw_accessors_t): Add new callbacks put_unwind_info() and get_dyn_info_list_addr().
(unw_create_addr_space): Take byte-order as second argument.
(unw_get_proc_name): New routine.
(unw_find_dynamic_proc_info): Remove (it's brother is in internal.h now).
(unw_flush_cache): Add missing declaration.
(unw_set_caching_policy): Ditto.
(Logical change 1.30)
(put_unwind_info): New function.
(get_dyn_info_list_addr): Ditto.
(ia64_init): Initialize big_endian member in local_addr_space and
put_unwind_info and get_dyn_info_list_addr callbacks in the
accessor's structure.
}(Logical change 1.30)
(put_unwind_info): New function.
(get_dyn_info_list_addr): Ditto.
(ia64_init): Initialize big_endian member in local_addr_space and
put_unwind_info and get_dyn_info_list_addr callbacks in the
accessor's structure.
2002/12/11 12:27:19-08:00 mostang.com!davidm
Rename: src/ia64/init.c -> src/ia64/Ginit.c
(Logical change 1.30)
that the local accessors are valid.
2002/12/11 12:26:26-08:00 mostang.com!davidm
Rename: src/ia64/Lget_accessors.c -> src/ia64/Gget_accessors.c
(Logical change 1.30)
(build_script): For signal-frames, generate an instruction that will set
is_signal_frame to TRUE.
2002/12/11 12:27:36-08:00 mostang.com!davidm
Rename: src/ia64/script.c -> src/ia64/Gscript.c
(Logical change 1.30)
{G,L}find_dynamic_proc_info, and {G,L}put_dynamic_unwind_info.
(libunwind_la_SOURCES): Rename generic files that get compiled twice from
unw_foo to Gfoo. Similarly, rename local-only files from Lunw_foo
to Lfoo.
(Logical change 1.30)
(tdep_search_unwind_table): Rename from _Uia64_search_unwind_table() and declare as
HIDDEN. Allocate (if needed) and fill in unwind_info only if requested.
(tdep_put_unwind_info): New function.
(_Uia64_find_proc_info): Add "need_unwind_info" argument and declare as HIDDEN.
(Logical change 1.30)
and pi_is_dynamic flags in the cursor structure.
(put_unwind_info): New function.
(create_state_record_for): Release unwind-info via a call to put_unwind_info() after
we're done parsing it.
}(Logical change 1.30)
and pi_is_dynamic flags in the cursor structure.
(put_unwind_info): New function.
(create_state_record_for): Release unwind-info via a call to put_unwind_info() after
we're done parsing it.
2002/12/11 12:27:25-08:00 mostang.com!davidm
Rename: src/ia64/parser.c -> src/ia64/Gparser.c
(Logical change 1.30)
rough on the edges, but at least one test-program that uses dynamic code-generation
is working now (see tests/test-dyn1.c).
BKrev: 3dec692emetvXbc3o2rQICS8CjrGTw
(UNW_ARCH_OBJ): New macro.
(unw_proc_info_t): New type.
(unw_accessors): Replace acquire_unwind_info and release_unwind_info callbacks
with find_proc_info callback. Change remaining prototypes to take
address-space pointer as the first argument.
(unw_get_accessors): New routine.
(unw_get_proc_info): New routine.
(unw_regname): Make it an UNW_ARCH_OBJ.
(unw_find_dynamic_proc_info): New routine.
(Logical change 1.29)
(lookup): New function (moved from parser.c).
(_Uia64_search_unwind_table): New function (based on code in parser.c).
(kernel_table): New variable.
(get_kernel_table): Relocate the kernel table's "info_offset" values as we
count it. Adjust for new callback-interface.
(callback): Adjust for new interface.
(_Uia64_find_proc_info): Rename from _Uia64_glibc_acquire_unwind_info).
}(Logical change 1.29)
(lookup): New function (moved from parser.c).
(_Uia64_search_unwind_table): New function (based on code in parser.c).
(kernel_table): New variable.
(get_kernel_table): Relocate the kernel table's "info_offset" values as we
count it. Adjust for new callback-interface.
(callback): Adjust for new interface.
(_Uia64_find_proc_info): Rename from _Uia64_glibc_acquire_unwind_info).
2002/11/27 16:44:37-08:00 mostang.com!davidm
Rename: src/ia64/tables-glibc.c -> src/ia64/tables.c
(Logical change 1.29)
(struct ia64_cursor): Change type of "pi" member from struct ia64_proc_info to
unw_proc_info_t.
(struct unw_addr_space): Declare "acc" member even for UNW_LOCAL_ONLY case.
(ia64_acquire_unwind_info): Delete
(ia64_relesae_unwind_info): Ditto.
(ia64_find_proc_info): New routine.
(struct ia64_unwind_table_entry): Delete.
(struct ia64_unwind_talbe): Ditto.
(struct ia64_global_unwind_state): Remove "unwind_table_pool" member.
(ia64_get_proc_info): Rename to ia64_make_proc_info().
(Logical change 1.29)
(lookup_preg): New function.
(parse_dynamic): Ditto.
(get_proc_info): Take explicit IP argument.
(create_state_record_for): New function, containing most of the code originally
in ia64_create_state_record(). Don't forget to initialize
sr->first_region. Check c->pi.format and parse unwind descriptors or
dynamically registered unwind info accordingly.
(ia64_get_proc_info): Adjust for extra argument expected by get_proc_info().
(ia64_create_state_record): Do interesting work by calling create_state_record_for().
(Logical change 1.29)