Commit Graph

5369 Commits

Author SHA1 Message Date
Jeff Law
8c72d4fcf6 * gdb.base/break.exp: Always check for a program already being
started after sending a "run" command to gdb.
	(text_next_with_recursion): Don't check the output from the
	program's printf statement.  Instead just make sure the program
	exited.
1995-07-20 17:50:05 +00:00
Jeff Law
f4c40a88f3 * gdb.base/commands.exp: Protect tests which need arguments with
$noargs conditionals.
1995-07-20 17:41:18 +00:00
Peter Schauer
4bbec291b2 * gdb.base/printcmds.exp: Adjust expect patterns for addresses
of structure member arrays to match gdb/valops.c:value_addr change.
1995-07-20 05:54:31 +00:00
Peter Schauer
5488b3b7a6 * config/m68k/tm-m68kv4.h (DWARF_REG_TO_REGNUM): Define to
correctly map floating point registers numbers.
1995-07-20 05:53:28 +00:00
Peter Schauer
bbcc95bdb1 * config/m68k/tm-m68kv4.h (DWARF_REG_TO_REGNUM): Define to
correctly map floating point registers numbers.

	* dwarfread.c (locval, new_symbol):  Handle variables that are
	optimized out.

	* mdebugread.c:  Replace all uses of builtin_type_* with
	mdebug_type_*. Define and initialize mdebug_type_*.

	* serial.h (serial_close):  Add additional argument `really_close'.
	(SERIAL_CLOSE):  Update serial_close call accordingly.
	(SERIAL_UN_FDOPEN):  Use serial_close to handle refcnt properly.
	* serial.c (serial_close):  Handle `really_close'.
	* serial.h (scb_base):  Moved to serial.c, made static.

	* valops.c (value_addr):  Don't coerce arrays.
	(typecmp):  Coerce arrays instead of calling value_addr if necessary.
1995-07-20 05:52:42 +00:00
Stan Shebs
f94cadf988 From Richard Earnshaw (rearnsha@armltd.co.uk):
* gdb.texinfo (convenience variables): Document $_exitcode.
	(quit): Document optional expression to use as exit code.
1995-07-20 02:12:09 +00:00
Stan Shebs
641c7fdfd7 From Richard Earnshaw (rearnsha@armltd.co.uk):
* infrun.c (wait_for_inferior): Set the convenience variable
	$_exitcode to the termination code of the inferior.
	* top.c (quit_command): Accept optional expression to use
	as parameter to exit().
1995-07-20 02:09:30 +00:00
Kung Hsu
1dde91596e * remote.c (remote_wait): When getting registers, check endianess and
do conversion if necessary.
1995-07-19 21:45:45 +00:00
Jeff Law
75675683a8 * gdbserver/low-hppabsd.c: New file.
* gdbserver/Makefile.in (SFILES): Add low-hppabsd.c.
        * config/hppabsd.mh (XDEPFILES): Add ser-tcp.o
        (GDBSERVER_DEPFILES): Add low-hppabsd.o
        * config/hppaosf.mh: LIkewise.

Needed this for the gdbserver framework development.  Trying to avoid doing
development work on lynx for the obvious reasons.
1995-07-18 06:49:21 +00:00
Jeff Law
c2aa5a891e * gdbserver/low-hppabsd.c: New file.
* gdbserver/Makefile.in (SFILES): Add low-hppabsd.c.
        * config/hppabsd.mh (XDEPFILES): Add ser-tcp.o
        (GDBSERVER_DEPFILES): Add low-hppabsd.o
        * config/hppaosf.mh: LIkewise.

Needed this for the gdbserver framework development.  Trying to avoid doing
development work on lynx for the obvious reasons.
1995-07-18 06:46:49 +00:00
Fred Fish
6b14af2bc6 * dache.c (struct dcache_block): Change data member from unsigned char
to char, since everything passed in and out of dcache is char or casted
	to appropriate type anyway.
	(dcache_alloc):  Move assignment of db out of test and combine separate
	tests into if-else.
	(dcache_peek_byte):  Change ptr from unsigned char* to char*.
	(dcache_peek_byte):  Remove now unnecessary cast in read_memory call.
	(dcache_peek):  Change cast of incoming data arg.
	(dcache_poke):  Change cast of addr of incoming data arg.
	(dcache_info):  Mask data passed to printf_filtered to lsbyte only.
	(dcache_info):  Change printf_filtered arg from "% 2x" to " %2x".
	* target.c (debug_to_thread_alive): Change return type to int and
	return zero, for type compatibility with other *_thread_alive funcs.
	(cleanup_target): Change cast of ignore function to match type of the
	to_thread_alive member.
	* defs.h (error_hook): Add ATTR_NORETURN.
	* defs.h (NORETURN, ATTR_NORETURN):  Switch from volatile to
	__attribute__ method with gcc 2.7, to avoid gcc 2.6.3 bug.
	* remote.c (remote_wait):  Cast first arg to strtol, strchr, and strncmp
	to "const char *" from "unsigned char *".
	(remote_wait):  Cast arg to putpkt and strcpy from "unsigned char *" to
	"char *".
	(remote_wait):  Change printf format for long arg from "%d" to "%ld".
	(getpkt):  Remove unused variable "bp".
	(remote_fetch_word, remote_store_word):  Ifdef out apparently unused
	functions.
	* breakpoint.c (watchpoint_check):  Removed unused variables
	"saved_level" and "saved_frame".
	* valops.c (value_arg_coerce):  Add other enum TYPE_CODE_* and
	default cases to switch for completeness.
	* infrun.c (wait_for_inferior):  Enclose "have_waited" label
	in #ifdef that matches the one in which it is referenced.
	* ser-unix.c (hardwire_noflush_set_tty_state):  Enclose otherwise
	unused variable "state" in #ifdef that matches one in which it is
	referenced.
	* eval.c (evaluate_subexp_standard):  Remove unused variable "var".
	* eval.c (evaluate_subexp_standard):  Remove unused variable "tmp_symbol".
	* valarith.c (value_subscript):  Remove unused variable "lowerbound",
	which is redeclared in a nested scope prior to use.
	* printcmd.c (print_frame_nameless_args):  Use "%ld" to print long
	arg, not "%d".
	* {mem-break.c, remote-pa.c, remote.c, saber.suppress}:
	Remove unused static var "check_break_insn_size".
	* buildsym.c (finish_block):  Add other enum LOC_* and default
	cases to switch for completeness.
	ch-lang.c (type_lower_upper):  Removed unused label "retry".
	Add other enum TYPE_* and default cases to switch for completeness.
	* f-typeprint.c (f_type_print_args):  Ifdef out unused function
	that may be used someday when Fortran support is complete.
	* ch-valprint.c (chill_print_type_scalar):  Add other enum
	TYPE_* and default cases to switch for completeness.
	(chill_val_print):  Remove unused local var "high_bound" that
	is redeclared in a nested scope prior to use.
	(chill_var_print):  Use "%ld" to print long arg, not "%d".
	* regex.c (re_compile_fastmap, re_match_2):  Add remaining enum types
	and default to switches for completeness.
	* minsyms.c (lookup_minimal_symbol_text): Delete unused variable
	"trampoline_symbol".
	(prim_record_minimal_symbol_and_info):  Return NULL rather than trash.
	* elfread.c (elf_symtab_read):  Don't dereference NULL returns from
	record_minimal_symbol_and_info.
	* f-lang.c (saved_function_list_end):  Ifdef out unused variable
	that may be used someday.
	* f-valprint.c (f_val_print):  Remove unused local variable "straddr".
1995-07-18 04:38:06 +00:00
Ian Lance Taylor
f779e99f2a * stabsread.h (struct stab_section_list): Define.
(coffstab_build_psymtabs): Remove staboff and stabsize parameters.
	Add textaddr, textsize, and stabs parameters.
	* gdb-stabs.h (struct dbx_symfile_info): Remove text_sect field.
	Add text_addr and text_size fields.
	(DBX_TEXT_SECT): Don't define.
	(DBX_TEXT_ADDR, DBX_TEXT_SIZE): Define.
	* coffread.c: Include <ctype.h>.
	(struct coff_symfile_info): Remove stabsect and stabindexsect
	fields.  Add textaddr, textsize, and stabsects fields.
	(coff_locate_sections): Record the address of the .text section,
	and total the sizes of all sections with names beginning with
	".text".  Don't bother to record a .stab.index section (COFF
	doesn't use them).  Make a linked list of all sections with names
	beginning with ".stab".
	(coff_symfile_read): Adjust call to coffstab_build_psymtabs for
	new parameters.
	* dbxread.c (dbx_symfile_read): Use DBX_TEXT_ADDR and
	DBX_TEXT_SIZE, rather than getting both from DBX_TEXT_SECT.
	(dbx_symfile_init): Set DBX_TEXT_ADDR and DBX_TEXT_SIZE, not
	DBX_TEXT_SECT.
	(elfstab_build_psymtabs): Likewise.
	(stabsect_build_psymtabs): Likewise.
	(symbuf_sections, symbuf_left, symbuf_read): New static variables.
	(fill_symbuf): If symbuf_sections is not NULL, read symbols from
	multiple sections.
	(coffstab_build_psymtabs): Remove staboffset and stabsize
	parameters.  Add textaddr, textsize, and stabsects parameters.
	Set DBX_TEXT_ADDR and DBX_TEXT_SIZE, not DBX_TEXT_SECT.  Handle
	multiple stabs sections.
	* os9kread.c (os9k_symfile_read):  Use DBX_TEXT_ADDR and
	DBX_TEXT_SIZE, rather than getting both from DBX_TEXT_SECT.
	(os9k_symfile_init): Set DBX_TEXT_ADDR and DBX_TEXT_SIZE, not
	DBX_TEXT_SECT.
PR 7241.
1995-07-17 17:33:37 +00:00
Ian Lance Taylor
5d672f2897 * remote-vx.c (vx_ops, vx_run_ops): Initialize new to_thread_alive
field.
1995-07-17 17:09:48 +00:00
Jeff Law
31ce436075 * gdb.base/a1-selftest.exp: Fix unmatched quotes in many timeout
cases.
1995-07-17 16:14:48 +00:00
Peter Schauer
c82fff91f8 * config/alpha/alpha-osf3.mh, config/alpha/nm-osf3.h: New files
for OSF/1-3.x procfs support.
1995-07-15 08:59:36 +00:00
Peter Schauer
b8ea4fec37 * config/alpha/alpha-osf3.mh, config/alpha/nm-osf3.h: New files
for OSF/1-3.x procfs support.
	* configure.in (alpha-dec-osf):  Use them when configuring
	for OSF/1-3.x.
	* configure:  Updated.
	* target.c:  Include <string.h>.
1995-07-15 08:57:59 +00:00
J.T. Conklin
5f10790049 * Makefile.in, configure.in: Use one variable, frags, to hold
pathnames of makefile fragments.
* configure: regenerated.
1995-07-14 23:28:13 +00:00
Jeff Law
10f644eb64 * procfs.c (procfs_ops): Fix typo in last change. 1995-07-14 15:51:51 +00:00
Jeff Law
43fc25c87e * inftarg.c (child_thread_alive): New function to see if a
particular thread is still running.
        (child_ops): Add child_thread_alive entry.
        * remote.c (remote_thread_alive): New function to see if a
        particular thread is still alive.
        (remote_ops): Add remote_thread_alive.
        * target.c (dummy_target): Add dummy entry for thread_alive.
        (cleanup_target): de_fault thread_alive too.
        (update_current_target): INHERIT thread_alive too.
        (debug_to_thread_alive): New function.
        (setup_target_debug): Add debug_to_thread_alive.
        * target.h (struct target_ops): Add to_thread_alive.
        (target_thread_alive): Define.
        * thread.c (info_threads_command): Don't call kill; use
        target_thread_alive instead.
        * config/nm-lynx.h (CHILD_THREAD_ALIVE): Define.
        * gdbserver/low-lynx.c (mythread_alive): New function.
        (mywait): Don't restart any threads after a new thread notification,
        let the generic code handle it.
        * gdbserver/low-sparc.c (mythread_alive): Dummy version.
        * gdbserver/low-sun3.c (mythread_alive): Likewise.
        * gdbserver/server.c (main): Handle thread_alive requests.
        * gdbserver/server.h (mythread_alive): Declare.
        * corelow.c (core_ops): Add dummy entry for thread_alive.
        * exec.c (exec_ops): Likewise.
        * m3-nat.c (m3_ops): Likewise.
        * monitor.c (monitor_ops): Likewise.
        * procfs.c (procfs_ops): Likewise.
        * remote-arc.c (arc_ops): Likewise.
        * remote-array.c (array_ops): Likewise.
        * remote-e7000.c (e7000_ops): Likewise.
        * remote-es.c (es1800_ops, es1800_child_ops): Likewise.
        * remote-mips.c (mips_ops): Likewise.
        * remote-pa.c (remote_hppro_ops): Likewise.
        * remote-sim.c (gdbsim_ops): Likewise.
        * sparcl-tdep.c (sparclite_ops): Likewise.

More lynx-6100 work
1995-07-13 21:40:22 +00:00
Fred Fish
6942380809 * configure.in (configdirs): Remove gdb.chill from default list
of subdirs and then add it back in only if doing a native build.
	The current chill compiler does not yet work in any cross build.
1995-07-12 22:47:39 +00:00
Fred Fish
b49f423b73 * Revert all signal changes from Jul 6.
* gdb.base/{sigall.c signals.c}:  Define away signal() and alarm()
	for sh-hms targets, allowing these tests to link, with no other
	changes.  Testing is suppressed by setting "nosignals" in site.exp.
1995-07-12 17:27:40 +00:00
Kung Hsu
d97d5b48ab * elfread.c (elf_symtab_read): Fix a bug ignoring compiler
generated internal labels ($LM...).
1995-07-07 21:44:57 +00:00
Fred Fish
3ba76bd840 * configure.in (signaldirs): Define and add to configdirs for all
targets except some specific ones that are known to not support signals.
	Also clean up formatting.
	* gdb.base/Makefile.in (EXECUTABLES):  Remove sigall and signals.
	(signals, sigall):  Remove rules to build.
	* gdb.base/{sigall.c, sigall.exp, signals.c, signals.exp}:
	Moved to new gdb.signals directory.
	* gdb.signals: New test directory.
	* gdb.signals/{Makefile.in, configure.in, sigall.c, sigall.exp,
	signals.c signals.exp}:  New or moved files.
1995-07-07 04:11:42 +00:00
Kung Hsu
fec60da3d6 * defs.h: if __GO32__ or WIN32 the directory separating symbol should
be '\' not '/'.
1995-07-05 22:35:30 +00:00
Kung Hsu
c6236d1227 * remote-nindy (nindy_wait): Use infinite timeout reading after
esacpe character.
1995-07-05 18:41:40 +00:00
Jeff Law
88a294b1b7 * infrun.c (wait_for_inferior): When switching from one thread to
another, save infrun's state for the old thread and load infrun's
        previous state for the new thread.
        * thread.c (struct thread_info): Add new fields for thread specific
        state saved/restored in infrun.c.
        (add_thread): Initialize new fields.
        (load_infrun_state): New function.
        (save_infrun_state): New function.
        * thread.h (load_infrun_state): Provide external decl.
        (save_infrun_state): Likewise.

More single-stepping patches for lynx-6100.
1995-07-04 17:48:37 +00:00
Jeff Law
48f4903f36 * infrun.c (wait_for_inferior): When we hit a breakpoint for the
wrong thread, make sure to write the fixed PC value into the thread
        that stopped.  Restart all threads after single stepping over a
        breakpoint for a different thread.
        * breakpoint.c (set_momentary_breakpoint): Make momentary
        breakpoints thread specific in a multi-threaded program.
        * lynx-nat.c (child_resume): Add some comments.  Correctly
        choose between the single and multi-threaded step and continue
        ptrace calls.

Some of the lynx-6100 single stepping fixes.
1995-07-04 17:40:41 +00:00
Stan Shebs
ff4aa51d9a Reflect comings and goings of files. 1995-07-01 00:38:35 +00:00
Stan Shebs
fb506180fa * config/h8300/h8300.mt: Renamed from h8300hms.mt.
* config/h8500/h8500.mt: Renamed from h8500hms.mt.
	* config/z8k/z8k.mt: Renamed from z8ksim.mt.
	* configure, configure.in: Update to reflect renamings.

	* remote-sim.c (sim): New command, passes commands to simulator.
	(simulator_command): New function.
	(gdbsim_ops): Clean up.
	* remote-sim.h (sim_do_command): Declare.
	* sh-tdep.c (memory_size): Remove command.

	* Makefile.in (SIM, SIM_OBS): New variables.
	(CLIBS, CDEPS): Add value of SIM.
	(DEPFILES): Add value of SIM_OBS

	* config/arm/arm.mt, config/h8300/h8300.mt, config/h8500/h8500.mt,
	config/sh/sh.mt, config/sparc/sp64sim.mt, config/w65/w65.mt,
	config/z8k/z8k.mt: Remove simulator files from TDEPFILES,
	define in SIM_OBS and SIM.
	config/sparc/sp64sim.mt (SIMFILES): Remove.

	* remote-z8k.c: Remove, was superseded by remote-sim.c
	* Makefile.in, mpw-make.in: Remove references to remote-z8k.c.
1995-07-01 00:22:57 +00:00
Stan Shebs
fe442b4308 * remote.c (remote_read_bytes, remote_write_bytes): Second arg
should be char *, not unsigned char *.
	* dcache.h (memxferfunc): Ditto.
	* monitor.c (monitor_write_memory, monitor_read_memory_single):
	Ditto.
	(monitor_make_srec): Let compiler figure size of hextab.
1995-06-25 23:23:06 +00:00
Jeff Law
c9f7cd7b97 * gdb.base/interrupt.exp: Don't choke if $nointerrupts doesn't exist. 1995-06-25 18:56:52 +00:00
Jeff Law
1657d50b38 * lynx-nat.c (child_wait): Don't restart new threads and loop
to the top of child_wait; let the machine independent code in
        wait_for_inferior deal with new thread notifications.

lynx-6100 (partial)
Fixes SEGV when multi-threaded program hits a breakpoint in a new
thread.
1995-06-25 02:33:33 +00:00
Kung Hsu
8a7143f461 * remote-nindy (nindy_load): Put in target specific load, it's
20 times faster.
1995-06-23 18:54:56 +00:00
Stan Shebs
31bda44a6d * utils.c (error): Move local `args' outside conditional,
move local `string1' inside, declare function as void if
	non-ANSI compiler, dereference error_hook when calling.
1995-06-23 04:41:37 +00:00
Stan Shebs
26a53fe826 * mac-xdep.c (stdarg.h): Don't include. 1995-06-23 03:37:58 +00:00
Victoria Mixon
af215b1a6a gdb.texinfo: gdb manual up to date for 95q3
remote.texi:
1995-06-22 21:28:02 +00:00
Kung Hsu
89fd75ae2b * remote-nindy.c (nindy_wait): Change timeout in SERIAL_READCHAR. 1995-06-22 20:16:56 +00:00
Fred Fish
b9f12fd911 * gdb.base/return.exp: Xfail `return double' test failure
on at least Solaris 2.3 and handle future/past versions on
	a case by case basis as appropriate.  Also update message
	to include i*86 failures.
1995-06-22 00:51:47 +00:00
Steve Chamberlain
45993f6118 Hmm.. The ChangeLog went in, but not the code....
* monitor.c: Turn on caching.
	(monitor_printf): If a ^C was sent, don't expect to see its
	echo.
	(monitor_open): Enable caching.
	(monitor_resume, monitor_load): Flush cache.
	(monitor_xfer_memory): Call cache routine.
	(monitor_dump_regs): New.
	(monitor_fetch_registers):  If monitor_dump_regs available
	then use it.
	(monitor_load): Don't ref exec_bfd if it's NULL.
	(monitor_load_srec): Use new monitor_make_srec calling convention.
	(monitor_make_srec): Rewrite to cope with two, three and four byte
	addresses.
	* remote-hms.c (hms_cmds): Initialze end-of-command delim.
	* dcache.h, dcache.h: Rewritten.
	* remote.c: Reenable caching.
	(getpkt): Reduce MAX_TRIES to 3.
	(remote_xfer_memory): Use dcache_xfer_memory.
	* defs.h (error_hook): New.
	* top.c (error_hook): New definition.
	* utils.c (error): Use error_hook if initialized.
	* sparcl-tdep.c (HAVE_SOCKETS): Don't define if GO32 or WIN32. Use
	HAVE_SOCKETS in place of #ifndef GO32.
1995-06-21 21:47:06 +00:00
Jeff Law
b3a34d4fc0 * hppam3-nat.c: Change HP800_THREAD_STATE to TRACE_FLAVOR and
HP800_THREAD_STATE_COUNT to TRACE_FLAVOR_SIZE.
1995-06-21 19:29:00 +00:00
Steve Chamberlain
c3a9b88e1e Wed Jun 21 05:57:56 1995 Steve Chamberlain <sac@slash.cygnus.com>
* monitor.c: Turn on caching.
	(monitor_printf): If a ^C was sent, don't expect to see its
	echo.
	(monitor_open): Enable caching.
	(monitor_resume, monitor_load): Flush cache.
	(monitor_xfer_memory): Call cache routine.
	(monitor_dump_regs): New.
	(monitor_fetch_registers):  If monitor_dump_regs available
	then use it.
	(monitor_load): Don't ref exec_bfd if it's NULL.
	(monitor_load_srec): Use new monitor_make_srec calling convention.
	(monitor_make_srec): Rewrite to cope with two, three and four byte
	addresses.
	* remote-hms.c (hms_cmds): Initialze end-of-command delim.
	* dcache.h, dcache.h: Rewritten.
	* remote.c: Reenable caching.
	(getpkt): Reduce MAX_TRIES to 3.
	(remote_xfer_memory): Use dcache_xfer_memory.
	* defs.h (error_hook): New.
	* top.c (error_hook): New definition.
	* utils.c (error): Use error_hook if initialized.
	* sparcl-tdep.c (HAVE_SOCKETS): Don't define if GO32 or WIN32. Use
	HAVE_SOCKETS in place of #ifndef GO32.
1995-06-21 19:23:06 +00:00
Jeff Law
5e2f4e2d6f * config/pa/tm-hppa.h (PSW_*): Define processor status word masks.
(INSTRUCTION_NULLIFIED): Allow specific targets to override.
	* config/pa/tm-hppao.h (INSTRUCTION_NULLIFIED): Define to work
	around losing mach kernel behavior.
1995-06-21 04:20:15 +00:00
Stan Shebs
f886dc0f27 * gdb.texinfo: Update dates and versions, fix comments about
hardware watchpoints in future releases and about the
	sharedlibrary command.
1995-06-20 21:51:17 +00:00
Stan Shebs
4a4307947e * monitor.c (monitor_wait): Don't use the watchdog timeout
if its value is 0.
	* w89k-rom.c (w89k_open): Define to be static.
1995-06-20 19:13:20 +00:00
Stu Grossman
8c19daa1e5 * gdbtk.c: Add functions Tcl_Malloc, Tcl_Realloc, and Tcl_Free. 1995-06-20 17:41:11 +00:00
Stu Grossman
f1b64caa98 * gdbtk.tcl (add_breakpoint_frame): Add more fields.
* (create_file_win create_asm_win build_framework):  Create null
	bindings for meta keys to keep window from dropping down to
	insertion point when meta is pressed by itself.  New bindings:
	   Up/Down - Scroll up/down one line at a time
	   Next/Prior - Scroll up/down one page at a time
	   Home/End - Warp to current pc/end of file
	* (build_framework):  Turn on breakpoint menu.
	* (create_command_window):  Implement tab completion.  Add binding
	for ^C to stop target.
1995-06-20 17:30:44 +00:00
Jeff Law
156285aac0 * somsolib.c (som_solib_add): Validate regexp argument.
Don't assume the first entry on dld's library list is the main
        program.  Don't load the same library more than once and don't
        consider the main program a shared library.
        (som_solib_sharedlibrary_command): New function
        (_initialize_som_solib): Add "sharedlibrary" command.

mentor-7135
1995-06-19 21:26:58 +00:00
Stan Shebs
e33c359dcb * array-rom.c: Remove, no longer used.
* remote-hms.c (hms_open): Make static.

	* mpw-config.in (MacSerial.h): Copy from version in {CIncludes},
	not {MPW}Interfaces:CIncludes.
	* ser-mac.c (mac_baud_rate_table): Fix value for 38400 baud.
1995-06-15 22:10:27 +00:00
Per Bothner
0faa324790 * ch-exp.y: Remove lots of unsupported productions and names.
Add support for IF-expressions, ORIF, ANDID, NUM, and ADDR.
This makes progress for PR 5826.
1995-06-14 21:30:58 +00:00
Stu Grossman
73033da704 Copyright update in tm-est.h, and minor formatting cleanup.
Add remote-est.o to TDEPFILES in monitor.mt.
1995-06-14 20:31:58 +00:00