Commit Graph

9146 Commits

Author SHA1 Message Date
Michal Ludvig abd4220e18 2003-08-07 Michal Ludvig <mludvig@suse.cz>
* x86-64-tdep.c (x86_64_dwarf_regmap): Correct register numbers.
2003-08-07 07:51:14 +00:00
Andrew Cagney 9dd5f34f8d 2003-08-05 Andrew Cagney <cagney@redhat.com>
* reggroups.c (reggroup_next): Check for the final entry.
2003-08-05 18:08:59 +00:00
Andrew Cagney ab4e3d93a0 2003-08-04 Andrew Cagney <cagney@redhat.com>
* monitor.h (monitor_dump_reg_block): Remove ATTR_FORMAT.
	* cli/cli-script.c (define_command): Call query directly, instead
	of passing it a buffer.
	* ocd.c (ocd_error): Pass error a constant format string.
	* remote-mips.c (mips_error): Use fputs_filtered.
2003-08-05 02:44:50 +00:00
Andrew Cagney 1062ca825e 2003-08-04 Andrew Cagney <cagney@redhat.com>
* solib-svr4.c (_initialize_svr4_solib): Update
	register_gdbarch_data call.
	* mips-linux-tdep.c (_initialize_mips_linux_tdep): Ditto.
2003-08-05 02:38:06 +00:00
Andrew Cagney fcc1c85c67 2003-08-04 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh (gdbarch_data_free_ftype): Delete declaration.
	(register_gdbarch_data): Delete "free" parameter.  Update
	comments.
	* gdbarch.h, gdbarch.c: Re-generate.
	* reggroups.c (_initialize_reggroup): Update.
	* gnu-v3-abi.c (init_gnuv3_ops): Update.
	* frame-base.c (_initialize_frame_base): Update.
	* frame-unwind.c (_initialize_frame_unwind): Update.
	* user-regs.c (_initialize_user_regs): Update.
	* remote.c (_initialize_remote): Update.
	* regcache.c (_initialize_regcache): Update.
2003-08-04 22:24:44 +00:00
Andrew Cagney 116f06eabf 2003-08-04 Andrew Cagney <cagney@redhat.com>
* regcache.c (xfree_regcache_descr): Delete function.
	(_initialize_regcache): Update call to register_gdbarch_data.
	(init_regcache_descr, init_legacy_regcache_descr): Use
	GDBARCH_OBSTACK_XALLOC and GDBARCH_OBSTACK_CALLOC.
2003-08-04 21:12:46 +00:00
Andrew Cagney e5e78edc1a 2003-08-04 Andrew Cagney <cagney@redhat.com>
* remote.c (free_remote_state): Delete function.
	(_initialize_remote): Update register_gdbarch_data.
	(init_remote_state): Use GDBARCH_OBSTACK_XALLOC and
	GDBARCH_OBSTACK_CALLOC instead of xmalloc / xcalloc.
2003-08-04 20:52:27 +00:00
Andrew Cagney 6c7d17ba3a 2003-08-04 Andrew Cagney <cagney@redhat.com>
* reggroups.c (struct reggroup_el): Define.
	(struct reggroups): Delete field "nr_group".  Replace array
	"group" with a "first" to "last" linked list.
	(reggroups_init): Update.  Allocate using gdbarch's obstack.
	(reggroups_free): Delete function.
	(add_group): Update.  Add "el" parameter.
	(reggroup_add): Pass gdbarch obstack allocated space to add_group.
	(default_groups): Update.
	(reggroup_next): Replace reggroups.
	(reggroups_dump): Update.
	(_initialize_reggroup): Pass XMALLOC allocated space to add_group.
	* regcache.c (regcache_dump): Use reggroup_next instead of reggroups.
	* infcmd.c (registers_info): Use reggroup_next instead of reggroups.
2003-08-04 20:34:10 +00:00
Daniel Jacobowitz 89b7795b14 * Makefile.in (tui-interp.o): Update dependencies. 2003-08-04 19:28:05 +00:00
David Carlton 306d9ac513 2003-08-04 David Carlton <carlton@kealia.com>
* charset.c (cached_iconv_convert): Add __FILE__ and __LINE__ args
	to internal_error call.
	* source.c (forward_search_command): Add "%s" format argument.
	(reverse_search_command): Ditto.
	* top.c (quit_confirm): Ditto.
	* cli/cli-setshow.c (do_setshow_command): Ditto.
	* cp-valprint.c (cp_print_class_method): Replace
	{f,}printf_{un,}filtered by {f,}puts_{un,}filtered.
	(cp_print_class_member): Ditto.
	* event-top.c (command_line_handler): Ditto.
	* linux-proc.c (linux_info_proc_cmd): Ditto.
	* p-typeprint.c (pascal_type_print_base): Ditto.
	* p-valprint.c (pascal_object_print_class_method): Ditto.
	(pascal_object_print_class_member): Ditto.
	* printcmd.c (print_scalar_formatted,printf_command): Ditto.
	* remote.c (remote_cisco_section_offsets): Ditto.
	* top.c (command_line_input): Ditto.
	* utils.c (vwarning,error_stream,quit): Ditto.
	* valprint.c (print_floating,print_binary_chars)
	(print_octal_chars,print_decimal_chars,print_hex_chars): Ditto.

2003-08-04  David Carlton  <carlton@kealia.com>

	* mi-main.c (mi_error_last_message): Add "%s" second argument to
	xasprintf call.

2003-08-04  David Carlton  <carlton@kealia.com>

	* generic/gdbtk.c (gdbtk_source_start_file): Add "%s" first
	argument to error call.
	(tk_command): Ditto.
	(view_command): Ditto.
2003-08-04 17:08:24 +00:00
Andrew Cagney 57bfe1774e 2003-08-04 Andrew Cagney <cagney@redhat.com>
* frame.c (frame_func_unwind): Use frame_unwind_address_in_block.
2003-08-04 15:42:43 +00:00
Andrew Cagney e546b9999e 2003-08-02 Andrew Cagney <cagney@redhat.com>
* config/djgpp/fnchange.lst: Fix up testsuite/gdb.c++/annota3.cc,
	gdb/testsuite/gdb.c++/annota3.exp, amd64fbsd-tdep.c and
	amd64fbsd-nat.c.
2003-08-03 02:42:16 +00:00
Andrew Cagney 91092ee55b 2003-08-02 Andrew Cagney <cagney@redhat.com>
* Makefile.in: Update all dependencies and definitions.
2003-08-02 20:11:48 +00:00
Adam Fedor 889f28e262 * linespec.c (is_objc_method_format): New function
(decode_line_1, locate_first_half): Use it.
Fixes PR objc/1298
2003-08-02 03:59:40 +00:00
Andrew Cagney 880bc914e0 2003-08-01 Andrew Cagney <cagney@redhat.com>
* NEWS: Mention that m32r is multi-arch.
	From 2003-07-28 Kei Sakamoto <sakamoto.kei@renesas.com>:
	* configure.tgt: Recognize m32r-*-*.
	* config/m32r/tm-m32r.h: Delete file.
	* config/m32r/m32r.mt: New file.
	* m32r-rom.c (m32r_upload_command): Use hostent only when
        gethostname succeeds, in order to avoid a compilation
        warning.
	* m32r-tdep.c (m32r_store_return_value): Add a cast to remove a
	compiler warning.
2003-08-01 21:14:33 +00:00
Michael Snyder 19f5934377 2003-08-01 Michael Snyder <msnyder@redhat.com>
* sh-tdep.c (sh_frame_align): New gdbarch method.
	(sh_gdbarch_init): Set up frame_align method.
2003-08-01 19:52:49 +00:00
Michael Snyder 4e7d75111e 2003-07-31 Michael Snyder <msnyder@redhat.com>
* value.h, values.c, infcall.c,	infcmd.c: Revert 07-30	change,
        which is already covered by the	new frames infrastructure.
2003-07-31 23:41:25 +00:00
Andrew Cagney 6302298482 2003-07-31 Andrew Cagney <cagney@redhat.com>
* user-regs.c (struct user_reg): Add "next" link.
	(struct user_regs): Replace "user" with "first" and "last" links.
	(append_user_reg): Add pre-allocated "reg" parameter.
	(builtin_user_regs): Provide initial value for "last".
	(user_reg_add_builtin): XMALLOC memory for append_user_reg.
	(user_regs_init): Allocate memory from the gdbarch obstack.
	(user_reg_add): GDBARCH_OBSTACK_ZALLOC memory for append_user_reg.
	(user_reg_map_name_to_regnum): Rewrite to search the user_reg
	linked list.
	(usernum_to_user_reg): New function.
	(user_reg_map_regnum_to_name): Use usernum_to_user_reg.
	(value_of_user_reg): Use usernum_to_user_reg.
	(user_regs_free): Delete function.
	(_initialize_user_regs): Update register_gdbarch_data call.
2003-07-31 21:42:39 +00:00
Daniel Jacobowitz 7cf6e574cf * dwarf2read.c (new_symbol): Use var_decode_location for parameters. 2003-07-31 21:05:38 +00:00
Michael Snyder c48a845bff 2003-07-30 Michael Snyder <msnyder@redhat.com>
* structs.h (value_being_returned): Add a struct_addr argument.
	* infcall.c (call_function_by_hand): Pass struct_addr to
	value_being_returned.
	* infcmd.c (print_return_value): Pass zero as struct_addr.
	* values.c (value_being_returned): If struct_addr is passed,
	use it instead of trying to recover it from the inferior.
2003-07-30 20:59:10 +00:00
Kevin Buettner f0d8db1927 * mn10300-tdep.c (analyze_dummy_frame): Pass ``pc'' so that
the prologue analyzer won't need to attempt to extract the pc
	value from the woefully incomplete dummy frame.
	(mn10300_analyze_prologue): Avoid calls to get_frame_pc() when
	possible.  Disable code which modifies the frame.
2003-07-30 20:44:46 +00:00
Andrew Cagney e5c113a1de 2003-07-28 Andrew Cagney <cagney@redhat.com>
* annotate.c (annotate_breakpoints_headers): Restrict annotation
	to level 2.
	(annotate_breakpoints_table, annotate_record): Ditto.
	(annotate_breakpoints_table_end, annotate_field_begin): Ditto.
	(annotate_field_name_end, annotate_field_value): Ditto.
	(annotate_field_end, annotate_frame_source_begin): Ditto.
	(annotate_frame_source_file, annotate_frame_source_file_end): Ditto.
	(annotate_frame_source_line, annotate_frame_source_end): Ditto.
	(annotate_frame_begin, annotate_frame_function_name): Ditto.
	(annotate_frame_address_end, annotate_frame_address): Ditto.
	(annotate_frame_args, annotate_frame_end): Ditto.
	(annotate_frame_where, annotate_arg_begin): Ditto.
	(annotate_arg_name_end, annotate_arg_value): Ditto.
	(annotate_arg_end, annotate_signal_handler_caller): Ditto.
	(annotate_function_call, annotate_signal_name): Ditto.
	(annotate_signal_string, annotate_signal_name_end): Ditto.
	(annotate_signal_string_end, annotate_value_history_begin): Ditto.
	(annotate_value_begin, annotate_value_history_value): Ditto.
	(annotate_value_history_end, annotate_value_end): Ditto.
	(annotate_display_begin, annotate_display_number_end): Ditto.
	(annotate_display_format, annotate_display_expression): Ditto.
	(annotate_display_expression_end, annotate_display_value): Ditto.
	(annotate_display_end, annotate_array_section_begin): Ditto.
	(annotate_elt_rep, annotate_elt_rep_end): Ditto.
	(annotate_elt, annotate_array_section_end): Ditto.
2003-07-29 03:17:08 +00:00
Andrew Cagney bb1db0499b 2003-07-28 Andrew Cagney <cagney@redhat.com>
* regcache.c (struct regcache_descr): Update comments on
	nr_raw_registers.
	(init_legacy_regcache_descr): Don't set nr_raw_registers or
	sizeof_raw_register_valid_p.
	(init_regcache_descr): Set nr_raw_registers and
	sizeof_raw_register_valid_p before calling
	init_legacy_regcache_descr.
2003-07-28 15:41:19 +00:00
Andrew Cagney 20e6603c81 2003-07-28 Andrew Cagney <cagney@redhat.com>
* mips-tdep.c (print_gp_register_row): Print the GPR's register
	MOD NUM_REGS.
2003-07-28 15:31:08 +00:00
Daniel Jacobowitz db7429406e * thread.c (info_threads_command): Use get_selected_frame ().
Check that there is at least one non-sentinel frame.
2003-07-28 13:02:12 +00:00
Stephane Carrez ce7f4371ed * m68hc11-tdep.c (struct frame_extra_info): Remove.
(m68hc11_pop_frame): Remove.
	(m68hc11_frame_saved_pc): Remove.
	(m68hc11_frame_chain): Remove.
	(m68hc11_frame_init_saved_regs): Remove.
	(m68hc11_init_extra_frame_info): Remove.
	(m68hc11_store_struct_return): Remove.
	(m68hc11_saved_pc_after_call): Remove.
	(m68hc11_call_dummy_address): Remove.
2003-07-27 21:39:44 +00:00
Stephane Carrez 1ea653ae0a * m68hc11-tdep.c (struct m68hc11_unwind_cache): New struct to hold
frame unwind information.
	(m68hc11_scan_prologue): New function from m68hc11_guess_from_prologue
	and adapted for frame unwinding.
	(m68hc11_skip_prologue): Update to scan prologue in temporary object.
	(m68hc11_unwind_pc): New function.
	(m68hc11_frame_unwind_cache): New function to analyze frames.
	(m68hc11_frame_this_id): New function to create new frame struct.
	(m68hc11_frame_prev_register): New function to unwind a register from
	the frame.
	(m68hc11_frame_unwind): Default 68hc11/68hc12 unwinder.
	(m68hc11_frame_p): New function for the above.
	(m68hc11_frame_base_address): New function to return fp of frame.
	(m68hc11_frame_args_address): Update for frame.
	(m68hc11_frame_base): Default 68hc11/68hc12 frame.
	(m68hc11_unwind_sp): New function.
	(m68hc11_unwind_dummy_id): New function.
	(m68hc11_gdbarch_init): Install the above frames; remove deprecated
	calls.
2003-07-27 21:24:41 +00:00
Stephane Carrez c8a7f6ac64 * m68hc11-tdep.c (m68hc11_analyze_instruction): Don't advance the pc.
(m68hc11_guess_from_prologue): Advance the pc and frame size only
	when we are beyond the current pc.
2003-07-27 20:54:17 +00:00
Stephane Carrez 3dc990bfb6 * m68hc11-tdep.c (m68hc11_push_dummy_call): New function adapted
from m68hc11_push_arguments.
	(m68hc11_push_arguments): Remove.
	(m68hc11_push_return_address): Remove.
	(m68hc11_gdbarch_init): Install the above; remove above deprecated
	handlers; remove deprecated_extra_stack_alignment_needed.
2003-07-27 20:27:29 +00:00
Andrew Cagney 222e5d1d25 2003-07-27 Andrew Cagney <cagney@redhat.com>
* config/pa/tm-hppa.h (init_frame_pc_default): Declare.
	* infcall.c (legacy_push_dummy_code) [GDB_TARGET_IS_HPPA]: Update
	REAL_PC and not the pointer.
	* hppa-hpux-tdep.c: Include frame.h
2003-07-27 17:27:17 +00:00
Andrew Cagney a7e9a47e42 2003-07-27 Andrew Cagney <cagney@redhat.com>
* config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Set to
	GDB_MULTI_ACH_PARTIAL.
2003-07-27 16:38:23 +00:00
Andrew Cagney 7e3dd49eac 2003-07-27 Andrew Cagney <cagney@redhat.com>
Patch from 2003-07-22 Kei Sakamoto <sakamoto.kei@renesas.com>:
	* m32r-tdep.c (m32r_memory_insert_breakpoint): Fix code style -
	operator at start and not end of line.
	(decode_prologue): Ditto.
	(m32r_frame_unwind_cache, m32r_unwind_sp, m32r_unwind_pc): Use
	frame_unwind_register_unsigned instead of
	frame_unwind_unsigned_register.
	(m32r_read_pc): Use regcache_cooked_read_unsigned instead of
	read_register.
	(m32r_push_dummy_call): Use register_size instead of
	REGISTER_RAW_SIZE.
	(m32r_frame_sniffer): Replace m32r_frame_p.
	(m32r_gdbarch_init): Call frame_unwind_append_sniffer.
	* m32r-rom.c (report_transfer_performance): Delete extern
	declaration.
	(m32r_load, m32r_upload_command): Use print_transfer_performance
	instead of report_transfer_performance.
	(_initialize_m32r_rom): Use add_setshow_cmd instead of add_set_cmd
	/ add_show_from_set.
2003-07-27 15:38:16 +00:00
Andrew Cagney 0880807f72 2003-07-26 Andrew Cagney <cagney@redhat.com>
* m68hc11-tdep.c (m68hc11_gdbarch_init): Set non-deprecated
	store_return_value and extract_struct_value_address.
2003-07-26 22:49:15 +00:00
Daniel Jacobowitz 64ae926944 PR c++/1267
* minsyms.c (lookup_minimal_symbol_by_pc_section): If SECTION is
	NULL, default to the section containing PC.
2003-07-26 22:03:38 +00:00
Stephane Carrez e286caf282 * NEWS: Mention "regs" deprecated for m68hc11 too.
* m68hc11-tdep.c (_initialize_m68hc11_tdep): Deprecate "regs" command.
	(m68hc11_print_register): New function to print out one register.
	(m68hc11_print_registers_info): New function to print registers.
	(show_regs): Deprecate and use the above.
	(m68hc11_gdbarch_init): Install the print_registers_info.
2003-07-24 19:59:33 +00:00
Jeff Johnston 705b278bd1 2003-07-24 Jeff Johnston <jjohnstn@redhat.com>
* ia64-linux-nat.c (ia64_linux_stopped_by_watchpoint): Verify
        that we have a SIGTRAP before returning non-zero.
2003-07-24 16:42:54 +00:00
Elena Zannoni 63cd419876 2003-07-23 Michal Ludvig <mludvig@suse.cz>
Elena Zannoni  <ezannoni@redhat.com>

 	* linespec.c (decode_line_2): Avoid crash if
 	find_function_start_sal() returns empty record.
2003-07-23 19:24:31 +00:00
Andreas Schwab 6926787d2b * ia64-tdep.c (ia64_print_insn): New function.
(ia64_gdbarch_init): Set print_insn to it.
	(_initialize_ia64_tdep): Don't set deprecated_tm_print_insn and
	deprecated_tm_print_insn_info.
2003-07-23 18:32:20 +00:00
Michael Snyder 708cc1b6ac 2003-07-22 Michael Snyder <msnyder@redhat.com>
* h8300-tdep.c (h8300_extract_return_value): Teach it how to
        handle 8-bit returns (long long).
        (h8300h_extract_return_value): Ditto.
        (h8300_gdbarch_init): Long long is 8 bytes, char is unsigned.
2003-07-23 01:25:55 +00:00
Andrew Cagney aebd7893d9 2003-07-22 Andrew Cagney <cagney@redhat.com>
* gdbarch.c Include "gdb_obstack.h".
	(struct gdbarch): Add an "obstack".
	(alloc_gdbarch_data): Allocate the gdbarch data using
	GDBARCH_OBSTACK_CALLOC.
	(free_gdbarch_data): Delete function.
	(gdbarch_obstack_zalloc): New function.
	(gdbarch_free): Free the obstack, do not call free_gdbarch_data.
	Assert that the architecture is not initialized.
	(gdbarch_alloc): Allocate an obstack, allocate the architecture
	vector from the obstack.
	(alloc_gdbarch_data, init_gdbarch_swap): Allocate memory using the
	architecture obstack.
	(GDBARCH_OBSTACK_CALLOC, GDBARCH_OBSTACK_ZALLOC): Define.
	(set_gdbarch_data): Assert that the data is not initialized.
	(struct gdbarch_data): Delete member "free".
	(register_gdbarch_data): Do not initialize "free".
	* gdbarch.h, gdbarch.c: Re-generate.
2003-07-22 19:49:58 +00:00
Elena Zannoni 32ffcbeda5 2003-07-22 Elena Zannoni <ezannoni@redhat.com>
* dwarf2loc.c (locexpr_describe_location): Fix typos.
2003-07-22 18:24:42 +00:00
Andrew Cagney 153721e664 2003-07-22 Andrew Cagney <cagney@redhat.com>
* configure.in (build_warnings): Add -Wformat-nonliteral.
	* configure: Re-generate.

2003-07-22  Andrew Cagney  <cagney@redhat.com>

	* gdbint.texinfo (Coding): Add -Wformat-nonliteral to -Werror
	list.
2003-07-22 18:18:10 +00:00
Elena Zannoni c193f044f3 2003-07-22 Elena Zannoni <ezannoni@redhat.com>
dwarf2loc.c (locexpr_describe_location): Fix typo.
2003-07-22 18:16:05 +00:00
Elena Zannoni c3228f1238 2003-07-22 Elena Zannoni <ezannoni@redhat.com>
* findvar.c (read_var_value): Remove case for thread local storage
	variables.  It is now entirely handled by the dwarf2 location
	expression code.
	* printcmd.c (address_info): Ditto.
	* symtab.h (address_class): Remove LOC_THREAD_LOCAL_STATIC
	enumeration value.
	(struct symbol): Remove objfile field, which was used by
	LOC_THREAD_LOCAL_STATIC only.
	* dwarf2read.c (decode_locdesc): Remove is_thread_local variable.
	* dwarf2loc.h (struct dwarf2_loclist_baton): Add comment about
	usage of objfile pointer.
	* dwarf2loc.c (locexpr_describe_location): Add case to handle
	thread local variables.
	Add include of objfiles.h.
	* dwarf2expr.c (execute_stack_op): Add comments about thread local
	storage variables.
	* Makefile.in (dwarf2loc.o): Update dependencies.
2003-07-22 15:41:59 +00:00
Andrew Cagney aef9bcd2e7 2003-07-22 Andrew Cagney <cagney@redhat.com>
* config/pa/tm-hppa64.h (FRAME_SAVED_PC_IN_SIGTRAMP): Use
	get_frame_base.
	(FRAME_BASE_BEFORE_SIGTRAMP): Ditto.
	(FRAME_FIND_SAVED_REGS_IN_SIGTRAMP): Ditto.
	(struct value): Add opaque declaration.
	(DEPRECATED_FRAME_ARGS_ADDRESS): Delete.
2003-07-22 12:48:23 +00:00
Andrew Cagney d95a89033d 2003-07-21 Andrew Cagney <cagney@redhat.com>
From 2003-07-04 Kei Sakamoto <sakamoto.kei@renesas.com>:
	* m32r-tdep.c, m32r-stub.c, m32r-tdep.c: Rewrite.
2003-07-21 18:56:05 +00:00
Stephane Carrez 4db73d4977 * m68hc11-tdep.c (m68hc11_pseudo_register_read): Use
regcache_cooked_read_unsigned instead of read_register.
	(m68hc11_saved_pc_after_call): Likewise.
	(m68hc11_pseudo_register_write): Use regcache_cooked_write_unsigned
	instead of write_register.
	(m68hc11_register_type): New function.
	(m68hc11_register_virtual_type): Remove.
	(m68hc11_store_return_value): Convert to use the regcache.
	(m68hc11_extract_struct_value_address): Likewise.
	(m68hc11_gdbarch_init): Remove deprecated ops for register to use
	m68hc11_register_type; undeprecate store_return_value and
	extract_struct_value_address.
2003-07-20 18:36:27 +00:00
Stephane Carrez ef2b8fcdd8 * m68hc11-tdep.c (m68hc11_extract_return_value): Use regcache_raw_read
and translate to use regcache.
	(m68hc11_gdbarch_init): Undeprecate extract_return_value.
2003-07-20 14:18:14 +00:00
Andrew Cagney 625b0b9752 2003-07-18 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh (DWARF2_BUILD_FRAME_INFO): Delete method.
	* gdbarch.h, gdbarch.c: Re-generate.
	* i386-tdep.c (i386_gdbarch_init): Do not set
	DWARF2_BUILD_FRAME_INFO.
	* elfread.c (elf_symfile_read): Call dwarf2_build_frame_info
	unconditionally.
	* alpha-tdep.c (alpha_dwarf2_init_abi): Do not set
	DWARF2_BUILD_FRAME_INFO.
2003-07-18 21:31:50 +00:00
Andrew Cagney 22b0d388c7 2003-07-18 Andrew Cagney <cagney@redhat.com>
From 2003-07-04 Kei Sakamoto <sakamoto.kei@renesas.com>:
        * disasm.c (gdb_disassemble_info): Initilize di.arch.
2003-07-18 20:16:23 +00:00