1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-11-30 18:37:37 +01:00
Commit graph

392 commits

Author SHA1 Message Date
mostang.com!davidm
01f9b269b2 Rename: src/ia64/Ldestroy_addr_space.c -> src/ia64/Gdestroy_addr_space.c
(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
51e4d34075 Regenerate.
(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
78306c6f14 Move pthread-locking stuff to "internal.h".
(_U_dyn_info_list_lock): Rename from "registration_lock" and change from r/w-lock
	to a simple mutex (spin) lock.
(_U_dyn_register): Insert into doubly-linked list.

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
12f30d6481 Move enum ia64_pregnum and struct unw_addr_space to tdep-ia64.h.
(IA64_FLAG_SIGTRAMP): Replace with is_signal_frame member.
(IA64_FLAG_BIG_ENDIAN): Replace with per-address space big_endian flag.
(struct ia64_cursor): Add pi_valid and pi_is_dynamic members.
(ia64_find_proc_info): Add "need_unwind_info" argument.
(ia64_put_unwind_info): New macro.

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
793c8a3005 Initial revision 2002-12-12 09:17:41 +00:00
mostang.com!davidm
d3147b1f2c Encode the address of _U_dyn_info_list in a special (no-op) unwind-table entry,
so that a remote-unwinder can find it.

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
75c710131e Delete: src/dyn-common.h
}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
83fca930d8 Compile only if UNW_REMOTE_ONLY is not defined.
(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
c5307b2398 Adjust for big file-rename.
}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
924b1764b2 Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_step.c -> src/ia64/Lstep.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
50cae0e222 Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_set_reg.c -> src/ia64/Lset_reg.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
74bd7af8b5 Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_set_fpreg.c -> src/ia64/Lset_fpreg.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
ef1547248f Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_set_caching_policy.c -> src/ia64/Lset_caching_policy.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
d7d8a16bc2 Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_resume.c -> src/ia64/Lresume.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
56c38b5b4b Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_is_signal_frame.c -> src/ia64/Lis_signal_frame.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
55e48ef09c Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_init_remote.c -> src/ia64/Linit_remote.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
cb24b9e451 Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_init_local.c -> src/ia64/Linit_local.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
2f64edbe65 Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_get_save_loc.c -> src/ia64/Lget_save_loc.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
3af62b52aa Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_get_reg.c -> src/ia64/Lget_reg.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
1f0e55bdb5 Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_get_proc_info.c -> src/ia64/Lget_proc_info.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
791bdf16c4 Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_get_fpreg.c -> src/ia64/Lget_fpreg.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
1816abfa4e Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_get_accessors.c -> src/ia64/Lget_accessors.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
c326357cd6 Adjust for big file-rename.
2002/12/11 12:26:36-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_flush_cache.c -> src/ia64/Lflush_cache.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
910dc47cfc Adjust for big file-rename.
2002/12/11 12:26:35-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_destroy_addr_space.c -> src/ia64/Ldestroy_addr_space.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
2120d31863 Adjust for big file-rename.
2002/12/11 12:26:35-08:00 mostang.com!davidm
Rename: src/ia64/Lunw_create_addr_space.c -> src/ia64/Lcreate_addr_space.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
a3b3028874 Adjust for big file-rename.
(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
c23934ce5f Adjust for big file rename.
}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
d396b65116 Adjust for big file rename.
2002/12/11 18:56:22-08:00 mostang.com!davidm
Rename: src/ia64/Lfind_dynamic_proc_info.c -> src/Lfind_dynamic_proc_info.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
da4aeb0ed1 Adjust for IA64_FLAG_SIGTRAMP -> c->is_signal_frame change.
(update_frame_state): Clear is_signal_frame to zero near the end.  Clear
	pi_valid instead of calling ia64_make_proc_info().

}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
c85fbb10f8 Adjust for IA64_FLAG_SIGTRAMP -> c->is_signal_frame change.
(update_frame_state): Clear is_signal_frame to zero near the end.  Clear
	pi_valid instead of calling ia64_make_proc_info().

2002/12/11 12:26:26-08:00 mostang.com!davidm
Rename: src/ia64/Lstep.c -> src/ia64/Gstep.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
217ad52ca9 Adjust for IA64_FLAG_BIG_ENDIAN -> as->big_endian change.
(ia64_access_regs): Call ia64_make_proc_info() to ensure c->pi.gp is valid before
	returning it.

}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
3919f4ffb6 Adjust for IA64_FLAG_BIG_ENDIAN -> as->big_endian change.
(ia64_access_regs): Call ia64_make_proc_info() to ensure c->pi.gp is valid before
	returning it.

2002/12/11 12:27:31-08:00 mostang.com!davidm
Rename: src/ia64/regs.c -> src/ia64/Gregs.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
d3da356368 Add copyright header and forward-declration of ia64_cursor.
}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
a84826659d (unw_resume): Call ia64_make_proc_info() to ensure c->is_signal_frame is valid.
}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
ea24716375 (unw_resume): Call ia64_make_proc_info() to ensure c->is_signal_frame is valid.
2002/12/11 12:26:26-08:00 mostang.com!davidm
Rename: src/ia64/Lresume.c -> src/ia64/Gresume.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
4b3e3e5f9f (unw_local_addr_space): Initialize statically, so it's valid right away.
(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)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
ef007fb585 (unw_local_addr_space): Initialize statically, so it's valid right away.
(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)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
4e2f5c0fbf (unw_is_signal_frame): Use "is_signal_frame" instead of IA64_FLAG_SIGTRAMP flag bit.
}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
495a5a547f (unw_is_signal_frame): Use "is_signal_frame" instead of IA64_FLAG_SIGTRAMP flag bit.
2002/12/11 12:26:26-08:00 mostang.com!davidm
Rename: src/ia64/Lis_signal_frame.c -> src/ia64/Gis_signal_frame.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
68c95d3f64 (unw_get_proc_info): Call ia64_make_proc_info() to ensure that the proc_info is
valid.

}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
0a574c0936 (unw_get_proc_info): Call ia64_make_proc_info() to ensure that the proc_info is
valid.

2002/12/11 12:26:26-08:00 mostang.com!davidm
Rename: src/ia64/Lget_proc_info.c -> src/ia64/Gget_proc_info.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
35697758fd (unw_get_accessors): If libunwind hasn't been initialized yet, do so first to ensure
that the local accessors are valid.

}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
805bb72ed0 (unw_get_accessors): If libunwind hasn't been initialized yet, do so first to ensure
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)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
8c72d1c277 (unw_create_addr_space): Support "byte_order" argument.
}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
02e59a8939 (unw_create_addr_space): Support "byte_order" argument.
2002/12/11 12:26:25-08:00 mostang.com!davidm
Rename: src/ia64/Lcreate_addr_space.c -> src/ia64/Gcreate_addr_space.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
57a6d3699d (script_finalize): Also initialize the proc_info.
(build_script): For signal-frames, generate an instruction that will set
	is_signal_frame to TRUE.

}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
8f82941a84 (script_finalize): Also initialize the proc_info.
(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)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
13032ebce3 (local_find_proc_info): New function.
(remote_find_proc_info): Ditto.

}(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
ea3b3225d8 (local_find_proc_info): New function.
(remote_find_proc_info): Ditto.

2002/12/11 18:56:18-08:00 mostang.com!davidm
Rename: src/ia64/Gfind_dynamic_proc_info.c -> src/Gfind_dynamic_proc_info.c

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
afd39636d6 (libunwind_la_SOURCES_common): Add get_proc_name.c, dyn-cancel.c, dyn-extract.c,
{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)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
dea15a73d0 (is_local_addr_space): New function.
(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)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
f96f12879c (get_proc_info): Take additional "need_unwind_info" argument and set pi_valid
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)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
8578dc1e6d (get_proc_info): Take additional "need_unwind_info" argument and set pi_valid
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)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
2e0505826f (common_init): Clear "is_signal_frame". Instead of calling ia64_make_proc_info(),
simply clear "pi_valid" flag.

(Logical change 1.30)
2002-12-12 09:17:41 +00:00
mostang.com!davidm
653c9006ac (Logical change 1.30) 2002-12-12 09:17:41 +00:00
mostang.com!davidm
57f5fae02b Regenerate.
(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
b691bb1300 (Logical change 1.29) 2002-12-03 08:19:58 +00:00
mostang.com!davidm
612e33825c Initial revision 2002-12-03 08:19:58 +00:00
mostang.com!davidm
214827cae8 (update_frame_state): Do an early return if IP is zero (end of chain).
(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
1c1b6a171f (unw_regname): Remove names for UNW_REG_PROC_START, UNW_REG_HANDLER, and
UNW_REG_LSDA.

(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
83f2952a86 (unw_get_save_loc): Remove handling of UNW_REG_PROC_START, UNW_REG_HANDLER,
and UNW_REG_LSDA.

(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
22c1128cf7 (struct ia64_table_entry): New type (moved from unwind_i.h).
(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)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
42fdeb430b (struct ia64_table_entry): New type (moved from unwind_i.h).
(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)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
d49825fd74 (struct ia64_script): Change type of "pi" member from struct ia64_proc_info to
unw_proc_info_t.

(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
c97d8cdab4 (struct ia64_proc_info): Delete.
(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)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
58752cbc76 (libunwind_la_SOURCES_common): Mention dyn-common.h, dyn-local.c, and dyn-register.c.
(libunwind_la_SOURCES_ia64): Rename tables-glibc.c to tables.c.  Mention
	unw_find_dynamic_proc_info.c, unw_get_accessors, and local-only variants.

(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
75952fdf41 (ia64_local_resume): Adjust for new address-space argument.
(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
1170560e62 (ia64_access_reg): Remove handling of UNW_REG_PROC_START, UNW_REG_HANDLER, and
UNW_REG_LSDA.

(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
5ef3b80ed0 (get_script_cache): Flush cache only if the generation-numbers differ.
(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
b8802b5c11 (finish_prologue): Iterate over "mask" only if it is non-zero.
(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)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
3ab317eef5 (common_init): Adjust for rename of ia64_get_proc_info() to ia64_make_proc_info().
(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
cfae46ade6 (access_mem): Adjust for fact that address-space is now passed as first arg.
(access_reg): Ditto.
(access_fpreg): Ditto.
(ia64_init): Remove initializationof unw.unwind_table_pool.  Initialize accessors
	even for UNW_LOCAL_ONLY case.

(Logical change 1.29)
2002-12-03 08:19:58 +00:00
mostang.com!davidm
acdc3566a4 Regenerate.
(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
9f4a51e8cf Mention new files.
(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
f277006b83 (Logical change 1.27) 2002-11-16 06:50:04 +00:00
mostang.com!davidm
f6ba78341f Initial revision 2002-11-16 06:50:04 +00:00
mostang.com!davidm
5287e145c3 (unw_set_caching_policy): Adjust for new interface.
(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
772f423852 (unw_local_addr_space): Define here.
(local_addr_space): New variable.
(uc_addr): Move here from unw_init_local.c.
(_Uia64_uc_addr): Ditto.
(access_mem): Ditto.
(access_reg): Ditto.
(access_fpreg): Ditto.
(ia64_init) [!UNW_REMOTE_ONLY]: Initialize local_addr_space.

(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
1481ba336b (unw_init_remote): Adjust for new interface.
(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
349dc592e1 (unw_init_local): Initialize c->as_arg with context-pointer (instead of c->uc).
(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
22e898a099 (unw_get_save_loc): Adjust for fact that context pointer is now stored in
c->as_arg, which is a "void *".

(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
09eaf30ca4 (unw_flush_cache): Adjust for new arguments.
(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
9f93a9d0da (ia64_local_resume): Move here from unw_init_local().
(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
40e5cd3ca7 (get_proc_info): Adjust for move of "tables" member into the address-space structure.
(ia64_get_proc_info): Always compile-in script-lookup, but check script-cache only
	if caching is enabled.

(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
b5e3d308ef (flush_script_cache): Take additional "address-space" argument.
(get_script_cache): Ditto.
(script_lookup): Renamed from ia64_script_lookup() and add "address-space" argument.
(ia64_script_lookup): New function.
(build_script): Get script from the caller instead of via script_new().
(ia64_find_save_locs): If caching is disabled, create a temporary script and
	do not update the script cache.

(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
07beae63f4 (common_init): Initialize c->hint and c->prev_script unconditionally.
(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
007805c65a (access_nat) [UNW_LOCAL_ONLY]: Adjust for fact that context-pointer is now stored
in c->as_arg, which is a "void *".

(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
990790c880 (
(Logical change 1.27)
2002-11-16 06:50:04 +00:00
mostang.com!davidm
aca3843d6f Switch to MIT license.
(Logical change 1.26)
2002-11-16 03:25:36 +00:00
model.com!marky
c2262737f7 Fix typo in ia64_put()
(Logical change 1.24)
2002-11-14 19:12:58 +00:00
hp.com!davidm
126ca10566 Remove IA64_UNW_SCRIPT_CACHE macro. Move script cache info into
separate ia64_script_cache structure.
(unw.cache_generation): New member.
(unw.global_cache): Ditto.
(ia64_per_thread_cache): New macro.
(ia64_script_cache_init): Ditto.
(ia64_script_cache_init): Add declaration.

(Logical change 1.23)
2002-11-12 00:43:55 +00:00
mostang.com!davidm
aca9360701 (Logical change 1.22) 2002-11-09 07:59:02 +00:00
mostang.com!davidm
e04493ac30 Initial revision 2002-11-09 07:59:02 +00:00
mostang.com!davidm
57c6184925 (struct unw): Remove "hash" member.
(ia64_init): Replace cache-initialization with call to ia64_script_cache_init().

(Logical change 1.22)
2002-11-09 07:59:02 +00:00
mostang.com!davidm
e196ffd7eb (struct ia64_script_cache): New structure (broken out from global unwind state).
(Logical change 1.22)
2002-11-09 07:59:02 +00:00
mostang.com!davidm
d7d0463d0b (ia64_per_thread_cache) [HAVE___THREAD]: New variable.
(flush_script_cache): New function.
(get_script_cache): Ditto.
(ia64_script_lookup): Modify to support multiple (in particular: per-thread) caches.
(script_new): Add explicit "cache" pointer argument.
(ia64_script_lookup): Add multi-cache support.
(build_script): Ditto.
(ia64_find_save_locs): Ditto.
(ia64_script_cache_init): New function.

(Logical change 1.22)
2002-11-09 07:59:02 +00:00
mostang.com!davidm
e633236827 (ia64_getfp): Change from macro to inline function. Check "loc" argument for
being NULL before dereferencing it.
(ia64_putfp): Ditto.
(ia64_get): Ditto.
(ia64_put): Ditto.

(Logical change 1.21)
2002-11-09 03:59:27 +00:00
mostang.com!davidm
4583a3fc27 Fix bugs reported by Robert Faught:
(unw_get_save_loc): Handle b6 like b7.
(unw_get_save_loc): Fix typo: "if (!sloc)" was meant to be "if (!loc)".

(Logical change 1.21)
2002-11-09 03:59:27 +00:00
mostang.com!davidm
6a0ac2b8a4 (ia64_scratch_loc): Handle b6 like b7. Reported by Robert Faught.
(ia64_access_reg): Ditto.

(Logical change 1.21)
2002-11-09 03:59:27 +00:00
mostang.com!davidm
aa54b9f4a8 (Logical change 1.20) 2002-09-26 23:09:01 +00:00
mostang.com!davidm
27cce00964 Initial revision 2002-09-26 23:09:01 +00:00
mostang.com!davidm
3fbd1a1d68 Minor formatting fixes.
(struct ia64_reg_state): Moved here from parser.c.
(struct ia64_global_unwind_state): Add unwind_table_pool, state_record_pool,
	and labeled_state_pool.

(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
b4d191544a Keep list of things to test.
(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
dd3c681c6a (Logical change 1.19) 2002-07-18 03:58:34 +00:00
mostang.com!davidm
5b6078357d Initial revision 2002-07-18 03:58:34 +00:00
mostang.com!davidm
b04ff63c65 (update_frame_state): Print debug output when catching sigcontext location.
(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
a2284ed1f3 (unw_get_save_loc): Remove unused variables sc_addr and ret.
(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
76a2d6a18b (struct ia64_labeled_state): Move to unwind_i.h.
(alloc_reg_state): Use mempool interface.
(free_reg_state): Ditto.
(alloc_labeled_state): Ditto.
(free_labeled_state): Ditto.
(alloc_spill_area): Fix spill-area allocation (fix by Richard Henderson).
(desc_frgr_mem): Fix case for f16-f31 (fix by Richard Henderson).
(get_proc_info): Use mempool_alloc() instead of malloc().

(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
641d801905 (libunwind_la_SOURCES_common): Mention mempool.h and mempool.c.
(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
ce831876f2 (ia64_init): Initialize mempools.
(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
d603a5b4bb (ia64_access_reg): r15-r18 should refer to sigcontext IFF the cursor is currently
pointing at the signal trampoline frame.  Otherwise, raising an exception from within
a signal handler will fail to pass the exception arguments to the exception handler.

(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
e3cb03d7b6 (get_kernel_table): Use sos_alloc()/sos_free() instead of malloc()/free().
(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
9ac7c9cda2 (common_int): Explicitly declare return type as "int".
(Logical change 1.19)
2002-07-18 03:58:34 +00:00
mostang.com!davidm
1c0d73e27d Replace uses of IA64_FLAG_SIGTRAMP flag by checks against sigcontext_loc.
(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
c0a60b6f82 (Logical change 1.18) 2002-04-25 06:47:29 +00:00
mostang.com!davidm
f7381ce536 Initial revision 2002-04-25 06:47:29 +00:00
mostang.com!davidm
af6fe37119 Include <stdlib.h>.
(ia64_init): Initialize debug level from UNW_DEBUG_LEVEL environment variable.

(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
039f99fef0 (update_frame_state): Fix handling of sigtramp frames. Also work around bugs
in kernel unwind info.

(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
118746f9e5 (unw_is_signal_frame): Need to (re-)create state record before we can check
IA64_FLAG_SIGTRAMP.

(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
83da1e6ac1 (unw_get_save_loc): Replace check for IA64_FLAG_SIGTRAMP with check against
c->sigcontext_loc.

(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
563bccbf75 (struct ia64_cursor): Add sigcontext_loc.
(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
4d37950b2c (rotate_gr): If the register is outside the current stacked frame, return -1.
(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
2294fb8aa2 (ia64_create_state_record) [IA_UNW_DEBUG]: Display state record for default
frame state as well.

(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
c845317889 (getunwind): Define only if HAVE_GETUNWIND is not defined.
(_Uia64_glibc_acquire_unwind_info): Correct typo: dl_iterate_phdr() is successful
	only if it returns a positive value.

(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
c56126ea7b (common_init): Initialize c->sigcontext_loc to zero.
(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
a6d51ee1a6 (SOVERSION): New macro.
(install-exec-hook): Use this hook to create symlinks from architecture-specific
	library name to default name (libunwind.a/libunwind.so).
(libunwind_la_SOURCES_ia64): Mention unw_is_signal_frame.c and Lunw_is_signal_frame.c.
(libunwind_la_SOURCES): Drop.
(libunwind_ia64_la_LDFLAGS): New macro.
(libunwind_ia32_la_LDFLAGS): New macro.
(libunwind_la_LDFLAGS): Drop.

(Logical change 1.18)
2002-04-25 06:47:29 +00:00
mostang.com!davidm
c528adf7c7 Fix typo which caused register names to be off by 7.
(Logical change 1.17)
2002-04-19 05:35:46 +00:00
mostang.com!davidm
00abcc6dc3 Always install library as libunwind-$(ARCH).a. Need to find a way to create
an alias, though.

(Logical change 1.17)
2002-04-19 05:35:46 +00:00
mostang.com!davidm
5a6e6f89d8 SP is now read via UNW_IA64_GR + 12.
Change prefix from _U_ia64 to _Uia64.
Rename _U_ia64_regname() to unw_regname().

(Logical change 1.16)
2002-04-12 05:02:40 +00:00
mostang.com!davidm
e5a2726686 Rename shared.c to unw_regname.c.
(Logical change 1.16)
2002-04-12 05:02:40 +00:00
mostang.com!davidm
50b1a123c0 (regname): Update with current register names.
(unw_regname): First register number now starts with zero.

2002/04/11 21:43:00-07:00 mostang.com!davidm
Rename: src/ia64/shared.c -> src/ia64/unw_regname.c

(Logical change 1.16)
2002-04-12 05:02:40 +00:00
mostang.com!davidm
27cb8c2844 Initial revision 2002-04-12 05:02:40 +00:00
mostang.com!davidm
82248d8a12 Change prefix from _U_ia64 to _Uia64.
(Logical change 1.16)
2002-04-12 05:02:40 +00:00
mostang.com!davidm
9d5e392426 (regname): Update with current register names.
(unw_regname): First register number now starts with zero.

}(Logical change 1.16)
2002-04-12 05:02:40 +00:00
mostang.com!davidm
bd228fb16a (_U_ia64_regname): Delete declaration.
Change prefix from _U_ia64 to _Uia64.
Drop extraneous ia64_ prefix from ia64-specific routines.

(Logical change 1.16)
2002-04-12 05:02:40 +00:00
hp.com!davidm
73645af561 (libunwind_la_SOURCES_ia64): Mention ia64/regs.h.
(Logical change 1.14)
2002-04-12 04:21:19 +00:00
hp.com!davidm
cc5ee5947a Update.
(Logical change 1.12)
2002-04-05 23:37:55 +00:00
hp.com!davidm
6432d81f05 Multi-architecture support.
(Logical change 1.12)
2002-04-05 23:37:55 +00:00
hp.com!davidm
1f20cef057 Include libunwind-ia64.h instead of libunwind.h.
(Logical change 1.12)
2002-04-05 23:37:55 +00:00
mostang.com!davidm
f8cdbb6ef0 Update.
(Logical change 1.11)
2002-04-04 19:04:09 +00:00
mostang.com!davidm
fb9b517d0c Read stack pointer from r12.
(Logical change 1.11)
2002-04-04 19:04:09 +00:00
hp.com!davidm
b682349b33 (Logical change 1.10) 2002-04-03 06:51:34 +00:00
hp.com!davidm
3b315369bc Initial revision 2002-04-03 06:51:34 +00:00
hp.com!davidm
4e41f21f65 Fix typo in comment.
(Logical change 1.10)
2002-04-03 06:51:34 +00:00
hp.com!davidm
fb94137d04 (unw_get_save_loc): First draft-implementation. Should be reasonably close to something
useful.

(Logical change 1.10)
2002-04-03 06:51:34 +00:00
hp.com!davidm
a5bf714ea5 (rotate_gr, rotate_fr, pr_ltop, pr_ptol): Move into regs.h.
(Logical change 1.10)
2002-04-03 06:51:34 +00:00
hp.com!davidm
1bb24a283f (AM_CPPFLAGS): Define.
(libunwind_la_SOURCES): Mention unw_get_save_loc.c and Lunw_get_save_loc.c.

(Logical change 1.10)
2002-04-03 06:51:34 +00:00
mostang.com!davidm
99639fb162 Rename UNW_IA64_CURRENT_BSP to UNW_IA64_BSP.
(Logical change 1.9)
2002-04-01 23:01:22 +00:00
mostang.com!davidm
42f9c357a8 Mention unw_get_fpreg.c and unw_set_fpreg.c.
(Logical change 1.9)
2002-04-01 23:01:22 +00:00
mostang.com!davidm
5e30dcbde3 Mention debugger requirements.
(Logical change 1.9)
2002-04-01 23:01:22 +00:00
mostang.com!davidm
6f514a6726 (Logical change 1.9) 2002-04-01 23:01:22 +00:00
mostang.com!davidm
3d5c9efd1e Initial revision 2002-04-01 23:01:22 +00:00
mostang.com!davidm
883ce4ca59 Drop useless STAT() call.
(Logical change 1.9)
2002-04-01 23:01:22 +00:00
mostang.com!davidm
9a2039fe01 Protect against multiple inclusion. Define IA64_UNW_DEBUG based on DEBUG. Document
that in the UNW_LOCAL_ONLY-case, bit 2 in register save locations is unused.  If
UNW_LOCAL_ONLY is defined, define stream-lined versions of IA64_REG_LOC(),
IA64_FPREG_LOC(), ia64_acquire_unwind_info(), ia64_release_unwind_info(), ia64_get(),
ia64_put(), ia64_getfp(), and ia64_putfp().  Drop convenience macros and declarations for
ia64_glibc_{acquire,release}_unwind_info().  Add convenience macro and declaration for
ia64_local_resume().

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
59f4f0d4c1 Move sharable stuff into shared.c.
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
0c897ad858 Make this file sharable by using exported names that do not depend on UNW_LOCAL_ONLY.
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
3083f40842 Initial revision 2002-02-28 16:24:48 +00:00
mostang.com!davidm
97ae3ba79a Define UNW_LOCAL_ONLY before including libunwind.h.
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
ede7c575f9 Adjust for fact that IA64_REG_LOC now takes two arguments.
Special case access of NaT bits.

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
83b038d4aa Add local-only variants of files (Lfoo.c).
Add ia64/shared.c and ia64/init.h.

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
2353a19c67 (unw_resume): If UNW_LOCAL_ONLY is defined, directly call ia64_local_resume().
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
155b35c2cf (unw_init_remote): If UNW_LOCAL_ONLY is defined, return -UNW_EINVAL. Use common_init()
to handle most of the cursor initialization.

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
503d83fa69 (uc_addr): New function to translate a register number into a ucontext address.
(_U_ia64_uc_addr): New function.
(access_reg): Use uc_addr() to calculate ucontext address.  Use uc->sc_rbs_base
	when accessing ar.bsp or ar.bspstore (see comments for unw_init_local()).
(access_fpreg): Ditto.
(ia64_local_resume): Renamed from resume().  Read NaT bits via ia64_access_reg().
	Call abort() instead of fprintf() when encountering a signal trampoline.
(unw_init_local): Initialize uc->sc_rbs_base to the bsp value of the current function.
	For UNW_LOCAL_ONLY case, just initialize c->uc and then call
	common_init() to do the remaining initialization.  For the general case,
	just initialize the accessor and then also call common_init().

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
5e34685f18 (Logical change 1.8) 2002-02-28 16:24:48 +00:00
mostang.com!davidm
468db8fdea mvdir
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
97c6919cd3 Rename: src/ia64/unwind_decoder.c -> src/ia64/unwind_decoder.h
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
de7b9f4912 Rename: src/ia64/unwind_decoder.c -> src/ia64/unwind_decoder.h
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
95ce9146a7 Initial revision 2002-02-23 20:27:03 +00:00
mostang.com!davidm
2f69df1d92 Include unwind_decoder.h instead of unwind_decoder.c.
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
1888c151fc Delete: tests/Makefile
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
02acb8d4dd Delete: src/Makefile
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
1a9fe6168d (Logical change 1.7) 2002-02-23 20:27:03 +00:00
(none)!davidm
68ffdc1fce When printing a value of type unw_word_t, use the %lu format and
cast the value to (long).

(struct ia64_labeled_state): New type.
(alloc_labeled_state): New macro.
(free_labeled_state): Ditto.
(push, pop): Update for new ia64_state_record layout.
(dup_state_stack): New function.
(free_state_stack): Ditto.
(desc_copy_state): Make it restore the entire stack of states, not
	just the current one.
(desc_label_state): Make it save the entire stack of states, not
	just the current one.
(ia64_free_state_record): Free the list of labeled states.

(desc_prologue): Terminate parsing at end of region regardless of
	whether the next region is a body or a prologue.

(lookup): Verify that unwind table entry found by binary search
	really includes the desired IP.  If not, return NULL.
(get_proc_info): Adjust for move of start/end from unwind table
	to the unwind table info.  Return -UNW_ENOMEM if unable
	to allocate a new table.  If unwind entry does not exist
	for desired IP, clear the procedure info to zero.  Check
	the unwind version number and return -UNW_EBADVERSION if
	it is not 1.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
8dbd577e05 To simplify cross-compilation, use unw_word_t instead of long pointers
for backing store addresses.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
a8d1c7c6e9 Set HOSTARCH to the host architecture and pass it on to subdirectories.
Build backtrace.o only when doing a native (local) build.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
6a4f3b23c1 Rename IA64_UNW_ACCESSORS to UNW_LOCAL_ONLY. Drop weak_alias() and
alias() macros.

(struct ia64_cursor): Rearrange order of members a bit to group
	things that logicall belong together.  Rename rp_loc to
	ip_loc.
(struct ia64_unwind_table): Drop start and end members (they are now
	in unw_ia64_table_t).
(struct ia64_reg_state): Break declaration out of declaration for
	ia64_state_record and add "next" member.
(struct ia64_state_record): Add member "labeled_states", drop
	members "stack", and "reg_state_list".

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
143ace01a8 Rename IA64_INSN_MOVE_SIGCONTEXT to IA64_INSN_MOVE_SCRATCH.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
60cbd737ab Reformat preg_index initialization to GNU Coding standard.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
4224f76cfd Initial revision 2002-02-22 21:58:53 +00:00
(none)!davidm
7820abd977 Include "offsets.h" to get offsets for various structures (such
as sigcontext).  Adjust for the fact that the RSE arithmetic
is now done on values of type unw_word_t rather than long pointers.

(ia64_scratch_loc): Rename from ia64_get_sigcontext() and expand
	it such that it returns a scratch register location if
	the current frame is not a sigcontext frame.
(ia64_access_reg): Read the address of the personality routine with
	ia64_get() rather than trying to dereference the address
	directly.  When writing the IP or the PR, update the cached
	values, too.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
3790561497 Include "offsets.h" instead of <signal.h> to enable cross-compilation.
Use offsets defined in this file instead of calculating the offsets
from sigcontext structure.

(update_frame_state): Rename from ia64_get_frame_state() and make it
static and inlined.

(unw_step): Call update_frame_state() instead of ia64_get_frame_state().

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
172cc2ba9b If UNW_REMOTE_ONLY is defined, make unw_init_local() a stub that
unconditionally returns -UNW_EINVAL.

(access_reg): IP is now read via UNW_IA64_IP (instead of
	UNW_IA64_BR+0).  CFM is now read via UNW_IA64_CFM
	instead of UNW_IA64_AR_PFS.  For UNW_IA64_AR_BSP
	(and UNW_IA64_AR_BSPSTORE), adjust the pointer so
	that it points to the first stacked register in
	the current frame.
(resume): "rp_loc" has been renamed to "ip_loc".
(unw_init_local): Add an #error directive to prevent compilation
	with UNW_LOCAL_ONLY until this case has been implemented.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
7c934e9308 For now, add #error directive to ensure compilation fails when
attempting to compile with UNW_LOCAL_ONLY.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
fb5ed0d939 Compile only if UNW_REMOTE_ONLY is not defined.
(get_kernel_table): Return -UNW_ENOMEM if unable to allocate buffer
	for kernel's unwind info.  Initialize the start and end
	members in unw_ia64_table_t.
(callback): Initialize the start and end members.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
4588bf926d Build only if UNW_REMOTE_ONLY is not defined.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
fcb6a7d272 Build bt and exc programs only during native builds.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
5cdb197f44 (unw_init_remote): Rename from ia64_init_remote(). Initialize
cfm_loc with UNW_IA64_CFM.  Initialize bspstore_loc with
	UNW_IA64_AR_BSPSTORE.  Renamem rp_loc to ip_loc and initialize
	with UNW_IA64_IP.  Initialized the cached values of
	PR and IP.  Initialize sp and psp to value in UNW_IA64_SP.
	Initialize exception handling args by reading the corresponding
	scratch registers (r15-r18).  If the read fails, initialize
	with 0.  Finish by calling ia64_get_proc_info() instead of
	ia64_get_frame_state().

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
dffc24cb9f (compile_reg): Use IA64_INSN_MOVE_SCRATCH instead of
IA64_INSN_MOVE_SIGCONTEXT.
(run_script): Drop IA64_INSN_MOVE_SIGCONTEXT.  Implement
	IA64_INSN_MOVE_SCRATCH by calling ia64_scratch_loc().

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
73c10de341 (Logical change 1.5) 2002-02-22 21:58:53 +00:00
mostang.com!davidm
444b815950 Clarify comment about proc_info.
(Logical change 1.4)
2002-02-15 23:51:28 +00:00
mostang.com!davidm
7fbfe0a255 (Logical change 1.3) 2002-02-15 23:22:05 +00:00
mostang.com!davidm
63669f7ad4 Initial revision 2002-02-15 23:22:05 +00:00