Commit Graph

53705 Commits

Author SHA1 Message Date
Denis Pilat 436868fbdf 2007-03-29 Denis Pilat <denis.pilat@st.com>
* configure.ac: Test for signal.h.
	* configure, config.in: Regenerate.
2007-03-29 15:24:28 +00:00
Nick Clifton 1783205a77 PR binutils/4110
* elf.c (IS_VALID_GROUP_SECTION_HEADER): New macro.
  (setup_group): Use it.  Report corrupt group section headers.
  (bfd_section_from_shdr): Use new macro.  Replace constant 4 with
      GRP_ENTRY_SIZE.  Cope with NULLs in the group section table.
  (elf_fake_section): Replace constant 4 with GRP_ENTRY_SIZE.
2007-03-29 14:37:02 +00:00
Nick Clifton e555180109 * itbl-ops.c (itbl_entry): Remove unnecessary and excessively long initialization.
* itbl-ops.h (enum e_processor): Initialise the e_nprocs field using ITBL_NUMBER_OF_PROCESSORS.
* itbl-parse.y (yyerror): Remove use of redundant macro PARAMS.
2007-03-29 09:05:27 +00:00
Denis Pilat aaf9e9fd5b 2007-03-29 Denis Pilat <denis.pilat@st.com>
* stack.c (print_stack_frame): Always use LOC_AND_ADDRESS in MI output.
	* infrun.c (normal_stop): Remove MI specific frame printing treatment.
2007-03-29 07:35:39 +00:00
H.J. Lu e72cf3ec8e gas/
2007-03-28  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-i386.c (build_modrm_byte): For instructions with 2
	register operands, encode destination in i.rm.regmem if its
	RegMem bit is set.

opcodes/

2007-03-28  H.J. Lu  <hongjiu.lu@intel.com>

	* i386-opc.c (i386_optab): Change InvMem to RegMem for mov and
	movq.  Remove InvMem from sldt, smsw and str.

	* i386-opc.h (InvMem): Renamed to ...
	(RegMem): Update comments.
	(AnyMem): Remove InvMem.
2007-03-29 04:27:54 +00:00
Alan Modra 947844a311 PR ld/4267
* elflink.c (evaluate_complex_relocation_symbols): Use bfd_vma
	for rel->r_info values.
	(bfd_elf_perform_complex_relocation): Likewise.
2007-03-29 02:38:00 +00:00
Pedro Alves d99f33d88b * configure.srv (arm*-*-mingw32ce*): Move near the other
arm targets.
2007-03-29 01:46:20 +00:00
Alan Modra 2ce859a18d PR ld/4267
* elf32-ppc.c (allocate_dynrelocs): Set plt.offset to -1 for
	unused entries.  Don't clear plt.plist in loop.
2007-03-29 01:11:30 +00:00
Pedro Alves 2482afc6aa Ooops, fix up ChangeLog. 2007-03-29 01:10:37 +00:00
Pedro Alves 68070c10c7 gdb/
* arm-wince-tdep.c: New.
	* config/arm/wince.mt (DEPRECATED_TM_FILE): Use tm-arm.h.
	(MT_CFLAGS): Delete.
	(TM_CLIBS): Delete.
	(TDEPFILES): Add arm-wince-tdep.o, corelow.o, solib.o,
	solib-legacy.o, solib-svr4.o, and remove wince.o.
	* configure.tgt (arm*-*-mingw32ce*): Add.
	* signals/signals.c [HAVE_SIGNAL_H]: Check.
	(do_target_signal_to_host): Silence 'not used' warning.
	* config/arm/tm-wince.h: Remove.

gdb/gdbserver/

	* gdbserver/configure.ac: Add errno checking.
	(AC_CHECK_HEADERS): Add errno.h, fcntl.h, signal.h,
	sys/file.h and malloc.h.
	(AC_CHECK_DECLS): Add perror.
	(srv_mingwce): Handle.
	* gdbserver/configure.srv (i[34567]86-*-cygwin*): Add
	win32-i386-low.o to srv_tgtobj.
	(i[34567]86-*-mingw*): Likewise.
	(arm*-*-mingw32ce*): Add case.
	* gdbreplay.c [HAVE_SYS_FILE_H, HAVE_SIGNAL_H,
	HAVE_FCNTL_H, HAVE_ERRNO_H, HAVE_MALLOC_H]: Check.
	[__MINGW32CE__] (strerror): New function.
	[__MINGW32CE__] (errno): Define to GetLastError.
	[__MINGW32CE__] (COUNTOF): New macro.
	(remote_open): Remove extra close call.
	* mem-break.c (delete_breakpoint_at): New function.
	* mem-break.h (delete_breakpoint_at): Declare.
	* remote-utils.c [HAVE_SYS_FILE_H, HAVE_SIGNAL_H,
	HAVE_FCNTL_H, HAVE_UNISTD_H, HAVE_ERRNO_H]: Check.
	[USE_WIN32API] (read, write): Add char* casts.
	* server.c [HAVE_UNISTD_H, HAVE_SIGNAL_H]: Check.
	* server.h: Include wincecompat.h on Windows CE.
	[HAVE_ERRNO_H]: Check.
	(perror): Declare if not declared.
	* utils.c: Add stdlib.h, errno.h and malloc.h includes.
	(perror_with_name): Remove errno declaration.
	* wincecompat.h: New.
	* wincecompat.c: New.
	* win32-low.h: New.
	* win32-arm-low.c: New.
	* win32-i386-low.c: New.
	(win32-low.c): Include mem-break.h and win32-low.h, and winnt.h.
	(OUTMSG2): Make it safe.
	(_T): New macro.
	(COUNTOF): New macro.
	(NUM_REGS): Get it from the low target.
	(CONTEXT_EXTENDED_REGISTERS, CONTEXT_FLOATING_POINT,
	CONTEXT_DEBUG_REGISTERS): Add fallbacks to 0.
	(thread_rec): Let low target handle debug registers.
	(child_add_thread): Likewise.
	(child_init_thread_list): Likewise.
	(continue_one_thread): Likewise.
	(regptr): New.
	(do_child_fetch_inferior_registers): Move to ...
	* win32-i386-low.c: ... here, and rename to ...
	(do_fetch_inferior_registers): ... this.
	* win32-low.c (child_fetch_inferior_registers):
	Go through the low target.
	(do_child_store_inferior_registers): Use regptr.
	(strwinerror): New function.
	(win32_create_inferior): Handle Windows CE.
	Use strwinerror instead of strerror on Windows error
	codes.  Add program to the error output.
	Don't close the main thread handle on Windows CE.
	(win32_attach): Use coredll.dll on Windows CE.
	(win32_kill): Close current process and current
	thread handles.
	(win32_detach): Use coredll.dll on Windows CE.
	(win32_resume): Let low target handle debug registers, and
	step request.
	(handle_exception): Add/Remove initial breakpoint.  Avoid
	non-existant WSTOPSIG on Windows CE.
	(win32_read_inferior_memory): Cast to remove warning.
	(win32_arch_string): Go through the low target.
	(initialize_low): Call set_breakpoint_data with the low
	target's breakpoint.
	* win32-low.c (dr, FLAG_TRACE_BIT, FCS_REGNUM,
	FOP_REGNUM, mappings): Move to ...
	* win32-i386-low.c: ... here.
	* win32-low.c (win32_thread_info): Move to ...
	* win32-low.h: ... here.
	* Makefile.in (SFILES): Add win32-low.c, win32-i386-low.c,
	win32-arm-low.c and wincecompat.c.
	(all:): Add $EXEEXT.
	(install-only:): Likewise.
	(gdbserver:): Likewise.
	(gdbreplay:): Likewise.
	* config.in: Regenerate.
	* configure: Regenerate.
2007-03-29 01:06:48 +00:00
Alan Modra a7b7bc0d0e daily update 2007-03-29 00:00:07 +00:00
gdbadmin fdaee4be0e *** empty log message *** 2007-03-29 00:00:03 +00:00
Pedro Alves 41093d8184 * win32-low.c: Rename typedef thread_info to
win32_thread_info throughout.
2007-03-28 22:12:31 +00:00
Pedro Alves 544afa546f * win32-i386-low.c: Rename to ...
* win32-low.c: ... this.
	* configure.srv: Replace win32-i386-low.o with win32-low.o.
	* Makefile.in: Likewise.
2007-03-28 22:00:15 +00:00
Ulrich Weigand 74174d2e39 * arch-utils.c (legacy_pc_in_sigtramp): Remove.
* arch-utils.h (legacy_pc_in_sigtramp): Remove.

	* config/ia64/linux.mt (DEPRECATED_TM_FILE): Remove.
	* config/ia64/tm-linux.h: Remove file.
	* ia64-tdep.h (struct gdbarch_tdep): Add pc_in_sigtramp callback.
	* ia64-tdep.c (ia64_sigtramp_frame_sniffer): Use it instead of
	legacy_pc_in_sigtramp.
	(ia64_gdbarch_init): Initialize tdep->pc_in_sigtramp.
	* ia64-linux-tdep.c (ia64_linux_pc_in_sigtramp): Make static.
	Remove func_name argument.
	(ia64_linux_init_abi): Install it as tdep->pc_in_sigtramp.

	* infrun.c (HAVE_STEPPABLE_WATCHPOINT): Do not redefine.
	* target.c (update_current_target): Add to_have_steppable_watchpoint.
	* target.h (struct target_ops):  Add to_have_steppable_watchpoint.
	(HAVE_STEPPABLE_WATCHPOINT): Define.

	* config/ia64/linux.mh (NATDEPFILES): Remove core-aout.o.
	* config/ia64/nm-linux.h (KERNEL_U_ADDR, U_REGS_OFFSET,
	CANNOT_FETCH_REGISTER, CANNOT_STORE_REGISTER,
	TARGET_CAN_USE_HARDWARE_WATCHPOINT, HAVE_STEPPABLE_WATCHPOINT,
	STOPPED_BY_WATCHPOINT, target_stopped_data_address,
	target_insert_watchpoint, target_remove_watchpoint): Remove.
	(FETCH_INFERIOR_REGISTERS): Define.
	* ia64-linux-nat.c (ia64_register_addr): Make static.
	(ia64_cannot_fetch_register, ia64_cannot_store_register): Likewise.
	(ia64_linux_insert_watchpoint): Make static.  Remove ptid_p argument.
	(ia64_linux_remove_watchpoint): Likewise.  Add type argument.
	(ia64_linux_stopped_data_address): Make static.  Add target_ops.
	(ia64_linux_stopped_by_watchpoint): Make static.
	(ia64_linux_can_use_hw_breakpoint): New function.
	(ia64_linux_fetch_register, ia64_linux_fetch_registers): Likewise.
	(ia64_linux_store_register, ia64_linux_store_registers): Likewise.
	(_initialize_ia64_linux_nat): Install register and watchpoint ops.
2007-03-28 18:56:07 +00:00
Richard Sandiford c76308d222 ld/
* ld.h (ld_config_type): Add rpath_separator.
	* ldmain.c (main): Initialize it.
	* lexsup.c (parse_args): Honor config.rpath_separator.
	* emultempl/elf32.em (gld${EMULATION_NAME}_search_needed): Likewise.
	(gld${EMULATION_NAME}_add_sysroot): Likewise.
	(gld${EMULATION_NAME}_parse_ld_so_conf): Use config.rpath_separator
	rather than ':' when building the path.
	* emultempl/vxworks.em (vxworks_before_parse): New function.
	Override config.rpath_separator.
	(LDEMUL_AFTER_OPEN): Do not change if EXTRA_EM_FILE has been
	set to gld${EMULATION_NAME}_after_open; #define that identifier
	to vxworks_foo instead.
	(LDEMUL_BEFORE_PARSE): Override in the same way as LDEMUL_AFTER_OPEN.

ld/testsuite/
	* ld-vxworks/rpath-1.s, ld-vxworks/rpath-1.d,
	* ld-vxworks/vxworks.exp: New files.
2007-03-28 14:42:28 +00:00
Richard Sandiford 39817122fc bfd/
* elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Remove append_rela.
	* elfxx-sparc.c (sparc_elf_append_rela_64, sparc_elf_append_rela_32):
	Merge into...
	(sparc_elf_append_rela): ...this new function.
	(SPARC_ELF_APPEND_RELA): Delete.
	(_bfd_sparc_elf_link_hash_table_create): Don't initialize
	the deleted append_rela field.
	(_bfd_sparc_elf_relocate_section): Use sparc_elf_append_rela
	instead of SPARC_ELF_APPEND_RELA.
	(_bfd_sparc_elf_finish_dynamic_symbol): Likewise.  Use the
	elf_size_info structure to find the size of a RELA entry and
	the associated swap-out function.
	(sparc64_finish_dyn, sparc64_finish_dyn): Merge into...
	(sparc_finish_dyn): ...this new function.
	(_bfd_sparc_elf_finish_dynamic_sections): Update calls accordingly.
2007-03-28 14:39:10 +00:00
Richard Sandiford 4ecceb71ac bfd/
200x-xx-xx  Richard Sandiford  <richard@codesourcery.com>
	    Phil Edwards  <phil@codesourcery.com>

	* doc/bfd.texinfo: Put the contents after the title page rather
	than at the end of the document.

binutils/
200x-xx-xx  Richard Sandiford  <richard@codesourcery.com>
	    Phil Edwards  <phil@codesourcery.com>

	* doc/binutils.texi: Put the contents after the title page rather
	than at the end of the document.

gas/
200x-xx-xx  Richard Sandiford  <richard@codesourcery.com>
	    Phil Edwards  <phil@codesourcery.com>

	* doc/as.texinfo: Put the contents after the title page rather
	than at the end of the document.

gprof/
200x-xx-xx  Richard Sandiford  <richard@codesourcery.com>
	    Phil Edwards  <phil@codesourcery.com>

	* gprof.texi: Put the contents after the title page rather
	than at the end of the document.

ld/
200x-xx-xx  Richard Sandiford  <richard@codesourcery.com>
	    Phil Edwards  <phil@codesourcery.com>

	* ld.texinfo: Put the contents after the title page rather
	than at the end of the document.
2007-03-28 09:08:53 +00:00
Nick Clifton 331e5c3cd2 Add ChangeLog entry for delta 1.361->1.362 to readelf.c accidentally checked in with a previous commit. 2007-03-28 08:09:25 +00:00
Alan Modra eacf2b70e7 * MAINTAINERS: Update mailing list addresses. Add myself
as PPC maintainer.
2007-03-28 05:09:42 +00:00
Pedro Alves 297561aca9 * gdb.cp/method2.cc: New test.
* gdb.cp/method2.exp: New test.
	* gdb.cp/Makefile.in (EXECUTABLES): Add method2.
2007-03-28 00:32:41 +00:00
Pedro Alves 53c5240fe1 * linespec.c: Include language.h.
(find_methods): Add language parameter.  Call
	lookup_symbol_in_language.  Pass language down.
	(add_matching_methods): Likewise.  Call
	lookup_symbol_in_language.
	(add_constructors): Likewise.
	(find_method): Pass sym_class to collect_methods.
	(collect_methods): Add sym_class parameter.  Pass language
	down.
	* symtab.c (lookup_symbol): Rename to ...
	(lookup_symbol_in_language): ... this.  Add language
	parameter.  Use passed language instead of current_language.
	(lookup_symbol): New as wrapper around
	lookup_symbol_in_language.
	(lookup_symbol_aux): Add language parameter.  Use passed
	language instead of current_language.
	(search_symbols): Indent.
	* symtab.h (enum language): Forward declare.
	(lookup_symbol_in_language): Declare.
	(lookup_symbol): Update description.
	* ada-lang.h (lookup_symbol_in_language): Remove declaration.
	* ada-lang.c (restore_language): Remove.
	(lookup_symbol_in_language): Remove.
2007-03-28 00:12:15 +00:00
Alan Modra 513766ac8b daily update 2007-03-28 00:00:06 +00:00
gdbadmin 8b3ef0676b *** empty log message *** 2007-03-28 00:00:02 +00:00
Pedro Alves 8671a17bde * breakpoint.c (bpstat_num): Add int *num parameter.
* breakpoint.h (bpstat_num): Likewise.
	* infcmd.c (continue_command): Adjust to new bpstat_num
	interface.
	(program_info): Likewise.
2007-03-27 23:01:00 +00:00
Pedro Alves bce7165daa * remote-utils.c (monitor_output): Constify msg parameter.
* server.h (monitor_output): Likewise.
	* win32-i386-low.c (handle_output_debug_string): New.
	(win32_kill): Handle OUTPUT_DEBUG_STRING_EVENT events using
	handle_output_debug_string.
	(get_child_debug_event): Likewise.
2007-03-27 22:46:08 +00:00
H.J. Lu 831480e942 Fix year. 2007-03-27 22:45:19 +00:00
Paul Brook b74ed8f52a 2006-03-27 Paul Brook <paul@codesourcery.com>
opcodes/
	* arm-dis.c (thumb_opcodes): Add entry for undefined insns (0xbe??).
2007-03-27 21:09:53 +00:00
Ulrich Weigand 214197f952 * config/sh/tm-sh.h: Remove file.
* config/sh/embed.mt (DEPRECATED_TM_FILE): Remove.
	* config/sh/linux.mt (DEPRECATED_TM_FILE): Remove.
	* config/sh/nbsd.mt (DEPRECATED_TM_FILE): Remove.
	* config/sh/tm-wince.h: Do not include "sh/tm-sh.h".
2007-03-27 19:37:08 +00:00
Ulrich Weigand bac718a627 * config/sh/tm-sh.h (DEPRECATED_BIG_REMOTE_BREAKPOINT,
DEPRECATED_LITTLE_REMOTE_BREAKPOINT): Remove.
	* remote.c: Remove code under #ifdef DEPRECATED_REMOTE_BREAKPOINT,
	DEPRECATED_BIG_REMOTE_BREAKPOINT, DEPRECATED_LITTLE_REMOTE_BREAKPOINT.
	* sh-tdep.c (sh_breakpoint_from_pc): Return remote breakpoint
	sequence if target_shortname is "remote".

doc/ChangeLog:

	* gdbint.texinfo (Target Conditionals): Remove mention of
	DEPRECATED_REMOTE_BREAKPOINT, DEPRECATED_BIG_REMOTE_BREAKPOINT,
	and DEPRECATED_LITTLE_REMOTE_BREAKPOINT.
2007-03-27 19:11:11 +00:00
Daniel Jacobowitz 506c7aa0d5 2007-03-27 Mat Hostetter <mat@lcs.mit.edu>
* server.c (main): Correct strtoul check.
2007-03-27 19:10:16 +00:00
Daniel Jacobowitz de6a76fdbf 2007-03-27 Anton Blanchard <anton@samba.org>
* rs6000-tdep.c (rs6000_frame_cache): Use tdep->lr_frame_offset
	instead of wordsize when looking for the LR in a stack frame.
2007-03-27 19:04:37 +00:00
Daniel Jacobowitz 4fc771b8c4 * dwarf2-frame.c (dwarf2_frame_eh_frame_regnum): Rename to...
(dwarf2_frame_adjust_regnum): ...this.  Make static.  Add eh_frame_p
	argument.  Update all callers.
	(struct dwarf2_frame_ops): Replace eh_frame_regnum with adjust_regnum.
	(dwarf2_frame_set_eh_frame_regnum): Rename to...
	(dwarf2_frame_set_adjust_regnum): ...this.  Update argument type.
	* dwarf2frame.h (dwarf2_frame_set_eh_frame_regnum): Rename to...
	(dwarf2_frame_set_adjust_regnum): ...this.
	(dwarf2_frame_eh_frame_regnum): Delete prototype.
	* rs6000-tdep.c: Include "dwarf2-frame.h".
	(rs6000_adjust_frame_regnum): Define.
	(rs6000_gdbarch_init): Enable use of DWARF CFI frame unwinder.
	Register rs6000_adjust_frame_regnum.

	* Makefile.in (rs6000-tdep.o): Update dependencies.
2007-03-27 19:02:42 +00:00
Daniel Jacobowitz 1f81bd395c * gdb.ada/exec_changed.exp: Avoid "set confirm off". 2007-03-27 18:47:58 +00:00
Daniel Jacobowitz 42c81e2acb 2007-03-27 Jon Ringle <jon@ringle.org>
* linux-low.c: Check __ARCH_HAS_MMU__ also.
2007-03-27 18:32:01 +00:00
Daniel Jacobowitz 9453113a8d Add "make pdf" and "make install-pdf", from Brooks Moses
<brooks.moses@codesourcery.com>.
2007-03-27 18:09:36 +00:00
Daniel Jacobowitz b741e21792 * config/gdbserver.exp (gdbserver_gdb_load): Update argument list.
(gdb_load): Delete, replace with...
	(gdb_reload): ...this.
	* gdb.server/server-run.exp: Use gdb_load and gdbserver_run.
	* gdb.server/server-mon.exp: Likewise.
	* lib/gdb.exp (gdb_run_cmd): Use gdb_reload.
	(gdb_start_cmd): New.
	(gdb_file_cmd): Save the last loaded file.
	(gdb_reload): New.
	(gdb_gnu_strip_debug): Use transform.
	* lib/gdbserver-support.exp (gdbserver_spawn): Move file download
	support here.  Use new $last_loaded_file.  Check mtime.
	(gdb_target_cmd): Handle ObjC failure case.
	(infer_host_exec): Delete.
	(gdbserver_load): Rename to...
	(gdbserver_run): ...this.  Simplify.
	* lib/mi-support.exp (mi_gdb_file_cmd): Set last_loaded_file.
	(mi_gdb_load): Move most contents to a new function...
	(mi_gdb_target_load): ...here.  Simplify call to gdbserver_gdb_load.
	(mi_run_cmd): Use mi_gdb_target_load.
	* gdb.base/break.exp, gdb.base/ending-run.exp, gdb.base/pending.exp,
	gdb.base/sepdebug.exp, gdb.base/unload.exp, gdb.objc/objcdecode.exp:
	Use gdb_run_cmd.
	* gdb.base/charsign.exp: Remove incorrect comment.
	* gdb.base/dbx.exp (gdb_file_cmd): Set last_loaded_file.
	* gdb.ada/exec_changed.exp, gdb.ada/null_record.exp, gdb.ada/start.exp,
	gdb.base/start.exp: Use gdb_start_cmd.
2007-03-27 17:59:38 +00:00
Daniel Jacobowitz d2449ee801 * amd64-tdep.c (amd64_init_frame_cache): New function.
(amd64_alloc_frame_cache, amd64_skip_prologue): Use it.
2007-03-27 15:31:35 +00:00
Alan Modra 067b934b9a * ld-elf/note-1.s: Increase .foo size. 2007-03-27 14:14:19 +00:00
Alan Modra 0fd7d34280 * ld-spu/spu.exp (embed_test): New.
* ld-spu/ear.s: New.
	* ld-spu/ear.d: New.
	* ld-spu/embed.rd: New.
	* ld-spu/ovl2.s: New.
	* ld-spu/ovl2.d: New.
2007-03-27 08:36:27 +00:00
Alan Modra f24f8f707c New test 2007-03-27 08:34:53 +00:00
Alan Modra 3f9ce309b7 * NEWS: Mention ".reloc". 2007-03-27 08:33:47 +00:00
Alan Modra 48d8dc645f * embedspu.sh: Correct toe_addr quoting. 2007-03-27 02:10:58 +00:00
gdbadmin 89daedbdbc *** empty log message *** 2007-03-27 00:00:32 +00:00
Alan Modra 00cea84609 daily update 2007-03-27 00:00:05 +00:00
Alan Modra 88948ad083 * embedspu.sh: Combine "_EAR_" and "_EAR_*" patterns. Tighten
.toe section and .toe address checks.  Use .reloc for _EAR*
	symbols defined in non-BSS sections.  Build table for _SPUEAR_
	symbols.
2007-03-26 23:56:40 +00:00
Andreas Schwab d4d2b80b9f * elfxx-ia64.c (elf_backend_default_execstack): Define to 0. 2007-03-26 23:35:34 +00:00
Bob Wilson eb6d9dce34 * config/tc-xtensa.c (xg_translate_idioms): Allow assembly idioms
in FLIX instructions.
2007-03-26 23:01:46 +00:00
Bob Wilson ae21e95527 * gdb.texinfo (Omissions from Ada, Additions to Ada): Wrap long lines. 2007-03-26 21:28:20 +00:00
Bob Wilson 3f94c0676f * gdb.texinfo (Invoking GDB): Use @value{GDBP}.
(Source Path, Character Sets, Macros, Define)
	(GDB/MI Result Records, GDB/MI Simple Examples)
	(GDB/MI Program Execution, GDB/MI File Commands)
	(Maintenance Commands, Packets, File-I/O Overview): Use @value{GDBN}.
	(Bug Reporting): Use @value{GCC}.
2007-03-26 15:51:17 +00:00