Commit Graph

68296 Commits

Author SHA1 Message Date
Ian Lance Taylor 55382fb77a * symtab.cc (Odr_violation_compare::operator()): Sort by just the
filename.
2011-02-05 01:52:40 +00:00
gdbadmin 4d0fd3f682 *** empty log message *** 2011-02-05 00:00:03 +00:00
Alan Modra a2b0095576 daily update 2011-02-04 23:00:05 +00:00
Sami Wagiaalla 505500db28 Add Python support for GDB events.
2011-02-04  Sami Wagiaalla  <swagiaal@redhat.com>

	* gdb.python/py-evthreads.c: New file.
	* gdb.python/py-evthreads.exp: New file.
	* gdb.python/py-events.py: New file.
	* gdb.python/py-events.exp: New file.
	* gdb.python/py-events.c: New file.

2011-02-04  Sami Wagiaalla  <swagiaal@redhat.com>
                Oguz Kayral <oguzkayral@gmail.com>

	* python/py-inferior.c (python_on_normal_stop): New function.
	(python_on_resume): New function.
	(python_inferior_exit): New function.
	(gdbpy_initialize_inferior): Add normal_stop, target_resumed, and
	inferior_exit observers.
	* python/py-evtregistry.c: New file.
	* python/py-threadevent.c : New file.
	* python/py-event.c: New file.
	* python/py-evts.c: New file.
	* python/py-continueevent.c: New file.
	* python/py-bpevent.c: New file.
	* python/py-signalevent.c: New file.
	* python/py-exetiedevent.c: New file.
	* python/py-breakpoint.c (gdbpy_breakpoint_from_bpstats): New function.
	Move struct breakpoint_object from here...
	* python/python-internal.h: ... to here.
	* python/py-event.h: New file.
	* python/py-events.h: New file.
	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-breakpointstopevent.o,
	py-continueevent.o, py-event.o, py-eventregistry.o, py-events.o,
	py-exitedevent.o, py-signalstopevent.o, and py-stopevent.o.
	(SUBDIR_PYTHON_SRCS): Add py-breakpointstopevent.c,
	py-continueevent.c, py-event.c, py-eventregistry.c, py-events.c,
	py-exitedevent.c, py-signalstopevent.c, and py-stopevent.c.
	Add build rules for all the above.
2011-02-04 21:54:16 +00:00
Tom Tromey 9e0ac56407 * dwarf2read.c (dwarf2_section_empty_p): New function.
(dwarf2_read_section): Use dwarf2_section_empty_p.
	(dwarf2_section_size): New function.
	(dwarf2_get_section_info): Unconditionally read section.
	(dwarf2_read_index): Use dwarf2_section_empty_p.
	(partial_read_comp_unit_head): Use dwarf2_section_size.
	(dwarf2_symbol_mark_computed): Likewise.
2011-02-04 20:33:09 +00:00
Pedro Alves cef35b0f37 * gdbint.texinfo (Formatting): Mention some formatting guidelines
for casts and unary operators.
2011-02-04 19:10:12 +00:00
David Daney eee5b35e00 2011-02-04 David Daney <ddaney@caviumnetworks.com>
* NEWS: Add item for "catch syscall" on mips*-linux* targets.
2011-02-04 18:45:15 +00:00
Tom Tromey f1cbe1d302 * gdb.texinfo (GDB/MI Async Records): Document that symbols-loaded
is not useful.
2011-02-04 18:35:04 +00:00
David Daney 385203ed4d gdb/
2011-02-04 David Daney <ddaney@caviumnetworks.com>

	* mips-linux-tdep.c: Include xml-syscall.h.
	(mips_linux_get_syscall_number): New function.
	(mips_linux_init_abi): Add calls to
	mips_linux_get_syscall_number() and set_xml_syscall_file_name().
	* data-directory/Makefile.in (SYSCALLS_FILES): Add
	mips-o32-linux.xml, mips-n32-linux.xml and mips-n64-linux.xml
	* syscalls/mips-n32-linux.xml: New file.
	* syscalls/mips-n64-linux.xml: New file.
	* syscalls/mips-o32-linux.xml: New file.
gdb/testsuite/
2011-02-04 David Daney <ddaney@caviumnetworks.com>

	* gdb.base/catch-syscall.exp: Enable for mips*-linux*.
2011-02-04 18:34:43 +00:00
Ulrich Weigand 9277c30c29 * dwarf2read.c (dwarf2_ranges_read): Skip empty range entries.
Complain about inverted range entries.
	(dwarf2_record_block_ranges): Likewise.
2011-02-04 18:13:25 +00:00
Thiago Jung Bauermann a3be78903d Fix some typos.
* breakpoint.c (update_watchpoint): Fix name of the
	update_global_location_list function.
	(print_one_breakpoint): Fix typo.
	(_initialize_breakpoint): Remove extra space in hbreak help
	string.
	* breakpoint.h (struct bp_location) <length>: Fix field
	description.
2011-02-04 17:27:19 +00:00
Pedro Alves 041274d86d * regcache.c (registers_changed_ptid): Don't explictly always
clear `current_regcache'.  Only clear current_thread_ptid and
	current_thread_arch when PTID matches.  Only reinit the frame
	cache if PTID matches the current inferior_ptid.  Move alloca(0)
	call to ...
	(registers_changed): ... here.
2011-02-04 15:46:49 +00:00
gdbadmin fcc82f68c5 *** empty log message *** 2011-02-04 00:00:32 +00:00
Bernd Schmidt 98d23befa7 gas/
* doc/as.texinfo (Target TIC6X options): Don't mention "-matomic".
	* doc/c-tic6x.texi (TIC6X Directives): Don't mention ".atomic".
	(TIC6X Options): Don't mention "-matomic".
	* config/tc-tic6x.c (OPTION_MATOMIC, OPTION_MNO_ATOMIC): Delete.
	(md_longopts): Remove corresponding entries.
	(md_parse_option): Don't handle them.
	(md_show_usage): Don't document them.
	(tic6x_atomic): Delete variable.
	(tic6x_update_features): Always copy tic6x_arch_enable to
	tic6x_features.
	(tic6x_arch_enable): Remove references to TIC6X_INSN_ATOMIC.
	(s_tic6x_atomic, s_tic6x_noatomic): Remove functions.
	(md_pseudo_table): Remove ".atomic" and ".noatomic".

	gas/testsuite/
	* gas/tic6x/dir-junk.l: Remove tests for .atomic and .noatomic.
	* gas/tic6x/dir-junk.s: Likewise.
	* gas/tic6x/insns-c674x-bad.d: Remove test.
	* gas/tic6x/insns-c674x-bad.l: Likewise.
	* gas/tic6x/insns-atomic.d: Remove "-matomic" switch.

	include/opcode/
	* tic6x-opcode-table.h (cmtl, ll, sl): Available on C64XP.
	* tic6x.h (TIC6X_INSN_ATOMIC): Remove.
2011-02-03 23:20:26 +00:00
Alan Modra 02e155fee8 daily update 2011-02-03 23:00:04 +00:00
Ulrich Weigand c1c2ab58e4 * arm-tdep.c (arm_skip_stack_protector): Accept any symbol that
starts with __stack_chk_guard as stack guard symbol.
2011-02-03 18:34:55 +00:00
Andrew Burgess 9011945e46 http://sourceware.org/ml/gdb-patches/2010-12/msg00300.html
Improve the ordering of line table entries when dealing with the end
of sequence markers.  This will allow us to disassemble over the border
between two compile units while also displaying source code information.
2011-02-03 14:45:37 +00:00
Ralf Wildenhues d4d868a280 libiberty: documentation markup and order fixes.
libiberty/:
	* splay-tree.c: Escape wrapping newlines in texinfo markup
	with '@', to fix function declaration output rendering.
	* gather-docs: Relax and improve macro name matching to actually
	match all current names and to allow input line wrapping.
	* bsearch.c, concat.c, crc32.c, fnmatch.txh, fopen_unlocked.c,
	hashtab.c, insque.c, make-relative-prefix.c, memchr.c, memcmp.c,
	memcpy.c, memmem.c, memmove.c, mempcpy.c, memset.c,
	pexecute.txh, random.c, setenv.c, setproctitle.c,
	simple-object.txh, snprintf.c, stpncpy.c, strncmp.c, strtod.c,
	strtol.c, vasprintf.c, vprintf.c, vsnprintf.c, xmemdup.c:
	Wrap long texinfo input lines.
	* functions.texi: Regenerate.
2011-02-03 07:23:59 +00:00
gdbadmin 876c33db72 *** empty log message *** 2011-02-03 00:00:32 +00:00
Alan Modra 92ef14442d daily update 2011-02-02 23:00:07 +00:00
Sriraman Tallam 4e271fffec 2011-02-02 Sriraman Tallam <tmsriram@google.com>
* icf.h (is_section_foldable_candidate): Change type of parameter
        to std::string.
	* icf.cc (Icf::find_identical_sections): Change type of local variable
        section_name to be std::string.
	(is_function_ctor_or_dtor): Change type of parameter to std::string.
2011-02-02 21:55:29 +00:00
Ulrich Weigand e0634ccfe8 * arm-tdep.c (skip_prologue_function): Add GDBARCH and IS_THUMB
arguments.  Skip in-prologue calls to glibc __aeabi_read_tp
	implementation even if no symbols are available.
	(thumb_analyze_prologue): Update call to skip_prologue_function.
	(arm_analyze_prologue): Likewise.
2011-02-02 19:45:32 +00:00
Ulrich Weigand 0e9e9abd6f * arm-tdep.c: Include "observer.h".
(arm_prologue_this_id): Use frame PC if get_frame_func returns 0.
	(arm_exidx_data_key): New static variable.
	(struct arm_exidx_entry, arm_exidx_entry_s): New data types.
	(struct arm_exidx_data): Likewise.
	(arm_exidx_data_free): New function.
	(arm_compare_exidx_entries): Likewise.
	(arm_obj_section_from_vma): Likewise.
	(arm_exidx_new_objfile): Likewise.
	(arm_find_exidx_entry): Likewise.
	(arm_exidx_fill_cache): Likewise.
	(arm_exidx_unwind_sniffer): Likewise.
	(arm_exidx_unwind): New global variable.
	(arm_gdbarch_init): Append unwinder arm_exidx_unwind.
	(_initialize_arm_tdep): Attach arm_exidx_new_objfile to new_objfile
	observer.  Register arm_exidx_data_key as objfile data.
2011-02-02 19:44:44 +00:00
Ulrich Weigand 2e9e421ffe * arm-tdep.c (arm_analyze_load_stack_chk_guard): Avoid build break
due to accessing uninitialized variable.  Fix indentation.
2011-02-02 18:03:35 +00:00
Pedro Alves 580688f393 gdb/
* c-valprint.c (c_value_print): When doing virtual base pointer
	adjustment, create a new value with adjusted contents rather than
	changing the contents of the value being printed (and getting it
	wrong).

	gdb/testsuite/
	* gdb.cp/virtbase.cc (VirtualBase, VirtualMiddleA, VirtualMiddleB)
	(Virtual): New structs.
	(virtual_o, virtual_middle_b): New globals.
	* gdb.cp/virtbase.exp: New tests.
2011-02-02 17:41:54 +00:00
Pedro Alves 3d2c1d41d4 * xml-support.c (xml_find_attribute): New.
(xinclude_start_include): Use it.
	* xml-support.h (xml_find_attribute): Declare.
	* memory-map.c (memory_map_start_memory)
	(memory_map_start_property): Use xml_find_attribute.
	* osdata.c (osdata_start_osdata, osdata_start_column): Use
	xml_find_attribute.
	* remote.c (start_thread): Use xml_find_attribute.
	* solib-target.c (library_list_start_segment)
	(library_list_start_section, library_list_start_library)
	(library_list_start_list): Use xml_find_attribute.
	* xml-tdesc.c (tdesc_start_target, tdesc_start_feature)
	(tdesc_start_union, tdesc_start_struct, tdesc_start_flags)
	(tdesc_start_field): Use xml_find_attribute.
2011-02-02 16:12:59 +00:00
Ulrich Weigand 0af3e2db57 * opencl-lang.c (STRINGIFY): Rename to OCL_STRING.
(BUILD_OCL_VTYPES): Update.
2011-02-02 13:47:06 +00:00
Joel Brobecker c1039e3cb7 fix gdb+python build failure if using non-GNU sed
Non-GNU sed do not like the '?' quantifier when used in a s/// regexp
that involve back-references, causing the build to fail when trying
to link with Python support. This fixes it by using the '*' quantifier
instead.

gdb/ChangeLog:

 	* configure.ac: Work around non-GNU sed limitation when computing
 	python version number.
 	* configure: Regenerate.
2011-02-02 04:36:21 +00:00
gdbadmin 73b45f0445 *** empty log message *** 2011-02-02 00:00:03 +00:00
Alan Modra 5a5b3962d7 daily update 2011-02-01 23:00:05 +00:00
Jan Kratochvil 600ea1bed9 gdb/
Fix debug printing of TYPE_INSTANCE.
	* expprint.c (print_subexp_standard) <TYPE_INSTANCE>: New.
	(dump_subexp_body_standard) <TYPE_INSTANCE>: New.
2011-02-01 18:56:34 +00:00
Jan Kratochvil 56c1241406 gdb/
Fix debug printing of BINOP_IN, OP_OBJC_MSGCALL,
	OP_F77_UNDETERMINED_ARGLIST, OP_COMPLEX, OP_OBJC_SELECTOR, OP_NAME,
	OP_OBJC_NSSTRING, OP_F90_RANGE and OP_DECFLOAT.
	* ada-operator.inc: Rename the file to ...
	* ada-operator.def: ... here, wrap all the entries by macro OP.
	* expprint.c (op_name_standard): Remove all the entries.  Include
	"std-operator.def" instead.
	* expression.h (enum exp_opcode): Include "std-operator.def" and
	"ada-operator.def".  Move all the entries ...
	* std-operator.def: ... here, wrap all the entries by macro OP.
2011-02-01 18:54:01 +00:00
Nick Clifton 4be0c94123 Updated Danish translation. 2011-02-01 13:14:40 +00:00
gdbadmin 9c3b1b2d16 *** empty log message *** 2011-02-01 00:00:03 +00:00
Alan Modra 824b9efe20 daily update 2011-01-31 23:00:05 +00:00
Alan Modra 6683a28dfa * elf64-ppc.c (ppc64_elf_next_input_section): Use elf_gp value
for toc pointer on any section having makes_toc_func_call set.
	(check_pasted_section): Ensure pasted .init/.fini fragments use
	the same toc if any has makes_toc_func_call set.
2011-01-31 22:38:26 +00:00
Paul Pluzhnikov d3f0f85341 2011-01-31 Paul Pluzhnikov <ppluzhnikov@google.com>
* gdb.base/jit.exp: New file.
	* gdb.base/jit-main.c: New file.
	* gdb.base/jit-solib.c: New file.
2011-01-31 21:44:52 +00:00
Paul Pluzhnikov c52b559d66 2011-01-31 Paul Pluzhnikov <ppluzhnikov@google.com>
* breakpoint.h (remove_jit_event_breakpoints): New prototype.
	* breakpoint.c (remove_jit_event_breakpoints): New function.
	* jit.c (jit_descriptor_addr): Delete.
	(registering_code): Delete.
	(clear_int): Delete.
	(jit_inferior_data): New variable.
	(struct jit_inferior_data): New type.
	(get_jit_inferior_data): New function.
	(jit_inferior_data_cleanup): New function.
	(jit_read_descriptor): Adjust.
	(jit_register_code): Adjust.
	(jit_breakpoint_re_set_internal): New function; move code here ...
	(jit_inferior_init): ... from here.
	(jit_breakpoint_re_set): Adjust.
	(jit_reset_inferior_data_and_breakpoints): New function.
	(jit_inferior_created_observer): Adjust.
	(jit_inferior_exit_hook): Adjust.
	(jit_executable_changed_observer): New function.
	(jit_event_handler): Adjust.
	(_initialize_jit): Adjust.
2011-01-31 21:43:12 +00:00
Paul Pluzhnikov 03673fc718 2011-01-31 Paul Pluzhnikov <ppluzhnikov@google.com>
* breakpoint.h (remove_jit_event_breakpoints): New prototype.
	* breakpoint.c (remove_jit_event_breakpoints): New function.
	* jit.c (jit_descriptor_addr): Delete.
	(registering_code): Delete.
	(clear_int): Delete.
	(jit_inferior_data): New variable.
	(struct jit_inferior_data): New type.
	(get_jit_inferior_data): New function.
	(jit_inferior_data_cleanup): New function.
	(jit_read_descriptor): Adjust.
	(jit_register_code): Adjust.
	(jit_breakpoint_re_set_internal): New function; move code here ...
	(jit_inferior_init): ... from here.
	(jit_breakpoint_re_set): Adjust.
	(jit_reset_inferior_data_and_breakpoints): New function.
	(jit_inferior_created_observer): Adjust.
	(jit_inferior_exit_hook): Adjust.
	(jit_executable_changed_observer): New function.
	(jit_event_handler): Adjust.
	(_initialize_jit): Adjust.
2011-01-31 21:37:01 +00:00
Michael Snyder e839132de9 2011-01-31 Michael Snyder <msnyder@vmware.com>
* m32r-tdep.c (m32r_gdbarch_init): Replace accidentally deleted
	line.
2011-01-31 20:21:02 +00:00
Ulrich Weigand b2030fb51f * gdb.opencl/convs_casts.exp: Use tbreak instead of break to
proceed to initial kernel entry point.
	* gdb.opencl/datatypes.exp: Likewise.
	* gdb.opencl/operators.exp: Likewise.
	* gdb.opencl/vec_comps.exp: Likewise.
2011-01-31 19:05:23 +00:00
Sami Wagiaalla 2db19d1e4d Added new namespace tests.
2011-01-31  Sami Wagiaalla  <swagiaal@redhat.com>

	* gdb.cp/nsnested.cc: New.
	* gdb.cp/nsnested.exp: New.
	* gdb.cp/nsnoimports.exp: New.
	* gdb.cp/nsnoimports.cc: New.
2011-01-31 18:29:02 +00:00
Tom Tromey 47a80e9093 PR python/12216:
* python/python.c (execute_gdb_command): Call
	prevent_dont_repeat.
	* top.c (suppress_dont_repeat): New global.
	(dont_repeat): Use it.
	(prevent_dont_repeat): New function.
	* command.h (prevent_dont_repeat): Declare.
2011-01-31 16:52:35 +00:00
Nick Clifton a22429b98e * write.c (write_contents): Include output file name and bfd error
value when reporting the inability to write to the output file.
	* config/tc-rx.c (rx_handle_align): Do not insert NOPs into align
	frag that has a non-zero fill value.

	* gas/all/align.d: Skip for the RX.
	* gas/elf/group1a.d: Likewise.
	* gas/elf/groupautoa.d: Likewise.
	* gas/elf/elf.exp: Do not run section5 test for the RX port.
	* gas/elf/section4.d: Likewise.
	* gas/elf/section7.d: Likewise.
	* gas/macros/semi.s: Fill with a non-zero pattern.
	* gas/macros/semi.d: Expect non-zero fill value.
	* gas/rx/bcnd.d: Update expected disassembly.
	* gas/rx/bra.d: Likewise.
	* gas/rx/macros.inc: Add reg1 macro.
	* gas/rx/max.sm: Use reg1 macro to avoid generating illegal NOP
	instruction.
	* gas/rx/mov.sm: Likewise.
	* gas/rx/max.d: Update expected disassembly.
	* gas/rx/mov.d: Likewise.
	* gas/rx/rx-asm-good.s: Use Renesas section names.
	* gas/rx/rx-asm-good.d: Update expected disassembly.
2011-01-31 16:43:15 +00:00
Tom Tromey 45a4356715 * infcmd.c (finish_backward): Use breakpoint_set_silent.
* python/py-breakpoint.c (bppy_set_silent): Use
	breakpoint_set_silent.
	(bppy_set_thread): Use breakpoint_set_thread.
	(bppy_set_task): Use breakpoint_set_task.
	* breakpoint.h (breakpoint_set_silent, breakpoint_set_thread)
	(breakpoint_set_task): Declare.
	(make_breakpoint_silent): Remove.
	* breakpoint.c (breakpoint_set_silent): New function.
	(breakpoint_set_thread): Likewise.
	(breakpoint_set_task): Likewise.
	(make_breakpoint_silent): Remove.
2011-01-31 15:16:59 +00:00
Tom Tromey 09d682a4f3 * breakpoint.h (user_breakpoint_p): Declare.
* breakpoint.c (user_breakpoint_p): New function.
	(breakpoint_1): Use it.
	(save_breakpoints): Likewise.
2011-01-31 15:07:49 +00:00
Alexandre Oliva 65b4571a45 PR libgcj/44341
* configure.ac: Discard --with-* flags for host when configuring
target libraries for cross build.
* configure: Rebuilt.
2011-01-31 05:26:01 +00:00
Joel Brobecker 9c4ea6c5a9 allow building GDB with Python support on MinGW
This makes several adjustements to the configure python-config.py
scripts to deal with the differences between a Unix install of Python
and a Windows install of Python (as downloaded from the Python website).

Differences:

  - The Python executable is directly in the python prefix directory
    as opposed to inside the bin/ subdirectory.

  - The name of the python library is does not have a dot in the version
    number: On Unix, we have libpython2.7, while on Windows, it's
    libpython27.  So the regexp extracting the python version from
    the Python lib filename had to be adjusted slightly.

    Also, the tests checking the name of the libpython had to be
    adjusted to allow for that.

  - There are no link options following the -lpython<version> switch
    on Windows, but the regexp extracting the python version was
    using it as a delimiter.  It had to be removed.

  - python-config.py does not work on Windows, mostly because
    some sysconfig variables are missing.  They are not necessary
    so the script was adapted to skip them if not defined.

  - The paths returned by python-config.py follow the Windows filename
    convention in terms of the directory separator, and this is causing
    trouble when the build environment is cygwin (while the compiler
    and Python are MinGW).  We could have fixed that in the configure
    script, but it felt simpler to do so in python-config.py

gdb/ChangeLog:

        * configure.ac: Add handling of Python distribution on Windows.
        * python-config.py: If the LIBS, SYSLIBS, LIBPL and/or LINKFORSHARED
        sysconfig variables are not defined, then do not use them.
        On Windows, if LIBPL is not defined, then use prefix + '/libs'
        instead.  On Windows, return all paths using forward-slashes
        rather than backslashes.
2011-01-31 04:42:08 +00:00
Joel Brobecker ac534cba29 do not use python<version> subdir when including Python .h file
This is preparation work for being able to build GDB with Python
support on MinGW.

So far, the "python<version>" subdirectory needs to be specified
when including a Python header file.  In order to do that, we have
some special configury that tweaks the include path returned by
python-config.py such that the use of the subdirectory in the include
is necessary.  This was done in order to protect ourselves from
possible filename conflicts, since some of the filenames chosen by
Python were a little generic.

The problem is that this cannot work with a standard Python install
on MinGW systems.  On such systems, the .h files are located in
<python_prefix>/include.  So, in preparation for allowing us to build
GDB on MinGW with Python support enabled, this patch changes the
requirement to provide the "python<version>" subdirectory in the
include directive.

The positive consequence is that we no longer need to have a set
of #include directives for each version of Python, since the include
directive is now the same for all versions of Python.  However, the
downside is that we are losing the level of protection we were trying
to achieve by forcing the subdirectory in the include directive.
In order to reduce a bit the consequences of a possible conflict,
this patch also changes the location where the -I/path/to/python
switch goes, to be last in the list (suggested by Doug Evans).

One last change is the fact that we are now including Python.h
and all other Python include headers using angle brackets rather
than double-quotes.  This fixes a problem on case-insensitive
systems where #include "Python.h" causes our gdb/python/python.h
header to be included instead of Python's <Python.h> header.

gdb/ChangeLog:

	* configure.ac: Remove fallback behavior for building
	against Python.  Remove tweaking of Python include path.
	Add PYTHON_CPPFLAGS and PYTHON_LIBS substitution.
	(AC_TRY_LIBPYTHON):  Adjust program used in linking test.
	If link is successful, set PYTHON_CPPFLAGS and PYTHON_LIBS.
	Always restore CPPFLAGS and LIBS after linking test.
	* configure: Regenerated.
	* Makefile.in (INTERNAL_CPPFLAGS): Add @PYTHON_CPPFLAGS@.
	(INSTALLED_LIBS, CLIBS): Add @PYTHON_LIBS@.
	* python/python-internal.h: Adjust includes of Python .h files.
2011-01-31 04:41:27 +00:00
Joel Brobecker c2f0d045af Add missing i18n markup in tracepoint.c:traceframe_walk_blocks
gdb/ChangeLog:

 	* tracepoint.c (traceframe_walk_blocks): Add missing i18n markup
 	in error message.
2011-01-31 03:12:06 +00:00