mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-21 04:42:53 +08:00
7cee18263c
Testing of the first code to generate CTF_K_SLICEs on big-endian revealed a bunch of new problems in this area. Most importantly, the trick we did earlier to avoid wasting two bytes on padding in the ctf_slice_t is best avoided: because it leads to the whole file after that point no longer being naturally aligned, all multibyte accesses from then on must use memmove() to avoid unaligned access on platforms where that is fatal. In future, this is planned, but for now we are still doing direct access in many places, so we must revert to making ctf_slice_t properly aligned for storage in an array. Rather than wasting bytes on padding, we boost the size of cts_offset and cts_bits. This is still a waste of space (we cannot have offsets or bits in bitfields > 256) but it cannot be avoided for now, and slices are not so common that this will be a serious problem. A possibly-worse endianness problem fixed at the same time involves a codepath used only for foreign-endian, uncompressed CTF files, where we were not copying the actual CTF data into the buffer, leading to libctf reading only zeroes (or, possibly, uninitialized garbage). Finally, when we read in a CTF file, we copy the header and work from the copy. We were flipping the endianness of the header copy, and of the body of the file buffer, but not of the header in the file buffer itself: so if we write the file back out again we end up with an unreadable frankenfile with header and body of different endiannesses. Fix by flipping both copies of the header. include/ * ctf.h (ctf_slice_t): Make cts_offset and cts_bits unsigned short, so following structures are properly aligned. libctf/ * ctf-open.c (get_vbytes_common): Return the new slice size. (ctf_bufopen): Flip the endianness of the CTF-section header copy. Remember to copy in the CTF data when opening an uncompressed foreign-endian CTF file. Prune useless variable manipulation.
461 lines
13 KiB
Plaintext
461 lines
13 KiB
Plaintext
2019-06-19 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf.h (ctf_slice_t): Make cts_offset and cts_bits unsigned
|
||
short, so following structures are properly aligned.
|
||
|
||
2019-06-14 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||
|
||
* elf/aarch64.h (R_AARCH64_P32_MOVW_PREL_G0): Define.
|
||
(R_AARCH64_P32_MOVW_PREL_G0_NC): Define.
|
||
(R_AARCH64_P32_MOVW_PREL_G1): Define.
|
||
|
||
2019-06-03 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf.h (ctf_enum.cte_value): Fix type to int32_t.
|
||
|
||
2019-05-29 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (ctf_sect_t): Drop cts_type, cts_flags, and cts_offset.
|
||
(ctf_id_t): This is now an unsigned type.
|
||
(CTF_ERR): Cast it to ctf_id_t. Note that it should only be used
|
||
for ctf_id_t-returning functions.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (ctf_dump_decorate_f): New.
|
||
(ctf_dump_state_t): new.
|
||
(ctf_dump): New.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (ctf_label_f): New.
|
||
(ctf_label_set): New.
|
||
(ctf_label_get): New.
|
||
(ctf_label_topmost): New.
|
||
(ctf_label_info): New.
|
||
(ctf_label_iter): New.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (ctf_version): New.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (ctf_func_info): New.
|
||
(ctf_func_args): Likewise.
|
||
(ctf_lookup_by_symbol): Likewise.
|
||
(ctf_lookup_by_symbol): Likewise.
|
||
(ctf_lookup_variable): Likewise.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (ctf_visit_f): New definition.
|
||
(ctf_member_f): Likewise.
|
||
(ctf_enum_f): Likewise.
|
||
(ctf_variable_f): Likewise.
|
||
(ctf_type_f): Likewise.
|
||
(ctf_type_isparent): Likewise.
|
||
(ctf_type_ischild): Likewise.
|
||
(ctf_type_resolve): Likewise.
|
||
(ctf_type_aname): Likewise.
|
||
(ctf_type_lname): Likewise.
|
||
(ctf_type_name): Likewise.
|
||
(ctf_type_sizee): Likewise.
|
||
(ctf_type_align): Likewise.
|
||
(ctf_type_kind): Likewise.
|
||
(ctf_type_reference): Likewise.
|
||
(ctf_type_pointer): Likewise.
|
||
(ctf_type_encoding): Likewise.
|
||
(ctf_type_visit): Likewise.
|
||
(ctf_type_cmp): Likewise.
|
||
(ctf_type_compat): Likewise.
|
||
(ctf_member_info): Likewise.
|
||
(ctf_array_info): Likewise.
|
||
(ctf_enum_name): Likewise.
|
||
(ctf_enum_value): Likewise.
|
||
(ctf_member_iter): Likewise.
|
||
(ctf_enum_iter): Likewise.
|
||
(ctf_type_iter): Likewise.
|
||
(ctf_variable_iter): Likewise.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (struct bfd): New forward.
|
||
(ctf_fdopen): New.
|
||
(ctf_bfdopen): Likewise.
|
||
(ctf_open): Likewise.
|
||
(ctf_arc_open): Likewise.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf.h (CTFA_MAGIC): New.
|
||
(struct ctf_archive): New.
|
||
(struct ctf_archive_modent): Likewise.
|
||
* ctf-api.h (ctf_archive_member_f): New.
|
||
(ctf_archive_raw_member_f): Likewise.
|
||
(ctf_arc_write): Likewise.
|
||
(ctf_arc_close): Likewise.
|
||
(ctf_arc_open_by_name): Likewise.
|
||
(ctf_archive_iter): Likewise.
|
||
(ctf_archive_raw_iter): Likewise.
|
||
(ctf_get_arc): Likewise.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (ctf_file_close): New declaration.
|
||
(ctf_getdatasect): Likewise.
|
||
(ctf_parent_file): Likewise.
|
||
(ctf_parent_name): Likewise.
|
||
(ctf_parent_name_set): Likewise.
|
||
(ctf_import): Likewise.
|
||
(ctf_setmodel): Likewise.
|
||
(ctf_getmodel): Likewise.
|
||
(ctf_setspecific): Likewise.
|
||
(ctf_getspecific): Likewise.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (zlib.h): New include.
|
||
(ctf_sect_t): New.
|
||
(ctf_sect_names_t): Likewise.
|
||
(ctf_encoding_t): Likewise.
|
||
(ctf_membinfo_t): Likewise.
|
||
(ctf_arinfo_t): Likewise.
|
||
(ctf_funcinfo_t): Likewise.
|
||
(ctf_lblinfo_t): Likewise.
|
||
(ctf_snapshot_id_t): Likewise.
|
||
(CTF_FUNC_VARARG): Likewise.
|
||
(ctf_simple_open): Likewise.
|
||
(ctf_bufopen): Likewise.
|
||
(ctf_create): Likewise.
|
||
(ctf_add_array): Likewise.
|
||
(ctf_add_const): Likewise.
|
||
(ctf_add_enum_encoded): Likewise.
|
||
(ctf_add_enum): Likewise.
|
||
(ctf_add_float): Likewise.
|
||
(ctf_add_forward): Likewise.
|
||
(ctf_add_function): Likewise.
|
||
(ctf_add_integer): Likewise.
|
||
(ctf_add_slice): Likewise.
|
||
(ctf_add_pointer): Likewise.
|
||
(ctf_add_type): Likewise.
|
||
(ctf_add_typedef): Likewise.
|
||
(ctf_add_restrict): Likewise.
|
||
(ctf_add_struct): Likewise.
|
||
(ctf_add_union): Likewise.
|
||
(ctf_add_struct_sized): Likewise.
|
||
(ctf_add_union_sized): Likewise.
|
||
(ctf_add_volatile): Likewise.
|
||
(ctf_add_enumerator): Likewise.
|
||
(ctf_add_member): Likewise.
|
||
(ctf_add_member_offset): Likewise.
|
||
(ctf_add_member_encoded): Likewise.
|
||
(ctf_add_variable): Likewise.
|
||
(ctf_set_array): Likewise.
|
||
(ctf_update): Likewise.
|
||
(ctf_snapshot): Likewise.
|
||
(ctf_rollback): Likewise.
|
||
(ctf_discard): Likewise.
|
||
(ctf_write): Likewise.
|
||
(ctf_gzwrite): Likewise.
|
||
(ctf_compress_write): Likewise.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (ctf_errno): New declaration.
|
||
(ctf_errmsg): Likewise.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h (ctf_setdebug): New.
|
||
(ctf_getdebug): Likewise.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf-api.h: New file.
|
||
|
||
2019-05-28 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* ctf.h: New file.
|
||
|
||
2019-05-24 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||
|
||
* elf/aarch64.h (DT_AARCH64_VARIANT_PCS): Define.
|
||
(STO_AARCH64_VARIANT_PCS): Define.
|
||
|
||
2019-05-24 Alan Modra <amodra@gmail.com>
|
||
|
||
* elf/ppc64.h (R_PPC64_PLTSEQ_NOTOC, R_PPC64_PLTCALL_NOTOC),
|
||
(R_PPC64_PCREL_OPT, R_PPC64_D34, R_PPC64_D34_LO, R_PPC64_D34_HI30),
|
||
(R_PPC64_D34_HA30, R_PPC64_PCREL34, R_PPC64_GOT_PCREL34),
|
||
(R_PPC64_PLT_PCREL34, R_PPC64_PLT_PCREL34_NOTOC),
|
||
(R_PPC64_ADDR16_HIGHER34, R_PPC64_ADDR16_HIGHERA34),
|
||
(R_PPC64_ADDR16_HIGHEST34, R_PPC64_ADDR16_HIGHESTA34),
|
||
(R_PPC64_REL16_HIGHER34, R_PPC64_REL16_HIGHERA34),
|
||
(R_PPC64_REL16_HIGHEST34, R_PPC64_REL16_HIGHESTA34),
|
||
(R_PPC64_D28, R_PPC64_PCREL28): Define.
|
||
|
||
2019-05-24 Peter Bergner <bergner@linux.ibm.com>
|
||
Alan Modra <amodra@gmail.com>
|
||
|
||
* dis-asm.h (WIDE_OUTPUT): Define.
|
||
* opcode/ppc.h (prefix_opcodes, prefix_num_opcodes): Declare.
|
||
(PPC_OPCODE_POWERXX, PPC_GET_PREFIX, PPC_GET_SUFFIX),
|
||
(PPC_PREFIX_P, PPC_PREFIX_SEG): Define.
|
||
|
||
2019-05-23 Jose E. Marchesi <jose.marchesi@oracle.com>
|
||
|
||
* elf/bpf.h: New file.
|
||
|
||
2019-05-16 Andre Vieira <andre.simoesdiasvieira@arm.com>
|
||
|
||
* elf/arm.h (Tag_MVE_arch): Define new enum value.
|
||
* opcode/arm.h (FPU_MVE, FPU_MVE_FP): New MACROs for new features.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_opnd): New SVE_SHLIMM_UNPRED_22
|
||
operand.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_tsz_bhs
|
||
iclass.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_opnd): New SVE_Zm4_11_INDEX operand.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_insn_class): Add sve_shift_tsz_bhsd
|
||
iclass.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_opnd): New SVE_SHRIMM_UNPRED_22
|
||
operand.
|
||
(enum aarch64_insn_class): Add sve_shift_tsz_hsd iclass.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_013 iclass.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_bh iclass.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_sd2 iclass.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_opnd): New SVE_ADDR_ZX operand.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_opnd): New SVE_Zm3_11_INDEX operand.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_insn_class): Add sve_size_hsd2 iclass.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_opnd): New SVE_IMM_ROT3 operand.
|
||
|
||
2019-05-09 Matthew Malcomson <matthew.malcomson@arm.com>
|
||
|
||
* opcode/aarch64.h (AARCH64_FEATURE_SVE2
|
||
AARCH64_FEATURE_SVE2_AES, AARCH64_FEATURE_SVE2_BITPERM,
|
||
AARCH64_FEATURE_SVE2_SM4, AARCH64_FEATURE_SVE2_SHA3): New
|
||
feature macros.
|
||
|
||
2019-05-06 Andrew Bennett <andrew.bennett@imgtec.com>
|
||
Faraz Shahbazker <fshahbazker@wavecomp.com>
|
||
|
||
* opcode/mips.h (ASE_EVA_R6): New macro.
|
||
(M_LLWPE_AB, M_SCWPE_AB): New enum values.
|
||
|
||
2019-05-01 Sudakshina Das <sudi.das@arm.com>
|
||
|
||
* opcode/aarch64.h (AARCH64_FEATURE_TME): New.
|
||
(enum aarch64_opnd): Add AARCH64_OPND_TME_UIMM16.
|
||
|
||
2019-04-26 Andrew Bennett <andrew.bennett@imgtec.com>
|
||
Faraz Shahbazker <fshahbazker@wavecomp.com>
|
||
|
||
* opcode/mips.h (M_LLWP_AB, M_LLDP_AB): New enum values.
|
||
(M_SCWP_AB, M_SCDP_AB): Likewise.
|
||
|
||
2019-04-25 Maciej W. Rozycki <macro@linux-mips.org>
|
||
|
||
* opcode/mips.h: Update comment for MIPS32 CODE20 operand.
|
||
|
||
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
||
|
||
* elf/arm.h (START_RELOC_NUMBERS): New entry for R_ARM_THM_BF12.
|
||
|
||
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
||
|
||
* elf/arm.h (START_RELOC_NUMBERS): New entry for R_ARM_THM_BF18.
|
||
|
||
2019-04-15 Sudakshina Das <sudi.das@arm.com>
|
||
|
||
* elf/arm.h (START_RELOC_NUMBERS): New entry for R_ARM_THM_BF16.
|
||
|
||
2019-04-15 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||
|
||
* elf/arm.h (TAG_CPU_ARCH_V8_1M_MAIN): new macro.
|
||
(MAX_TAG_CPU_ARCH): Set value to above macro.
|
||
* opcode/arm.h (ARM_EXT2_V8_1M_MAIN): New macro.
|
||
(ARM_AEXT_V8_1M_MAIN): Likewise.
|
||
(ARM_AEXT2_V8_1M_MAIN): Likewise.
|
||
(ARM_ARCH_V8_1M_MAIN): Likewise.
|
||
|
||
2019-04-11 Sudakshina Das <sudi.das@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_opnd): Add AARCH64_OPND_Rt_SP.
|
||
|
||
2019-04-08 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
* elf/common.h (GNU_PROPERTY_X86_ISA_1_AVX512_BF16): New.
|
||
|
||
2019-04-07 Alan Modra <amodra@gmail.com>
|
||
|
||
Merge from gcc.
|
||
2019-04-03 Vineet Gupta <vgupta@synopsys.com>
|
||
PR89877
|
||
* longlong.h [__arc__] (add_ssaaaa): Add cc clobber.
|
||
(sub_ddmmss): Likewise.
|
||
|
||
2019-04-06 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
* bfdlink.h (bfd_link_info): Remove x86-specific linker options.
|
||
|
||
2019-04-01 Andre Vieira <andre.simoesdiasvieira@arm.com>
|
||
|
||
* opcode/arm.h (FPU_NEON_ARMV8_1): New.
|
||
(FPU_ARCH_NEON_VFP_ARMV8_1): Use FPU_NEON_ARMV8_1.
|
||
(FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1): Likewise.
|
||
(FPU_ARCH_DOTPROD_NEON_VFP_ARMV8): Likewise.
|
||
(FPU_ARCH_NEON_VFP_ARMV8_2_FP16): New.
|
||
(FPU_ARCH_NEON_VFP_ARMV8_2_FP16FML): New.
|
||
(FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML): New.
|
||
(FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_4): New.
|
||
|
||
2019-03-28 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 24390
|
||
* opcode/ppc.h (PPC_OPERAND_CR_REG): Comment.
|
||
|
||
2019-03-25 Tamar Christina <tamar.christina@arm.com>
|
||
|
||
* dis-asm.h (struct disassemble_info): Add stop_offset.
|
||
|
||
2019-03-13 Sudakshina Das <sudi.das@arm.com>
|
||
|
||
* elf/aarch64.h (DT_AARCH64_PAC_PLT): New.
|
||
|
||
2019-03-13 Sudakshina Das <sudi.das@arm.com>
|
||
Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||
|
||
* elf/aarch64.h (DT_AARCH64_BTI_PLT): New.
|
||
|
||
2019-03-13 Sudakshina Das <sudi.das@arm.com>
|
||
|
||
* elf/common.h (GNU_PROPERTY_AARCH64_FEATURE_1_AND): New.
|
||
(GNU_PROPERTY_AARCH64_FEATURE_1_BTI): New.
|
||
(GNU_PROPERTY_AARCH64_FEATURE_1_PAC): New.
|
||
|
||
2019-02-20 Alan Hayward <alan.hayward@arm.com>
|
||
|
||
* elf/common.h (NT_ARM_PAC_MASK): Add define.
|
||
|
||
2019-02-15 Saagar Jha <saagar@saagarjha.com>
|
||
|
||
* mach-o/loader.h: Use new OS names in comments.
|
||
|
||
2019-02-11 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
||
|
||
* splay-tree.h (splay_tree_delete_key_fn): Update comment.
|
||
(splay_tree_delete_value_fn): Likewise.
|
||
|
||
2019-01-31 Andreas Krebbel <krebbel@linux.ibm.com>
|
||
|
||
* opcode/s390.h (enum s390_opcode_cpu_val): Add
|
||
S390_OPCODE_ARCH13.
|
||
|
||
2019-01-25 Sudakshina Das <sudi.das@arm.com>
|
||
Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
|
||
|
||
* opcode/aarch64.h (enum aarch64_opnd): Remove
|
||
AARCH64_OPND_ADDR_SIMPLE_2.
|
||
(enum aarch64_insn_class): Remove ldstgv_indexed.
|
||
|
||
2019-01-22 Tom Tromey <tom@tromey.com>
|
||
|
||
* coff/ecoff.h: Include coff/sym.h.
|
||
|
||
2018-06-24 Nick Clifton <nickc@redhat.com>
|
||
|
||
2.32 branch created.
|
||
|
||
2019-01-16 Kito Cheng <kito@andestech.com>
|
||
|
||
* elf/riscv.h (SHT_RISCV_ATTRIBUTES): Define.
|
||
(Tag_RISCV_arch): Likewise.
|
||
(Tag_RISCV_priv_spec): Likewise.
|
||
(Tag_RISCV_priv_spec_minor): Likewise.
|
||
(Tag_RISCV_priv_spec_revision): Likewise.
|
||
(Tag_RISCV_unaligned_access): Likewise.
|
||
(Tag_RISCV_stack_align): Likewise.
|
||
|
||
2019-01-14 Pavel I. Kryukov <kryukov@frtk.ru>
|
||
|
||
* dis-asm.h: include <string.h>
|
||
|
||
2019-01-10 Nick Clifton <nickc@redhat.com>
|
||
|
||
* Merge from GCC:
|
||
2018-12-22 Jason Merrill <jason@redhat.com>
|
||
|
||
* demangle.h: Remove support for ancient GNU (pre-3.0), Lucid,
|
||
ARM, HP, and EDG demangling styles.
|
||
|
||
2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
|
||
|
||
Merge from GCC:
|
||
PR other/16615
|
||
|
||
* libiberty.h: Mechanically replace "can not" with "cannot".
|
||
* plugin-api.h: Likewise.
|
||
|
||
2018-12-25 Yoshinori Sato <ysato@users.sourceforge.jp>
|
||
|
||
* elf/rx.h (EF_RX_CPU_MASK): Update new bits.
|
||
(E_FLAG_RX_V3): New RXv3 type.
|
||
* opcode/rx.h (RX_Size): Add double size.
|
||
(RX_Operand_Type): Add double FPU registers.
|
||
(RX_Opcode_ID): Add new instuctions.
|
||
|
||
2019-01-01 Alan Modra <amodra@gmail.com>
|
||
|
||
Update year range in copyright notice of all files.
|
||
|
||
For older changes see ChangeLog-2018
|
||
|
||
Copyright (C) 2019 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|
||
|
||
Local Variables:
|
||
mode: change-log
|
||
left-margin: 8
|
||
fill-column: 74
|
||
version-control: never
|
||
End:
|