1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-12-30 23:03:43 +01:00
Commit graph

667 commits

Author SHA1 Message Date
homeip.net!davidm
38b586f953 Rename: src/ia64/Grbs-ia64.c -> src/ia64/Grbs.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
9288e6b155 Rename: src/ia64/Gparser-ia64.c -> src/ia64/Gparser.c
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
cc8c1cc220 Rename: src/ia64/Gparser-ia64.c -> src/ia64/Gparser.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
28b4cef6ba Rename: src/ia64/Gis_signal_frame-ia64.c -> src/ia64/Gis_signal_frame.c
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
5bbef35906 Rename: src/ia64/Gis_signal_frame-ia64.c -> src/ia64/Gis_signal_frame.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
7178b67138 Rename: src/ia64/Ginstall_cursor-ia64.S.S -> src/ia64/Ginstall_cursor.S
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
5abc74b276 Rename: src/ia64/Ginstall_cursor-ia64.S.S -> src/ia64/Ginstall_cursor.S
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
5b0dd22644 Rename: src/ia64/Ginit_remote-ia64.c -> src/ia64/Ginit_remote.c
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
1883db9df1 Rename: src/ia64/Ginit_remote-ia64.c -> src/ia64/Ginit_remote.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
6fecde079e Rename: src/ia64/Ginit_local-ia64.c -> src/ia64/Ginit_local.c
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
5a0713e6ab Rename: src/ia64/Ginit_local-ia64.c -> src/ia64/Ginit_local.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
225a76c872 Rename: src/ia64/Ginit-ia64.c -> src/ia64/Ginit.c
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
697ad31494 Rename: src/ia64/Ginit-ia64.c -> src/ia64/Ginit.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
b5fc84d770 Rename: src/ia64/Gglobal-ia64.c -> src/ia64/Gglobal.c
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
0c335ee339 Rename: src/ia64/Gglobal-ia64.c -> src/ia64/Gglobal.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
ac4e44b407 Rename: src/ia64/Gget_save_loc-ia64.c -> src/ia64/Gget_save_loc.c
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
570517a1c9 Rename: src/ia64/Gget_save_loc-ia64.c -> src/ia64/Gget_save_loc.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
4d960d581a Rename: src/ia64/Gget_proc_info-ia64.c -> src/ia64/Gget_proc_info.c
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
d93985ab8e Rename: src/ia64/Gget_proc_info-ia64.c -> src/ia64/Gget_proc_info.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
99febf3281 Rename: src/ia64/Gcreate_addr_space-ia64.c -> src/ia64/Gcreate_addr_space.c
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
f3b091e075 Rename: src/ia64/Gcreate_addr_space-ia64.c -> src/ia64/Gcreate_addr_space.c
(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
b29905fdc9 Regenerate.
}(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
7e651021c1 Regenerate.
2004/08/17 16:19:04+02:00 homeip.net!davidm
Rename: src/ia64/Linstall_cursor-ia64.S.S -> src/ia64/Linstall_cursor.S

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
849e3eda74 Regenerate.
2004/08/17 16:10:59+02:00 homeip.net!davidm
Rename: src/ia64/mk_Lcursor_i-ia64.c -> src/ia64/mk_Lcursor_i.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
b82135e29c Regenerate.
2004/08/17 16:10:59+02:00 homeip.net!davidm
Rename: src/ia64/Ltables-ia64.c -> src/ia64/Ltables.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
3a8cf68ddd Regenerate.
2004/08/17 16:10:59+02:00 homeip.net!davidm
Rename: src/ia64/Lstep-ia64.c -> src/ia64/Lstep.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
206956441c Regenerate.
2004/08/17 16:10:59+02:00 homeip.net!davidm
Rename: src/ia64/Lscript-ia64.c -> src/ia64/Lscript.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
b128cab5f4 Regenerate.
2004/08/17 16:10:59+02:00 homeip.net!davidm
Rename: src/ia64/Lresume-ia64.c -> src/ia64/Lresume.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
01793b14d5 Regenerate.
2004/08/17 16:10:59+02:00 homeip.net!davidm
Rename: src/ia64/Lregs-ia64.c -> src/ia64/Lregs.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
087dc59c78 Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Lrbs-ia64.c -> src/ia64/Lrbs.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
4560964719 Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Lparser-ia64.c -> src/ia64/Lparser.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
a22fe13ff9 Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Lis_signal_frame-ia64.c -> src/ia64/Lis_signal_frame.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
4372239d83 Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Linit_remote-ia64.c -> src/ia64/Linit_remote.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
4bf903c732 Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Linit_local-ia64.c -> src/ia64/Linit_local.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
3d290aca59 Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Linit-ia64.c -> src/ia64/Linit.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
af723ec793 Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Lglobal-ia64.c -> src/ia64/Lglobal.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
09727ee303 Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Lget_save_loc-ia64.c -> src/ia64/Lget_save_loc.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
2eb742f91c Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Lget_proc_info-ia64.c -> src/ia64/Lget_proc_info.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
e1ccdbd06f Regenerate.
2004/08/17 16:10:58+02:00 homeip.net!davidm
Rename: src/ia64/Lcreate_addr_space-ia64.c -> src/ia64/Lcreate_addr_space.c

(Logical change 1.241)
2004-08-17 15:34:28 +00:00
homeip.net!davidm
3f9d2e9c5c Initial revision 2004-08-17 15:34:28 +00:00
hp.com!davidm
3fd2b8adfa (get_kernel_table): Change %Zu to %zu.
(Logical change 1.236)
2004-05-12 20:54:56 +00:00
hp.com!davidm
2376f6e6bc (_Uia64_find_dyn_list): Don't exclude for UNW_REMOTE_ONLY.
Reformat #ifdef's a bit for improved readability.

(Logical change 1.234)
2004-05-07 00:30:27 +00:00
hp.com!davidm
32dd2e2218 (compile_reg): Fix typo: treat f0 and f1 like scratch registers.
(Logical change 1.230)
2004-05-06 20:25:09 +00:00
hp.com!davidm
b3381c8887 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
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