1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-11-14 20:28:12 +01:00
Commit graph

723 commits

Author SHA1 Message Date
hp.com!davidm
4dca00338a (tdep_init): Adjust for r0, f0, f1_le, and f1_be having moved into
"read_only" member.

(Logical change 1.229)
2004-05-06 20:24:01 +00:00
hp.com!davidm
ed18defb26 (inlined_uc_addr): Also handle f0 and f1.
(ia64_read_only_reg): New function.
(ia64_putfp): Reject puts into read-only save-locations.
(ia64_put): Likewise.

(Logical change 1.229)
2004-05-06 20:24:01 +00:00
hp.com!davidm
b8d777bc65 (access_reg): Do not reject accesses to floating-point registers. On
little-endian machines, this automagically does the right thing
	and on HP-UX (big-endian) we never use this routine.
	Reject write-accesses to read-only save-locations (such as
	unw.read_only.r0).
(access_fpreg): Reject write-accesses to read-only save-locations.

(Logical change 1.229)
2004-05-06 20:24:01 +00:00
mostang.com!davidm
1b4583400a (ia64_getfp): Use IA64_IS_NULL_LOC() instead of nothing or
pen-coded NULL-test.
(ia64_putfp): Likewise.
(ia64_get): Likewise.
(ia64_put): Likewise.

(Logical change 1.228)
2004-05-06 03:46:27 +00:00
mostang.com!davidm
2cc4674137 Add forgotten copyright notice.
(Logical change 1.223)
2004-05-04 22:24:50 +00:00
mostang.com!davidm
52c2da7b5e Rename: src/ia64/rse.h -> include/ia64/rse.h
}(Logical change 1.221)
2004-05-04 22:16:57 +00:00
mostang.com!davidm
8045a438de Include "ia64/rse.h" instead of "rse.h".
(Logical change 1.221)
2004-05-04 22:16:57 +00:00
mostang.com!davidm
513e7159bd Drop unnecessary include of "rse.h" (already included via unwind_i.h).
(Logical change 1.221)
2004-05-04 22:16:57 +00:00
mostang.com!davidm
d42705c5b7 (unw_init_local): Use unw_context_t instead of ucontext_t.
(Logical change 1.219)
2004-05-04 20:13:07 +00:00
mostang.com!davidm
6c50e90402 (remote_install_cursor): Tidy up #endif comment.
(Logical change 1.219)
2004-05-04 20:13:07 +00:00
mostang.com!davidm
48b0eeeb37 (tdep_find_proc_info) [HAVE_DLMODINFO]: Fix Debug() message (missing
paren).

(Logical change 1.218)
2004-04-28 04:54:17 +00:00
mostang.com!davidm
9b21d8edaf (access_reg) [HAVE_SYS_UC_ACCESS_H]: Also print errno when an
access fails.

(Logical change 1.218)
2004-04-28 04:54:17 +00:00
(none)!davidm
1218cf85e3 (hash): Define magic constant as unsigned long long and then cast it to the
right type.  Avoids compiler warnings when cross-compiling from a
	32-bit platform.

(Logical change 1.214)
2004-04-23 01:31:47 +00:00
(none)!davidm
a2cd0592ca (IA64_UNW_FLAG_MASK): Use "ULL" postfix to avoid compiler warning on 32-bit platforms.
(IA64_UNW_FLAG_OSMASK): Likewise.
(IA64_UNW_FLAG_EHANDLER): Likewise.
(IA64_UNW_FLAG_UHANDLER): Likewise.
(IA64_UNW_LENGTH): Likewise.

(Logical change 1.214)
2004-04-23 01:31:47 +00:00
hp.com!davidm
f99cce1d2a (ia64_install_cursor): Fix off-by-8 bug which caused r5 and r7 to not get
restored properly.

(Logical change 1.211)
2004-04-22 00:36:23 +00:00
mostang.com!davidm
72e5a3bc17 (ia64_validate_cache): Call ia64_local_validate_cache() only if
we're really dealing with the local address space.  Duh.

(Logical change 1.209)
2004-04-21 07:24:35 +00:00
mostang.com!davidm
c2b94e1e46 (common_init): Whitespace fix.
(Logical change 1.209)
2004-04-21 07:24:35 +00:00
mostang.com!davidm
c1f430663c (tdep_init): Use an assertion instead of relying on compile-time
optimization to verify that unw_hash_index_t is wide
	enough.

(Logical change 1.207)
2004-04-20 23:46:44 +00:00
hp.com!davidm
d512dc0daa Auto merged
2004/04/20 09:53:04-07:00 hp.com!davidm
(validate_cache): If HAVE_DL_PHDR_REMOVALS_COUNTER is defined, use
	dl_phdr_removals_counter() to validate the cache.  This is
	much more efficient than using dl_iterate_phdr(), since it
	avoids locking.

(Logical change 1.205)
2004-04-20 16:53:44 +00:00
mostang.com!davidm
b8eefeac32 (validate_cache): Mask signal-delivery during dl_iterate_phdr().
(tdep_find_proc_info): Likewise.

(Logical change 1.203)
2004-04-01 08:09:28 +00:00
mostang.com!davidm
93d627ef87 (desc_alias): New function.
(parse_dynamic): Handle UNW_DYN_ALIAS via desc_dynamic().

(Logical change 1.201)
2004-04-01 06:01:53 +00:00
mostang.com!davidm
50160e1df1 Remove perf-tuning code, make it fit in 80 columns.
(Logical change 1.195)
2004-03-31 00:41:59 +00:00
hp.com!davidm
2b07d73a5a Temporarily add various test-cases which help with performance-tuning.
(Logical change 1.193)
2004-03-30 22:50:23 +00:00
hp.com!davidm
74f73e711e (IA64_SC_FLAG_SYNCHRONOUS_BIT): New macro.
(SC_FLAGS): New macro.
(rTMP): Move from r14 to r10.
(rPOS): Move from r14 to r11.
(rCPOS): Move from r17 to r14.
(rNAT): Move from r18 to r15.
(rFLAGS): New macro.

(Logical change 1.193)
2004-03-30 22:50:23 +00:00
mostang.com!davidm
5c811e86b0 Move flushsrs into a better position (after most of the prefetching
stores are done) to maximize overlap of memory misses.

(Logical change 1.191)
2004-03-28 00:24:33 +00:00
mostang.com!davidm
a77f17b0b7 (GR): New macro.
(BR): Likewise.
(FR): Likewise.
(_Uia64_getcontext): Tweak for slightly better cold-cache performance.

(Logical change 1.190)
2004-03-27 09:25:58 +00:00
mostang.com!davidm
cb9fde199b (_Uia64_get_kernel_table): Fix it so it actually makes some sense
again.

(Logical change 1.189)
2004-03-27 06:36:15 +00:00
hp.com!davidm
53a56cb759 (_Uia64_get_kernel_table): Only call get_kernel_table() if we do not already
have the kernel table.

(Logical change 1.188)
2004-03-27 01:25:56 +00:00
mostang.com!davidm
89b3ee87a9 (Logical change 1.186) 2004-03-20 09:54:28 +00:00
mostang.com!davidm
412615853d Initial revision 2004-03-20 09:54:28 +00:00
mostang.com!davidm
70b89e24f3 (uc_addr): Move to unwind_i.h.
(Logical change 1.186)
2004-03-20 09:54:28 +00:00
mostang.com!davidm
c8dfaca5a0 (par_dynamic): Fix typo in call to ia64_free_state_record().
(Logical change 1.186)
2004-03-20 09:54:28 +00:00
mostang.com!davidm
76b4736bde (inlined_uc_addr): New function.
(uc_addr): Moved to here from Ginit-ia64.c and added a special
	case when the register is constant.
(IA64_REG_LOC): Use uc_addr() instead of tdep_uc_addr().
(IA64_REG_NAT_LOC): Likewise.
(IA64_FPREG_LOC): Likewise.

(Logical change 1.186)
2004-03-20 09:54:28 +00:00
mostang.com!davidm
bd286e3260 (ia64_install_cursor): Correct NEW_SYSCALL-stub.
(Logical change 1.186)
2004-03-20 09:54:28 +00:00
mostang.com!davidm
756aefe909 (common_init): Mark it as ALWAYS_INLINE. Spell out initialization
of F16-F31 so they can be inlined in the local case.

(Logical change 1.186)
2004-03-20 09:54:28 +00:00
hp.com!davidm
fc7cd7c4bc Whitespace fix.
(Logical change 1.185)
2004-03-20 06:27:55 +00:00
hp.com!davidm
d8715c0e28 (build_script): Fix typo which caused case to fail where primary UNaT
was saved in a register only.

(Logical change 1.185)
2004-03-20 06:27:55 +00:00
mostang.com!davidm
eed0c54d28 (run_script): Remove erroneous calls to rotate_gr(). The unwind
directives specify physical stacked register numbers and
	the register-backing store always represents physical
	registers, so it was wrong to rotate here.

(Logical change 1.184)
2004-03-19 08:18:44 +00:00
hp.com!davidm
f59f60f9ce Tweak debug-levels a bit.
(Logical change 1.183)
2004-03-19 02:38:39 +00:00
hp.com!davidm
43db353753 (access_nat): Check for fp-location first and also do a direct get/put if
the NaT-location is a NaT-register.

(Logical change 1.183)
2004-03-19 02:38:39 +00:00
hp.com!davidm
e2b1175c3c (unw_is_signal_frame): Don't forget to call ia64_free_state_record() after
we're done with the state-record.

(Logical change 1.182)
2004-03-19 02:35:27 +00:00
hp.com!davidm
2cdea99143 (parse_dynamic): Free old state-record before creating new one.
(Logical change 1.182)
2004-03-19 02:35:27 +00:00
mostang.com!davidm
7c7bcebcc0 (unw_get_save_loc): New variable "nat_bitnr".
Adjust NaT-bit handling.  Much simpler now.
	Pass NULL as new third argument to ia64_scratch_loc().
	Set save_loc->extra.nat_bitnr to the NaT bit number (or 0
	when not accessing a NaT bit).

(Logical change 1.181)
2004-02-27 08:54:25 +00:00
mostang.com!davidm
ebe6b21c93 (uc_addr): Add "nat_bitnr"-pointer argument. Handle preserved
NaT-bit registers.
(tdep_uc_addr): Add "nat_bitnr"-pointer argument.
(access_reg): Pass NULL as third argument to uc_addr().
(access_fpreg): Likewise.

(Logical change 1.181)
2004-02-27 08:54:25 +00:00
mostang.com!davidm
5de460718c (remote_install_cursor): Pass NULL to third argument of
tdep_uc_addr().

(Logical change 1.181)
2004-02-27 08:54:25 +00:00
mostang.com!davidm
41db5ace19 (rbs_find): Delete---it's no longer needed.
(Logical change 1.181)
2004-02-27 08:54:25 +00:00
mostang.com!davidm
50488aece3 (linux_scratch_loc): Add "nat_bitnr"-pointer argument.
Handle NaT-bit registers by returning not just the
	NaT-word address, but also the NaT-bit number.
(hpux_scratch_loc): Add "nat_bitnr"-pointer argument.
(ia64_scratch_loc): Likewise.
(access_nat): Add "nat_bitnr" argument.  Rename "loc" to "nat_loc".
	Greatly simplify now that we have the NaT-word and the
	NaT bit-number readily available.
(access_reg): Pass NaT-bit number to access_nat().
	Handle scratch NaT-bit registers in a more generic fashion,
	now that we can.  Adjust all calls to ia64_scratch_loc() for
	third argument.

(Logical change 1.181)
2004-02-27 08:54:25 +00:00
mostang.com!davidm
9316bbb8f4 (enum ia64_script_insn_opcode): Moved to here from script.h.
Added operations IA64_INSN_ADD_PSP_NAT, IA64_INSN_ADD_SP_NAT,
	IA64_INSN_MOVE_NAT, IA64_INSN_MOVE_NO_NAT,
	IA64_INSN_MOVE_STACKED_NAT, IA64_INSN_MOVE_STACKED_NAT,
	IA64_INSN_MOVE_SCRATCH_NAT, and IA64_INSN_MOVE_SCRATCH_NO_NAT.
(emit_nat_info): Remove---it's no longer needed.
(compile_reg): Emit special op-codes when compiling a preserved
	static register, such that it's NaT-info can be updated.
(set_nat_info): New function.
(run_script): Implement new script instructions.

(Logical change 1.181)
2004-02-27 08:54:25 +00:00
mostang.com!davidm
fcb151f6ec (common_init): Initialize NaT-bit locations via IA64_REG_NAT_LOC()
macros.

(Logical change 1.181)
2004-02-27 08:54:25 +00:00
mostang.com!davidm
be1d46b41c (IA64_REG_LOC): Pass NULL as third argument to tdep_uc_addr().
(IA64_FPREG_LOC): Likewise.
(IA64_REG_NAT_LOC): New macro to describe a NaT-bit register location.
(rbs_find): Remove declaration.

(Logical change 1.181)
2004-02-27 08:54:25 +00:00
hp.com!davidm
a0f46f2a2b Fix typo in comment.
(IA64_LOC_UC_REG): Remove from the UNW_LOCAL_ONLY case.

(Logical change 1.180)
2004-02-27 01:00:42 +00:00
hp.com!davidm
d83276cb80 (compile_reg): Take extra ia64_reg_info-pointer argument.
(build_script): Adjust for extra argument to compile_reg().
	Fix the primary-NaT compilation such that it always
	updates IA64_REGPRI_UNAT_MEM.
(run_script): For IA64_INSN_SETNET_MEMSTK, set the location based on
	IA64_REG_PRI_UNAT_MEM and don't forget to turn on the
	MEMSTK_NAT bit.

(Logical change 1.178)
2004-02-27 00:54:27 +00:00
hp.com!davidm
c4d1b80bfe (access_nat): Fix that NaT-location calculation for the case where the NaT
is on the memory stack.

(Logical change 1.178)
2004-02-27 00:54:27 +00:00
hp.com!davidm
6702d1059c (tdep_init): Fix typo in nat_val_bytes[] (too much cut & paste).
Likewise for int_val_bytes[].

(Logical change 1.177)
2004-02-27 00:46:01 +00:00
hp.com!davidm
3e5b6ecf0d (sort_regs): New function.
(build_script): Compile the registers in decreasing order of WHEN values, so
	we can properly handle chains of spills/saves.

(Logical change 1.176)
2004-02-20 01:03:54 +00:00
hp.com!davidm
8b96f6ef11 (rbs_find): New function.
(Logical change 1.173)
2004-02-19 01:37:27 +00:00
hp.com!davidm
57b8d6d7eb (rbs_find): Declare.
(Logical change 1.173)
2004-02-19 01:37:27 +00:00
hp.com!davidm
4a0d7bd478 (access_nat): Correct the case where a static general register got saved
to a stacked register.  We can't use ia64_get_stacked() here because
	c->rbs will, in general, be different from the frame in which the
	register was saved.

(Logical change 1.173)
2004-02-19 01:37:27 +00:00
hp.com!davidm
90a9f62a8c (compile_reg): Fix off-by-1 error for case IA64_WHERE_FR. This makes
Gia64-test-nat.c:check_static_to_fpreg() work.

(Logical change 1.172)
2004-02-19 01:34:08 +00:00
hp.com!davidm
5216609e29 (access_mem): Lower the debug level to 12, to be in sync with access_reg().
(Logical change 1.170)
2004-02-19 01:30:13 +00:00
mostang.com!davidm
d3a82ba5e8 (emit_nat_info): i is a preserved register number.
Correct accordingly.

(Logical change 1.169)
2004-02-14 23:04:43 +00:00
mostang.com!davidm
7b23d69a26 (emit_nat_info): Fix a typo: the destination must be a NaT-register!
(Logical change 1.167)
2004-02-14 07:51:43 +00:00
mostang.com!davidm
9468bda47a (unw_step): Add Debug() statement.
(Logical change 1.166)
2004-02-14 07:49:50 +00:00
mostang.com!davidm
f753bb45be (unw_init_remote): Add Debug() statement.
(Logical change 1.166)
2004-02-14 07:49:50 +00:00
mostang.com!davidm
eacf1f1262 (unw_init_local): Add Debug() statement.
(Logical change 1.166)
2004-02-14 07:49:50 +00:00
hp.com!davidm
518e5bde6c Regenerate.
(Logical change 1.164)
2004-02-14 04:46:31 +00:00
hp.com!davidm
703aa0d196 (common_init): Fix Debug() call.
(Logical change 1.163)
2004-02-14 04:44:05 +00:00
hp.com!davidm
410f962b8d Update.
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
fd8811c5a7 Rename: src/ia64/flush_cache-ia64.c -> src/mi/flush_cache.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
ce05f993bd Rename: src/ia64/Linstall_cursor.S -> src/ia64/Linstall_cursor-ia64.S
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
6f65be26d3 Rename: src/ia64/Linstall_cursor.S -> src/ia64/Linstall_cursor-ia64.S
(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
8c21d3724d Rename: src/ia64/Ginstall_cursor.S -> src/ia64/Ginstall_cursor-ia64.S
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
a961f35543 Rename: src/ia64/Ginstall_cursor.S -> src/ia64/Ginstall_cursor-ia64.S
(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
449bfb3a04 Rename: BitKeeper/deleted/.del-Gget_proc_name-ia64.c~25362f8c3f6aff8 -> src/ia64/Gget_proc_name-ia64.c
(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
684f85c8f1 Rename ia64_init() to tdep_init().
(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
b88369b831 Initial revision 2004-01-30 00:01:24 +00:00
hp.com!davidm
34c683c33e Delete: src/ia64/Lset_reg-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
eab1b8b158 Delete: src/ia64/Lset_fpreg-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
576e75bcd2 Delete: src/ia64/Lset_caching_policy-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
dca58d18df Delete: src/ia64/Lget_reg-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
09fecd9ddb Delete: src/ia64/Lget_proc_name-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
b8668574ca Delete: src/ia64/Lget_fpreg-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
5ac1278b51 Delete: src/ia64/Lget_accessors-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
8bb86bfebe Delete: src/ia64/Ldestroy_addr_space-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
32d7718e50 Delete: src/ia64/Gset_reg-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
fbab46f5e7 Delete: src/ia64/Gset_fpreg-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
c082aa56ae Delete: src/ia64/Gget_reg-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
c4fd84f610 Delete: src/ia64/Gget_fpreg-ia64.c
}(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
c67d345c33 Convert from debug() to Debug().
(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
f8b49d4222 (tdep_init): Rename from ia64_init().
(Logical change 1.162)
2004-01-30 00:01:24 +00:00
hp.com!davidm
c2e7130493 (check_callback): Fix typo:
shared_object_subs -> shared_object_removals.

(Logical change 1.161)
2004-01-24 07:27:00 +00:00
mostang.com!davidm
9600c00e3e (check_callback): If HAVE_STRUCT_DL_PHDR_INFO_DLPI_SUBS is defined,
check dl_phdr_info.dlpi_subs to see if the cached info may
	be stale.

(Logical change 1.159)
2004-01-24 06:45:18 +00:00
hp.com!davidm
cc8cde11bc Rename: src/ia64/debug_level-ia64.c -> src/debug_level.c
}(Logical change 1.158)
2004-01-22 08:36:15 +00:00
hp.com!davidm
f275ca3c98 (create_state_record_for): Replace tdep_debug_level with
unwi_debug_level.

(Logical change 1.158)
2004-01-22 08:36:15 +00:00
mostang.com!davidm
a432debbe2 (Logical change 1.155) 2004-01-20 23:50:00 +00:00
mostang.com!davidm
46a75eaddf Initial revision 2004-01-20 23:50:00 +00:00
mostang.com!davidm
81beef6941 Include "internal.h" instead of "unwind_i.h" to avoid name-space
pollution when compiling with debugging enabled.  The name-space
pollution came from the fact that functions won't be inlined in this
case and that ended up generating dead code with references to
non-existent functions.

(Logical change 1.154)
2004-01-20 23:32:28 +00:00
mostang.com!davidm
6535a330cf Include "internal.h" and "tdep.h" instead of "unwind_i.h" to avoid
name-space pollution when compiling with debugging enabled.  The
name-space pollution came from the fact that functions won't be
inlined in this case and that ended up generating dead code with
references to non-existent functions.


(Logical change 1.154)
2004-01-20 23:32:28 +00:00
mostang.com!davidm
54ef1c8712 (unw_search_ia64_unwind_table): Rename from tdep_search_unwind_table().
(_Uia64_get_kernel_table): Define only when UNW_LOCAL_ONLY is not
	defined.
(_Uia64_find_dyn_list): Likewise.
(ia64_local_validate_cache): Fix prototype (second argument was
	missing).

(Logical change 1.154)
2004-01-20 23:32:28 +00:00
mostang.com!davidm
74dfbb0769 (tdep_debug_level): Define.
(Logical change 1.154)
2004-01-20 23:32:28 +00:00
mostang.com!davidm
4c61d17686 (ia64_validate_cache): Declare.
(ia64_local_validate_cache): Likewise.

(Logical change 1.154)
2004-01-20 23:32:28 +00:00
mostang.com!davidm
1fd74a4332 (ia64_uc_access_reg): Define only if not UNW_LOCAL_ONLY is defined.
(ia64_uc_access_fpreg): Likewise.

(Logical change 1.154)
2004-01-20 23:32:28 +00:00
mostang.com!davidm
fa1e694c0a (create_state_record_for): Check tdep_debug_level instead of
unw.debug_level.

(Logical change 1.154)
2004-01-20 23:32:28 +00:00
mostang.com!davidm
9099235bd7 (common_init): Pass c->as_arg as second argument to
ia64_validate_cache().

(Logical change 1.154)
2004-01-20 23:32:28 +00:00
hp.com!davidm
0371bad3eb (tdep_search_unwind_table): Initialize segbase to zero to avoid
compiler-warning.
(check_callback): New function.
(validate_cache): Likewise.
(ia64_local_validate_cache): Likewise.

(Logical change 1.153)
2004-01-20 01:51:17 +00:00
hp.com!davidm
641b12427d (ia64_validate_cache): New function.
(Logical change 1.153)
2004-01-20 01:51:17 +00:00
hp.com!davidm
172b01d775 (common_init): If caching is enabled, validate the cache first.
(Logical change 1.153)
2004-01-20 01:51:17 +00:00
hp.com!davidm
e703b3d278 Use print_error() instead of fprintf() to stderr.
(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
23f31e44a7 Rename: src/ia64/global-asm-ia64.S -> src/ia64/dyn_info_list-ia64.S
}(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
8d331ad2ae Rename: src/ia64/global-asm-ia64.S -> src/ia64/dyn_info_list-ia64.S
(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
d28aba1c56 Regenerate.
(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
e0585b4a71 Initial revision 2004-01-03 10:50:24 +00:00
hp.com!davidm
fe8b77aeaf Declare libunwind-entry-points as PROTECTED to ensure local uses get
resolved within the library itself.

}(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
be467abeac Declare libunwind-entry-points as PROTECTED to ensure local uses get
resolved within the library itself.

2004/01/03 00:25:12-08:00 hp.com!davidm
Rename: src/ia64/set_caching_policy-ia64.c -> src/ia64/Gset_caching_policy-ia64.c

(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
8578c3133a Declare libunwind-entry-points as PROTECTED to ensure local uses get
resolved within the library itself.

2004/01/03 00:24:50-08:00 hp.com!davidm
Rename: src/ia64/get_accessors-ia64.c -> src/ia64/Gget_accessors-ia64.c

(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
bf82624a21 Declare libunwind-entry-points as PROTECTED to ensure local uses get
resolved within the library itself.

(is_local_addr_space): Define UNW_LOCAL_ONLY and generic versions.
(read_mem): New function.
(tdep_put_unwind_info): Define only if not UNW_LOCAL_ONLY.
(tdep_search_unwind_table): Rename from _Uia64_search_unwind_table().
	Optimize away stuff that isn't needed for UNW_LOCAL_ONLY.
	Use read_mem() instead of open-coding accesses via
	access_mem() callback.
(get_kernel_table): Rename from _Uia64_get_kernel_table().
(_Uia64_get_kernel_table): Define for non-UNW_LOCAL_ONLY case so
	that libunwind-ptrace.a can get to it.

}(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
e9815e6cce Declare libunwind-entry-points as PROTECTED to ensure local uses get
resolved within the library itself.

(is_local_addr_space): Define UNW_LOCAL_ONLY and generic versions.
(read_mem): New function.
(tdep_put_unwind_info): Define only if not UNW_LOCAL_ONLY.
(tdep_search_unwind_table): Rename from _Uia64_search_unwind_table().
	Optimize away stuff that isn't needed for UNW_LOCAL_ONLY.
	Use read_mem() instead of open-coding accesses via
	access_mem() callback.
(get_kernel_table): Rename from _Uia64_get_kernel_table().
(_Uia64_get_kernel_table): Define for non-UNW_LOCAL_ONLY case so
	that libunwind-ptrace.a can get to it.

2004/01/03 00:33:30-08:00 hp.com!davidm
Rename: src/ia64/tables-ia64.c -> src/ia64/Gtables-ia64.c

(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
c4f5974dd1 Declare libunwind-entry-points as PROTECTED to ensure local uses get
resolved within the library itself.

(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
a83c8a7397 (ia64_init): Declare as a regular object, not an arch-object.
(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
d6e1c59b81 (_U_dyn_info_lists): Remove definition.
(ia64_init): Simply call ia64_local_addr_space_init() (unless
	UNW_REMOTE_ONLY is defined).

}(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
31a7a2c546 (_U_dyn_info_lists): Remove definition.
(ia64_init): Simply call ia64_local_addr_space_init() (unless
	UNW_REMOTE_ONLY is defined).

2004/01/02 23:05:52-08:00 hp.com!davidm
Rename: src/ia64/global-ia64.c -> src/ia64/Gglobal-ia64.c

(Logical change 1.151)
2004-01-03 10:50:24 +00:00
hp.com!davidm
b1036f45c9 (Logical change 1.151) 2004-01-03 10:50:24 +00:00
mostang.com!davidm
23a0696c6d (ia64_install_cursor): Mark as NORETURN rather than using
directly using __attribute__ directive.

(Logical change 1.149)
2003-12-21 07:44:16 +00:00
mostang.com!davidm
c008232bae (unw_decode_r1): "inline" it.
(unw_decode_r2): Likewise.
(unw_decode_r3): Likewise.
(unw_decode_p1): Likewise.
(unw_decode_p2_p5): Likewise.
(unw_decode_p6): Likewise.
(unw_decode_p7_p10): Likewise.
(unw_decode_b1): Likewise.
(unw_decode_b3_x4): Likewise.
(unw_decode_table): Remove.
(unw_decode): Do the first-level of decoding inline, rather than
	through the unw_decode_table.

(Logical change 1.148)
2003-12-21 07:21:28 +00:00
mostang.com!davidm
aa800d423d (unw): Mark it as HIDDEN.
(Logical change 1.148)
2003-12-21 07:21:28 +00:00
mostang.com!davidm
3596fa99b6 (regname): Delete.
(regname_len): New macro.
(regname_str): New macro.
(NREGS): New macro.
(unw_regname): Change it from using a regname[] array to using
	a single string.

(Logical change 1.148)
2003-12-21 07:21:28 +00:00
hp.com!davidm
5e48061ba6 Update copyright header.
(Logical change 1.140)
2003-12-20 11:20:42 +00:00
hp.com!davidm
9b52308ae2 Minor whitespace fixes.
(Logical change 1.140)
2003-12-20 11:20:42 +00:00
mostang.com!davidm
47c25b753c (run_script): Drop left-over __builtin_expect() call.
(Logical change 1.138)
2003-12-05 06:42:28 +00:00
hp.com!davidm
63a8bec6f6 Don't include "config.h" here. Include it via "unwind_i.h" instead.
(Logical change 1.134)
2003-12-04 07:38:25 +00:00
hp.com!davidm
6498cdf4d9 Don't include "config.h" here.
(Logical change 1.134)
2003-12-04 07:38:25 +00:00
hp.com!davidm
35300d0616 Replace #ifdef UNW_DEBUG with #if UNW_DEBUG.
(Logical change 1.130)
2003-11-27 06:52:54 +00:00
hp.com!davidm
1150a638d6 Delete extraneous .previous directive (reported by
Laurent Morichetti).

(Logical change 1.130)
2003-11-27 06:52:54 +00:00
hp.com!davidm
6c2e6e7f72 (update_frame_state): Delete unnecessary "pr" variable.
(Logical change 1.130)
2003-11-27 06:52:54 +00:00
hp.com!davidm
cbe3ca13f5 (unw_get_save_loc): Delete extra "break".
(Logical change 1.130)
2003-11-27 06:52:54 +00:00
hp.com!davidm
612917dce0 (tab): Declare as "static".
(Logical change 1.130)
2003-11-27 06:52:54 +00:00
hp.com!davidm
a024a719e1 (rbs_get_rnat_loc): Declare "inline".
(rbs_loc): Ditto.

(Logical change 1.130)
2003-11-27 06:52:54 +00:00
hp.com!davidm
c7d965a9dc (put_script_cache): Replace "caching" with "as->caching" and delete
the former to avoid compiler-warnings.
(run_script): Before doing the big switch, check for most common
	case (IA64_INSN_MOVE_STACKED).

(Logical change 1.130)
2003-11-27 06:52:54 +00:00
hp.com!davidm
3e1200c200 (linux_scratch_loc): Delete unnecessary variable "ret".
(Logical change 1.130)
2003-11-27 06:52:54 +00:00
hp.com!davidm
cd2d75786a (current_gp): Don't use inline-asm for Intel compiler.
(Logical change 1.130)
2003-11-27 06:52:54 +00:00
hp.com!davidm
7cec620ea8 (remote_read): New macro.
(remote_lookup): New function.
(_Uia64_search_unwind_table): Handle UNW_INFO_FORMAT_REMOTE_TABLE.
(_Uia64_find_dyn_list): Take unw_dyn_info_t pointer argument instead of its
	members and handle UNW_INFO_FORMAT_REMOTE_TABLE.

(Logical change 1.126)
2003-11-25 22:33:49 +00:00
hp.com!davidm
0976af5f9f (create_state_record_for): Handle UNW_INFO_FORMAT_REMOTE_TABLE.
(Logical change 1.126)
2003-11-25 22:33:49 +00:00
hp.com!davidm
e433ec3820 (unw_create_addr_space): Drop call to ia64_script_cache_init(). It's
not needed because we default to "no caching" and if the application
	turns on caching via unw_set_caching_policy(), the cache will get
	initialized at that time.

(Logical change 1.124)
2003-11-24 23:53:25 +00:00
hp.com!davidm
6ed5d0264f (ia64_script_cache_init): Delete.
(Logical change 1.124)
2003-11-24 23:53:25 +00:00
hp.com!davidm
629d7d3263 (ia64_per_thread_cache): Initialize busy/lock member.
(get_script_cache): Return NULL if caching is disabled.  If
	HAVE_ATOMIC_OPS_H is defined, set the busy flag and if
	the script cache is busy already, return NULL.
(put_script_cache): Don't allow it to be called for UNW_CACHE_NONE case.
	If HAVE_ATOMIC_OPS_H is defined, clear the "busy" flag via
	AO_CLEAR.
(ia64_get_cached_proc_info): If we're unable to acquire the cache,
	return -UNW_ENOINFO.
(script_init): New function.
(script_new): Replace open code with call to script_init().
(uncached_find_save_locs): New function.
(ia64_find_save_locs): Move code for uncached case to
	uncached_find_save_locs().  If get_script_cache() is unable to
	lock the script-cache, fall back to uncached_find_save_locs().
(ia64_script_cache_init): Delete.

(Logical change 1.124)
2003-11-24 23:53:25 +00:00
hp.com!davidm
e939f42941 (ia64_local_addr_space_init): Instead of calling ia64_script_cache_init(),
force a flush via unw_flush_cache().

(Logical change 1.124)
2003-11-24 23:53:25 +00:00
hp.com!davidm
a0b454581a Drop include of <ia64intrin.h>.
(unw_flush_cache): Replace __sync_fetch_and_add() with fetch_and_add1().

(Logical change 1.123)
2003-11-24 21:37:22 +00:00
hp.com!davidm
ffb9c88e0a (ia64_find_save_locs): Separate out the no-cache case so we don't
acquire the script-cache lock needlessly.

(Logical change 1.122)
2003-11-24 18:35:43 +00:00
hp.com!davidm
22ca263109 (ia64_init): To prevent a race, unw.needs_initialization must be cleared
_after_ everything is initialized.

(Logical change 1.121)
2003-11-24 18:33:44 +00:00
hp.com!davidm
40e929815c (unw.pre_name): Add missing register names.
(Logical change 1.119)
2003-11-22 06:25:00 +00:00
hp.com!davidm
8b3248c32e (unw_set_caching_policy): If caching-policy didn't change, return
early.  Always flush cache after changing the policy.
	This is to ensure that the per-thread cache gets initialized
	and no stale info remains.

(Logical change 1.118)
2003-11-22 06:21:26 +00:00
hp.com!davidm
2245be9d9b (get_script_cache): Need to disable signal-delivery even for per-thread
caching.
(put_script_cache): Need to re-enable signal-delivery even for
	per-thread caching.

(Logical change 1.118)
2003-11-22 06:21:26 +00:00
hp.com!davidm
8d7426fe0a (linux_scratch_loc): Add a default-case which simply returns the
register-location.  This is so that special-cases such
	as r0 are handled properly.

(Logical change 1.117)
2003-11-22 06:16:20 +00:00
hp.com!davidm
c3328ce150 Delete: src/ia64/TODO
}(Logical change 1.113)
2003-11-19 23:15:58 +00:00
mostang.com!davidm
6b2855500a (ia64_init): Move initialization of unwi_full_sigmask to here, from mi_init().
(Logical change 1.112)
2003-11-19 06:18:27 +00:00
hp.com!davidm
add6b939a0 (unw_set_caching_policy): Let ia64_init() clear unw.needs_initialization.
(Logical change 1.111)
2003-11-19 03:11:25 +00:00
hp.com!davidm
f5f706c35e (unw_init_remote): Let ia64_init() clear unw.needs_initialization.
(Logical change 1.111)
2003-11-19 03:11:25 +00:00
hp.com!davidm
3551d42d45 (unw_init_local): Let ia64_init() clear unw.needs_initialization.
(Logical change 1.111)
2003-11-19 03:11:25 +00:00
hp.com!davidm
9b47e7723f (unw_get_accessors): Let ia64_init() clear unw.needs_initialization.
(Logical change 1.111)
2003-11-19 03:11:25 +00:00
hp.com!davidm
8e71bb0ab2 (unw): Initialize "lock" member. Switch to ANSI99-style initializers.
(ia64_init): Use unw.lock to protect against races during
	initialization.  Disable signal delivery during initialization
	to ensure thread-safety (e.g., unw_init_local() may call
	ia64_init() and the former must be thread-safe).

(Logical change 1.111)
2003-11-19 03:11:25 +00:00
hp.com!davidm
e70d39ae8e (create_state_record_for): Drop extraneous clearing of
sr->return_link_reg.  The entire structure is getting
	cleared via memset() already!

(Logical change 1.108)
2003-11-15 09:46:17 +00:00
hp.com!davidm
656e9d6e7d (_Uia64_search_unwind_table): Correct off-by-8 error in calculating
personality-routine and LSDA address and dont' forget to
	dereference the personality-routine function-pointer, so we
	really get the address of the function-descriptor of the
	personality routine.
(callback): Set the segment-base based on the segment that contains
	the unwind-table.  Normally, that the text segment but in
	special cases, such as the kernel's gate DSO, it will be
	in a different segment.

(Logical change 1.108)
2003-11-15 09:46:17 +00:00
hp.com!davidm
233952e855 (unw_get_save_loc): Handle floating-point registers as well.
(Logical change 1.107)
2003-10-11 01:06:49 +00:00
hp.com!davidm
bcbdc591be (unw_get_save_loc): Fix double negation.
(Logical change 1.105)
2003-10-11 00:59:02 +00:00
hp.com!davidm
350ae98340 (local_resume): Clear IA64_SC_FLAG_IN_SYSCALL before resuming via
sigreturn().  This is needed to ensure that all scratch-regs
	get restored.  Also add some more debug statements.

(Logical change 1.103)
2003-09-25 05:08:18 +00:00
hp.com!davidm
d0fddf5de8 (ia64_find_save_locs): Only call ia64_fetch_proc_info() when we really
have to (i.e., if we don't have cached info).  Otherwise,
	the unnecessary calls cause a performance regression.

(Logical change 1.102)
2003-09-24 21:56:42 +00:00
mostang.com!davidm
b3c1bf3f75 (flush_script_cache): Drop addr_space_t argument. Initialize
hash-table, collision-chains, and hash-table in addition
	to clearing the script's IP value.  The latter wasn't nearly
	sufficient because it could cause loops on the collision
	chain...
(get_script_cache): Also lock the cache if global caching is in
	effect.  Take additional "saved_sigmaskp" argument.
	After flushing the cache, update the cache generation
	here.
(put_script_cache): New function.
(ia64_get_cached_proc_info): Adjust for get_script_cache() and
	put_script_cache() changes.
(ia64_find_save_locs): Ditto.
(ia64_script_cache_init): Call flush_script_cache() instead of
	opening-coding the equivalent code.

(Logical change 1.96)
2003-09-19 06:56:12 +00:00
mostang.com!davidm
510a7c82f7 (unw_is_signal_frame): Call ia64_fetch_proc_info() before creating
the state-record.

(Logical change 1.95)
2003-09-18 06:09:22 +00:00
mostang.com!davidm
cbf1d7d56b (parse_dynamic): Call ia64_fetch_proc_info() before creating the
state-record.
(ia64_fetch_proc_info): Rename from get_proc_info().
(create_state_record_for): Assert that c->pi_valid is TRUE at the
	time of entry.  Remove call to get_proc_info().

(Logical change 1.95)
2003-09-18 06:09:22 +00:00
mostang.com!davidm
46f5783f5d (ia64_find_save_locs): Call ia64_fetch_proc_info() early on and
bug out if it fails (before creating a new script).

(Logical change 1.95)
2003-09-18 06:09:22 +00:00
mostang.com!davidm
d6946f580b (ia64_fetch_proc_info): New procedure.
(Logical change 1.95)
2003-09-18 06:09:22 +00:00
mostang.com!davidm
117b21a1cf (unw_create_addr_space): Initialize global script-cache here (while
there are no other threads using the cache).

(Logical change 1.94)
2003-09-18 06:01:09 +00:00
mostang.com!davidm
4d40a1cfc8 (rotate_gr): Fix off-by-1 bug and simplify the function.
(Logical change 1.93)
2003-08-20 18:02:30 +00:00
mostang.com!davidm
0b65016a37 (ia64_find_save_locs): Fix typo: check for -UNW_ESTOPUNWIND.
(Logical change 1.93)
2003-08-20 18:02:30 +00:00
hp.com!davidm
a157d632f7 (desc_is_active): Need to cast 1 to (unw_word_t) before shifting it by
a value that is potentially > 31.  Casting it to (unsigned long)
	is not enough on 32-bit platforms.
(create_state_record_for): Cast 0xf to (unw_word_t) instead of
	(unsigned long) to avoid losing bits on 32-bit platforms.

(Logical change 1.92)
2003-07-08 22:32:44 +00:00
hp.com!davidm
09aa4183f6 (unw_get_save_loc): Also check for ABI_MARKER_OLD_LINUX_SIGTRAMP.
Check against UNW_IA64_AR_SSD instead of UNW_IA64_AR_26.

(Logical change 1.91)
2003-07-08 22:29:34 +00:00
hp.com!davidm
666c61846c (rbs_cover_and_flush): Cast unw_word_t values to (unsigned long) before
printing them.

(Logical change 1.91)
2003-07-08 22:29:34 +00:00
hp.com!davidm
f3b8566331 (linux_interrupt): Add "marker" argument. Support both old and new
Linux kernel "struct pt_regs" layout.
(update_frame_state): Handle ABI_MARKER_OLD_LINUX_SIGTRAMP and
	ABI_MARKRE_OLD_LINUX_INTERRUPT.  Cast values of type unw_word_t
	to (unsigned long) before printing them.

(Logical change 1.91)
2003-07-08 22:29:34 +00:00
hp.com!davidm
3053ee9de1 (ia64_scratch_loc): Split up into linux_scratch_loc() and hpux_scratch_loc().
(linux_scratch_loc): Add support for new pt_regs layout.
(access_nat): Check last_abi_marker instead of sigcontext_addr and
	address-space ABI.

(Logical change 1.91)
2003-07-08 22:29:34 +00:00
hp.com!davidm
6536dbab47 (LINUX_SC_AR_SSD_OFF): Rename from LINUX_SC_AR_26_OFF.
(LINUX_OLD_PT_*): Rename from LINUX_PT_*.
(LINUX_PT_*): Add definitions for new pt_regs layout.

(Logical change 1.91)
2003-07-08 22:29:34 +00:00
mostang.com!davidm
0d37a4a620 (ia64_init): Initialize reg_state_pool instead of state_record_pool.
(Logical change 1.90)
2003-06-03 21:36:03 +00:00
mostang.com!davidm
a9236a84ea (alloc_reg_state): Use reg_state_pool instead of state_record_pool.
(free_reg_state): Ditto.

(Logical change 1.90)
2003-06-03 21:36:03 +00:00
hp.com!davidm
0cc1fcb76a Add definitions for Linux interrupt frame layout (struct pt_regs).
(Logical change 1.89)
2003-04-25 07:44:23 +00:00
hp.com!davidm
1045cb2cc0 (unw_get_save_loc): Check c->last_abi_marker == ABI_MARKER_LINUX_SIGTRAMP instead
of for a non-NULL sigcontext_addr.

(Logical change 1.89)
2003-04-25 07:44:23 +00:00
hp.com!davidm
dc34eda2fc (remote_install_cursor): Do Linux-shortcut only if UNW_REMOTE_ONLY is not defined.
(Logical change 1.89)
2003-04-25 07:44:23 +00:00
hp.com!davidm
e0160b16b7 (linux_interrupt): New function.
(update_frame_state): Handle ABI_MARKER_LINUX_INTERRUPT by calling linux_interrupt().
	If c->abi_marker is non-zero, copy it to c->last_abi_marker.

(Logical change 1.89)
2003-04-25 07:44:23 +00:00
hp.com!davidm
43786a3f2d (ia64_uc_access_reg): Move outside of !UNW_REMOTE_ONLY bracket.
(ia64_uc_access_fpreg): Ditto.

(Logical change 1.89)
2003-04-25 07:44:23 +00:00
hp.com!davidm
d92ddf8128 (common_init): Clear c->last_abi_marker.
(Logical change 1.89)
2003-04-25 07:44:23 +00:00
mostang.com!davidm
cb926c8da8 Rename: src/ia64/Gmk_cursor_i-ia64.c -> src/ia64/mk_Gcursor_i-ia64.c
}(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
cdff3028d3 Rename: src/ia64/Gmk_cursor_i-ia64.c -> src/ia64/mk_Gcursor_i-ia64.c
(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
424ffd0db8 Initial revision 2003-04-24 20:45:07 +00:00
mostang.com!davidm
fe2dfccdf9 Include <alloca.h>.
(access_reg) [HAVE_SYS_UC_ACCESS_H]: Sanitize and simplify this routine.  Turns out
	uc_access(3) works pretty much the way we need it, the only problem is that
	the unwind info for getcontext() seems to be missing as of HP-UX 11.22.
(ia64_uc_access_reg): New function.
(ia64_uc_access_fpreg): Ditto.
(ia64_local_addr_space_init): Initialize "abi" member of local address space based
	on the platform we're compiling on.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
c8d1774e07 Always include "mk_Gcursor_i-ia64.c" even if we don't really need it. We can't
have an empty file here, as otherwise we won't get a valid program.

}(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
2b8dd64bd9 Always include "mk_Gcursor_i-ia64.c" even if we don't really need it. We can't
have an empty file here, as otherwise we won't get a valid program.

2003/04/24 12:58:16-07:00 mostang.com!davidm
Rename: src/ia64/Lmk_cursor_i-ia64.c -> src/ia64/mk_Lcursor_i-ia64.c

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
0561cd32b3 (unw_init_local): On HP-UX, step over the initial (getcontext()) frame.
(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
344768e1d6 (unw_get_save_loc): Handle "saved-in-sigcontext" case only for Linux.
(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
2404a17c82 (lookup_preg): Remove useless "unwind." prefix in debug output.
(parse_dynamic): Ditto.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
3d3510c047 (local_resume): Support HP-UX via setcontext() (doesn't actually work yet).
(remote_install_cursor): Enable the short-cut for Linux only.  Since HP-UX uses
	an opaque data-structure for ucontext_t, we can't play the same trick
	there.  Fix two typos: "> 0" -> ">= 0".
(unw_resume): Handle non-UNW_LOCAL_ONLY case simp;u bu calling
	remote_install_cursor().

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
4bc8b02277 (linux_sigtramp): New function.
(hpux_sigtramp): Ditto.
(update_frame_state): Use abi_marker to decide how to handle a special frame.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
bd28baa280 (ia64_scratch_loc): Use c->as->abi to select appropriate behavior. Implement
support for HP-UX.
(access_nat): Check for uc-location and pass it on to ia64_put()/ia64_get() if
	it is.  Handle NaT-bit-saved-in-scratch-register only for Linux.
(ia64_access_reg): Change dprintf() into debug() statement.
(ia64_access_fpreg): Move fph-partition initialization code to ia64_scratch_loc().
	Change dprintf() into debug() statement.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00