Commit Graph

53 Commits

Author SHA1 Message Date
Jason Molenda
c5aa993b1f import gdb-1999-07-07 post reformat 1999-07-07 20:19:36 +00:00
Jason Molenda
085dd6e638 import gdb-1999-06-28 snapshot 1999-06-28 16:06:02 +00:00
Stan Shebs
c906108c21 Initial creation of sourceware repository 1999-04-16 01:35:26 +00:00
Stan Shebs
071ea11e85 Initial creation of sourceware repository 1999-04-16 01:34:07 +00:00
Edith Epstein
1994dc7cfc Tue Dec 8 15:09:44 1998 Edith Epstein <eepstein@sophia.cygnus.com>
* config/m68k/tm-m68k.h (NUM_FREGS): m68k-linux patch.
          Added NUM_FREGS macro.

        * config/m68k/xm-linux.h: m68k-linux patch. New file.

        * config/m68k/tm-linux.h: m68k-linux patch. New file.

        * config/m68k/nm-linux.h: m68k-linux patch. New file.

        * config/m68k/linux.mt: m68k-linux patch. New file.

        * config/m68k/linux.mh: m68k-linux patch. New file.

        * gdbserver/low-linux.c: m68k-linux patch. Added an ifdef
          that checks the value of __GLIBC to decide whether or
          not to include sys/reg.h.

        * m68klinux-nat.c: m68k-linux patch. New file. Note
          both m68k-tdep.c and m68klinux-nat.c contain definitions
          for supply_gregset and supply_fpregset. The definitions
          in m68k-tdep.c are valid is USE_PROC_FS is defined. Otherwise,
          the definitions in m68klinux-nat.c will be used. This is a
          bit of a hack. The supply_* routines do not belong in
          *_tdep.c files. But, there are several lynx ports that currently
          depend on these definitions.

        * configure.tgt: m68k-linux patch. Added m68*-*-linux*
          gdb_target.

        * configure.host: m68k-linux patch. Added m68*-*-linux*
          gdb_host.

        * Makefile.in: m68k-linux patch. Added compile line for
          m68klinux-nat.o
1998-12-08 20:41:19 +00:00
Michael Snyder
d1732185ee Fri Mar 20 14:45:36 1998 Michael Snyder <msnyder@cleaver.cygnus.com>
* gdbserver/Makefile.in: add dependency on XM_CLIBS.
        * gdbserver/low-sim.c (registers) force into alignment.
        (create_inferior): Fix typo on new_argv; add abfd arg to
        sim_open, sim_create_inferior.  Add reg_size arg to
        sim_fetch_register, sim_store_register.  Make simulator
        take a single-step to get into a known running state.
        * gdbserver/gdbreplay.c: include fcntl.h for def'n of F_SETFL.
        * gdbserver/server.c: Add remote_debug variable to control
        debug output.
        * gdbserver/server.h: Add prototypes for enable/disable_async_io.
        * gdbserver/remote-utils.c: add verbose debugging output controlled
        by "remote_debug" variable.  Add call to "disable_async_io()"
        to avoid being killed by async SIGIO signals.
        * config/m32r/m32r.mt: define GDBSERVER_(LIBS and DEPFILES),
        so that gdbserver can be built with the m32r simulator.
1998-03-20 23:33:28 +00:00
Mark Alexander
28954a6eb3 start-sanitize-tic80
* config/tic80/tic80.mt:
	(GDBSERVER-DEPFILES, GDBSERVER_LIBS): Define for gdbserver.
	(SIM): Remove -lm to prevent make errors.
	* configure.tgt: add gdbserver to configdirs for tic80.
end-sanitize-tic80
	* gdbserver/utils.c (error): Change prototype to match defs.h.
	* gdbserver/low-sim.c: Change simulator calls to use new interface.
	* remote.c (remote_write_bytes): Include '$' at start of packet
	and checksum at end of packet in overhead calculation.
1997-08-09 04:49:48 +00:00
Mark Alexander
33ef0f9387 First cut at supporting simulators in gdbserver:
* configure, configure.in: Allow gdbserver to be configured
	for cross-target environments.
	* gdbserver/Makefile.in: Add simulator support.
	* gdbserver/configure.in: Eliminate assumption that host == target.
	Simplify using gdb/configure.tgt and gdb/configure.host.
	Fix other minor configuration errors.
	* gdbserver/low-sparc.c: Fix compile error.
	* gdbserver/remote-utils.c: Eliminate assumption that registers
	and addresses are four bytes.  Fix minor compile errors and warnings.
	* gdbserver/server.c: Rewrite numerous instances of identical code
	for starting inferior processes to call new function start_inferior.
	Eliminate assumption that registers and addresses are four bytes.
	* gdbserver/server.h: Add missing prototypes to eliminate compiler
	warnings.
	* gdbserver/low-sim.c: New file to mate gdbserver with simulators.
	* config/mips/vr5000.mt: Add Vr5000 simulator support to gdbserver.
	* config/i386/linux.mh: Eliminate gdbserver support as a first step
	in moving such support from host to target makefile fragments.
	* config/i386/linux.mt: Move gdbserver support here from linux.mh.
1997-03-11 15:49:20 +00:00
Mark Alexander
ac2321b633 * configure.in, configure.tgt, configure.host, gdbserver/configure.in:
Correct	for pc-linux-gnu problem in config.guess.
1996-10-24 18:52:16 +00:00
Mark Alexander
913a7c4cc4 * gdbserver/{gdbreplay.c,low-linux.c,remote-utils.c,utils.c}:
Make it compile on Linux and eliminate some warnings.
1996-10-11 19:26:04 +00:00
Fred Fish
0be55272b4 * alpha-nat.c (fetch_core_registers): Match Sep 4 gdbcore.h prototype
change for core_read_registers in struct core_fns.
	* core-regset.c (fetch_core_registers): Ditto & add prototype.
	* core-sol2.c (fetch_core_registers): Ditto & add prototype.
	* i386aix-nat.c (fetch_core_registers): Ditto & add prototype.
	* i386b-nat.c (fetch_core_registers): Ditto.
	* i386mach-nat.c (fetch_core_registers): Ditto & add prototype.
	* irix4-nat.c (fetch_core_registers): Ditto.
	* irix5-nat.c (fetch_core_registers): Ditto.
	* lynx-nat.c (fetch_core_registers): Ditto & add prototype.
	* m68knbsd-nat.c (fetch_core_registers): Ditto.
	* mips-nat.c (fetch_core_registers): Ditto & add prototype.
	* rs6000-nat.c (fetch_core_registers): Ditto.
	* sparc-nat.c (fetch_core_registers): Ditto.
	* sun3-nat.c (fetch_core_registers): Ditto & add prototype.
	* ultra3-nat.c (fetch_core_registers): Ditto & add prototype.

	* alpha-nat.c (register_addr): Match Sep 4 gdbcore.h prototype change.
	* delta68-nat.c (register_addr): Ditto.
	* gdbserver/low-linux.c (register_addr): Ditto.
	* gdbserver/low-hppabsd.c (register_addr): Ditto.
	* i386m3-nat.c (register_addr): Ditto.
	* mips-nat.c (register_addr): Ditto.
	* ultra3-nat.c (register_addr): Ditto.
1996-09-09 03:14:35 +00:00
Michael Meissner
26c543ea67 Recognize i686 as pentium pro 1996-08-29 21:42:11 +00:00
Jason Molenda
a69b7bdcd4 * gdb/gdbserver/Makefile.in (docdir): Removed. 1996-06-25 14:15:50 +00:00
Jason Molenda
5d8b7982c5 * Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir):
Use autoconf set values.
        (docdir): Removed.
        * configure.in (AC_PREREQ): autoconf 2.5 or higher.
        * nlm/Makefile.in (bindir, libdir, datadir, mandir, infodir,
        includedir): Use autoconf set values.
        (docdir): Removed.
        * nlm/configure.in (AC_PREREQ): autoconf 2.5 or higher.
        * nlm/configure: Rebuilt.
        * gdb/gdbserver/Makefile.in (datadir): Set to $(prefix)/share.
1996-06-25 13:08:00 +00:00
Fred Fish
05b85be85c Add gdbreplay.c 1996-01-24 22:44:22 +00:00
Fred Fish
e8f1ad9a8b * NEWS: Make note of new record and replay feature for
remote debug sessions.
	* serial.c (gdbcmd.h): Include.
	(serial_logfile, serial_logfp, serial_reading, serial_writing):
 	Define here, for remote debug session logging.
	(serial_log_command, serial_logchar, serial_write, serial_readchar):
	New functions for remote debug session logging.
	(serial_open): Open remote debug session log file when needed.
	(serial_close): Close remote debug session log file when needed.
	(_initialize_serial): Add set/show commands for name of remote
	debug session log file.
	* serial.h (serial_readchar): Declare
	(SERIAL_READCHAR): Call serial_readchar().
	(SERIAL_WRITE): Call serial_write().
	(serial_close): Declare as extern.
	(serial_logfile, serial_logfp): Declare.
	* top.c (execute_command): Declare serial_logfp.  Log user command
	in remote debug session log if log file is open.
	* remote-array.c (array_wait): #ifdef out echo to gdb_stdout.
	(array_read_inferior_memory): Rewrite to fix memory overwrite bug.
	* remote-array.c (SREC_SIZE): Remove, duplicates define in
	monitor.h.
	* remote-array.c (hexchars, hex2mem):  Remove, unused.
	* gdbserver/low-linux.c (store_inferior_registers): Remove
	unnecessary extern declaration of registers[].
	* gdbserver/Makefile.in (all): Add gdbreplay.
	* gdbserver/gdbreplay.c: New file.
	* gdbserver/README: Give example of recording a remote
	debug session with gdb and then replaying it with gdbreplay.
1996-01-24 21:30:37 +00:00
Fred Fish
f9407a89f4 Forget to add low-linux.c during recent checkins. 1996-01-11 20:10:24 +00:00
Fred Fish
0d14c7df68 From Wilfried Moser <wilfried.moser@aut.alcatel.at>:
* gdbserver/low-linux.c: New file.
	* remote.c (remote_read_bytes): Fix aborts on larger packets.

	* config/i386/linux.mh (GDBSERVER_DEPFILES, GDBSERVER_LIBS):
	Define.
	* stabsread.c (define_symbol): If register value is too large,
	tell what it is and what max is.
1996-01-10 18:40:24 +00:00
Fred Fish
6c9638b444 Update FSF address. 1995-08-02 03:41:12 +00:00
Jeff Law
76087c5388 * gdbserver/low-hppabsd.c: Remove error declaration.
* gdbserver/low-sparc.c: Likewise.
	* gdbserver/low-sun3.c: Likewise.
	* gdbserver/server.h: Remove error and fatal declaration.
	* gdbserver/utils.c (error): Update to be compatable with recent
	changes in defs.h.
	(fatal): Likewise.
1995-07-20 21:04:29 +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
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
Jason Merrill
c55c62ed58 Linux configuration name fixes 1995-04-25 01:07:46 +00:00
Jim Kingdon
2eafd7ae71 * gdbserver/low-lynx.c (mywait): Remove debugging printf. 1994-12-09 12:46:42 +00:00
Jim Kingdon
4cc1b3f79d * gdbserver/remote-utils.c (write_ok): Write "OK", not "Ok", to
match stubs and protocol spec.
	* gdbserver/remote-utils.c (remote_open): Cast to struct sockaddr
	when passing to function which expects that.

	The following changes aren't quite enough to make things work with
	LynxOS (apprently kernel problems).
	* infrun.c (wait_for_inferior): When resuming new thread, pass pid
	not -1 for remote case.
	* thread.c (info_threads_command): Give error if !target_has_stack.
	* infrun.c (start_remote): Call init_thread_list.
	* thread.c (info_threads_command): Don't call kill for remote
	debugging target.
	* target.c (normal_pid_to_str): Print "thread" not "process" for
	remote.
	* remote.c, gdbserver/*: Add 'H', 'S', and 'C' requests, 'X'
	response, and `thread' part of 'T' response.
	* gdbserver/*: If program exits, send packet to GDB before
	exiting.  Handle termination with a signal the same as exiting
	with an exitstatus.
	* remote.c: Don't try to kill program after getting an 'X'
	response.
	* infrun.c (wait_for_inferior): Add comment about kill versus mourn.
1994-12-08 22:54:33 +00:00
Peter Schauer
ab18bba082 * gdbserver/server.c (main): Silently accept query requests
and send back a zero length acknowledge.
1994-10-03 12:14:38 +00:00
Jim Kingdon
d3006726b0 * gdbserver/low-lynx.c (create_inferior): Pass all 4 args to ptrace. 1994-09-30 23:02:22 +00:00
Ian Lance Taylor
7382b3b197 * configure.in: Change i[34]86 to i[345]86.
* nlm/configure.in: Likewise.
	* gdbserver/configure.in: Likewise.
1994-08-24 17:12:57 +00:00
Stan Shebs
b292fca800 Fri May 6 11:56:54 1994 Stan Shebs (shebs@andros.cygnus.com)
* gdbserver/Makefile.in: Remove irrelevant definitions and
	comments inherited from the gdb Makefile.
	(BFD_DIR, BFD, BFD_SRC, BFD_CFLAGS): Add from gdb Makefile.
	(VERSION): Update to 4.12.3.
	(gdbserver): Remove any existing executable first.
	(distclean, realclean): Remove nm.h.
	* gdbserver/low-lynx.c: Add Sparc Lynx support.
	* gdbserver/low-sparc.c, gdbserver/low-sun3.c (sys/wait.h):
	Don't use absolute pathname.
1994-05-06 19:52:23 +00:00
Jim Kingdon
4c0b3e57c1 * gdbserver/low-lynx.c: Include <sys/wait.h> not /usr/include/wait.h. 1994-01-15 03:51:40 +00:00
Stu Grossman
9a13e99e20 * coff-solib.c (coff_solib_add): Cast result of alloca().
* m68k-tdep.c (m68k_saved_pc_after_call):  Get rid of
	GDB_TARGET_IS_SUN3.  Use more general SYSCALL_TRAP macro.
	* config/m68k/m68klynx.mh (NATDEPFILES):  Remove exec.o (it's
	already in TDEPFILES).
	* config/m68k/tm-m68k.h (SAVED_PC_AFTER_CALL):  Use
	m68k_saved_pc_after_call.
	* Remove all Sun3 specific stuff.
	* (FIX_CALL_DUMMY):  Cast arg to bfd_putb32 to unsigned char *.
	* config/m68k/tm-m68klynx.h:  Define SYSCALL_TRAP as trap #10.
	Disable REMOTE_BREAKPOINT mechanism.
	* config/m68k/tm-sun3.h:  Get rid of GDB_TARGET_IS_SUN3.
	* Protect from multiple includion.
	* Move Sun3 specific stuff from tm-m68k.h to here.
	* Define SYSCALL_TRAP as trap #0.
	* Remove def of SAVED_PC_AFTER_CALL (now in tm-m68k.h).
	* gdbserver/low-lynx.c:  Redo all register store/fetch stuff to
	make it portable for 386 and 68k.
1993-11-12 18:59:43 +00:00
Stan Shebs
1cecf3b26a * gdbserver/configure.in: Recognize *-*-lynxos* instead of
*-*-lynx*, recognize sparc-*-lynxos*.
	* gdbserver/Makefile.in (install, install_only): Add.
	* gdbserver/gdbserver.1: New file, man page for gdbserver.
1993-11-02 20:50:35 +00:00
Jim Kingdon
a6e0dae9c3 * gdbserver/{low-lynx.c,low-sparc.c,low-sun3.c}, standalone.c,
m3-nat.c, i386m3-nat.c, mipsm3-nat.c, ns32km3-nat.c: bcopy -> memcpy.
1993-10-25 21:15:53 +00:00
Jim Kingdon
f153827490 * Rename files for 14-character limits:
gdbserver/remote-gutils.c -> gdbserver/utils.c
	gdbserver/remote-inflow.c -> gdbserver/low-lynx.c
	gdbserver/remote-inflow-sparc.c -> gdbserver/low-sparc.c
	gdbserver/remote-server.c -> gdbserver/server.c
	remote-monitor.c -> remote-mon.c
	* Makefile.in, gdbserver/Makefile.in, gdbserver/configure.in,
	config/m68k/monitor.mt,	config/i386/i386lynx.mh,
	config/sparc/sun4os4.mh: Change accordingly.
	* gdbserver/Makefile.in: Remove more junk inherited from gdb Makefile.
1993-08-27 23:27:02 +00:00
Jim Kingdon
5b3c73e6a1 * gdbserver/low-sun3.c: New file.
* gdbserver/Makefile.in, config/m68k/sun3.mh: Change accordingly.
1993-08-27 17:34:30 +00:00
Jim Kingdon
7053c1a5e3 new for sun3 gdbserver 1993-08-27 17:23:11 +00:00
Jim Kingdon
c033ec179a * Rename files for 14-character limits:
gdbserver/remote-gutils.c -> gdbserver/utils.c
	gdbserver/remote-inflow.c -> gdbserver/low-lynx.c
	gdbserver/remote-inflow-sparc.c -> gdbserver/low-sparc.c
	gdbserver/remote-server.c -> gdbserver/server.c
	remote-monitor.c -> remote-mon.c
	* Makefile.in, gdbserver/Makefile.in, config/m68k/monitor.mt:
	Change accordingly.
	* gdbserver/Makefile.in: Remove more junk inherited from gdb Makefile.
1993-08-27 16:59:46 +00:00
Jim Kingdon
ff1cdb40d9 * gdbserver/Makefile.in: Use GDBSERVER_LIBS and
GDBSERVER_DEPFILES.  Also remove much (but not all that could be
	removed) crud inherited from gdb Makefile.in.
	* config/i386/i386lynx.mh, config/sparc/sun4os4.mh: Define GDBSERVER_*.
	* gdbserver/README: Say it works on Sun and change configuration
	instructions slightly.
1993-08-13 02:05:47 +00:00
Stu Grossman
b367204f7f Keep server.h. 1993-08-03 08:51:51 +00:00
Fred Fish
b5ed6e32c2 Remove '.Sanitize' from explicit list of Things-to-lose. It is now implicitly
added to the list by Sanitize, unless Sanitize knows it needs to keep it.
1993-08-02 23:29:32 +00:00
Stu Grossman
db691e4b55 Mon Aug 2 08:42:50 1993 Stu Grossman (grossman at cygnus.com)
* gdbserver/remote-inflow.c (create_inferior):  Fix comments, and
	error msg.  Setup seperate process group for child.
	* (write_inferior_memory):  Sleep for 1 second and retry on ptrace
	failure.
1993-08-02 15:48:42 +00:00
Fred Fish
775d4a4096 Add .Sanitize to Things-to-lose list. 1993-07-30 16:46:19 +00:00
Fred Fish
a674371a3c Add remote-inflow-sparc.c and server.h to Things-to-lose list. 1993-07-30 07:39:05 +00:00
Stu Grossman
4b9583def3 test of branches. please ignore. 1993-07-08 23:36:48 +00:00
Stu Grossman
41e170e271 * gdbserver/Makefile.in: Add dependancies on server.h.
* gdbserver/remote-gutils.c:  Remove lots of unused functions and
	variables.
	* gdbserver/remote-inflow.c:  Remove lots of unused variables and
	#includes.  Also, use PTRACE_* symbols instead of constants.
	(mywait):  Surround calls to wait() with enable/disable_async_io()
	so that we can be interrupted from GDB while waiting for the
	child.  Also, handle child exit more gracefully.
	* gdbserver/remote-server.c:  Remove lots of unused variables.
	Move all extern defs into server.h.  Redo main loop so that
	failure from getpkt() causes communications to be re-established.
	Fix 'k' command so that it restarts the child.
	* gdbserver/remote-utils.c:  Remove lots of unloved vars and
	subrs.  Move many extern decls into server.h.  (remote_open):  For
	tcp, seperate usage of proto fd from connected fd.  Close proto
	fd after getting connection.  (putpkt/getpkt):  Pay attention to
	errors when reading/writing.  Report these to the caller.  New
	routines input_interrupt/enable_async_io/disable_async_io to make
	it possible to get an I/O interrupt when data arrives from the
	comm link.
	* serial.h:  New file to contain common defs for all remote files.
1993-06-26 00:41:00 +00:00
Stu Grossman
f450d101ea * gdbserver/Makefile.in (gdbserver): Use -lbsd.
* gdbserver/remote-inflow{-sparc}.c (create_inferior):  Don't use a
	shell when running the child, as args have been expanded by the
	time we get here.  Simplify calling convention.
	* gdbserver/remote-server.c (main):  Use new calling convention
	for create_inferior, remove defunct code for coalescing argv.
	Remove extra calls to mywait(), as we no longer have to wade
	through a shell.
1993-06-03 10:52:57 +00:00
Stu Grossman
22aa3d61b8 Add README. 1993-05-29 02:36:03 +00:00
Stu Grossman
17f087a80c Doc for gdbserver! 1993-05-29 02:31:00 +00:00
Stu Grossman
38dc5e123f * Makefile.in: Add new file ser-tcp.c.
* defs.h (memcmp):  Add decl for memcmp to #ifndef MEM_FNS_DECLARED.
	* findvar.c (write_register):  See if we are writing back the same
	value that's already in the register.  If so, don't bother.
	* remote.c (putpkt, getpkt):  Improve handling of communication
	problems.
	* ser-go32.c:  Prototype it to death.  Update serial_ops and add
	dummy routines where appropriate.
	* ser-tcp.c:  New module to implement serial I/O via TCP
	connections.
	* ser-unix.c:  Clean up getting/setting of tty state.  Get rid of
	SERIAL_RESTORE, add SERIAL_{GET|SET}_TTY_STATE interfaces.
	* serial.c:  Add start of support for connect command.
	(serial_open):  Distinguish between tcp and local devices.
	* serial.h (struct serial_ops):  Get rid of restore, add
	get_tty_state and set_tty_state.  Define protoypes and macros for
	this mess.
	* gdbserver/remote-utils.c:  Add tcp support.  (readchar):  Do
	some real buffering.  Handle error conditions gracefully.
	* gdbserver/remote-inflow-sparc.c:  Update to remote-inflow.c
	(Lynx), remove lots of cruft.
1993-05-29 01:33:36 +00:00
K. Richard Pixley
87756e15db added things-to-lose sections 1993-05-27 06:44:29 +00:00