Alexandre Oliva
67a4f2b710
include/elf/ChangeLog:
...
Introduce TLS descriptors for i386 and x86_64.
* common.h (DT_TLSDESC_GOT, DT_TLSDESC_PLT): New.
* i386.h (R_386_TLS_GOTDESC, R_386_TLS_DESC_CALL, R_386_TLS_DESC):
New.
* x86-64.h (R_X86_64_GOTPC32_TLSDESC, R_X86_64_TLSDESC_CALL,
R_X86_64_TLSDESC): New.
bfd/ChangeLog:
Introduce TLS descriptors for i386 and x86_64.
* reloc.c (BFD_RELOC_386_TLS_GOTDESC, BFD_RELOC_386_TLS_DESC,
BFD_RELOC_386_TLS_DESC_CALL, BFD_RELOC_X86_64_GOTPC32_TLSDESC,
BFD_RELOC_X86_64_TLSDESC, BFD_RELOC_X86_64_TLSDESC_CALL): New.
* libbfd.h, bfd-in2.h: Rebuilt.
* elf32-i386.c (elf_howto_table): New relocations.
(R_386_tls): Adjust.
(elf_i386_reloc_type_lookup): Map new relocations.
(GOT_TLS_GDESC, GOT_TLS_GD_BOTH_P): New macros.
(GOT_TLS_GD_P, GOT_TLS_GDESC_P, GOT_TLS_GD_ANY_P): New macros.
(struct elf_i386_link_hash_entry): Add tlsdesc_got field.
(struct elf_i386_obj_tdata): Add local_tlsdesc_gotent field.
(elf_i386_local_tlsdesc_gotent): New macro.
(struct elf_i386_link_hash_table): Add sgotplt_jump_table_size.
(elf_i386_compute_jump_table_size): New macro.
(link_hash_newfunc): Initialize tlsdesc_got.
(elf_i386_link_hash_table_create): Set sgotplt_jump_table_size.
(elf_i386_tls_transition): Handle R_386_TLS_GOTDESC and
R_386_TLS_DESC_CALL.
(elf_i386_check_relocs): Likewise. Allocate space for
local_tlsdesc_gotent.
(elf_i386_gc_sweep_hook): Handle R_386_TLS_GOTDESC and
R_386_TLS_DESC_CALL.
(allocate_dynrelocs): Count function PLT relocations. Reserve
space for TLS descriptors and relocations.
(elf_i386_size_dynamic_sections): Reserve space for TLS
descriptors and relocations. Set up sgotplt_jump_table_size.
Don't zero reloc_count in srelplt.
(elf_i386_always_size_sections): New. Set up _TLS_MODULE_BASE_.
(elf_i386_relocate_section): Handle R_386_TLS_GOTDESC and
R_386_TLS_DESC_CALL.
(elf_i386_finish_dynamic_symbol): Use GOT_TLS_GD_ANY_P.
(elf_backend_always_size_sections): Define.
* elf64-x86-64.c (x86_64_elf_howto): Add R_X86_64_GOTPC32_TLSDESC,
R_X86_64_TLSDESC, R_X86_64_TLSDESC_CALL.
(R_X86_64_standard): Adjust.
(x86_64_reloc_map): Map new relocs.
(elf64_x86_64_rtype_to_howto): New, split out of...
(elf64_x86_64_info_to_howto): ... this function, and...
(elf64_x86_64_reloc_type_lookup): ... use it to map elf_reloc_val.
(GOT_TLS_GDESC, GOT_TLS_GD_BOTH_P): New macros.
(GOT_TLS_GD_P, GOT_TLS_GDESC_P, GOT_TLS_GD_ANY_P): New macros.
(struct elf64_x86_64_link_hash_entry): Add tlsdesc_got field.
(struct elf64_x86_64_obj_tdata): Add local_tlsdesc_gotent field.
(elf64_x86_64_local_tlsdesc_gotent): New macro.
(struct elf64_x86_64_link_hash_table): Add tlsdesc_plt,
tlsdesc_got and sgotplt_jump_table_size fields.
(elf64_x86_64_compute_jump_table_size): New macro.
(link_hash_newfunc): Initialize tlsdesc_got.
(elf64_x86_64_link_hash_table_create): Initialize new fields.
(elf64_x86_64_tls_transition): Handle R_X86_64_GOTPC32_TLSDESC and
R_X86_64_TLSDESC_CALL.
(elf64_x86_64_check_relocs): Likewise. Allocate space for
local_tlsdesc_gotent.
(elf64_x86_64_gc_sweep_hook): Handle R_X86_64_GOTPC32_TLSDESC and
R_X86_64_TLSDESC_CALL.
(allocate_dynrelocs): Count function PLT relocations. Reserve
space for TLS descriptors and relocations.
(elf64_x86_64_size_dynamic_sections): Reserve space for TLS
descriptors and relocations. Set up sgotplt_jump_table_size,
tlsdesc_plt and tlsdesc_got. Make room for them. Don't zero
reloc_count in srelplt. Add dynamic entries for DT_TLSDESC_PLT
and DT_TLSDESC_GOT.
(elf64_x86_64_always_size_sections): New. Set up
_TLS_MODULE_BASE_.
(elf64_x86_64_relocate_section): Handle R_386_TLS_GOTDESC and
R_386_TLS_DESC_CALL.
(elf64_x86_64_finish_dynamic_symbol): Use GOT_TLS_GD_ANY_P.
(elf64_x86_64_finish_dynamic_sections): Set DT_TLSDESC_PLT and
DT_TLSDESC_GOT. Set up TLS descriptor lazy resolver PLT entry.
(elf_backend_always_size_sections): Define.
binutils/ChangeLog:
Introduce TLS descriptors for i386 and x86_64.
* readelf.c (get_dynamic_type): Handle DT_TLSDESC_GOT and
DT_TLSDESC_PLT.
gas/ChangeLog:
Introduce TLS descriptors for i386 and x86_64.
* config/tc-i386.c (tc_i386_fix_adjustable): Handle
BFD_RELOC_386_TLS_GOTDESC, BFD_RELOC_386_TLS_DESC_CALL,
BFD_RELOC_X86_64_GOTPC32_TLSDESC, BFD_RELOC_X86_64_TLSDESC_CALL.
(optimize_disp): Emit fix up for BFD_RELOC_386_TLS_DESC_CALL and
BFD_RELOC_X86_64_TLSDESC_CALL immediately, and clear the
displacement bits.
(build_modrm_byte): Set up zero modrm for TLS desc calls.
(lex_got): Handle @tlsdesc and @tlscall.
(md_apply_fix, tc_gen_reloc): Handle the new relocations.
ld/testsuite/ChangeLog:
Introduce TLS descriptors for i386 and x86_64.
* ld-i386/i386.exp: Run on x86_64-*-linux* and amd64-*-linux*.
Add new tests.
* ld-i386/pcrel16.d: Add -melf_i386.
* ld-i386/pcrel8.d: Likewise.
* ld-i386/tlsbindesc.dd: New.
* ld-i386/tlsbindesc.rd: New.
* ld-i386/tlsbindesc.s: New.
* ld-i386/tlsbindesc.sd: New.
* ld-i386/tlsbindesc.td: New.
* ld-i386/tlsdesc.dd: New.
* ld-i386/tlsdesc.rd: New.
* ld-i386/tlsdesc.s: New.
* ld-i386/tlsdesc.sd: New.
* ld-i386/tlsdesc.td: New.
* ld-i386/tlsgdesc.dd: New.
* ld-i386/tlsgdesc.rd: New.
* ld-i386/tlsgdesc.s: New.
* ld-x86-64/x86-64.exp: Run new tests.
* ld-x86-64/tlsbindesc.dd: New.
* ld-x86-64/tlsbindesc.rd: New.
* ld-x86-64/tlsbindesc.s: New.
* ld-x86-64/tlsbindesc.sd: New.
* ld-x86-64/tlsbindesc.td: New.
* ld-x86-64/tlsdesc.dd: New.
* ld-x86-64/tlsdesc.pd: New.
* ld-x86-64/tlsdesc.rd: New.
* ld-x86-64/tlsdesc.s: New.
* ld-x86-64/tlsdesc.sd: New.
* ld-x86-64/tlsdesc.td: New.
* ld-x86-64/tlsgdesc.dd: New.
* ld-x86-64/tlsgdesc.rd: New.
* ld-x86-64/tlsgdesc.s: New.
2006-01-18 21:07:51 +00:00
DJ Delorie
dd942754f0
merge from gcc
2006-01-18 21:05:51 +00:00
Arnold Metselaar
3170c51cf8
fix typo
2006-01-18 15:00:22 +00:00
Arnold Metselaar
ae33e02d8f
Add tests for instructions with offsets.
2006-01-18 14:52:11 +00:00
Arnold Metselaar
9e919b5f1d
fixes related to indexed operands
2006-01-18 13:48:46 +00:00
Nick Clifton
6e2c86ac4d
PR binutils/1391
...
* objcopy.c (copy_object): For PE format targets set the VMA of a newly
created gnu_debuglink section to a non-zero, aligned, contiguous value.
* Makefile.am (objcopy.c): Add a dependency upon libbfd.h.
* Makefile.in: Regenerate.
2006-01-18 11:01:09 +00:00
gdbadmin
d5259aacd1
*** empty log message ***
2006-01-18 00:00:03 +00:00
Christopher Faylor
4cdb5adf73
* MAINTAINERS: Very belatedly remove myself from from the list of people caught
...
up in the paper trail.
2006-01-17 23:42:28 +00:00
Alan Modra
f506450cf2
daily update
2006-01-17 23:00:07 +00:00
Jim Blandy
4e38b3864c
gdb/ChangeLog:
...
2006-01-17 Jim Blandy <jimb@redhat.com>
* symtab.h (struct general_symbol_info): Use gdb_byte for
value.bytes.
* stabsread.c (define_symbol): Use gdb_byte for the buffer holding
a floating-point constant's value.
* dwarf2read.c (dwarf2_const_value): Remove casts of value buffer
to char *.
* findvar.c (read_var_value): Eliminate needless temporary.
2006-01-17 22:30:29 +00:00
Jim Blandy
1193688db2
gdb/ChangeLog:
...
2006-01-17 Jim Blandy <jimb@redhat.com>
* dwarf2-frame.c (dwarf2_read_section): Update forward declaration
to match prior change to dwarf2_read_section's type.
2006-01-17 22:27:21 +00:00
Paul Gilliam
0d1243d9e6
2006-01-16 Paul Gilliam <pgilliam@us.ibm.com>
...
* ppc-tdep.h (PPC_MAX_EPILOGUE_INSTRUCTIONS): New define.
* rs6000-tdep.c (insn_changes_sp_or_jumps)
(rs6000_in_function_epilogue_p): New functions.
(rs6000_gdbarch_init): Set in_function_epilogue_p.
2006-01-17 22:21:13 +00:00
Jim Blandy
fe1b8b76fd
2006-01-17 Jim Blandy <jimb@redhat.com>
...
* dwarf2read.c (struct dwarf2_per_objfile, struct comp_unit_head)
(struct line_header, struct partial_die_info, struct dwarf_block):
Use gdb_byte for members that refer to Dwarf section contents.
(dwarf2_read_abbrevs, dwarf2_read_section, dwarf_decode_lines,
dwarf_decode_macros, load_comp_unit, load_partial_dies,
locate_pdi_sibling, partial_read_comp_unit_head, peek_die_abbrev,
read_1_byte, read_1_signed_byte, read_2_bytes, read_4_bytes,
read_8_bytes, read_address, read_attribute, read_attribute_value,
read_comp_unit, read_comp_unit_head, read_die_and_children,
read_die_and_siblings, read_full_die, read_indirect_string,
read_initial_length, read_n_bytes, read_offset, read_partial_die,
read_signed_leb128, read_string, read_unsigned_leb128,
skip_children, skip_leb128, skip_one_die): Same.
2006-01-17 22:01:42 +00:00
Arnold Metselaar
c9021189f6
Use unsigned char to hold data to be disassembled.
2006-01-17 21:15:56 +00:00
Andreas Schwab
d99b646536
PR binutils/1486
...
binutils/:
* configure.in: Don't define DISASSEMBLER_NEEDS_RELOCS.
* configure: Regenerate.
* objdump.c (struct objdump_disasm_info): Don't check for
DISASSEMBLER_NEEDS_RELOCS.
(objdump_print_addr): Likewise.
(disassemble_bytes): Check disassembler_needs_relocs from
disassemble_info at run-time instead of DISASSEMBLER_NEEDS_RELOCS
at compile-time.
(disassemble_section): Likewise.
(disassemble_data): Initialize it.
include/:
* dis-asm.h (struct disassemble_info): Add
disassembler_needs_relocs.
objdump/:
* disassemble.c (disassemble_init_for_target): Set
disassembler_needs_relocs for bfd_arch_arm.
2006-01-17 17:39:20 +00:00
H.J. Lu
6dd55cb711
2006-01-17 H.J. Lu <hongjiu.lu@intel.com>
...
PR binutils/2096
* dwarf2.c (comp_unit_contains_address): Update comment.
(_bfd_dwarf2_find_nearest_line): Use section's vma, instead of
lma. Return TRUE only if both comp_unit_contains_address and
comp_unit_find_nearest_line return TRUE.
(_bfd_dwarf2_find_line): Use section's vma, instead of lma.
2006-01-17 17:12:58 +00:00
Alan Modra
64d03ab565
* elf-bfd.h (struct elf_backend_data): Add gc_mark_dynamic_ref.
...
(bfd_elf_gc_mark_dynamic_ref_symbol): Declare.
* elflink.c (bfd_elf_gc_mark_dynamic_ref_symbol): Rename from
elf_gc_mark_dynamic_ref_symbol. Make global.
(bfd_elf_gc_sections): Call bed->gc_mark_dynamic_ref.
* elfxx-target.h (elf_backend_gc_mark_dynamic_ref): Define.
(elfNN_bed): Init new field.
* elf64-ppc.c (elf_backend_gc_mark_dynamic_ref): Define.
(ppc64_elf_gc_mark_dynamic_ref): New function.
2006-01-17 15:32:41 +00:00
Daniel Jacobowitz
a0841d7ad2
* complaints.c (stop_whining): Make signed.
...
* linux-thread-db.c (thread_db_store_registers): Use gdb_byte.
2006-01-17 14:57:43 +00:00
Daniel Jacobowitz
939b2b425d
* dwarf2read.c, remote-fileio.c, remote.h: Update copyright
...
notices.
2006-01-17 14:47:31 +00:00
Daniel Jacobowitz
891d2f0bc0
* dwarf2read.c (peek_die_abbrev, read_address, read_initial_length)
...
(read_offset): Change BYTES_READ argument to unsigned int.
(dwarf2_build_psymtabs_easy, read_comp_unit_head)
(create_all_comp_units, dwarf2_get_pc_bounds)
(dwarf_decode_line_header, var_decode_location)
(dwarf_decode_macros): Change local BYTES_READ variables to
unsigned int.
(read_indirect_string): Remove obsolete cast.
2006-01-17 14:30:20 +00:00
Daniel Jacobowitz
cfd77fa13e
* remote-fileio.c (remote_fileio_return_success): Take a gdb_byte
...
argument.
(remote_fileio_func_open, remote_fileio_func_rename)
(remote_fileio_func_unlink, remote_fileio_func_stat)
(remote_fileio_func_fstat, remote_fileio_func_gettimeofday)
(remote_fileio_func_system): Cast the arguments to
remote_read_bytes and remote_write_bytes.
(remote_fileio_func_read, remote_fileio_func_write): Use a
gdb_byte buffer.
* remote.h (remote_read_bytes, remote_write_bytes): Update
prototypes.
* remote.c (hex2bin, bin2hex): Use gdb_byte for the BIN argument.
(threadref_to_int): Replace bogus char * cast.
(remote_unpack_thread_info_response): Use int for tag.
(remote_threads_extra_info, remote_check_symbols): Cast string
arguments to hex2bin.
(remote_wait): Use a char buffer for packets and a gdb_byte
buffer for registers.
(remote_async_wait): Likewise.
(remote_prepare_to_store, store_register_using_P)
(remote_store_registers): Use gdb_byte buffers.
(remote_write_bytes, remote_read_bytes): Use a gdb_byte pointer
for MYADDR and char buffers for strings.
(remote_xfer_partial): Add casts for string operations on READBUF.
(remote_rcmd): Cast strings passed to bin2hex.
2006-01-17 14:11:16 +00:00
Alan Modra
b56cbdb94b
* elf64-ppc.c (ppc64_elf_gc_mark_hook): Don't hang forever in loop.
2006-01-17 13:00:16 +00:00
Nick Clifton
fad2f28d11
Update copyright date
2006-01-17 11:09:56 +00:00
Nick Clifton
6c10990dfd
PR binutils/2159
...
* elf.c (elfcore_write_pstatus): Add ATTRIBUTE_UNUSED to unused parameters.
2006-01-17 10:34:43 +00:00
gdbadmin
476238071e
*** empty log message ***
2006-01-17 00:00:02 +00:00
Alan Modra
e88d958a4f
split changelogs
2006-01-16 23:15:07 +00:00
Alan Modra
00164b66e9
daily update
2006-01-16 23:00:05 +00:00
Mark Mitchell
60bf065074
* aclocal.m4: Regenerate.
2006-01-16 22:36:36 +00:00
Nick Clifton
ec49b2b866
Sync top level config files from the master config repository
2006-01-16 17:34:37 +00:00
Paul Brook
c2fe93275a
2006-01-16 Paul Brook <paul@codesourcery.com>
...
opcodes/
* m68k-opc.c(m68k_opcodes): Fix opcodes for ColdFire f?abss,
f?add?, and f?sub? instructions.
gas/testsuite/
* gas/m68k/all.exp: Add mcf-fpu.
* gas/m68k/mcf-fpu.d: New file.
* gas/m68k/mcf-fpu.s: New file.
2006-01-16 16:23:30 +00:00
Nick Clifton
32fba81dfe
Add new Chinese (simplified) translation
2006-01-16 16:15:17 +00:00
Nick Clifton
cc629b0279
Fix email address in previous delta
2006-01-16 16:08:55 +00:00
Nick Clifton
f2a8f14838
Fix duplicated word typo
2006-01-16 16:07:45 +00:00
Nathan Sidwell
60e81fccbb
* mt-tdep.c (enum mt_gdb_regnums): Add MT_COPRO_PSEUDOREG_ARRAY,
...
MT_COPRO_PSEUDOREG_DIM_1, MT_COPRO_PSEUDOREG_DIM_2,
MT_COPRO_PSEUDOREG_REGS members. Adjust MT_NUM_PSEUDO_REGS.
(mt_register_name): Lazily synthesize name for coprocessor pseudo
array registers.
(mt_copro_register_type): New. Broken out of ...
(mt_register_type): ... here. Use it. Deal with coprocessor
pseudo array.
(mt_select_coprocessor): New.
(mt_pseudo_register_read, mt_pseudo_register_write): Deal with
coprocessor pseudo array.
2006-01-16 13:23:15 +00:00
Andrew Stubbs
f365de7342
2006-01-16 Andrew Stubbs <andrew.stubbs@st.com>
...
* breakpoint.c (insert_breakpoints): Check that a thread exists
before inserting thread specific breakpoints.
2006-01-16 12:55:18 +00:00
gdbadmin
6b81c85532
*** empty log message ***
2006-01-16 00:00:02 +00:00
Alan Modra
e9f8064c36
daily update
2006-01-15 23:00:11 +00:00
Mark Kettenis
6062517a1e
* osabi.c (generic_elf_osabi_sniffer): Fix typo in previous
...
commit.
2006-01-15 21:20:48 +00:00
Mark Kettenis
9d51923083
* alpha-tdep.c (alpha_gdbarch_init): Set cannot_step_breakpoint.
...
* config/alpha/nm-osf.h (CANNOT_STEP_BREAKPOINT): Remove.
* config/alpha/nm-linux.h (CANNOT_STEP_BREAKPOINT): Remove.
* config/alpha/nm-nbsd.h: Remove file.
* config/alpha/nm-fbsd.h: Remove file
* config/alpha/nbsd.mh (NAT_FILE): Remove.
* config/alpha/fbsd.mh (NAT_FILE): Remove.
2006-01-15 20:53:32 +00:00
Daniel Jacobowitz
0a029df55b
* macroexp.c (expand): Initialize argc.
...
* stabsread.c (read_type): Handle errors from read_args.
(read_args): Return NULL for errors.
2006-01-15 20:26:02 +00:00
Mark Kettenis
1731e543e0
* osabi.c (generic_elf_osabi_sniffer): Use memcmp instead of
...
strcmp to compare string to a byte buffer.
2006-01-15 20:21:32 +00:00
Daniel Jacobowitz
777ea8f14f
* printcmd.c (output_command): Always initialize fmt.size.
...
(printf_command): Use gdb_byte.
* symfile.c (separate_debug_file_exists): Use gdb_byte.
(load_section_callback, read_target_long_array): Likewise.
(simple_read_overlay_table, simple_read_overlay_region_table)
(simple_overlay_update_1): Correct calls to read_target_long_array.
* valprint.c (partial_memory_read): Change MYADDR to a gdb_byte *.
Also change local pointers.
(val_print_string): Use gdb_byte.
2006-01-15 19:50:05 +00:00
Mark Kettenis
4b17b3897b
* alphafbsd-tdep.c: Include "solib-svr4.h".
...
(alphafbsd_init_abi): Set solib_svr4_fetch_link_map_offsets to
svr4_lp64_fetch_link_map_offsets.
* Makefile.in (alphafbsd-tdep.o): Update dependencies.
* config/alpha/fbsd.mt (TDEPFILES): Add corelow.o, solib.o and
solib-svr4.o.
* config/alpha/fbsd.mh (NATDEPFILES): Remove solib.o, solib-svr4.o
and solib-legacy.o.
* config/alpha/nm-fbsd.h: Don't include "solib.h".
2006-01-15 19:45:28 +00:00
Daniel Jacobowitz
bd4109fb51
* source.c (_initialize_source): Use add_setshow_integer_cmd.
2006-01-15 19:09:30 +00:00
Daniel Jacobowitz
9078e6905b
* gdb.base/multi-forks.c: Add copyright notice. Include <stdlib.h>.
...
* gdb.base/multi-forks.exp: Use a loop. Allow "fork" as a stopped
function name.
2006-01-15 19:07:33 +00:00
Daniel Jacobowitz
1dce6535d8
* linux-fork.c (delete_fork_command, detach_fork_command): Use
...
PIDGET.
2006-01-15 19:07:17 +00:00
Daniel Jacobowitz
9c903399a2
* gdb.base/checkpoint.c: Update copyright notice. Include
...
<stdlib.h>.
2006-01-15 18:31:55 +00:00
Mark Kettenis
76a9d10f52
* arm-linux-tdep.c (arm_linux_svr4_fetch_link_map_offsets):
...
Remove.
(arm_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
svr4_ilp32_fetch_link_map_offsets.
* cris-tdep.c (cris_linux_svr4_fetch_link_map_offsets): Remove
function.
(cris_gdbarch_init): Set solib_svr4_fetch_link_map_offsets to
svr4_ilp32_fetch_link_map_offsets.
* mips-linux-tdep.c (mips_linux_svr4_fetch_link_map_offsets)
(mips64_linux_svr4_fetch_link_map_offsets): Remove functions.
(mips_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
svr4_ilp32_fetch_link_map_offsets or svr4_lp64_fetch_link_map_offsets
where appropriate.
* nbsd-tdep.c (nbsd_ilp32_solib_svr4_fetch_link_map_offsets):
Simply call svr4_ilp32_fetch_link_map_offsets.
(nbsd_lp64_solib_svr4_fetch_link_map_offsets): Simply call
svr4_lp64_fetch_link_map_offsets.
* ppc-linux-tdep.c (ppc_linux_svr4_fetch_link_map_offsets): Remove
function.
(ppc_linux_init_abi): Set solib_svr4_fetch_link_map_offsets to
svr4_ilp32_fetch_link_map_offsets.
* s390-tdep.c (s390_svr4_fetch_link_map_offsets)
(s390x_svr4_fetch_link_map_offsets): Remove functions.
(s390_gdbarch_init): Set solib_svr4_fetch_link_map_offsets to
svr4_ilp32_fetch_link_map_offsets or svr4_lp64_fetch_link_map_offsets
where appropriate.
2006-01-15 18:28:58 +00:00
Paul Brook
1b3a26b59c
2006-01-05 Paul Brook <paul@codesourcery.com>
...
* m68k-opc.c (m68k_opcodes): Add missing ColdFire fdsqrtd entry.
2006-01-15 16:35:21 +00:00
Mark Kettenis
2522416608
* arm-tdep.c (arm_return_value): Change type of readbuf and
...
writebuf arguments to `gdb_byte *'.
2006-01-15 14:51:28 +00:00