OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/gnu-dev/or1k-gcc/include
    from Rev 683 to Rev 726
    Reverse comparison

Rev 683 → Rev 726

/lto-symtab.h
0,0 → 1,41
/* Data types used in the IL symbol table.
Copyright (C) 2009 Free Software Foundation, Inc.
Contributed by Rafael Espindola <espindola@google.com>
 
This file is part of GCC.
 
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
 
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
 
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
 
#ifndef GCC_LTO_SYMTAB_H
#define GCC_LTO_SYMTAB_H
 
enum gcc_plugin_symbol_kind
{
GCCPK_DEF,
GCCPK_WEAKDEF,
GCCPK_UNDEF,
GCCPK_WEAKUNDEF,
GCCPK_COMMON
};
 
enum gcc_plugin_symbol_visibility
{
GCCPV_DEFAULT,
GCCPV_PROTECTED,
GCCPV_INTERNAL,
GCCPV_HIDDEN
};
 
#endif /* GCC_LTO_SYMTAB_H */
/ChangeLog-9103
0,0 → 1,2682
2003-12-19 Andreas Tobler <a.tobler@schweiz.ch>
 
* include/fibheap.h (fibnode): Use __extension__ for
bit-fields mark and degree if __GNUC__.
 
2003-12-18 Kazu Hirata <kazu@cs.umass.edu>
 
* include/fibheap.h (fibnode): Use unsigned long int for
bit-fields if __GNUC__ is defined.
 
2003-12-19 Andreas Tobler <a.tobler@schweiz.ch>
 
* fibheap.h (fibnode): Use __extension__ for
bit-fields mark and degree if __GNUC__.
 
2003-12-18 Kazu Hirata <kazu@cs.umass.edu>
 
* fibheap.h (fibnode): Use unsigned long int for
bit-fields if __GNUC__ is defined.
 
2003-12-04 H.J. Lu <hongjiu.lu@intel.com>
 
* bfdlink.h (bfd_link_info): Change relax_finalizing to
need_relax_finalize.
 
2003-12-03 Alan Modra <amodra@bigpond.net.au>
 
* bfdlink.h (struct bfd_link_hash_entry): Rename "next" to "und_next".
 
2003-12-02 Alan Modra <amodra@bigpond.net.au>
 
* bfdlink.h (struct bfd_link_info): Remove mpc860c0 field.
 
2003-11-14 Nick Clifton <nickc@redhat.com>
 
* dis-asm.h (struct disassemble_info): Add new field
'symbol_is_valid' which is a function which can tell the
disassembler to skip certain symbols as they should not be
displayed to the user.
(arm_symbol_is_valid): New prototype. This is the ARM
specific function for the symbol_is_valid field.
(generic_symbol_is_valid): New prototype. This is the default
function pointed to by the symbol_is_valid field.
 
2003-11-06 Bruno Rohee <bruno@rohee.com>
 
* hp-symtab.h: Fix "the the" typo.
 
2003-10-24 H.J. Lu <hongjiu.lu@intel.com>
 
* bfdlink.h (bfd_elf_version_expr): Add "symbol" and remove
"wildcard".
 
2003-10-22 Joseph S. Myers <jsm@polyomino.org.uk>
 
* obstack.h: Merge the following change from gnulib:
2003-10-21 Paul Eggert <eggert@twinsun.com>
* obstack.h (obstack_1grow_fast): Properly parenthesize arg.
(obstack_ptr_grow_fast, obstack_int_grow_fast):
Don't use lvalue casts, as GCC plans to remove support for them
in GCC 3.5. Reported by Joseph S. Myers. This bug
was also present in the non-GCC version, indicating that this
code had always been buggy and had never been widely used.
(obstack_1grow, obstack_ptr_grow, obstack_int_grow, obstack_blank):
Use the fast variant of each macro, rather than copying the
definiens of the fast variant; that way, we'll be more likely to
catch future bugs in the fast variants.
 
2003-10-22 Jakub Jelinek <jakub@redhat.com>
 
* bfdlink.h (struct bfd_elf_version_expr): Remove match field.
Add wildcard and mask fields.
(BFD_ELF_VERSION_C_TYPE): Define.
(BFD_ELF_VERSION_CXX_TYPE): Likewise.
(BFD_ELF_VERSION_JAVA_TYPE): Likewise.
(struct bfd_elf_version_expr_head): New.
(struct bfd_elf_version_tree): Add match field.
Change type of globals and locals fields
to struct bfd_elf_version_expr_head.
 
2003-09-22 Andrew Cagney <cagney@redhat.com>
 
* floatformat.h (struct floatformat): Add field "is_valid".
 
2003-09-15 Andrew Cagney <cagney@redhat.com>
 
* floatformat.h (floatformat_to_double): Make input buffer constant.
(floatformat_from_double, floatformat_is_valid): Ditto.
 
2003-09-15 Andrew Cagney <cagney@redhat.com>
 
* floatformat.h (struct floatformat): Make "exp_bias" signed.
 
2003-09-15 Daniel Jacobowitz <drow@mvista.com>
 
* floatformat.h (floatformat_is_valid): Add prototype.
 
2003-08-27 Andrew Cagney <cagney@redhat.com>
 
* dis-asm.h (init_disassemble_info): Declare.
(INIT_DISASSEMBLE_INFO): Redefine as a call to
init_disassemble_info.
(INIT_DISASSEMBLE_INFO_NO_ARCH): Ditto.
 
2003-08-20 Nick Clifton <nickc@redhat.com>
 
* bfdlink.h (enum report_method): New enum. Describes how to
report something.
(struct bfd_link_info): Delete fields 'no_undefined' and
'allow_shlib_undefined'. Replace with
'unresolved_symbols_in_objects' and
'unresolved_symbols_in_shared_libs'.
 
2003-08-07 Alan Modra <amodra@bigpond.net.au>
 
* bfdlink.h: Remove PARAMS macro. Replace PTR with void *.
* dis-asm.h: Likewise.
 
2003-07-09 Bob Wilson <bob.wilson@acm.org>
 
* xtensa-config.h: Undef all macros before defining them.
 
2003-07-06 H.J. Lu <hongjiu.lu@intel.com>
 
* demangle.h: Support C++.
 
2003-07-01 Zack Weinberg <zack@codesourcery.com>
 
* filenames.h: New file imported from binutils.
 
2003-06-30 Bob Wilson <bob.wilson@acm.org>
 
* xtensa-config.h: New file imported from binutils.
 
2003-06-30 Bob Wilson <bob.wilson@acm.org>
 
* xtensa-config.h (XCHAL_HAVE_CONST16, XCHAL_HAVE_ABS,
XCHAL_HAVE_ADDX, XCHAL_HAVE_L32R): Define.
 
2003-06-25 Alan Modra <amodra@bigpond.net.au>
 
* bfdlink.h: Correct spelling of "relocatable".
 
2003-06-22 Zack Weinberg <zack@codesourcery.com>
 
* safe-ctype.h (HC_UNKNOWN, HC_ASCII, HC_EBCDIC): Rename to
HOST_CHARSET_UNKNOWN, HOST_CHARSET_ASCII, HOST_CHARSET_EBCDIC
respectively.
 
2003-06-21 Zack Weinberg <zack@codesourcery.com>
 
* safe-ctype.h (HC_UNKNOWN, HC_ASCII, HC_EBCDIC, HOST_CHARSET):
New #defines.
 
2003-06-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h: Delete HAVE_LONG_DOUBLE GCC bootstrap support.
 
2003-05-23 Jakub Jelinek <jakub@redhat.com>
 
* bfdlink.h (struct bfd_link_info): Add execstack and noexecstack.
 
2003-06-03 H.J. Lu <hongjiu.lu@intel.com>
 
* bfdlink.h (LD_DEFINITION_IN_DISCARDED_SECTION): New.
 
2003-05-30 Ulrich Drepper <drepper@redhat.com>
Jakub Jelinek <jakub@redhat.com>
 
* bfdlink.h (struct bfd_link_info): Add pie and executable
bits.
 
2003-05-21 Nick Clifton <nickc@redhat.com>
 
* bfdlink.h (struct bfd_link_hash_table): Fix typo in comment.
 
2003-05-15 Jim Blandy <jimb@redhat.com>
 
* libiberty.h (hex_value): Make the value an unsigned int, to
avoid unexpected sign-extension when cast to unsigned types larger
than int --- like bfd_vma, on some platforms.
(_hex_value): Update declaration.
 
2003-05-09 Alan Modra <amodra@bigpond.net.au>
 
* xtensa-isa-internal.h (xtensa_isa_module_struct): Remove const on
gen_num_opcodes_fn return type.
 
2003-05-07 Jason Merrill <jason@redhat.com>
 
* hashtab.h (iterative_hash): Prototype.
(iterative_hash_object): New macro.
 
2003-04-28 H.J. Lu <hjl@gnu.org>
 
* bfdlink.h (bfd_link_info): Add relax_finalizing.
 
2003-04-23 H.J. Lu <hjl@gnu.org>
 
* bfdlink.h (bfd_link_callbacks): Add error_handler.
 
2003-04-02 Bob Wilson <bob.wilson@acm.org>
 
* xtensa-config.h: Remove comment indicating that this is a
generated file.
 
2003-04-01 Bob Wilson <bob.wilson@acm.org>
 
* dis-asm.h (print_insn_xtensa): Declare.
* xtensa-config.h: New file.
* xtensa-isa-internal.h: Likewise.
* xtensa-isa.h: Likewise.
 
2003-03-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h (ATTRIBUTE_NONNULL, ATTRIBUTE_NULL_PRINTF,
ATTRIBUTE_NULL_PRINTF_1, ATTRIBUTE_NULL_PRINTF_2,
ATTRIBUTE_NULL_PRINTF_3, ATTRIBUTE_NULL_PRINTF_4,
ATTRIBUTE_NULL_PRINTF_5): New.
(ATTRIBUTE_PRINTF): Add ATTRIBUTE_NONNULL.
 
2003-03-17 Jan Hubicka <jh@suse.cz>
 
* hashtab.h (htab_traverse_noresize): Declare.
 
2003-02-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h: Document return value of physmem routines.
 
2003-02-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (physmem_total, physmem_available): Prototype.
 
2003-02-20 Daniel Jacobowitz <drow@mvista.com>
 
* libiberty.h (lrealpath): Add declaration.
 
2003-01-31 Grant Grundler <grundler@dsl2.external.hp.com>
 
* hppa.h (ldwa, ldda): Add ordered opcodes.
 
2003-01-26 Daniel Jacobowitz <drow@mvista.com>
 
* hashtab.h (htab_alloc_with_arg, htab_free_with_arg): Add new types.
(struct htab): Add alloc_arg, alloc_with_arg_f, free_with_arg_f.
(htab_create_alloc_ex): New prototype.
(htab_set_functions_ex): New prototype.
 
2002-07-17 Geoffrey Keating <geoffk@redhat.com>
 
* splay-tree.h (GTY): Define if undefined.
(splay_tree_allocate_fn): Return PTR for compatibility, not void *.
(struct splay_tree_node_s): Support gengtype.
(struct splay_tree_s): Likewise. Make allocate_data a PTR,
not a void *.
 
2002-01-02 Ben Elliston <bje@redhat.com>
 
* dis-asm.h (print_insn_iq2000): Declare.
 
2002-12-24 Dmitry Diky <diwil@mail.ru>
 
* dis-asm.h: Add msp430 disassembler prototype.
 
2002-12-27 Chris Demetriou <cgd@broadcom.com>
 
* dis-asm.h (print_mips_disassembler_options): Prototype.
 
2002-12-23 Alan Modra <amodra@bigpond.net.au>
 
* bfdlink.h (struct bfd_link_info): Add "strip_discarded".
 
2002-12-20 Alan Modra <amodra@bigpond.net.au>
 
* bfdlink.h (struct bfd_link_info): Replace bfd_boolean fields with
bit-fields. Rearrange to put all like types together.
 
2002-11-30 Alan Modra <amodra@bigpond.net.au>
 
* bfdlink.h: Replace boolean with bfd_boolean. Formatting.
 
2002-11-23 Simon Burge <simonb@wasabisystems.com>
 
* libiberty.h (basename): Add NetBSD to the list.
 
2002-11-22 Daniel Jacobowitz <drow@mvista.com>
 
* libiberty.h (make_relative_prefix): Add prototype.
 
2002-11-14 Egor Duda <deo@logos-m.ru>
 
* bfdlink.h (struct bfd_link_info): Add new boolean
field pei386_runtime_pseudo_reloc.
 
2002-10-26 Roger Sayle <roger@eyesopen.com>
 
* partition.h: Close the extern "C" scope when compiling with C++.
 
2002-10-26 Roger Sayle <roger@eyesopen.com>
DJ Delorie <dj@redhat.com>
 
PR bootstrap/8351
* getopt.h: Avoid prototyping getopt with no arguments in C++.
 
2002-10-24 Nathan Tallent <eraxxon@alumni.rice.edu>
 
* ansidecl.h (__STDC__): Add (__alpha && __cplusplus) to the
list of platform compilers that may look, smell and act
like __STDC__ but that may not define it.
 
2002-10-11 David O'Brien <obrien@FreeBSD.org>
 
* getopt.h: getopt is in unistd.h (based on SUSv2).
 
2002-09-26 Andrew Cagney <ac131313@redhat.com>
 
* regs/: Delete directory.
 
2002-09-19 Alexandre Oliva <aoliva@redhat.com>
 
* libiberty.h (asprintf, vasprintf): Don't declare them if the
corresponding HAVE_DECL_ macro is 1.
 
2002-09-19 Nathan Tallent <eraxxon@alumni.rice.edu>
 
* dis-asm.h: Remove (errant) trailing semicolon (;) from the
extern "C" { } declaration.
 
2002-09-04 Nick Clifton <nickc@redhat.com>
 
* dis-asm.h (print_ppc_disassembler_options): Prototype.
 
2002-08-28 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
 
* dis-asm.h: Add standard disassembler for tic4x.
 
2002-08-07 H.J. Lu <hjl@gnu.org>
 
* bfdlink.h (bfd_link_info): Add allow_undefined_version.
(bfd_elf_version_expr): Add symver and script.
 
2002-07-31 Ian Dall <ian@sibyl.beware.dropbear.id.au>
 
* bfdlink.h (bfd_link_common_skip_ar_symbols): New enum.
(struct bfd_link_info): Add new field 'common_skip_ar_symbols'.
 
2002-07-19 Denis Chertykov <denisc@overta.ru>
Matthew Green <mrg@redhat.com>
 
* dis-asm.h (print_insn_ip2k): Declare.
 
2002-07-01 Alan Modra <amodra@bigpond.net.au>
 
* bfdlink.h (struct bfd_sym_chain): Declare.
(struct bfd_link_info): Add gc_sym_list. Formatting fixes.
 
2002-06-25 Alan Modra <amodra@bigpond.net.au>
 
* demangle.h: #include "ansidecl.h" rather than #include <ansidecl.h>.
* fibheap.h: Likewise.
* hashtab.h: Likewise.
* partition.h: Likewise.
* sort.h: Likewise.
* splay-tree.h: Likewise.
 
2002-06-24 Alan Modra <amodra@bigpond.net.au>
 
* libiberty.h (basename): Don't declare if HAVE_DECL_BASENAME.
* getopt.h (getopt): Don't declare if HAVE_DECL_GETOPT.
 
2002-06-18 Dave Brolley <brolley@redhat.com>
 
From Catherine Moore:
* dis-asm.h (print_insn_frv): New prototype.
 
2002-06-09 Andrew Cagney <cagney@redhat.com>
 
* remote-sim.h: Move to directory gdb/.
* callback.h: Move to directory gdb/.
 
2002-06-07 Charles Wilson <cwilson@ece.gatech.edu>
 
* bfdlink.h (struct bfd_link_info): Change type of
pei386_auto_import field to int so that -1 can mean enabled by
default and 1 can mean enabled by command line switch.
 
2002-06-06 DJ Delorie <dj@redhat.com>
 
* hashtab.h (htab): Rearrange new members for backward
compatibility.
(htab_create): Don't use a macro that requires other headers.
 
2002-06-05 Geoffrey Keating <geoffk@redhat.com>
 
* hashtab.h (htab_create): Restore prototype for backward
compatibility.
(htab_try_create): Likewise.
 
2002-05-22 Geoffrey Keating <geoffk@redhat.com>
 
* hashtab.h (struct htab): Update for change to length specifier.
 
2002-05-10 Geoffrey Keating <geoffk@redhat.com>
 
* hashtab.h (GTY): Define if undefined.
(htab_alloc): New typedef.
(htab_free): New typedef.
(struct htab): Support gengtype; allow user-specified memory
allocation.
(htab_create_alloc): New.
(htab_create): Replace with #define.
(htab_try_create): Delete.
 
2002-05-28 Kuang Hwa Lin <kuang@sbcglobal.net>
 
* dis-asm.h: Prototype print_insn_dlx.
 
2002-05-23 Andrew Cagney <ac131313@redhat.com>
 
* sim-d10v.h: Delete file. Moved to include/gdb/.
 
2002-05-21 H.J. Lu (hjl@gnu.org)
 
* bfdlink.h (bfd_link_info): Add allow_multiple_definition.
 
2002-05-17 J"orn Rennecke <joern.rennecke@superh.com>
 
* dis-asm.h (print_insn_shl, print_insn_sh64l): Remove prototype.
 
2002-04-16 David S. Miller <davem@redhat.com>
 
* xregex2.h (__restrict_arr): Define to __restrict on GCC
3.1 and later. Do not redefine.
 
2002-04-01 Phil Edwards <pme@gcc.gnu.org>
 
* dyn-string.h: Also allow IN_GLIBCPP_V3 to redefine names.
 
2002-03-10 Daniel Jacobowitz <drow@mvista.com>
 
* gdb: New directory.
 
2002-03-06 Andrew Cagney <ac131313@redhat.com>
 
* floatformat.h (floatformat_arm_ext): Delete declaration.
 
2002-02-21 Jim Blandy <jimb@redhat.com>
 
Allow the user to specify functions for allocating memory for
splay tree roots and nodes.
* splay-tree.h (splay_tree_allocate_fn, splay_tree_deallocate_fn):
New types.
(splay_tree): New fields: `allocate', `deallocate', and
`allocate_data'.
(splay_tree_new_with_allocator): New function declaration.
 
2002-02-15 Alan Modra <amodra@bigpond.net.au>
 
Support arbitrary length fill patterns.
* bfdlink.h (enum bfd_link_order_type): Remove bfd_fill_link_order.
(struct bfd_link_order): Remove fill. Add data.size.
 
2002-02-08 Alexandre Oliva <aoliva@redhat.com>
 
Contribute sh64-elf.
2000-11-25 Hans-Peter Nilsson <hpn@cygnus.com>
* dis-asm.h (print_insn_sh64): New prototype.
(print_insn_sh64l): New prototype.
(print_insn_sh64x_media): New prototype.
 
2002-02-05 Frank Ch. Eigler <fche@redhat.com>
 
* dis-asm.h (disassemble_info): New field `insn_sets'.
(INIT_DISASSEMBLE_INFO): Clear it.
 
2002-02-05 Jason Merrill <jason@redhat.com>
 
* demangle.h (cplus_demangle_v3): Add "options" parm.
(cplus_demangle_v3_type): Remove prototype.
(DMGL_VERBOSE): New macro.
(DMGL_TYPES): New macro.
 
2002-02-02 H.J. Lu (hjl@gnu.org)
 
* demangle.h (cplus_demangle_v3_type): New prototype.
 
2002-01-31 Ivan Guzvinec <ivang@opencores.org>
 
* dis-asm.h : Add support for or32 targets
 
2002-01-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (C_alloca): Add ATTRIBUTE_MALLOC.
 
2002-01-27 David O'Brien <obrien@FreeBSD.org>
 
* cgen.h (BFD_VERSION): Use BFD_VERSION_DATE instead.
 
2001-12-14 Nick Clifton <nickc@cambridge.redhat.com>
 
* dis-asm.h (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialise the
disassembler_options field (to NULL).
 
2001-12-13 Jakub Jelinek <jakub@redhat.com>
 
* bfdlink.h (struct bfd_link_info): Add eh_frame_hdr field.
 
2001-12-07 Geoffrey Keating <geoffk@redhat.com>
 
* dis-asm.h (print_insn_xstormy16): Declare.
 
2001-12-06 Richard Henderson <rth@redhat.com>
 
* demangle.h (no_demangling): New.
(NO_DEMANGLING_STYLE_STRING): New.
 
2001-11-14 Alan Modra <amodra@bigpond.net.au>
 
* dis-asm.h (print_insn_i386): Declare.
 
2001-11-11 Timothy Wall <twall@alum.mit.edu>
 
* dis-asm.h: Fix comment to refer to octets rather than bytes.
 
2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
 
* dis-asm.h (print_insn_mmix): Add prototype.
 
2001-10-24 Neil Booth <neil@daikokuya.demon.co.uk>
 
* safe-ctype.h (_sch_isbasic, IS_ISOBASIC): New.
 
2001-10-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (hex_init): Revert delete.
 
* libiberty.h (_hex_value): Const-ify.
(hex_init): Delete.
 
2001-10-16 Christopher Faylor <cgf@redhat.com>
 
* filenames.h: Add cygwin to the list of dosish style path systems.
 
2001-10-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* demangle.h (demangler_engine): Const-ify.
* libiberty.h (buildargv): Likewise.
 
2001-10-03 Vassili Karpov <malc@pulsesoft.com>
 
* bfdlink.h (struct bfd_link_info): Add nocopyreloc field.
 
2001-09-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (reconcat): New function.
 
2001-09-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (concat, concat_length, concat_copy, concat_copy2,
ACONCAT): Improve comments.
 
2001-09-18 Alan Modra <amodra@bigpond.net.au>
 
* objalloc.h (OBJALLOC_ALIGN): Define using offsetof.
 
2001-09-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (concat_length, concat_copy, concat_copy2,
libiberty_concat_ptr, ACONCAT): New.
 
* libiberty.h (ASTRDUP): New macro.
libiberty_optr, libiberty_nptr, libiberty_len): Declare.
 
2001-08-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h: Update comments reflecting previous change.
 
2001-08-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h (VA_OPEN, VA_CLOSE): Allow multiple uses.
 
2001-08-25 Nick Clifton <nickc@cambridge.redhat.com>
 
* bfdlink.h (struct bfd_link_info): Change 'spare_dynamic_tags' to
unsigned to remove a compile time warning message.
 
2001-08-24 H.J. Lu <hjl@gnu.org>
 
* bfdlink.h (bfd_link_hash_table_type): New. The linker hash
table type, bfd_link_generic_hash_table and
bfd_link_elf_hash_table.
(bfd_link_hash_table): Add a new field, type, for the linker
hash table type.
 
2001-08-23 Jakub Jelinek <jakub@redhat.com>
 
* bfdlink.h (struct bfd_link_info): Add combreloc and
spare_dynamic_tags fields.
 
2001-08-23 Lars Brinkhoff <lars@nocrew.org>
 
* dyn-string.h, fibheap.h, partition.h, sort.h, splay-tree.h:
replace "GNU CC" with "GCC".
 
2001-08-21 Richard Henderson <rth@redhat.com>
 
* fibheap.h: Tidy formatting.
(fibnode_t): Limit degree to 31 bits to avoid warning.
 
2001-08-20 Daniel Berlin <dan@cgsoftware.com>
 
* fibheap.h: New file. Fibonacci heap.
 
2001-08-20 Andrew Cagney <ac131313@redhat.com>
 
* floatformat.h (floatformat_arm_ext): Document as deprecated.
(floatformat_arm_ext_big, floatformat_arm_ext_littlebyte_bigword)
(floatformat_ia64_spill_little, floatformat_ia64_quad_little)
(floatformat_ia64_spill_big, floatformat_ia64_quad_big)
(floatformat_m88110_harris_ext): Declare.
 
2001-08-18 Zack Weinberg <zackw@panix.com>
 
* ansidecl.h: Reorganize for readability, remove documentation
of obsolete macros, document PARAMS and VPARAMS. Add new
macros VA_OPEN, VA_CLOSE, and VA_FIXEDARG for nicer variadic
function implementation.
 
2001-08-16 Richard Henderson <rth@redhat.com>
 
* hashtab.h (htab_hash_string): Declare.
 
2001-08-10 Andrew Cagney <ac131313@redhat.com>
 
* libiberty.h (lbasename): Change function declaration to return a
const char pointer.
 
2001-08-02 Mark Kettenis <kettenis@gnu.org>
 
* xregex.h (_REGEX_RE_COMP): Define.
(re_comp): Define to xre_comp.
(re_exec): Define to xre_exec.
 
2001-08-02 Charles Wilson <cwilson@ece.gatech.edu>
 
* bfdlink.h (struct bfd_link_info): add new boolean
field pei386_auto_import.
 
2001-07-18 Andreas Jaeger <aj@suse.de>
 
* xregex2.h: Place under LGPL version 2.1.
 
2001-07-10 Jeff Johnston <jjohnstn@redhat.com>
 
* xregex.h: New file to support libiberty regex.
* xregex2.h: Ditto.
 
2001-06-15 Hans-Peter Nilsson <hp@axis.com>
 
* bfdlink.h (struct bfd_link_info): New member export_dynamic.
 
2001-05-16 Matt Kraai <kraai@alumni.carnegiemellon.edu>
 
* partition.h: Fix misspelling of `implementation'.
 
2001-05-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h (NULL_PTR): Delete.
 
2001-05-07 Zack Weinberg <zackw@stanford.edu>
 
* demangle.h: Use PARAMS for all prototypes.
* ternary.h: Use PARAMS for all prototypes. Use PTR, not void *.
Make arguments constant where possible.
 
2001-05-07 Mark Mitchell <mark@codesourcery.com>
 
* splay-tree.h (splay_tree_max): New function.
(splay_tree_min): Likewise.
 
2001-04-27 Johan Rydberg <jrydberg@opencores.org>
 
* dis-asm.h (print_insn_openrisc): Add prototype.
 
2001-04-15 Daniel Berlin <dan@cgsoftware.com>
 
* ternary.h: New file - Ternary search tree header.
 
2001-04-13 Jakub Jelinek <jakub@redhat.com>
 
* bfdlink.h (bfd_link_discard): Add discard_sec_merge.
 
2001-04-03 Zack Weinberg <zackw@stanford.edu>
 
* ansidecl.h: All logic from gcc/gansidecl.h moved here.
 
2001-03-31 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (alloca): Handle setting C_ALLOCA.
 
2001-03-20 Jim Blandy <jimb@redhat.com>
 
* demangle.h (enum gnu_v3_constructor_kinds,
is_gnu_v3_mangled_ctor, enum gnu_v3_destructor_kinds,
is_gnu_v3_mangled_dtor): New declarations.
 
2001-03-14 Nick Clifton <nickc@redhat.com>
 
* ansidecl.h: Fix copyright dates.
* demangle.h: Fix copyright dates.
* floatformat.h: Fix copyright dates.
* fnmatch.h: Fix copyright dates.
* getopt.h: Fix copyright dates.
* libiberty.h: Add FSF copyright notice.
* md5.h: Fix copyright dates.
* obstack.h: Fix copyright dates.
* splay-tree.h: Fix copyright dates.
 
2001-03-10 Neil Booth <neil@daikokuya.demon.co.uk>
John David Anglin <dave@hiauly1.hia.nrc.ca>
 
* libiberty.h: Add lbasename.
 
2001-03-06 Zack Weinberg <zackw@stanford.edu>
 
* libiberty.h: Prototype C_alloca; define alloca to either
__builtin_alloca or C_alloca as appropriate.
 
2001-03-01 John David Anglin <dave@hiauly1.hia.nrc.ca>
 
* safe-ctype.h (_sch_test): Cast enum bit to unsigned short int for pcc
compatibility.
 
2001-02-18 lars brinkhoff <lars@nocrew.org>
 
* dis-asm.h: Add PDP-11 target.
 
2001-02-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
 
* dis-asm.h: Add linux target for S/390.
 
2001-01-11 Peter Targett <peter.targett@arccores.com>
 
* dis-asm.h (arc_get_disassembler): Correct declaration.
 
2001-01-09 Philip Blundell <philb@gnu.org>
 
* bin-bugs.h (REPORT_BUGS_TO): Set to `bug-binutils@gnu.org'.
 
2000-12-18 Joseph S. Myers <jsm28@cam.ac.uk>
 
* COPYING: Update to current
ftp://ftp.gnu.org/pub/gnu/Licenses/COPYING-2.0 (fixes references
to 19yy as example year in copyright notice).
 
2000-12-19 Hans-Peter Nilsson <hp@bitrange.com>
 
* dis-asm.h (struct disassemble_info): New member "section".
(INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize private_data member.
Initialize section member.
 
2000-12-16 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
 
* safe-ctype.h: Make code work on all targets and not just on
targets where a char is 8 bits.
 
2000-12-10 Fred Fish <fnf@be.com>
 
* bfdlink.h (struct bfd_link_info): Add new allow_shlib_undefined
member to struct for systems where it is normal to have undefined
symbols in shared libraries at runtime and the runtime linker
takes care of redirecting them.
 
2000-12-07 Zack Weinberg <zack@wolery.stanford.edu>
 
* safe-ctype.h: New file.
 
2000-12-06 Rodney Brown <RodneyBrown@mynd.com>
 
* getopt.h obstack.h: Standarize copyright statement.
 
2000-12-04 Richard Henderson <rth@redhat.com>
 
* demangle.h: Change "new_abi" to "v3" everywhere.
 
2000-11-22 Zack Weinberg <zack@wolery.stanford.edu>
 
* libiberty.h: Move #includes to top. Prototype xmalloc_failed.
 
2000-11-15 Kenneth Block <kenneth.block@compaq.com>
 
* demangle.h: Add gnat and java demangle styles.
 
2000-11-04 Hans-Peter Nilsson <hp@bitrange.com>
 
* hashtab.h (struct htab): Add member return_allocation_failure.
(htab_try_create): New prototype. Mention which functions may
return NULL when this is used.
 
2000-11-03 Hans-Peter Nilsson <hp@bitrange.com>
 
* hashtab.h: Change void * to PTR where necessary.
 
2000-10-11 Mark Mitchell <mark@codesourcery.com>
 
* splay-tree.h (splay_tree_predecessor): Declare.
 
2000-09-29 Hans-Peter Nilsson <hp@axis.com>
 
* dis-asm.h: Declare cris_get_disassembler, not print_insn_cris.
Fix typo in comment.
 
2000-09-28 John David Anglin <dave@hiauly1.hia.nrc.ca>
 
* alloca-conf.h: New file (copied from libiberty).
 
2000-09-05 John David Anglin <dave@hiauly1.hia.nrc.ca>
 
* md5.h (md5_uint32): Choose via INT_MAX instead of UINT_MAX.
 
2000-09-04 Alex Samuel <samuel@codesourcery.com>
 
* dyn-string.h: Adjust formatting.
(dyn_string_insert_char): New macro. New declaration.
 
2000-08-28 Jason Merrill <jason@redhat.com>
 
* md5.h: New file.
 
2000-08-24 Greg McGary <greg@mcgary.org>
 
* libiberty.h (ARRAY_SIZE): New macro.
 
2000-07-29 Nick Clifton <nickc@cygnus.com>
 
* os9k.h: Add copyright notice.
Fix formatting.
 
2000-07-22 Jason Eckhardt <jle@cygnus.com>
 
* dis-asm.h (print_insn_i860): Add prototype.
 
2000-07-20 H.J. Lu <hjl@gnu.org>
 
* bfdlink.h (bfd_link_info): Add new_dtags.
 
2000-07-20 Hans-Peter Nilsson <hp@axis.com>
 
* dis-asm.h (print_insn_cris): Declare.
 
2000-07-19 H.J. Lu (hjl@gnu.org)
 
* bfdlink.h (bfd_link_info): Add flags and flags_1.
 
2000-06-05 DJ Delorie <dj@redhat.com>
 
* MAINTAINERS: new
 
2000-06-21 Alex Samuel <samuel@codesourcery.com>
 
* dyn-string.h (dyn_string_init, dyn_string_new,
dyn_string_delete, dyn_string_release, dyn_string_resize,
dyn_string_clear, dyn_string_copy, dyn_string_copy_cstr,
dyn_string_prepend, dyn_string_prepend_cstr, dyn_string_insert,
dyn_string_insert_cstr, dyn_string_append, dyn_string_append_cstr,
dyn_string_append_char, dyn_string_substring_dyn_string_eq):
Define as same name with __cxa_ prepended, if IN_LIBGCC2.
(dyn_string_init, dyn_string_copy, dyn_string_copy_cstr,
dyn_string_prepend, dyn_string_prepend_cstr, dyn_string_insert,
dyn_string_insert_cstr, dyn_string_append, dyn_string_append_cstr,
dyn_string_append_char, dyn_string_substring): Change return type
to int.
 
2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
 
* dis-asm.h (print_insn_m68hc12): Define.
(print_insn_m68hc11): Likewise.
 
2000-06-18 Nick Clifton <nickc@redhat.com>
 
* os9k.h: Change values of MODSYNC and CRCCON due to bug report
from Russ Magee <rmagee@home.com>.
 
2000-06-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* demangle.h (demangling_styles): Remove trailing comma in enum.
 
* dyn-string.h (dyn_string_append_char): Change parameter from
char to int.
 
2000-06-04 Alex Samuel <samuel@codesourcery.com>
 
* dyn-string.h: Move here from gcc/dyn-string.h. Add new functions.
 
* demangle.h (DMGL_GNU_NEW_ABI): New macro.
(DMGL_STYLE_MASK): Or in DMGL_GNU_NEW_ABI.
(current_demangling_style): Add gnu_new_abi_demangling.
(GNU_NEW_ABI_DEMANGLING_STYLE_STRING): New macro.
(GNU_NEW_ABI_DEMANGLING): Likewise.
(cplus_demangle_new_abi): New declaration.
 
Tue May 30 16:53:34 2000 Andrew Cagney <cagney@b1.cygnus.com>
 
* floatformat.h (struct floatformat): Add field name.
 
2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
 
* filenames.h: New file.
(HAVE_DOS_BASED_FILE_SYSTEM, IS_DIR_SEPARATOR)
(IS_ABSOLUTE_PATH, FILENAME_CMP): New macros.
 
2000-05-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* getopt.h (getopt): Also check HAVE_DECL_* when prototyping.
 
* libiberty.h (basename): Likewise.
 
2000-05-17 S. Bharadwaj Yadavalli <sby@scrugs.lkg.dec.com>
Rick Gorton <gorton@scrugs.lkg.dec.com>
 
* bfdlink.h (struct bfd_link_info): Add emitrelocations flag.
 
2000-05-08 Alan Modra <alan@linuxcare.com.au>
 
* dis-asm.h (print_insn_tic54x): Declare.
 
2000-05-06 Zack Weinberg <zack@wolery.cumb.org>
 
* ansidecl.h: #define __extension__ to nothing if
GCC_VERSION < 2008.
 
2000-05-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* demangle.h (demangler_engine): Constify.
 
Thu May 4 17:15:26 2000 Philippe De Muyter <phdm@macqel.be>
 
* sort.h (sys/types.h): File included unconditionnaly.
(stddef.h): File include only #ifdef __STDC__.
 
2000-05-03 Zack Weinberg <zack@wolery.cumb.org>
 
* symcat.h: Remove #endif label.
 
2000-04-28 Kenneth Block <block@zk3.dec.com>
Jason Merrill <jason@casey.cygnus.com>
 
* demangle.h (libiberty_demanglers): new table for different styles.
(cplus_demangle_set_style): New function for setting style.
(cplus_demangle_name_to_style): New function to translate name.
 
2000-04-24 Mark Mitchell <mark@codesourcery.com>
 
* hashtab.h (hash_pointer): Declare.
(eq_pointer): Likewise.
 
2000-04-23 Mark Mitchell <mark@codesourcery.com>
 
* sort.h: New file.
 
Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
David Mosberger <davidm@hpl.hp.com>
 
* dis-asm.h (print_insn_ia64): Declare.
 
Tue Apr 18 16:22:30 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
 
* hashtab.h (enum insert_option): New type.
(htab_find_slot, htab_find_slot_with_hash): Use it.
 
2000-04-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* symcat.h: Honor autoconf macro HAVE_STRINGIZE. Add
comments/caveats with regard to traditional C behavior.
 
2000-04-05 Richard Henderson <rth@cygnus.com>
 
* splay-tree.h (splay_tree_remove): Declare.
 
2000-04-04 Alan Modra <alan@linuxcare.com.au>
 
* bin-bugs.h (REPORT_BUGS_TO): Remove translated part.
 
2000-04-03 Alan Modra <alan@linuxcare.com.au>
 
* bin-bugs.h: New file.
 
2000-03-30 Mark Mitchell <mark@codesourcery.com>
 
* hashtab.h (hashval_t): New type.
(htab_find_with_hash): Use it as an argument.
(htab_find_slot_with_hash): Likewise.
 
2000-03-27 Denis Chertykov <denisc@overta.ru>
 
* dis-asm.h (print_insn_avr): Declare.
 
2000-03-14 Bernd Schmidt <bernds@cygnus.co.uk>
 
* hashtab.h (htab_trav): Modify type so that first arg is of type
void **.
(htab_find_with_hash, htab_find_slot_with_hash): Declare new
functions.
 
2000-03-09 Alex Samuel <samuel@codesourcery.com>
 
* partition.h: New file.
 
2000-03-09 Zack Weinberg <zack@wolery.cumb.org>
 
* hashtab.h (struct htab): Add del_f.
(htab_del): New type.
(htab_create): Add fourth argument.
 
2000-03-08 Zack Weinberg <zack@wolery.cumb.org>
 
* hashtab.h (hash_table_t): Rename to htab_t.
(struct hash_table): Rename to struct htab. Shorten element
names. Reorder elements by size.
(htab_hash, htab_eq, htab_trav): New typedefs for the callback
function pointers.
(hash_table_entry_t): Discard; just use void * for element
type.
 
2000-03-01 H.J. Lu <hjl@gnu.org>
 
* bfdlink.h (bfd_link_callbacks): Add a boolean arg to
the undefined_symbol callback.
 
2000-02-23 Linas Vepstas <linas@linas.org>
 
* dis-asm.h (print_insn_i370): Declare.
 
Tue Feb 22 15:19:54 2000 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_trace): Document return values.
(sim_set_trace): Declare. Deprecate.
 
2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
 
* dis-asm.h (struct disassemble_info): Change `length' param of
read_memory_func to unsigned. Change type of `buffer_length' and
`octets_per_byte' to unsigned.
(buffer_read_memory): Change `length' param to unsigned.
 
2000-02-16 Nick Clifton <nickc@cygnus.com>
 
* dis-asm.h: Add prototypes for ARM register name functions.
 
Wed Feb 9 18:45:49 2000 Andrew Cagney <cagney@b1.cygnus.com>
 
* wait.h: Delete. No longer used by GDB.
 
Tue Feb 8 17:01:13 2000 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_resume): Clarify use of SIGGNAL.
(sim_stop_reason): Clarify meaning of sim_signalled.
 
2000-02-03 Timothy Wall <twall@redhat.com>
 
* dis-asm.h (struct disassemble_info): Added octets_per_byte
field and initialize it to one (1).
 
2000-01-27 Nick Clifton <nickc@redhat.com>
 
* dis-asm.h: Add prototype for disassembler_usage().
Add prototype for arm_disassembler_options().
Remove prototype for arm_toggle_regnames().
Add prototype for parse_arm_disassembler_option().
 
Sat Jan 1 19:06:52 2000 Hans-Peter Nilsson <hp@bitrange.com>
 
* symcat.h (STRINGX) [!__STDC__ || ALMOST_STDC]: Change "?" to "s"
to stringify argument s.
 
Wed Dec 15 11:22:56 1999 Jeffrey A Law (law@cygnus.com)
 
* hp-symtab.h (HP_LANGUAGE_FORTRAN): New enumeration constant.
(HP_LANGUAGE_F77): Define using HP_LANGUAGE_FORTRAN.
 
1999-12-15 Doug Evans <dje@transmeta.com>
 
* dis-asm.h: Enclose in extern "C" ifdef __cplusplus.
 
1999-12-05 Mark Mitchell <mark@codesourcery.com>
 
* splay-tree.h (struct splay_tree_node): Rename to ...
(struct splay_tree_node_s): ... this.
(struct splay_tree): Rename to ...
(struct splay_tree_s): ... this.
 
1999-11-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h (ATTRIBUTE_MALLOC): New macro.
 
* libiberty.h (buildargv, dupargv, concat, choose_temp_base,
make_temp_file, xmalloc, xcalloc, xstrdup, xmemdup): Add
ATTRIBUTE_MALLOC.
(xatexit): Remove __GNUC__ check, add ATTRIBUTE_NORETURN.
 
1999-11-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h: Include stdarg.h when ANSI_PROTOTYPES is defined.
(asprintf, vasprintf): Provide declarations.
 
Wed Nov 10 12:43:21 1999 Philippe De Muyter <phdm@macqel.be>
Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h: Define and test `GCC_VERSION', not `HAVE_GCC_VERSION'.
 
1999-11-04 Jimmy Guo <guo@cup.hp.com>
 
* hp-symtab.h (dntt_type_fparam): Add doc_ranges, misc_kind
fields, change location type to CORE_ADDR from int.
(dntt_type_const): Name the 5th field location_type.
 
Sun Oct 24 19:11:32 1999 Andrew Cagney <cagney@b1.cygnus.com>
 
* sim-d10v.h (SIM_D10V_TS2_DMAP_REGNUM): Define.
 
1999-10-23 08:51 -0700 Zack Weinberg <zack@bitmover.com>
 
* hashtab.h: Give hash_table_t a struct tag. Add prototypes
for clear_hash_table_slot and traverse_hash_table. Correct
prototype of all_hash_table_collisions.
 
Sat Oct 23 19:00:13 1999 Andrew Cagney <cagney@b1.cygnus.com>
 
* sim-d10v.h: New file.
 
Fri Oct 15 01:47:51 1999 Vladimir Makarov <vmakarov@loony.cygnus.com>
 
* hashtab.h: New file.
 
1999-10-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h (HAVE_GCC_VERSION): New macro. Use it instead of
explicitly testing __GNUC__ and __GNUC_MINOR__.
 
(ATTRIBUTE_PRINTF): Use `__format__', not `format'.
 
1999-09-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (make_temp_file): Add a prototype.
 
Tue Sep 14 00:35:02 1999 Marc Espie <espie@cvs.openbsd.org>
 
* libiberty.h (basename): OpenBSD has a correct prototype.
(xrealloc): Remove outdated comment.
 
1999-09-07 Jeff Garzik <jgarzik@pobox.com>
 
* libiberty.h (xmemdup): Add prototype for new function.
 
1999-09-04 Steve Chamberlain <sac@pobox.com>
 
* dis-asm.h (print_insn_pj): Declare.
 
1999-09-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* obstack.h (obstack_grow, obstack_grow0): Move (char*) casts
in calls to `_obstack_memcpy' from here ...
 
(_obstack_memcpy): ... to here, except in the __STDC__ case which
doesn't need it.
 
1999-08-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (getpwd): Prototype.
 
1999-08-01 Mark Mitchell <mark@codesourcery.com>
 
* splay-tree.h (splay_tree_insert): Return the new node.
 
1999-07-11 Ian Lance Taylor <ian@zembu.com>
 
* ansidecl.h: Copy attribute support macros from egcs.
 
1999-06-22 Mark Mitchell <mark@codesourcery.com>
 
* bfdlink.h (struct bfd_link_hash_entry): Add init_function and
fini_function.
 
1999-06-20 Mark Mitchell <mark@codesourcery.com>
 
* mips.h (Elf32_Internal_Msym): New structure.
(Elf32_External_Msym): Likewise.
(ELF32_MS_REL_INDEX): New macro.
(ELF32_MS_FLAGS): Likewise.
(ELF32_MS_INFO): Likewise.
 
1999-06-14 Nick Clifton <nickc@cygnus.com>
 
* dis-asm.h (arm_toggle_regnames): New prototype.
(struct diassemble_info): New field: disassembler_options.
 
1999-04-11 Richard Henderson <rth@cygnus.com>
 
* bfdlink.h (bfd_elf_version_expr): Rename `match' to `pattern'.
Add `match' callback function.
 
1999-04-10 Richard Henderson <rth@cygnus.com>
 
* bfdlink.h (bfd_link_info): Add no_undefined.
 
1999-04-08 Nick Clifton <nickc@cygnus.com>
 
* dis-asm.h: Add prototype for print_insn_mcore.
 
1999-04-02 Mark Mitchell <mark@codesourcery.com>
 
* splay-tree.h (splay_tree_compare_pointers): Declare.
 
1999-03-30 Mark Mitchell <mark@codesourcery.com>
 
* splay-tree.h (splay_tree_compare_ints): Declare.
 
Wed Mar 24 12:46:29 1999 Andrew Cagney <cagney@amy.cygnus.com>
 
* libiberty.h (basename): Cygwin{,32} should have the prototype.
 
1999-02-22 Jim Lemke <jlemke@cygnus.com>
 
* bfdlink.h (bfd_link_info): add field "mpc860c0".
 
Mon Feb 1 21:05:46 1999 Catherine Moore <clm@cygnus.com>
 
* dis-asm.h (print_insn_i386_att): Declare.
(print_insn_i386_intel): Declare.
 
1998-12-30 Michael Meissner <meissner@cygnus.com>
 
* dis-asm.h (INIT_DISASSEMBLE_INFO_NO_ARCH): Cast STREAM and
FPRINTF_FUNC to avoid compiler warnings.
 
Wed Dec 30 16:07:14 1998 David Taylor <taylor@texas.cygnus.com>
 
* dis-asm.h: change void * to PTR (two places).
 
Mon Dec 14 09:53:31 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* demangle.h: Don't check IN_GCC anymore.
* splay-tree.h: Likewise.
 
Tue Dec 8 00:30:31 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
 
The following changes were made by Elena Zannoni
<ezannoni@kwikemart.cygnus.com> and Edith Epstein
<eepstein@sophia.cygnus.com> as part of a project to merge in
changes made by HP; HP did not create ChangeLog entries.
 
* dis-asm.h (struct disassemble_info): change the type of stream
from FILE* to void*, for use with gdb's new type GDB_FILE.
(fprintf_ftype): change FILE* parameter type to void*.
 
* demangle.h: (DMGL_EDG): new macro for Kuck and Associates
(DMGL_STYLE_MASK): modify to include Kuck and Assoc style
(demangling_styles): add new edg_demangling style
(EDG_DEMANGLING_STYLE_STRING): new macro
(EDG_DEMANGLING): new macro
(DMGL_HP): new macro, for HP/aCC compiler.
(DMGL_STYLE_MASK): modify to include new HP's style.
(demangling_styles): add new hp_demangling value.
(HP_DEMANGLING_STYLE_STRING): new macro.
(ARM_DEMANGLING): coerce to int.
(HP_DEMANGLING): new macro.
 
* hp-symtab.h: rewritten, from HP.
(quick_procedure): change type of language field to unsigned int
(quick_module): change type of language field to unsigned int
(struct dntt_type_svar): add field thread_specific.
(hp_language): add languages modcal and dmpascal.
 
Fri Nov 20 13:14:00 1998 Andrew Cagney <cagney@b1.cygnus.com>
 
* libiberty.h (basename): Add prototype for FreeBSD.
 
Fri Nov 13 19:19:11 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h: Prototype xcalloc.
 
Sun Nov 8 17:42:25 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h: Wrap problematic macros with !IN_GCC.
 
* demangle.h: Never define PARAMS().
* splay-tree.h: Likewise.
 
Sat Nov 7 18:30:20 1998 Peter Schauer <peter.schauer@regent.e-technik.tu-muenchen.de>
 
* dis-asm.h (print_insn_vax): Declare.
 
Sat Nov 7 16:04:03 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* demangle.h: Don't include gansidecl.h.
* splay-tree.h: Likewise.
 
1998-10-26 16:03 Ulrich Drepper <drepper@cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Add new field optimize.
 
Thu Oct 22 19:58:00 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* splay-tree.h: Wrap function pointer parameter declarations in
PARAMS() macro.
 
1998-10-21 Mark Mitchell <mark@markmitchell.com>
 
* splay-tree.h: New file.
 
Fri Oct 9 00:02:03 1998 Jeffrey A Law (law@cygnus.com)
 
* Merge devo and egcs include directories.
 
Sat Sep 5 12:16:33 1998 Jeffrey A Law (law@cygnus.com)
 
* getopt.h, obstack.h: Updated from gcc.
 
1998-08-03 Jason Molenda (jsm@bugshack.cygnus.com)
 
* libiberty.h (xexit): Change decl to use modern GCC attribute
to indicate exit does not return.
 
Mon Jun 1 13:48:32 1998 Jason Molenda (crash@bugshack.cygnus.com)
 
* obstack.h: Update to latest FSF version.
 
Tue Feb 24 13:05:02 1998 Doug Evans <devans@canuck.cygnus.com>
 
* dis-asm.h (disassemble_info): Member `symbol' renamed to `symbols'
and made an "asymbol **". New member num_symbols.
(INIT_DISASSEMBLE_INFO_NO_ARCH): Update.
 
Tue Feb 17 12:32:18 1998 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_fetch_register, sim_store_register): Add
register length parameter. Functions return actual length of
register.
 
Thu Feb 12 16:29:01 1998 Ian Lance Taylor <ian@cygnus.com>
 
* getopt.h: Update to latest FSF version.
 
Wed Feb 11 16:56:06 1998 Doug Evans <devans@canuck.cygnus.com>
 
* symcat.h: New file.
 
Mon Feb 2 17:13:31 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
 
* dis-asm.h (print_insn_tic30): Declare.
 
Thu Jan 22 16:23:59 1998 Fred Fish <fnf@cygnus.com>
 
* dis-asm.h: Add flag INSN_HAS_RELOC to tell disassembly
function there is a reloc on this line.
 
Mon Dec 8 11:22:23 1997 Nick Clifton <nickc@cygnus.com>
 
* dis-asm.h: Remove prototype of disasm_symaddr() as this function
no longer exists.
 
Tue Dec 2 10:20:53 1997 Nick Clifton <nickc@cygnus.com>
 
* dis-asm.h (disasm_symaddr): New prototype.
 
Mon Dec 1 11:29:35 1997 Doug Evans <devans@canuck.cygnus.com>
 
* callback.h (CB_SYSCALL): Comment out arg names in prototypes.
 
Wed Nov 26 16:47:58 1997 Michael Meissner <meissner@cygnus.com>
 
* callback.h (CB_SYSCALL): Consistantly use names for prototype
arguments.
 
Wed Nov 26 11:39:30 1997 Doug Evans <devans@canuck.cygnus.com>
 
* callback.h (CB_SYSCALL): Change byte count arguments to
{read,write}_mem to `int'. New member `magic'.
(CB_SYSCALL_MAGIC,CB_SYSCALL_INIT): New macros.
 
Tue Nov 25 01:35:52 1997 Doug Evans <devans@seba.cygnus.com>
 
* callback.h (struct stat): Move forward decl up.
(host_callback): Pass stat struct pointer to stat,fstat.
(CB_SYS_nnn): Reorganize.
(CB_SYSCALL): New members p1,p2.
(cb_host_to_target_stat): Delete fourth arg.
 
Sat Nov 22 23:34:15 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_stop_reason): Clarify sim_signalled SIGRC
argument.
 
Mon Nov 17 14:00:51 1997 Doug Evans <devans@seba.cygnus.com>
 
* callback.h (CB_TARGET_DEFS_MAP): Renamed from target_defs_map.
(host_callback): Add stat, fstat, syscall_map, errno_map, open_map,
signal_map, stat_map.
(errn_map,open_map): Renamed to cb_init_foo_map.
(cb_host_to_target_errno,cb_target_to_host_open): Renamed from
host_to_target_errno,target_to_host_open.
(cb_read_target_syscall_maps): Add prototype.
(cb_target_to_host_syscall): Likewise.
(cb_host_to_target_stat): Likewise.
(cb_syscall): Likewise.
(CB_SYS_{exit,open,close,read,write,lseek,unlink,getpid,kill,fstat,
argvlen,argv,chdir,stat,chmod,utime,time}): Define.
(CB_SYSCALL): New type.
(CB_RC): New enum.
 
Fri Nov 7 10:34:09 1997 Rob Savoye <rob@darkstar.cygnus.com>
 
* libiberty.h: Add extern "C" { so it can be used with C++
programs.
* remote-sim.h: Add extern "C" { so it can be used with C++
programs.
 
Tue Oct 14 16:07:51 1997 Nick Clifton <nickc@cygnus.com>
 
* dis-asm.h (struct disassemble_info): New field
'symbol_at_address_func'.
(INIT_DISASSEMBLE_INFO_NO_ARCH): Initialise new field with
generic_symbol_at_address.
 
Mon Oct 13 10:17:15 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h: Clarify sim_read, sim_write MEM argument.
 
Wed Sep 24 18:03:10 1997 Stu Grossman <grossman@babylon-5.cygnus.com>
 
* remote-sim.h (SIM_RC): Add a bunch of new return codes for
breakpoint stuff.
* Add functions to tell the simulator to set/clear/enable/disable
intrinsic breakpoints.
 
Thu Aug 28 19:41:42 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* libiberty.h (dupargv): Add prototype.
 
Tue Aug 26 12:25:49 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_create_inferior): Add ABFD arg. Document.
 
Mon Aug 25 10:50:51 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_open): Add ABFD arg. Document.
 
Fri Aug 8 16:43:56 1997 Doug Evans <dje@canuck.cygnus.com>
 
* dis-asm.h (arc_get_disassembler): Declare.
 
Wed Jul 30 11:39:50 1997 Per Bothner <bothner@deneb.cygnus.com>
 
* demangle.h (DMGL_JAVA): New option to request Java demangling.
 
Tue Jul 22 17:59:54 1997 Ian Lance Taylor <ian@cygnus.com>
 
* libiberty.h (PEXECUTE_*): Define.
(pexecute, pwait): Declare.
 
Fri Jun 6 13:02:33 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_kill): Mark as depreciated.
 
Fri May 23 13:43:41 1997 Fred Fish <fnf@cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Add task_link member.
 
Thu May 22 11:32:49 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h: Review documentation. Clarify restrictions on
when functions can be called.
 
Wed May 21 16:47:53 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_set_profile_size): Add prototype, document as
depreciated.
 
Tue May 20 09:32:22 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_open): Add callback struct.
(sim_set_callbacks): Drop SIM_DESC argument. Document.
(sim_size): Remove recently added SIM_DESC argument. Document.
 
Mon May 19 19:14:44 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h: Pass SD into sim_size.
 
Thu May 15 01:24:16 1997 Mark Alexander <marka@cygnus.com>
 
* obstack.h (obstack_specify_allocation_with_arg, obstack_chunkfun,
obstack_freefun): Eliminate compile warnings in gdb.
 
Tue Apr 22 10:24:34 1997 Fred Fish <fnf@cygnus.com>
 
* floatformat.h (floatformat_byteorders): Add comments for previous
formats and add floatformat_littlebyte_bigword, primarily for ARM.
Add declaration for floatformat_ieee_double_littlebyte_bigword.
 
Fri Apr 18 13:04:49 1997 Andrew Cagney <cagney@b1.cygnus.com>
 
* remote-sim.h (sim_stop): New interface - asynchronous
notification of a request to stop / suspend the running
simulation.
 
* remote-sim.h (enum sim_stop): Add sim_running and sim_polling as
states for use internal to simulators.
 
* callback.h (struct host_callback_strut): Put a magic number at
the end of the struct to allow basic checking.
(struct host_callback_struct ): Add poll_quit - so
that the console etc can be polled at regular intervals.
 
Thu Apr 17 02:17:12 1997 Doug Evans <dje@canuck.cygnus.com>
 
* remote-sim.h (struct _bfd): Declare.
(sim_load): Return SIM_RC. New arg `abfd'.
(sim_create_inferior): Return SIM_RC. Delete arg `start_address'.
 
Wed Apr 2 17:09:12 1997 Andrew Cagney <cagney@kremvax.cygnus.com>
 
* remote-sim.h (sim_trace, sim_size): Make these global. They
will go away shortly.
 
Wed Apr 2 15:23:49 1997 Doug Evans <dje@canuck.cygnus.com>
 
* remote-sim.h (SIM_OPEN_KIND, SIM_RC): New enums.
(sim_open): New argument `kind'.
 
Wed Apr 2 14:45:51 1997 Ian Lance Taylor <ian@cygnus.com>
 
* COPYING: Update FSF address.
 
Fri Mar 28 15:29:54 1997 Mike Meissner <meissner@cygnus.com>
 
* callback.h (top level): Include stdarg.h or varargs.h if
va_start is not defined.
(host_callback_struct): Make {,e}vprintf_filtered take a va_list
instead of void *, since va_list might be an array or structure
type.
 
Fri Mar 28 15:44:41 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
 
* libiberty.h (basename): Add prototype for glibc and linux.
 
Mon Mar 17 19:22:12 1997 Ian Lance Taylor <ian@cygnus.com>
 
* objalloc.h: New file.
 
Mon Mar 17 14:57:55 1997 Andrew Cagney <cagney@kremvax.cygnus.com>
 
* remote-sim.h: New file, copied in from gdb/remote-sim.h. One
day this will be placed in a directory of its own.
 
Sat Mar 15 19:00:14 1997 Ian Lance Taylor <ian@cygnus.com>
 
* obstack.h: Update to current FSF version.
 
Thu Mar 6 15:46:59 1997 Andrew Cagney <cagney@kremvax.cygnus.com>
 
* callback.h (struct host_callback_struct): Add callbacks -
flush_stdout, write_stderr, flush_stderr, vprintf_filtered,
evprintf_filtered. Delete redundant callbacks - printf_filtered.
 
Thu Feb 27 23:18:27 1997 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Remove lprefix and lprefix_len
fields.
 
Tue Feb 25 00:10:49 1997 Ian Lance Taylor <ian@cygnus.com>
 
* dis-asm.h (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize
bytes_per_chunk and display_endian.
 
Mon Feb 24 17:47:02 1997 Ian Lance Taylor <ian@cygnus.com>
 
From Eric Youngdale <eric@andante.jic.com>:
* bfdlink.h (struct bfd_elf_version_expr): Define.
(struct bfd_elf_version_deps): Define.
(struct bfd_elf_version_tree): Define.
 
Thu Feb 6 14:20:01 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
 
* dis-asm.h: (disassemble_info): Add new fields
bytes_per_chunk and display_endian to control the
display of raw instructions.
 
Fri Dec 27 22:17:37 1996 Fred Fish <fnf@cygnus.com>
 
* dis-asm.h (print_insn_tic80): Declare.
 
Sun Dec 8 17:11:12 1996 Doug Evans <dje@canuck.cygnus.com>
 
* callback.h (host_callback): New member `error'.
 
Wed Nov 20 00:40:23 1996 Doug Evans <dje@canuck.cygnus.com>
 
* callback.h: New file, moved here from gdb.
 
Mon Nov 18 16:34:00 1996 Dawn Perchik <dawn@critters.cygnus.com>
 
* libiberty.h: Checkin again; last checkin failed due to sticky tag.
 
Wed Nov 13 08:22:00 1996 Dawn Perchik <dawn@critters.cygnus.com>
 
* libiberty.h: Revert last commit due to conflicts with hpux
system headers.
 
Tue Nov 12 16:31:00 1996 Dawn Perchik <dawn@critters.cygnus.com>
 
* libiberty.h: Move prototypes from argv.c here.
 
Thu Oct 31 14:56:18 1996 Doug Evans <dje@canuck.cygnus.com>
 
* ansidecl.h (VPARAMS,VA_START): Define.
 
Fri Oct 25 12:08:04 1996 Ian Lance Taylor <ian@cygnus.com>
 
* dis-asm.h (disassemble_info): Add bytes_per_line field.
(INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize bytes_per_line field.
 
Thu Oct 24 17:10:01 1996 Ian Lance Taylor <ian@cygnus.com>
 
* dis-asm.h (disassemble_info): Add symbol field.
(INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize symbol field.
 
Thu Oct 17 11:17:40 1996 Doug Evans <dje@canuck.cygnus.com>
 
* dis-asm.h (print_insn_m32r): Declare.
 
Mon Oct 14 23:56:52 1996 Ian Lance Taylor <ian@cygnus.com>
 
* libiberty.h: Declare parameter types for xmalloc and xrealloc.
 
Thu Oct 3 13:45:27 1996 Ian Lance Taylor <ian@cygnus.com>
 
* fnmatch.h: New file.
 
Thu Oct 3 10:33:14 1996 Jeffrey A Law (law@cygnus.com)
 
* dis-asm.h (print_insn_mn10x00): Delete declaration.
(print_insn_mn10200, print_insn_mn10300): Declare.
 
Wed Oct 2 21:24:43 1996 Jeffrey A Law (law@cygnus.com)
 
* dis-asm.h (print_insn_mn10x00): Declare.
 
Mon Sep 30 13:56:11 1996 Fred Fish <fnf@cygnus.com>
 
* libiberty.h: Remove #ifndef PRIVATE_XMALLOC.
 
Sat Aug 31 13:27:06 1996 Jeffrey A Law (law@cygnus.com)
 
* dis-asm.h (print_insn_v850): Declare.
 
Tue Aug 13 16:10:30 1996 Stu Grossman (grossman@critters.cygnus.com)
 
* obstack.h: Change bcopy to memcpy. Works better on Posix
systems, which generally lack bcopy.
 
Mon Aug 12 17:03:18 1996 Stu Grossman (grossman@critters.cygnus.com)
 
* ansidecl.h: Change WIN32 to _WIN32.
 
Fri Jul 26 13:58:18 1996 Ian Lance Taylor <ian@cygnus.com>
 
* dis-asm.h: Add flavour field.
(print_insn_alpha): Declare.
(print_insn_alpha_osf, print_insn_alpha_vms): Don't declare.
(INIT_DISASSEMBLE_INFO): Initialize flavour field.
 
Tue Jul 23 17:37:58 1996 Fred Fish <fnf@cygnus.com>
 
* libiberty.h (PRIVATE_XMALLOC): Enclose xmalloc/xrealloc
definitions inside #ifndef so that programs that want to
can define PRIVATE_XMALLOC and then define xmalloc and
xrealloc anyway they want.
(basename): Document in source that we can't declare the
parameter type because it is declared inconsistently across
different systems.
 
Mon Jul 22 13:16:13 1996 Richard Henderson <rth@tamu.edu>
 
* dis-asm.h (print_insn_alpha): Don't declare.
(print_insn_alpha_osf, print_insn_alpha_vms): Declare.
 
Wed Jul 17 14:45:12 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
 
* dis-asm.h: (print_insn_d10v): Declare.
 
Mon Jul 15 16:55:38 1996 Stu Grossman (grossman@critters.cygnus.com)
 
* dis-asm.h: Get rid of decls for print_insn_i8086,
print_insn_sparc64 and print_insn_sparclite.
* (INIT_DISASSEMBLE_INFO): Split into two pieces. One,
INIT_DISASSEMBLE_INFO_NO_ARCH inits everything except for endian,
mach, and arch.
 
Fri Jul 12 10:19:27 1996 Stu Grossman (grossman@critters.cygnus.com)
 
* dis-asm.h (print_insn_i8086): Declare.
 
Wed Jul 3 16:02:39 1996 Stu Grossman (grossman@critters.cygnus.com)
 
* dis-asm.h (print_insn_sparclite): Declare.
 
Tue Jun 18 16:02:46 1996 Jeffrey A. Law <law@rtl.cygnus.com>
 
* dis-asm.h (print_insn_h8300s): Declare.
 
Tue Jun 18 15:11:33 1996 Klaus Kaempf <kkaempf@progis.de>
 
* fopen-vms.h: New file.
 
Tue Jun 4 18:58:16 1996 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Add notice_all field.
 
Fri Apr 26 10:33:12 1996 Doug Evans <dje@canuck.cygnus.com>
 
* demangle.h (#ifdef IN_GCC): #include "gansidecl.h".
(PROTO,PTR,const): Delete.
 
Mon Apr 22 17:27:42 1996 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Add traditional_format field.
 
Mon Apr 15 15:16:56 1996 Doug Evans <dje@canuck.cygnus.com>
 
* libiberty.h (choose_temp_base): Add prototype.
 
Tue Mar 12 17:29:46 1996 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (bfd_wrapped_link_hash_lookup): Declare.
(struct bfd_link_info): Add wrap_hash field.
 
Wed Feb 14 16:49:17 1996 Martin Anantharaman <martin@mail.imech.uni-duisburg.de>
 
* ieee.h (ieee_record_enum_type): Define
ieee_external_reference_info_enum.
 
Fri Feb 2 17:09:25 1996 Doug Evans <dje@charmed.cygnus.com>
 
* dis-asm.h (DISASM_RAW_INSN): Delete.
 
Tue Jan 23 09:21:47 1996 Doug Evans <dje@charmed.cygnus.com>
 
* dis-asm.h (INIT_DISASSEMBLE_INFO): Set endian to BFD_ENDIAN_UNKNOWN.
New argument FPRINTF_FUNC.
 
Mon Jan 22 16:37:59 1996 Doug Evans <dje@charmed.cygnus.com>
 
* dis-asm.h (disassemble_info): New members arch, mach, endian.
(INIT_DISASSEMBLE_INFO): Initialize them.
(DISASM_RAW_INSN{,FLAG}): Define.
 
Thu Jan 18 11:32:38 1996 Ian Lance Taylor <ian@cygnus.com>
 
* demangle.h (cplus_demangle_opname): Change opname parameter to
const char *.
(cplus_mangle_opname): Change return type and opname parameter to
const char *.
 
Fri Jan 5 00:01:22 1996 Ian Lance Taylor <ian@cygnus.com>
 
* ieee.h (enum ieee_record): Add ieee_asn_record_enum,
ieee_at_record_enum, ieee_ty_record_enum, ieee_atn_record_enum,
ieee_bb_record_enum, and ieee_be_record_enum.
 
Wed Jan 3 13:12:09 1996 Fred Fish <fnf@cygnus.com>
 
* obstack.h: Update copyright to 1996.
(_obstack_memory_used): Declare.
(obstack_memory_used): Define macro.
 
Thu Dec 28 11:42:12 1995 Ian Lance Taylor <ian@cygnus.com>
 
* libiberty.h (xstrdup): Declare.
 
Thu Dec 21 14:47:17 1995 Michael Meissner <meissner@tiktok.cygnus.com>
 
* wait.h: Protect all macros with #ifndef.
 
Tue Oct 24 21:45:40 1995 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Add static_link field.
 
Tue Sep 12 16:28:04 1995 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (struct bfd_link_callbacks): Add symbol parameter to
warning callback.
 
Fri Sep 1 13:11:51 1995 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (struct bfd_link_callbacks): Change warning callback
to take BFD, section, and address arguments.
 
Thu Aug 31 16:45:12 1995 steve chamberlain <sac@slash.cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Remove PE stuff.
 
Tue Aug 22 03:18:23 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
 
* libiberty.h: Declare xstrerror. From Pat Rankin.
 
Mon Aug 21 18:11:36 1995 steve chamberlain <sac@slash.cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Remove PE stuff.
 
Wed Aug 2 08:14:12 1995 Doug Evans <dje@canuck.cygnus.com>
 
* dis-asm.h (print_insn_sparc64): Declare.
 
Mon Jul 10 13:26:49 1995 Eric Youngdale <eric@aib.com>
 
* bfdlink.h (struct bfd_link_info): Add new field symbolic.
 
Sun Jul 2 17:48:40 1995 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Change type of base_file to
PTR.
 
Thu Jun 29 00:02:45 1995 Steve Chamberlain <sac@slash.cygnus.com>
 
* bfdlink.h (struct bfd_link_info): Added base_file member.
 
Tue Jun 20 16:40:04 1995 Steve Chamberlain <sac@slash.cygnus.com>
 
* ansidecl.h: win32s is ANSI enough.
 
Thu May 18 04:25:50 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
 
Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk)
 
* dis-asm.h (print_insn_arm): Delete declaration.
(print_insn_{little,big}_arm): New declarations.
 
* floatformat.h (floatformat_arm_ext): Declare.
 
Sat May 13 10:14:08 1995 Steve Chamberlain <sac@slash.cygnus.com>
 
* bfdlink.h (subsytem, stack_heap_parameters): New.
 
Thu May 4 14:36:42 1995 Jason Merrill <jason@phydeaux.cygnus.com>
 
* demangle.h: Don't include ansidecl.h if IN_GCC.
 
Tue Feb 21 00:37:28 1995 Jeff Law (law@snake.cs.utah.edu)
 
* hp-symtab.h: Don't use bitfield enumerations, the HP C compiler
does not handle them correctly.
 
Thu Feb 9 14:20:27 1995 Ian Lance Taylor <ian@cygnus.com>
 
* libiberty.h (basename): Don't declare parameter type; some
systems have this in their header files.
 
Wed Feb 8 17:35:38 1995 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (struct bfd_link_hash_entry): Change format of common
symbol information, to remove restrictions on maximum size and
alignment power, by using a pointer to a structure instead.
 
Mon Feb 6 14:55:32 1995 Ian Lance Taylor <ian@cygnus.com>
 
* bfdlink.h (enum bfd_link_hash_type): Rename bfd_link_hash_weak
to bfd_link_hash_undefweak. Add bfd_link_hash_defweak.
 
Mon Jan 16 21:00:23 1995 Stan Shebs <shebs@andros.cygnus.com>
 
* dis-asm.h (GDB_INIT_DISASSEMBLE_INFO, etc): Remove all
GDB-specific definitions.
 
Sun Jan 15 18:39:35 1995 Steve Chamberlain <sac@splat>
 
* dis-asm.h (print_insn_w65): Declare.
 
Thu Jan 12 17:51:17 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
 
* libiberty.h (hex_p): Fix sense of test.
 
Wed Jan 11 22:36:40 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
 
* libiberty.h (_hex_array_size, _hex_bad, _hex_value, hex_init,
hex_p, hex_value): New macros and declarations, for hex.c.
 
Fri Jan 6 17:44:14 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
 
* dis-asm.h: Make idempotent.
 
Wed Dec 14 13:08:43 1994 Stan Shebs <shebs@andros.cygnus.com>
 
* progress.h: New file, empty definitions for progress macros.
 
Fri Nov 25 00:14:05 1994 Jeff Law (law@snake.cs.utah.edu)
 
* hp-symtab.h: New file describing the debug symbols emitted
by the HP C compilers.
 
Fri Nov 11 15:48:37 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
 
* bfdlink.h (struct bfd_link_hash_entry): Change u.c.size from 24
to 26 bits, and change u.c.alignment_power from 8 to 6 bits. 6
bit in the alignment power is enough for a 64 bit address space.
 
Mon Oct 31 13:02:51 1994 Stan Shebs (shebs@andros.cygnus.com)
 
* demangle.h (cplus_mangle_opname): Declare.
 
Tue Oct 25 11:38:02 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
 
* bfdlink.h (struct bfd_link_callbacks): Fix comments for
multiple_common field.
 
Sun Sep 04 17:58:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
 
* dis-asm.h: Add support for the ARM.
 
Wed Aug 10 12:51:41 1994 Doug Evans (dje@canuck.cygnus.com)
 
* libiberty.h (strsignal): Document its existence even if we
can't declare it.
 
Tue Aug 2 14:40:03 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* os9k.h: Remove u_int16, u_int32, and owner_id typedefs and
expand their uses. Those names conflict with Mach headers.
 
Fri Jul 22 14:17:12 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
 
* bfdlink.h (struct bfd_link_hash_entry): Change u.c.size into a
bitfield. Add field u.c.alignment_power.
 
Sun Jul 10 00:26:39 1994 Ian Dall (dall@hfrd.dsto.gov.au)
 
* dis-asm.h: Add print_insn_ns32k declaration.
 
Mon Jun 20 17:13:29 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
 
* bfdlink.h (bfd_link_hash_table): Make creator a const pointer.
 
Sat Jun 18 16:09:32 1994 Stan Shebs (shebs@andros.cygnus.com)
 
* demangle.h (cplus_demangle_opname): Declare.
 
Thu Jun 16 15:19:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* bfdlink.h (struct bfd_link_info): Add new field shared.
 
Mon Jun 6 14:39:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* bfdlink.h (struct bfd_link_hash_entry): Remove written field:
not needed for all backends.
 
Thu Apr 28 19:06:50 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
 
* dis-asm.h (disassembler): Declare.
 
Fri Apr 1 00:38:17 1994 Jim Wilson (wilson@mole.gnu.ai.mit.edu)
 
* obstack.h: Delete use of IN_GCC to control whether
stddef.h or gstddef.h is included.
 
Tue Mar 22 13:06:02 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* bfdlink.h (enum bfd_link_order_type): Add bfd_data_link_order.
(struct bfd_link_order): Add data field to union.
 
Mon Mar 21 18:45:26 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* bfdlink.h (struct bfd_link_callbacks): Change bitsize argument
to add_to_set to reloc. Remove bitsize argument from constructor.
Comment that reloc_overflow, reloc_dangerous and unattached_reloc
must handle NULL pointers for reloc location.
(enum bfd_link_order_type): Add bfd_section_reloc_link_order and
bfd_symbol_reloc_link_order.
(struct bfd_link_order): Add reloc field to union.
(struct bfd_link_order_reloc): Define.
 
Mon Mar 14 12:27:50 1994 Ian Lance Taylor (ian@cygnus.com)
 
* ieee-float.h: Removed; no longer used.
 
Tue Mar 1 18:10:49 1994 Kung Hsu (kung@mexican.cygnus.com)
 
* os9k.h: os9000 target specific header file, the header of the
object file is used now.
 
Sun Feb 27 21:52:26 1994 Jim Kingdon (kingdon@deneb.cygnus.com)
 
* floatformat.h: New file, intended to replace ieee-float.h.
 
Sun Feb 20 17:15:42 1994 Ian Lance Taylor (ian@lisa.cygnus.com)
 
* ansidecl.h (ANSI_PROTOTYPES): Define if using ANSI prototypes.
 
Wed Feb 16 01:07:12 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* libiberty.h: Don't declare strsignal, to avoid conflicts with
Solaris system header files.
 
Sat Feb 12 22:11:32 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
 
* libiberty.h (xexit): Use __volatile__ to avoid losing if
compiling with gcc -traditional.
 
Thu Feb 10 14:05:41 1994 Ian Lance Taylor (ian@cygnus.com)
 
* libiberty.h: New file. Declares functions provided by
libiberty.
 
Tue Feb 8 05:19:52 1994 David J. Mackenzie (djm@thepub.cygnus.com)
 
Handle obstack_chunk_alloc returning NULL. This allows
obstacks to be used by libraries, without forcing them
to call exit or longjmp.
* obstack.h (struct obstack): Add alloc_failed flag.
_obstack_begin, _obstack_begin_1): Declare to return int, not void.
(obstack_finish): If alloc_failed, return NULL.
(obstack_base, obstack_next_free, objstack_object_size):
If alloc_failed, return 0.
(obstack_grow, obstack_grow0, obstack_1grow, obstack_ptr_grow,
obstack_int_grow, obstack_blank): If alloc_failed, do nothing that
could corrupt the obstack.
 
Mon Jan 24 15:06:05 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* bfdlink.h (struct bfd_link_callbacks): Add name, reloc_name and
addend argments to reloc_overflow callback.
 
Fri Jan 21 19:13:12 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* dis-asm.h (print_insn_big_powerpc, print_insn_little_powerpc,
print_insn_rs6000): Declare.
 
Thu Jan 6 14:15:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* bfdlink.h (struct bfd_link_callbacks): Add bitsize argument to
add_to_set field. Add new callback named constructor.
 
Thu Dec 30 10:44:06 1993 Ian Lance Taylor (ian@rtl.cygnus.com)
 
* bfdlink.h: New file for new BFD linker backend routines.
 
Mon Nov 29 10:43:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* dis-asm.h (enum dis_insn_tyupe): Remove non-ANSI trailing comma.
 
Sat Oct 2 20:42:26 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* dis-asm.h: Move comment to right place.
 
Mon Aug 9 19:03:35 1993 David J. Mackenzie (djm@thepub.cygnus.com)
 
* obstack.h (obstack_chunkfun, obstack_freefun): Add defns from
previous version. Are these Cygnus local changes?
 
Fri Aug 6 17:05:47 1993 David J. Mackenzie (djm@thepub.cygnus.com)
 
* getopt.h, obstack.h: Update to latest FSF version.
 
Mon Aug 2 14:45:29 1993 John Gilmore (gnu@cygnus.com)
 
* dis-asm.h: Move enum outside of struct defn to avoid warnings.
 
Mon Aug 2 08:49:30 1993 Stu Grossman (grossman at cygnus.com)
 
* wait.h (WEXITSTATUS, WSTOPSIG): Mask down to 8 bits. This is
for systems that store stuff into the high 16 bits of a wait
status.
 
Fri Jul 30 18:38:02 1993 John Gilmore (gnu@cygnus.com)
 
* dis-asm.h: Add new fields insn_info_valid, branch_delay_insns,
data_size, insn_type, target, target2. These are used to return
information from the instruction decoders back to the calling
program. Add comments, make more readable.
 
Mon Jul 19 22:14:14 1993 Fred Fish (fnf@deneb.cygnus.com)
 
* nlm: New directory containing NLM/NetWare includes.
 
Thu Jul 15 12:10:04 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
 
* dis-asm.h (struct disassemble_info): New field application_data.
 
Thu Jul 15 12:41:15 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* dis-asm.h: Added declaration of print_insn_m88k.
 
Fri Jul 2 10:31:59 1993 Ian Lance Taylor (ian@cygnus.com)
 
* ansidecl.h: Use ANSI macros if __mips and _SYSTYPE_SVR4 are
defined, since RISC/OS cc handles ANSI declarations in SVR4 mode
but does not define __STDC__.
 
Sun Jun 20 18:27:52 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
 
* dis-asm.h: Don't need to include ansidecl.h any more.
 
Fri Jun 18 03:22:10 1993 John Gilmore (gnu@cygnus.com)
 
* oasys.h: Eliminate "int8_type", "int16_type", "int32_type", and
their variants. These changes are coordinated with corresponding
changes in ../bfd/oasys.c.
 
Wed Jun 16 10:43:08 1993 Fred Fish (fnf@cygnus.com)
 
* bfd.h: Note that it has been removed.
 
Tue Jun 8 12:16:03 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
 
Support for H8/300-H
* dis-asm.h (print_insn_h8300, print_insn_h8300h): Declare it.
 
Tue Jun 1 07:35:03 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com)
 
* ansidecl.h (const): Don't define it if it's already defined.
 
Thu May 27 18:19:51 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
 
* dis-asm.h (print_insn_hppa): Declare it.
 
* bfd.h: Moved to bfd directory. Small stub here includes it
without requiring "-I../bfd".
 
Thu Apr 29 12:06:13 1993 Ken Raeburn (raeburn@deneb.cygnus.com)
 
* bfd.h: Updated with BSF_FUNCTION.
 
Mon Apr 26 18:15:50 1993 Steve Chamberlain (sac@thepub.cygnus.com)
 
* bfd.h, dis-asm.h: Updated with Hitachi SH.
 
Fri Apr 23 18:41:38 1993 Steve Chamberlain (sac@thepub.cygnus.com)
 
* bfd.h: Updated with alpha changes.
* dis-asm.h: Added alpha.
 
Fri Apr 16 17:35:30 1993 Jim Kingdon (kingdon@cygnus.com)
 
* bfd.h: Update for signed bfd_*get_*.
 
Thu Apr 15 09:24:21 1993 Jim Kingdon (kingdon@cygnus.com)
 
* bfd.h: Updated for file_truncated error.
 
Thu Apr 8 10:53:47 1993 Ian Lance Taylor (ian@cygnus.com)
 
* ansidecl.h: If no ANSI, define const to be empty.
 
Thu Apr 1 09:00:10 1993 Jim Kingdon (kingdon@cygnus.com)
 
* dis-asm.h: Declare a29k and i960 print_insn_*.
 
* dis-asm.h: Add print_address_func and related stuff.
 
* dis-asm.h (dis_asm_read_memory): Fix prototype.
 
Wed Mar 31 17:40:16 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* dis-asm.h: Add print_insn_sparc.
 
Wed Mar 31 17:51:42 1993 Ian Lance Taylor (ian@cygnus.com)
 
* bfd.h: Updated for BFD_RELOC_MIPS_GPREL and bfd_[gs]et_gp_size
prototypes.
 
Wed Mar 31 16:35:12 1993 Stu Grossman (grossman@cygnus.com)
 
* dis-asm.h: (disassemble_info): Fix typo in prototype of
dis_asm_memory_error().
 
Tue Mar 30 19:09:23 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* dis-asm.h (disassembler_info): Add read_memory_func,
memory_error_func, buffer, and length.
({GDB_,}INIT_DISASSEMBLE_INFO): Set them.
print_insn_*: Remove second argument.
 
Tue Mar 30 14:48:55 1993 Steve Chamberlain (sac@thepub.cygnus.com)
 
* bfd.h: Update for lma field of section.
 
Tue Mar 30 12:22:55 1993 Jim Kingdon (kingdon@cygnus.com)
 
* ansidecl.h: Use ANSI versions on AIX regardless of __STDC__.
 
Fri Mar 19 14:49:49 1993 Steve Chamberlain (sac@thepub.cygnus.com)
 
* dis-asm.h: Add h8500.
 
Thu Mar 18 13:49:09 1993 Per Bothner (bothner@rtl.cygnus.com)
 
* ieee-float.h: Moved from ../gdb.
* dis-asm.h: New file. Interface to dis-assembler.
 
Thu Mar 11 10:52:57 1993 Fred Fish (fnf@cygnus.com)
 
* demangle.h (DMGL_NO_OPTS): Add define (set to 0) to use
in place of bare 0, for readability reasons.
 
Tue Mar 2 17:50:11 1993 Fred Fish (fnf@cygnus.com)
 
* demangle.h: Replace all references to cfront with ARM.
 
Tue Feb 23 12:21:14 1993 Ian Lance Taylor (ian@cygnus.com)
 
* bfd.h: Update for new elements in JUMP_TABLE.
 
Tue Feb 16 00:51:30 1993 John Gilmore (gnu@cygnus.com)
 
* bfd.h: Update for BFD_VERSION 2.1.
 
Tue Jan 26 11:49:20 1993 Ian Lance Taylor (ian@cygnus.com)
 
* bfd.h: Update for SEC_IS_COMMON flag.
 
Tue Jan 19 12:25:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* bfd.h: Update for bfd_asymbol_value bug fix.
 
Fri Jan 8 16:37:18 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* bfd.h: Update to include ECOFF tdata and target_flavour.
 
Sun Dec 27 17:52:30 1992 Fred Fish (fnf@cygnus.com)
 
* bfd.h: Add declaration for bfd_get_size().
 
Tue Dec 22 22:42:46 1992 Fred Fish (fnf@cygnus.com)
 
* demangle.h: Protect file from multiple inclusions with
#if !defined(DEMANGLE_H)...#define DEMANGLE_H...#endif.
 
Mon Dec 21 21:25:50 1992 Stu Grossman (grossman at cygnus.com)
 
* bfd.h: Update to get hppa_core_struct from bfd.c.
 
Thu Dec 17 00:42:35 1992 John Gilmore (gnu@cygnus.com)
 
* bfd.h: Update to get tekhex tdata name change from bfd.
 
Mon Nov 9 23:55:42 1992 John Gilmore (gnu@cygnus.com)
 
* ansidecl.h: Update comments to discourage use of EXFUN.
 
Thu Nov 5 16:35:44 1992 Ian Lance Taylor (ian@cygnus.com)
 
* bfd.h: Update to bring in SEC_SHARED_LIBRARY.
 
Thu Nov 5 03:21:32 1992 John Gilmore (gnu@cygnus.com)
 
* bfd.h: Update to match EXFUN, bfd_seclet_struct, and SDEF
cleanups in bfd.
 
Wed Nov 4 07:28:05 1992 Ken Raeburn (raeburn@cygnus.com)
 
* bout.h (N_CALLNAME, N_BALNAME): Define as char-type values, so
widening works consistently.
 
Fri Oct 16 03:17:08 1992 John Gilmore (gnu@cygnus.com)
 
* getopt.h: Update to Revised Standard FSF Version.
 
Thu Oct 15 21:43:22 1992 K. Richard Pixley (rich@sendai.cygnus.com)
 
* getopt.h (struct option): use the provided enum for has_arg.
 
* demangle.h (AUTO_DEMANGLING, GNU_DEMANGLING,
LUCID_DEMANGLING): ultrix compilers require enums to be
enums and ints to be ints and casts where they meet. cast some
enums into ints.
 
Thu Oct 15 04:35:51 1992 John Gilmore (gnu@cygnus.com)
 
* bfd.h: Update after comment changes.
 
Thu Oct 8 09:03:02 1992 Steve Chamberlain (sac@thepub.cygnus.com)
 
* bfd.h (bfd_get_symbol_leading_char): new macro for getting in xvec
 
Thu Sep 3 09:10:50 1992 Stu Grossman (grossman at cygnus.com)
 
* bfd.h (struct reloc_howto_struct): size needs to be signed if
it's going to hold negative values.
 
Sun Aug 30 17:50:27 1992 Per Bothner (bothner@rtl.cygnus.com)
 
* demangle.h: New file, moved from ../gdb. Made independent
of gdb. Allow demangling style option to be passed as a
parameter to cplus_demangle(), but using the
current_demangling_style global as the default.
 
Sat Aug 29 10:07:55 1992 Fred Fish (fnf@cygnus.com)
 
* obstack.h: Merge comment change from current FSF version.
 
Thu Aug 27 12:59:29 1992 Brendan Kehoe (brendan@cygnus.com)
 
* bfd.h: add we32k
 
Tue Aug 25 15:07:47 1992 Steve Chamberlain (sac@thepub.cygnus.com)
 
* bfd.h: new after Z8000 stuff
 
Mon Aug 17 09:01:23 1992 Ken Raeburn (raeburn@cygnus.com)
 
* bfd.h: Regenerated after page/segment size changes.
 
Sat Aug 1 13:46:31 1992 Fred Fish (fnf@cygnus.com)
 
* obstack.h: Merge changes from current FSF version.
 
Mon Jul 20 21:06:23 1992 Fred Fish (fnf@cygnus.com)
 
* obstack.h (area_id, flags): Remove, replace with extra_arg,
use_extra_arg, and maybe_empty_object.
* obstack.h (OBSTACK_MAYBE_EMPTY_OBJECT, OBSTACK_MMALLOC_LIKE):
Remove, replaced by maybe_empty_object and use_extra_arg bitfields.
* obstack.h (obstack_full_begin, _obstack_begin): Remove area_id
and flags arguments.
* obstack.h (obstack_alloc_arg): New macro to set extra_arg.
 
Thu Jul 16 08:12:44 1992 Steve Chamberlain (sac@thepub.cygnus.com)
 
* bfd.h: new after adding BFD_IS_RELAXABLE
 
Sat Jul 4 03:22:23 1992 John Gilmore (gnu at cygnus.com)
 
* bfd.h: Regen after adding BSF_FILE.
 
Mon Jun 29 14:18:36 1992 Fred Fish (fnf at sunfish)
 
* obstack.h: Convert bcopy() use to memcpy(), which is more
portable, more standard, and can take advantage of gcc's builtin
functions for increased performance.
 
Thu Jun 25 04:46:08 1992 John Gilmore (gnu at cygnus.com)
 
* ansidecl.h (PARAMS): Incorporate this macro from gdb's defs.h.
It's a cleaner way to forward-declare function prototypes.
 
Fri Jun 19 15:46:32 1992 Stu Grossman (grossman at cygnus.com)
 
* bfd.h: HPPA merge.
 
Tue Jun 16 21:30:56 1992 K. Richard Pixley (rich@cygnus.com)
 
* getopt.h: gratuitous white space changes merged from other prep
releases.
 
Thu Jun 11 01:10:55 1992 John Gilmore (gnu at cygnus.com)
 
* bfd.h: Regen'd from bfd.c after removing elf_core_tdata_struct.
 
Mon May 18 17:29:03 1992 K. Richard Pixley (rich@cygnus.com)
 
* getopt.h: merged changes from make-3.62.11.
 
* getopt.h: merged changes from grep-1.6 (alpha).
 
Fri May 8 14:53:32 1992 K. Richard Pixley (rich@cygnus.com)
 
* getopt.h: merged changes from bison-1.18.
 
Sat Mar 14 17:25:20 1992 Fred Fish (fnf@cygnus.com)
 
* obstack.h: Add "area_id" and "flags" members to obstack
structure. Add obstack_chunkfun() and obstack_freefun() to
set functions explicitly. Convert maybe_empty_object to
a bit in "flags".
 
Thu Feb 27 22:01:02 1992 Per Bothner (bothner@cygnus.com)
 
* wait.h (WIFSTOPPED): Add IBM rs6000-specific version.
 
Fri Feb 21 20:49:20 1992 John Gilmore (gnu at cygnus.com)
 
* obstack.h: Add obstack_full_begin.
* bfd.h, obstack.h: Protolint.
 
Thu Jan 30 01:18:42 1992 John Gilmore (gnu at cygnus.com)
 
* bfd.h: Remove comma from enum declaration.
 
Mon Jan 27 22:01:13 1992 Steve Chamberlain (sac at cygnus.com)
 
* bfd.h : new target entr, bfd_relax_section
 
Wed Dec 18 17:19:44 1991 Stu Grossman (grossman at cygnus.com)
 
* bfd.h, ieee.h: ANSIfy enums.
 
Thu Dec 12 20:59:56 1991 John Gilmore (gnu at cygnus.com)
 
* fopen-same.h, fopen-bin.h: New files for configuring
whether fopen distinguishes binary files or not. For use
by host-dependent config files.
 
Sat Nov 30 20:46:43 1991 Steve Chamberlain (sac at rtl.cygnus.com)
 
* bfd.h: change the documentation format.
 
* created coff, elf and opcode and aout directories. Moved:
 
aout64.h ==> aout/aout64.h
ar.h ==> aout/ar.h
a.out.encap.h ==> aout/encap.h
a.out.host.h ==> aout/host.h
a.out.hp.h ==> aout/hp.h
a.out.sun4.h ==> aout/sun4.h
ranlib.h ==> aout/ranlib.h
reloc.h ==> aout/reloc.h
stab.def ==> aout/stab.def
stab.gnu.h ==> aout/stab_gnu.h
 
coff-a29k.h ==> coff/a29k.h
coff-h8300.h ==> coff/h8300.h
coff-i386.h ==> coff/i386.h
coff-i960.h ==> coff/i960.h
internalcoff.h ==> coff/internal.h
coff-m68k.h ==> coff/m68k.h
coff-m88k.h ==> coff/m88k.h
coff-mips.h ==> coff/mips.h
coff-rs6000.h ==> coff/rs6000.h
 
elf-common.h ==> elf/common.h
dwarf.h ==> elf/dwarf.h
elf-external.h ==> elf/external.h
elf-internal.h ==> elf/internal.h
 
a29k-opcode.h ==> opcode/a29k.h
arm-opcode.h ==> opcode/arm.h
h8300-opcode.h ==> opcode/h8300.h
i386-opcode.h ==> opcode/i386.h
i860-opcode.h ==> opcode/i860.h
i960-opcode.h ==> opcode/i960.h
m68k-opcode.h ==> opcode/m68k.h
m88k-opcode.h ==> opcode/m88k.h
mips-opcode.h ==> opcode/mips.h
np1-opcode.h ==> opcode/np1.h
ns32k-opcode.h ==> opcode/ns32k.h
pn-opcode.h ==> opcode/pn.h
pyr-opcode.h ==> opcode/pyr.h
sparc-opcode.h ==> opcode/sparc.h
tahoe-opcode.h ==> opcode/tahoe.h
vax-opcode.h ==> opcode/vax.h
 
 
 
Wed Nov 27 10:38:31 1991 Steve Chamberlain (sac at rtl.cygnus.com)
 
* internalcoff.h: (internal_scnhdr) took out #def dependency, now
s_nreloc and s_nlnno are always long. (internal_reloc): allways
has an offset field now.
 
Fri Nov 22 08:12:58 1991 John Gilmore (gnu at cygnus.com)
 
* coff-rs6000.h: Lint; use unsigned chars for external fields.
* internalcoff.h: Lint; cast storage classes to signed char.
 
Thu Nov 21 21:01:05 1991 Per Bothner (bothner at cygnus.com)
 
* stab.def: Remove the GNU extended type codes (e.g. N_SETT).
* aout64.h: The heuristic for distinguishing between
sunos-style and bsd-style ZMAGIC files (wrt. where the
text segment starts) is moved into (the default definition of)
the macro N_HEADER_IN_TEXT. This definition is only used
if no other definition is used - e.g. bfd/newsos3.c defines
N_HEADER_IN_TEXT(x) to be always 0 (as before).
 
Thu Nov 21 11:53:03 1991 John Gilmore (gnu at cygnus.com)
 
* aout64.h (N_TXTADDR, N_TXTOFF, N_TXTSIZE): New definitions
that should handle all uses. LOGICAL_ versions deleted.
Eliminate N_HEADER_IN_TEXT, using a_entry to determine which
kind of zmagic a.out file we are looking at.
* coff-rs6000.h: Typo.
 
Tue Nov 19 18:43:37 1991 Per Bothner (bothner at cygnus.com)
 
(Note: This is a revised entry, as was aout64.h.)
* aout64.h: Some cleanups of N_TXTADDR and N_TXTOFF:
Will now work for both old- and new-style ZMAGIC files,
depending on N_HEADER_IN_TEXT macro.
Add LOGICAL_TXTADDR, LOICAL_TXTOFF and LOGICAL_TXTSIZE
that don't count the exec header as part
of the text segment, to be consistent with bfd.
* a.out.sun4.h: Simplified/fixed for previous change.
 
Mon Nov 18 00:02:06 1991 Fred Fish (fnf at cygnus.com)
 
* dwarf.h: Update to DWARF draft 5 version from gcc2.
 
Thu Nov 14 19:44:59 1991 Per Bothner (bothner at cygnus.com)
 
* stab.def: Added defs for extended GNU symbol types,
such as N_SETT. These are normally ifdef'd out (because
of conflicts with a.out.gnu.h), but are used by bfb_stab_name().
 
Thu Nov 14 19:17:03 1991 Fred Fish (fnf at cygnus.com)
 
* elf-common.h: Add defines to support ELF symbol table code.
 
Mon Nov 11 19:01:06 1991 Fred Fish (fnf at cygnus.com)
 
* elf-internal.h, elf-external.h, elf-common.h: Add support for
note sections, which are used in ELF core files to hold copies
of various /proc structures.
 
Thu Nov 7 08:58:26 1991 Steve Chamberlain (sac at cygnus.com)
 
* internalcoff.h: took out the M88 dependency in the lineno
struct.
* coff-m88k.h: defines GET_LINENO_LNNO and PUT_LINENO_LNNO to use
32bit linno entries.
* a29k-opcode.h: fixed encoding of mtacc
 
Sun Nov 3 11:54:22 1991 Per Bothner (bothner at cygnus.com)
 
* bfd.h: Updated from ../bfd/bfd-in.h (q.v).
 
Fri Nov 1 11:13:53 1991 John Gilmore (gnu at cygnus.com)
 
* internalcoff.h: Add x_csect defines.
 
Fri Oct 25 03:18:20 1991 John Gilmore (gnu at cygnus.com)
 
* Rename COFF-related files in `coff-ARCH.h' form.
coff-a29k.h, coff-i386.h, coff-i960.h, coff-m68k.h, coff-m88k.h,
coff-mips.h, coff-rs6000.h to be exact.
 
Thu Oct 24 22:11:11 1991 John Gilmore (gnu at cygnus.com)
 
RS/6000 support, by Metin G. Ozisik, Mimi Phûông-Thåo Võ, and
John Gilmore.
 
* a.out.gnu.h: Update slightly.
* bfd.h: Add new error code, fix doc, add bfd_arch_rs6000.
* internalcoff.h: Add more F_ codes for filehdr. Add
rs/6000-dependent fields to aouthdr. Add storage classes
to syments. Add 6000-specific auxent. Add r_size in reloc.
* rs6000coff.c: New file.
 
Thu Oct 24 04:13:20 1991 Fred Fish (fnf at cygnus.com)
 
* dwarf.h: New file for dwarf support. Copied from gcc2
distribution.
 
Wed Oct 16 13:31:45 1991 John Gilmore (gnu at cygnus.com)
 
* aout64.h: Remove PAGE_SIZE defines; they are target-dependent.
Add N_FN_SEQ for N_FN symbol type used on Sequent machines.
* stab.def: Include N_FN_SEQ in table.
* bout.h: External formats of structures use unsigned chars.
 
Fri Oct 11 12:40:43 1991 Steve Chamberlain (steve at cygnus.com)
 
* bfd.h:upgrade from bfd.c
* internalcoff.h: add n_name, n_zeroes and n_offset macros
* amdcoff.h: Define OMAGIC and AOUTHDRSZ.
 
Fri Oct 11 10:58:06 1991 Per Bothner (bothner at cygnus.com)
 
* a.out.host.h: Change SEGMENT_SIZE to 0x1000 for Sony.
* bfd.h (align_power): Add (actually move) comment.
 
Tue Oct 8 15:29:32 1991 Per Bothner (bothner at cygnus.com)
 
* sys/h-rtbsd.h: Define MISSING_VFPRINT (for binutils/bucomm.c).
 
Sun Oct 6 19:24:39 1991 John Gilmore (gnu at cygnus.com)
 
* aout64.h: Move struct internal_exec to ../bfd/libaout.h so
it can be shared by all `a.out-family' code. Rename
EXTERNAL_LIST_SIZE to EXTERNAL_NLIST_SIZE. Use basic types
for nlist members, and make strx integral rather than pointer.
More commentary on n_type values.
* bout.h: Provide a struct external_exec rather than an
internal_exec.
* m68kcoff.h: Remove `tagentries' which snuck in from the i960
COFF port.
 
Fri Oct 4 01:25:59 1991 John Gilmore (gnu at cygnus.com)
 
* h8300-opcode.h: Remove `_enum' from the typedef for an enum.
* bfd.h: Update to match bfd changes.
 
* sys/h-i386mach.h, sysdep.h: Add 386 Mach host support.
 
Tue Oct 1 04:58:42 1991 John Gilmore (gnu at cygnus.com)
 
* bfd.h, elf-common.h, elf-external.h, elf-internal.h:
Add preliminary ELF support, sufficient for GDB, from Fred Fish.
* sysdep.h, sys/h-amix.h: Support Amiga SVR4.
 
* sys/h-vaxult.h: Make it work. (David Taylor <taylor@think.com>)
* a.out.vax.h: Remove unused and confusing file.
 
Mon Sep 30 12:52:35 1991 Per Bothner (bothner at cygnus.com)
 
* sysdep.h: Define NEWSOS3_SYS, and use it.
 
Fri Sep 20 13:38:21 1991 John Gilmore (gnu at cygnus.com)
 
* a.out.gnu.h (N_FN): Its value *really is* 0x1F.
Fix it, and add comments warning about or-ing N_EXT with it
and/or N_WARNING.
* aout64.h (N_FN): Fix value, add comments about N_EXT.
* stab.def (table at end): Update to show all the type
values <0x20, including low order bits. Move N_FN to
its rightful place.
 
Tue Sep 17 17:41:37 1991 Stu Grossman (grossman at cygnus.com)
 
* sys/h-irix3.h: sgi/irix support.
 
Tue Sep 17 07:52:59 1991 John Gilmore (gnu at cygint.cygnus.com)
 
* stab.def (N_DEFD): Add GNU Modula-2 debug stab, from Andrew
Beers.
 
Thu Sep 12 14:12:59 1991 John Gilmore (gnu at cygint.cygnus.com)
 
* internalcoff.h (SYMNMLEN, FILNMLEN, DIMNUM): Define these
for internalcoff, separately from the various external coff's.
* amdcoff.h, bcs88kcoff.h, i386coff.h, intel-coff.h, m68kcoff.h,
m88k-bcs.h: Prefix SYMNMLEN, FILNMLEN, and DIMNUM with E_'s for
the external struct definitions.
* ecoff.h: Remove these #define's, kludge no longer needed.
 
* sys/h-ultra3.h: Add new Ultracomputer host.
* sysdep.h: Add ULTRA3_SYM1_SYS and use it.
 
Tue Sep 10 10:11:46 1991 John Gilmore (gnu at cygint.cygnus.com)
 
* i386coff.h (LINESZ): Always 6, not based on sizeof().
(Fix from Peter Schauer <pes@regent.e-technik.tu-muenchen.de>.)
 
Wed Sep 4 08:58:37 1991 John Gilmore (gnu at cygint.cygnus.com)
 
* a.out.gnu.h, aout64.h: Add N_WARNING. Change N_FN to 0x0E,
to match SunOS and BSD. Add N_COMM as 0x12 for SunOS shared lib
support.
* stab.def: Add N_COMM to table, fix overlap comment.
 
Tue Sep 3 06:29:20 1991 John Gilmore (gnu at cygint.cygnus.com)
 
Merge with latest FSF versions of these files.
 
* stab.gnu.h: Add LAST_UNUSED_STAB_CODE.
* stab.def: Update to GPL2. Move N_WARNING out, since not a
debug symbol. Change comments, and reorder table to numeric
order. Update final table comment.
(N_DSLINE, N_BSLINE): Renumber from 0x66 and 0x68, to 0x46 and 0x48.
 
* obstack.h: GPL2. Merge.
 
Fri Aug 23 01:54:23 1991 John Gilmore (gnu at cygint.cygnus.com)
 
* a.out.gnu.h, a.out.sun4.h: Make SEGMENT_SIZE able to depend
on the particular a.out being examined.
* a.out.sun4.h: Define segment sizes for Sun-3's and Sun-4's.
* FIXME: a.out.gnu.h is almost obsolete.
* FIXME: a.out.sun4.h should be renamed a.out.sun.h now.
 
Wed Aug 21 20:32:13 1991 John Gilmore (gnu at cygint.cygnus.com)
 
* Start a ChangeLog for the includes directory.
 
* a.out.gnu.h (N_FN): Fix value -- was 15, should be 0x1E.
* stab.def: Update allocation table in comments at end,
to reflect reality as I know it.
 
Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
/sha1.h
0,0 → 1,141
/* Declarations of functions and data types used for SHA1 sum
library functions.
Copyright (C) 2000, 2001, 2003, 2005, 2006, 2008, 2010
Free Software Foundation, Inc.
 
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3, or (at your option) any
later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
 
#ifndef SHA1_H
# define SHA1_H 1
 
#include <stdio.h>
 
#if defined HAVE_LIMITS_H || _LIBC
# include <limits.h>
#endif
 
#include "ansidecl.h"
 
/* The following contortions are an attempt to use the C preprocessor
to determine an unsigned integral type that is 32 bits wide. An
alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
doing that would require that the configure script compile and *run*
the resulting executable. Locally running cross-compiled executables
is usually not possible. */
 
#ifdef _LIBC
# include <sys/types.h>
typedef u_int32_t sha1_uint32;
typedef uintptr_t sha1_uintptr;
#else
# define INT_MAX_32_BITS 2147483647
 
/* If UINT_MAX isn't defined, assume it's a 32-bit type.
This should be valid for all systems GNU cares about because
that doesn't include 16-bit systems, and only modern systems
(that certainly have <limits.h>) have 64+-bit integral types. */
 
# ifndef INT_MAX
# define INT_MAX INT_MAX_32_BITS
# endif
 
# if INT_MAX == INT_MAX_32_BITS
typedef unsigned int sha1_uint32;
# else
# if SHRT_MAX == INT_MAX_32_BITS
typedef unsigned short sha1_uint32;
# else
# if LONG_MAX == INT_MAX_32_BITS
typedef unsigned long sha1_uint32;
# else
/* The following line is intended to evoke an error.
Using #error is not portable enough. */
"Cannot determine unsigned 32-bit data type."
# endif
# endif
# endif
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* Structure to save state of computation between the single steps. */
struct sha1_ctx
{
sha1_uint32 A;
sha1_uint32 B;
sha1_uint32 C;
sha1_uint32 D;
sha1_uint32 E;
 
sha1_uint32 total[2];
sha1_uint32 buflen;
sha1_uint32 buffer[32];
};
 
 
/* Initialize structure containing state of computation. */
extern void sha1_init_ctx (struct sha1_ctx *ctx);
 
/* Starting with the result of former calls of this function (or the
initialization function update the context for the next LEN bytes
starting at BUFFER.
It is necessary that LEN is a multiple of 64!!! */
extern void sha1_process_block (const void *buffer, size_t len,
struct sha1_ctx *ctx);
 
/* Starting with the result of former calls of this function (or the
initialization function update the context for the next LEN bytes
starting at BUFFER.
It is NOT required that LEN is a multiple of 64. */
extern void sha1_process_bytes (const void *buffer, size_t len,
struct sha1_ctx *ctx);
 
/* Process the remaining bytes in the buffer and put result from CTX
in first 20 bytes following RESBUF. The result is always in little
endian byte order, so that a byte-wise output yields to the wanted
ASCII representation of the message digest.
 
IMPORTANT: On some systems it is required that RESBUF be correctly
aligned for a 32 bits value. */
extern void *sha1_finish_ctx (struct sha1_ctx *ctx, void *resbuf);
 
 
/* Put result from CTX in first 20 bytes following RESBUF. The result is
always in little endian byte order, so that a byte-wise output yields
to the wanted ASCII representation of the message digest.
 
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
extern void *sha1_read_ctx (const struct sha1_ctx *ctx, void *resbuf);
 
 
/* Compute SHA1 message digest for bytes read from STREAM. The
resulting message digest number will be written into the 20 bytes
beginning at RESBLOCK. */
extern int sha1_stream (FILE *stream, void *resblock);
 
/* Compute SHA1 message digest for LEN bytes beginning at BUFFER. The
result is always in little endian byte order, so that a byte-wise
output yields to the wanted ASCII representation of the message
digest. */
extern void *sha1_buffer (const char *buffer, size_t len, void *resblock);
 
#ifdef __cplusplus
}
#endif
 
#endif
/simple-object.h
0,0 → 1,204
/* simple-object.h -- simple routines to read and write object files
Copyright 2010 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Google.
 
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
#ifndef SIMPLE_OBJECT_H
#define SIMPLE_OBJECT_H
 
#include <stddef.h>
#include <sys/types.h>
 
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* This header file provides four types with associated functions.
They are used to read and write object files. This is a minimal
interface, intended to support the needs of gcc without bringing in
all the power and complexity of BFD. */
 
/* The type simple_object_read * is used to read an existing object
file. */
 
typedef struct simple_object_read_struct simple_object_read;
 
/* Create an simple_object_read given DESCRIPTOR, an open file
descriptor, and OFFSET, an offset within the file. The offset is
for use with archives, and should be 0 for an ordinary object file.
The descriptor must remain open until done with the returned
simple_object_read. SEGMENT_NAME is used on Mach-O and is required
on that platform: it means to only look at sections within the
segment with that name. It is ignored for other object file
formats. On error, this function returns NULL, and sets *ERRMSG to
an error string and sets *ERR to an errno value or 0 if there is no
relevant errno. */
 
extern simple_object_read *
simple_object_start_read (int descriptor, off_t offset,
const char *segment_name, const char **errmsg,
int *err);
 
/* Call PFN for each section in SIMPLE_OBJECT, passing it the section
name, offset within the file of the section contents, and length of
the section contents. The offset within the file is relative to
the offset passed to simple_object_start_read. The DATA argument
to simple_object_find_sections is passed on to PFN. If PFN returns
0, the loop is stopped and simple_object_find_sections returns. If
PFN returns non-zero, the loop continues. On success this returns
NULL. On error it returns an error string, and sets *ERR to an
errno value or 0 if there is no relevant errno. */
 
extern const char *
simple_object_find_sections (simple_object_read *simple_object,
int (*pfn) (void *data, const char *,
off_t offset, off_t length),
void *data,
int *err);
 
/* Look for the section NAME in SIMPLE_OBJECT. This returns
information for the first section NAME in SIMPLE_OBJECT. Note that
calling this multiple times is inefficient; use
simple_object_find_sections instead.
 
If found, return 1 and set *OFFSET to the offset in the file of the
section contents and set *LENGTH to the length of the section
contents. *OFFSET will be relative to the offset passed to
simple_object_start_read.
 
If the section is not found, and no error occurs, return 0 and set
*ERRMSG to NULL.
 
If an error occurs, return 0, set *ERRMSG to an error message, and
set *ERR to an errno value or 0 if there is no relevant errno. */
 
extern int
simple_object_find_section (simple_object_read *simple_object,
const char *name, off_t *offset, off_t *length,
const char **errmsg, int *err);
 
/* Release all resources associated with SIMPLE_OBJECT. This does not
close the file descriptor. */
 
extern void
simple_object_release_read (simple_object_read *);
 
/* The type simple_object_attributes holds the attributes of an object
file that matter for creating a file or ensuring that two files are
compatible. This is a set of magic numbers. */
 
typedef struct simple_object_attributes_struct simple_object_attributes;
 
/* Fetch the attributes of SIMPLE_OBJECT. This information will
persist until simple_object_attributes_release is called, even if
SIMPLE_OBJECT is closed. On error this returns NULL, sets *ERRMSG
to an error message, and sets *ERR to an errno value or 0 if there
isn't one. */
 
extern simple_object_attributes *
simple_object_fetch_attributes (simple_object_read *simple_object,
const char **errmsg, int *err);
 
/* Merge the FROM attributes into TO. If two objects with these
attributes could be linked together without error, returns NULL.
Otherwise, returns an error message, and sets *ERR to an errno
value or 0 if there isn't one. */
 
extern const char *
simple_object_attributes_merge (simple_object_attributes *to,
simple_object_attributes *from,
int *err);
 
/* Release all resources associated with ATTRS. */
 
extern void
simple_object_release_attributes (simple_object_attributes *attrs);
 
/* The type simple_object_write is used to create a new object file. */
 
typedef struct simple_object_write_struct simple_object_write;
 
/* Start creating a new object file which is like ATTRS. You must
fetch attribute information from an existing object file before you
can create a new one. There is currently no support for creating
an object file de novo. The segment name is only used on Mach-O,
where it is required. It means that all sections are created
within that segment. It is ignored for other object file formats.
On error this function returns NULL, sets *ERRMSG to an error
message, and sets *ERR to an errno value or 0 if there isn't
one. */
 
extern simple_object_write *
simple_object_start_write (simple_object_attributes *attrs,
const char *segment_name,
const char **errmsg, int *err);
 
/* The type simple_object_write_section is a handle for a section
which is being written. */
 
typedef struct simple_object_write_section_struct simple_object_write_section;
 
/* Add a section to SIMPLE_OBJECT. NAME is the name of the new
section. ALIGN is the required alignment expressed as the number
of required low-order 0 bits (e.g., 2 for alignment to a 32-bit
boundary). The section is created as containing data, readable,
not writable, not executable, not loaded at runtime. On error this
returns NULL, sets *ERRMSG to an error message, and sets *ERR to an
errno value or 0 if there isn't one. */
 
extern simple_object_write_section *
simple_object_write_create_section (simple_object_write *simple_object,
const char *name, unsigned int align,
const char **errmsg, int *err);
 
/* Add data BUFFER/SIZE to SECTION in SIMPLE_OBJECT. If COPY is
non-zero, the data will be copied into memory if necessary. If
COPY is zero, BUFFER must persist until SIMPLE_OBJECT is released.
On success this returns NULL. On error this returns an error
message, and sets *ERR to an errno value or 0 if there isn't
one. */
 
extern const char *
simple_object_write_add_data (simple_object_write *simple_object,
simple_object_write_section *section,
const void *buffer, size_t size,
int copy, int *err);
 
/* Write the complete object file to DESCRIPTOR, an open file
descriptor. This returns NULL on success. On error this returns
an error message, and sets *ERR to an errno value or 0 if there
isn't one. */
 
extern const char *
simple_object_write_to_file (simple_object_write *simple_object,
int descriptor, int *err);
 
/* Release all resources associated with SIMPLE_OBJECT, including any
simple_object_write_section's that may have been created. */
 
extern void
simple_object_release_write (simple_object_write *);
 
#ifdef __cplusplus
}
#endif
 
#endif
/fibheap.h
0,0 → 1,95
/* A Fibonacci heap datatype.
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009
Free Software Foundation, Inc.
Contributed by Daniel Berlin (dan@cgsoftware.com).
 
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
 
GCC is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
/* Fibonacci heaps are somewhat complex, but, there's an article in
DDJ that explains them pretty well:
 
http://www.ddj.com/articles/1997/9701/9701o/9701o.htm?topic=algoritms
 
Introduction to algorithms by Corman and Rivest also goes over them.
 
The original paper that introduced them is "Fibonacci heaps and their
uses in improved network optimization algorithms" by Tarjan and
Fredman (JACM 34(3), July 1987).
 
Amortized and real worst case time for operations:
 
ExtractMin: O(lg n) amortized. O(n) worst case.
DecreaseKey: O(1) amortized. O(lg n) worst case.
Insert: O(2) amortized. O(1) actual.
Union: O(1) amortized. O(1) actual. */
 
#ifndef _FIBHEAP_H_
#define _FIBHEAP_H_
 
#include "ansidecl.h"
 
#ifdef __cplusplus
extern "C" {
#endif
 
typedef long fibheapkey_t;
 
typedef struct fibheap
{
size_t nodes;
struct fibnode *min;
struct fibnode *root;
} *fibheap_t;
 
typedef struct fibnode
{
struct fibnode *parent;
struct fibnode *child;
struct fibnode *left;
struct fibnode *right;
fibheapkey_t key;
void *data;
#if defined (__GNUC__) && (!defined (SIZEOF_INT) || SIZEOF_INT < 4)
__extension__ unsigned long int degree : 31;
__extension__ unsigned long int mark : 1;
#else
unsigned int degree : 31;
unsigned int mark : 1;
#endif
} *fibnode_t;
 
extern fibheap_t fibheap_new (void);
extern fibnode_t fibheap_insert (fibheap_t, fibheapkey_t, void *);
extern int fibheap_empty (fibheap_t);
extern fibheapkey_t fibheap_min_key (fibheap_t);
extern fibheapkey_t fibheap_replace_key (fibheap_t, fibnode_t,
fibheapkey_t);
extern void *fibheap_replace_key_data (fibheap_t, fibnode_t,
fibheapkey_t, void *);
extern void *fibheap_extract_min (fibheap_t);
extern void *fibheap_min (fibheap_t);
extern void *fibheap_replace_data (fibheap_t, fibnode_t, void *);
extern void *fibheap_delete_node (fibheap_t, fibnode_t);
extern void fibheap_delete (fibheap_t);
extern fibheap_t fibheap_union (fibheap_t, fibheap_t);
 
#ifdef __cplusplus
}
#endif
 
#endif /* _FIBHEAP_H_ */
/dyn-string.h
0,0 → 1,73
/* An abstract string datatype.
Copyright (C) 1998, 1999, 2000, 2002, 2004, 2005, 2009
Free Software Foundation, Inc.
Contributed by Mark Mitchell (mark@markmitchell.com).
 
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
 
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
#ifndef DYN_STRING_H
#define DYN_STRING_H
 
#ifdef __cplusplus
extern "C" {
#endif
 
typedef struct dyn_string
{
int allocated; /* The amount of space allocated for the string. */
int length; /* The actual length of the string. */
char *s; /* The string itself, NUL-terminated. */
}* dyn_string_t;
 
/* The length STR, in bytes, not including the terminating NUL. */
#define dyn_string_length(STR) \
((STR)->length)
 
/* The NTBS in which the contents of STR are stored. */
#define dyn_string_buf(STR) \
((STR)->s)
 
/* Compare DS1 to DS2 with strcmp. */
#define dyn_string_compare(DS1, DS2) \
(strcmp ((DS1)->s, (DS2)->s))
 
 
extern int dyn_string_init (struct dyn_string *, int);
extern dyn_string_t dyn_string_new (int);
extern void dyn_string_delete (dyn_string_t);
extern char *dyn_string_release (dyn_string_t);
extern dyn_string_t dyn_string_resize (dyn_string_t, int);
extern void dyn_string_clear (dyn_string_t);
extern int dyn_string_copy (dyn_string_t, dyn_string_t);
extern int dyn_string_copy_cstr (dyn_string_t, const char *);
extern int dyn_string_prepend (dyn_string_t, dyn_string_t);
extern int dyn_string_prepend_cstr (dyn_string_t, const char *);
extern int dyn_string_insert (dyn_string_t, int, dyn_string_t);
extern int dyn_string_insert_cstr (dyn_string_t, int, const char *);
extern int dyn_string_insert_char (dyn_string_t, int, int);
extern int dyn_string_append (dyn_string_t, dyn_string_t);
extern int dyn_string_append_cstr (dyn_string_t, const char *);
extern int dyn_string_append_char (dyn_string_t, int);
extern int dyn_string_substring (dyn_string_t, dyn_string_t, int, int);
extern int dyn_string_eq (dyn_string_t, dyn_string_t);
 
#ifdef __cplusplus
}
#endif
 
#endif /* !defined (DYN_STRING_H) */
/timeval-utils.h
0,0 → 1,40
/* Basic struct timeval utilities.
Copyright (C) 2011 Free Software Foundation, Inc.
 
This file is part of the libiberty library.
Libiberty is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
 
Libiberty is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
 
You should have received a copy of the GNU Library General Public
License along with libiberty; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
#ifndef TIMEVAL_UTILS_H
#define TIMEVAL_UTILS_H
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
/* forward decl */
struct timeval;
 
extern void timeval_add (struct timeval *result,
const struct timeval *a, const struct timeval *b);
 
extern void timeval_sub (struct timeval *result,
const struct timeval *a, const struct timeval *b);
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
 
#endif /* TIMEVAL_UTILS_H */
/safe-ctype.h
0,0 → 1,150
/* <ctype.h> replacement macros.
 
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
Contributed by Zack Weinberg <zackw@stanford.edu>.
 
This file is part of the libiberty library.
Libiberty is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
 
Libiberty is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
 
You should have received a copy of the GNU Library General Public
License along with libiberty; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
/* This is a compatible replacement of the standard C library's <ctype.h>
with the following properties:
 
- Implements all isxxx() macros required by C99.
- Also implements some character classes useful when
parsing C-like languages.
- Does not change behavior depending on the current locale.
- Behaves properly for all values in the range of a signed or
unsigned char.
 
To avoid conflicts, this header defines the isxxx functions in upper
case, e.g. ISALPHA not isalpha. */
 
#ifndef SAFE_CTYPE_H
#define SAFE_CTYPE_H
 
/* Determine host character set. */
#define HOST_CHARSET_UNKNOWN 0
#define HOST_CHARSET_ASCII 1
#define HOST_CHARSET_EBCDIC 2
 
#if '\n' == 0x0A && ' ' == 0x20 && '0' == 0x30 \
&& 'A' == 0x41 && 'a' == 0x61 && '!' == 0x21
# define HOST_CHARSET HOST_CHARSET_ASCII
#else
# if '\n' == 0x15 && ' ' == 0x40 && '0' == 0xF0 \
&& 'A' == 0xC1 && 'a' == 0x81 && '!' == 0x5A
# define HOST_CHARSET HOST_CHARSET_EBCDIC
# else
# define HOST_CHARSET HOST_CHARSET_UNKNOWN
# endif
#endif
 
/* Categories. */
 
enum {
/* In C99 */
_sch_isblank = 0x0001, /* space \t */
_sch_iscntrl = 0x0002, /* nonprinting characters */
_sch_isdigit = 0x0004, /* 0-9 */
_sch_islower = 0x0008, /* a-z */
_sch_isprint = 0x0010, /* any printing character including ' ' */
_sch_ispunct = 0x0020, /* all punctuation */
_sch_isspace = 0x0040, /* space \t \n \r \f \v */
_sch_isupper = 0x0080, /* A-Z */
_sch_isxdigit = 0x0100, /* 0-9A-Fa-f */
 
/* Extra categories useful to cpplib. */
_sch_isidst = 0x0200, /* A-Za-z_ */
_sch_isvsp = 0x0400, /* \n \r */
_sch_isnvsp = 0x0800, /* space \t \f \v \0 */
 
/* Combinations of the above. */
_sch_isalpha = _sch_isupper|_sch_islower, /* A-Za-z */
_sch_isalnum = _sch_isalpha|_sch_isdigit, /* A-Za-z0-9 */
_sch_isidnum = _sch_isidst|_sch_isdigit, /* A-Za-z0-9_ */
_sch_isgraph = _sch_isalnum|_sch_ispunct, /* isprint and not space */
_sch_iscppsp = _sch_isvsp|_sch_isnvsp, /* isspace + \0 */
_sch_isbasic = _sch_isprint|_sch_iscppsp /* basic charset of ISO C
(plus ` and @) */
};
 
/* Character classification. */
extern const unsigned short _sch_istable[256];
 
#define _sch_test(c, bit) (_sch_istable[(c) & 0xff] & (unsigned short)(bit))
 
#define ISALPHA(c) _sch_test(c, _sch_isalpha)
#define ISALNUM(c) _sch_test(c, _sch_isalnum)
#define ISBLANK(c) _sch_test(c, _sch_isblank)
#define ISCNTRL(c) _sch_test(c, _sch_iscntrl)
#define ISDIGIT(c) _sch_test(c, _sch_isdigit)
#define ISGRAPH(c) _sch_test(c, _sch_isgraph)
#define ISLOWER(c) _sch_test(c, _sch_islower)
#define ISPRINT(c) _sch_test(c, _sch_isprint)
#define ISPUNCT(c) _sch_test(c, _sch_ispunct)
#define ISSPACE(c) _sch_test(c, _sch_isspace)
#define ISUPPER(c) _sch_test(c, _sch_isupper)
#define ISXDIGIT(c) _sch_test(c, _sch_isxdigit)
 
#define ISIDNUM(c) _sch_test(c, _sch_isidnum)
#define ISIDST(c) _sch_test(c, _sch_isidst)
#define IS_ISOBASIC(c) _sch_test(c, _sch_isbasic)
#define IS_VSPACE(c) _sch_test(c, _sch_isvsp)
#define IS_NVSPACE(c) _sch_test(c, _sch_isnvsp)
#define IS_SPACE_OR_NUL(c) _sch_test(c, _sch_iscppsp)
 
/* Character transformation. */
extern const unsigned char _sch_toupper[256];
extern const unsigned char _sch_tolower[256];
#define TOUPPER(c) _sch_toupper[(c) & 0xff]
#define TOLOWER(c) _sch_tolower[(c) & 0xff]
 
/* Prevent the users of safe-ctype.h from accidently using the routines
from ctype.h. Initially, the approach was to produce an error when
detecting that ctype.h has been included. But this was causing
trouble as ctype.h might get indirectly included as a result of
including another system header (for instance gnulib's stdint.h).
So we include ctype.h here and then immediately redefine its macros. */
 
#include <ctype.h>
#undef isalpha
#define isalpha(c) do_not_use_isalpha_with_safe_ctype
#undef isalnum
#define isalnum(c) do_not_use_isalnum_with_safe_ctype
#undef iscntrl
#define iscntrl(c) do_not_use_iscntrl_with_safe_ctype
#undef isdigit
#define isdigit(c) do_not_use_isdigit_with_safe_ctype
#undef isgraph
#define isgraph(c) do_not_use_isgraph_with_safe_ctype
#undef islower
#define islower(c) do_not_use_islower_with_safe_ctype
#undef isprint
#define isprint(c) do_not_use_isprint_with_safe_ctype
#undef ispunct
#define ispunct(c) do_not_use_ispunct_with_safe_ctype
#undef isspace
#define isspace(c) do_not_use_isspace_with_safe_ctype
#undef isupper
#define isupper(c) do_not_use_isupper_with_safe_ctype
#undef isxdigit
#define isxdigit(c) do_not_use_isxdigit_with_safe_ctype
#undef toupper
#define toupper(c) do_not_use_toupper_with_safe_ctype
#undef tolower
#define tolower(c) do_not_use_tolower_with_safe_ctype
 
#endif /* SAFE_CTYPE_H */
/symcat.h
0,0 → 1,55
/* Symbol concatenation utilities.
 
Copyright (C) 1998, 2000, 2010 Free Software Foundation, Inc.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
 
#ifndef SYM_CAT_H
#define SYM_CAT_H
 
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#define CONCAT2(a,b) a##b
#define CONCAT3(a,b,c) a##b##c
#define CONCAT4(a,b,c,d) a##b##c##d
#define CONCAT5(a,b,c,d,e) a##b##c##d##e
#define CONCAT6(a,b,c,d,e,f) a##b##c##d##e##f
#define STRINGX(s) #s
#else
/* Note one should never pass extra whitespace to the CONCATn macros,
e.g. CONCAT2(foo, bar) because traditonal C will keep the space between
the two labels instead of concatenating them. Instead, make sure to
write CONCAT2(foo,bar). */
#define CONCAT2(a,b) a/**/b
#define CONCAT3(a,b,c) a/**/b/**/c
#define CONCAT4(a,b,c,d) a/**/b/**/c/**/d
#define CONCAT5(a,b,c,d,e) a/**/b/**/c/**/d/**/e
#define CONCAT6(a,b,c,d,e,f) a/**/b/**/c/**/d/**/e/**/f
#define STRINGX(s) "s"
#endif
 
#define XCONCAT2(a,b) CONCAT2(a,b)
#define XCONCAT3(a,b,c) CONCAT3(a,b,c)
#define XCONCAT4(a,b,c,d) CONCAT4(a,b,c,d)
#define XCONCAT5(a,b,c,d,e) CONCAT5(a,b,c,d,e)
#define XCONCAT6(a,b,c,d,e,f) CONCAT6(a,b,c,d,e,f)
 
/* Note the layer of indirection here is typically used to allow
stringification of the expansion of macros. I.e. "#define foo
bar", "XSTRING(foo)", to yield "bar". Be aware that this only
works for __STDC__, not for traditional C which will still resolve
to "foo". */
#define XSTRING(s) STRINGX(s)
 
#endif /* SYM_CAT_H */
/ChangeLog
0,0 → 1,893
2012-01-26 Cary Coutant <ccoutant@google.com>
 
* dwarf2.h (enum dwarf_form): Add Fission extensions.
(enum dwarf_attribute): Likewise.
 
2012-01-06 Jason Merrill <jason@redhat.com>
 
PR c++/6057
PR c++/48051
PR c++/50855
PR c++/51322
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_INITIALIZER_LIST, DEMANGLE_COMPONENT_NULLARY.
 
2011-11-07 Richard Henderson <rth@redhat.com>
 
Merged from transactional-memory.
 
* demangle.h (enum gnu_v3_ctor_kinds): Add gnu_v3_object_ctor_group.
(enum gnu_v3_dtor_kinds): Add gnu_v3_object_dtor_group.
(DEMANGLE_COMPONENT_TRANSACTION_CLONE): New.
(DEMANGLE_COMPONENT_NONTRANSACTION_CLONE): New.
 
2011-10-21 Ulrich Drepper <drepper@gmail.com>
 
* obstack.h [!GNUC] (obstack_free): Avoid cast to int.
 
2011-10-21 Marc Glisse <marc.glisse@inria.fr>
 
* ansidecl.h (ENUM_BITFIELD): Always use enum in C++
 
2011-09-28 Doug Evans <dje@google.com>
 
* timeval-utils.h: New file.
 
* libiberty.h (countargv): Declare.
 
2011-09-26 Cary Coutant <ccoutant@google.com>
 
PR lto/47247
* plugin-api.h (enum ld_plugin_symbol_resolution): Add
LDPR_PREVAILING_DEF_IRONLY_EXP.
(enum ld_plugin_tag): Add LDPT_GET_SYMBOLS_V2.
 
2011-09-23 Cary Coutant <ccoutant@google.com>
 
PR 40831
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_CLONE.
 
2011-07-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
 
* xregex.h (regoff_t): Define.
 
2011-07-22 Jakub Jelinek <jakub@redhat.com>
 
* dwarf2.h (DW_AT_GNU_macros): New.
(enum dwarf_macro_record_type): New enum. Add DW_MACRO_GNU_*.
 
PR c++/49756
* libiberty.h (stack_limit_increase): New prototype.
 
2011-07-13 Sriraman Tallam <tmsriram@google.com>
* plugin-api.h
(ld_plugin_section): New struct.
(ld_plugin_get_section_count): New typedef.
(ld_plugin_get_section_type): New typedef.
(ld_plugin_get_section_name): New typedef.
(ld_plugin_get_section_contents): New typedef.
(ld_plugin_update_section_order): New typedef.
(ld_plugin_allow_section_ordering): New typedef.
(LDPT_GET_SECTION_COUNT): New enum value.
(LDPT_GET_SECTION_TYPE): New enum value.
(LDPT_GET_SECTION_NAME): New enum value.
(LDPT_GET_SECTION_CONTENTS): New enum value.
(LDPT_UPDATE_SECTION_ORDER): New enum value.
(LDPT_ALLOW_SECTION_ORDERING): New enum value.
(tv_get_section_count): New struct members.
(tv_get_section_type): New struct members.
(tv_get_section_name): New struct members.
(tv_get_section_contents): New struct members.
(tv_update_section_order): New struct members.
(tv_allow_section_ordering): New struct members.
 
2011-07-01 Joel Brobecker <brobecker@adacore.com>
 
* filenames.h (HAVE_CASE_INSENSITIVE_FILE_SYSTEM): Define
on Darwin, as well as on the systems that use a DOS-like
filesystem.
 
2011-06-22 Jakub Jelinek <jakub@redhat.com>
 
PR debug/47858
* dwarf2.h (enum dwarf_location_atom): Add DW_OP_GNU_parameter_ref.
 
2011-06-13 Jan Kratochvil <jan.kratochvil@redhat.com>
 
* demangle.h (DMGL_RET_POSTFIX): Extend the comment.
(DMGL_RET_DROP): New.
 
2011-04-30 Jakub Jelinek <jakub@redhat.com>
 
* dwarf2.h (DW_OP_GNU_const_type, DW_OP_GNU_regval_type,
DW_OP_GNU_deref_type, DW_OP_GNU_convert, DW_OP_GNU_reinterpret): New.
 
2011-04-25 Jan Kratochvil <jan.kratochvil@redhat.com>
 
* ansidecl.h (ENUM_BITFIELD): New, from gcc/system.h.
 
2011-03-31 Tristan Gingold <gingold@adacore.com>
 
* dwarf2.h (dwarf_line_number_hp_sfc_ops): New enum.
 
2011-03-24 Mark Wielaard <mjw@redhat.com>
 
* dwarf2.h (dwarf_form): Remove deprecated DW_FORM_sig8 define.
 
2010-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
 
* plugin-api.h (ld_plugin_get_view): New.
(ld_plugin_tag): Add LDPT_GET_VIEW.
(ld_plugin_tv): Add tv_get_view.
 
2011-03-16 Jakub Jelinek <jakub@redhat.com>
 
* dwarf2.h (DW_TAG_GNU_call_site, DW_TAG_GNU_call_site_parameter,
DW_AT_GNU_call_site_value, DW_AT_GNU_call_site_data_value,
DW_AT_GNU_call_site_target, DW_AT_GNU_call_site_target_clobbered,
DW_AT_GNU_tail_call, DW_AT_GNU_all_tail_call_sites,
DW_AT_GNU_all_call_sites,, DW_AT_GNU_all_source_call_sites,
DW_OP_GNU_entry_value): New.
 
2011-02-28 Kai Tietz <kai.tietz@onevision.com>
 
* filenames.h (filename_ncmp): New prototype.
 
2011-02-23 Kai Tietz <kai.tietz@onevision.com>
 
* dwarf2.h (_ELF_DWARF2_H): Renamed to
_DWARF2_H.
(DWARF2_External_LineInfo, DWARF2_Internal_LineInfo,
DWARF2_External_PubNames, DWARF2_Internal_PubNames,
DWARF2_External_CompUnit, DWARF2_Internal_CompUnit,
DWARF2_External_ARange, DWARF2_Internal_ARange): Removed.
 
2011-01-12 Iain Sandoe <iains@gcc.gnu.org>
 
* dwarf2.h: Update value for DW_AT_hi_user.
 
2010-11-16 Ian Lance Taylor <iant@google.com>
 
* simple-object.h (simple_object_attributes_merge): Declare,
replacing simple_object_attributes_compare.
 
2010-11-04 Ian Lance Taylor <iant@google.com>
 
* dwarf2.h (enum dwarf_source_language): Add DW_LANG_Go.
 
2010-11-02 Ian Lance Taylor <iant@google.com>
 
* simple-object.h: New file.
 
2010-10-15 Dave Korn <dave.korn.cygwin@gmail.com>
 
Sync LD plugin patch series (part 1/6) with src/include/.
* plugin-api.h (LDPT_GNU_LD_VERSION): New ld_plugin_tag enum member.
 
2010-10-06 Andi Kleen <ak@linux.intel.com>
 
* libiberty.h (setproctitle): Add prototype.
 
2010-09-09 Jakub Jelinek <jakub@redhat.com>
 
* dwarf2.h (DW_OP_GNU_implicit_pointer): New.
 
2010-07-06 Ken Werner <ken.werner@de.ibm.com>
 
* floatformat.h (floatformat_ieee_half_big): Add declaration.
(floatformat_ieee_half_little): Likewise.
 
2010-06-21 Rafael Espindola <espindola@google.com>
 
* plugin-api.h (ld_plugin_set_extra_library_path): New.
(ld_plugin_tag): Add LDPT_SET_EXTRA_LIBRARY_PATH.
(ld_plugin_tv): Add tv_set_extra_library_path.
 
2010-06-21 Jakub Jelinek <jakub@redhat.com>
 
* dwarf2.h (enum dwarf_type): Add DW_ATE_UTF.
 
2010-06-18 Rafael Espindola <espindola@google.com>
 
* plugin.h (ld_plugin_add_input_file, ld_plugin_add_input_library):
Make argument const.
 
2010-06-08 Tristan Gingold <gingold@adacore.com>
 
* dwarf2.h (enum dwarf_tag): Add DW_TAG_HP_Bliss_field and
DW_TAG_HP_Bliss_field_set.
(enum dwarf_attribute): Add DW_AT_HP_prologue, DW_AT_HP_epilogue,
DW_AT_HP_unit_name, DW_AT_HP_unit_size, DW_AT_HP_widened_byte_size,
DW_AT_HP_definition_points, DW_AT_HP_default_location and
DW_AT_HP_is_result_param.
(enum dwarf_type): Add DW_ATE_HP_VAX_float, DW_ATE_HP_VAX_float_d,
DW_ATE_HP_packed_decimal, DW_ATE_HP_zoned_decimal, DW_ATE_HP_edited,
DW_ATE_HP_signed_fixed, DW_ATE_HP_unsigned_fixed,
DW_ATE_HP_VAX_complex_float and DW_ATE_HP_VAX_complex_float_d.
(enum dwarf_line_number_x_ops): Add
DW_LNE_HP_source_file_correlation.
(enum dwarf_source_language): Add DW_LANG_HP_Bliss,
DW_LANG_HP_Basic91, DW_LANG_HP_Pascal91, DW_LANG_HP_IMacro,
DW_LANG_HP_Assembler.
 
2010-06-08 Laurynas Biveinis <laurynas.biveinis@gmail.com>
 
* splay-tree.h: Update copyright years.
(splay_tree_s): Document fields.
(splay_tree_new_typed_alloc): New.
 
* hashtab.h: Update copyright years.
(htab_create_typed_alloc): New.
 
2010-06-01 Rafael Espindola <espindola@google.com>
 
* plugin-api.h (ld_plugin_tag): Add LDPT_OUTPUT_NAME.
 
2010-04-26 Pedro Alves <pedro@codesourcery.com>
 
* filenames.h (PATH_SEPARATOR): Delete.
 
2010-04-23 Pedro Alves <pedro@codesourcery.com>
 
* filenames.h (IS_DIR_SEPARATOR_1): Rename from IS_DIR_SEPARATOR,
always define it independently of host, add `dos_based' parameter,
and handle it.
(PATH_SEPARATOR): Define.
(HAS_DRIVE_SPEC_1): Rename from HAS_DRIVE_SPEC, always define it
independently of host, add `dos_based' parameter, and handle it.
(IS_ABSOLUTE_PATH_1): Rename from IS_ABSOLUTE_PATH, always define
it independently of host, add `dos_based' parameter, and handle
it.
(IS_DOS_DIR_SEPARATOR, IS_DOS_ABSOLUTE_PATH)
(IS_UNIX_DIR_SEPARATOR, IS_UNIX_ABSOLUTE_PATH)
(HAS_DOS_DRIVE_SPEC): New.
(HAS_DRIVE_SPEC): Reimplement on top of HAS_DRIVE_SPEC_1.
(IS_DIR_SEPARATOR): Reimplement on top of IS_DIR_SEPARATOR_1.
(IS_ABSOLUTE_PATH): Reimplement on top of IS_ABSOLUTE_PATH_1.
* libiberty.h (dos_lbasename, unix_lbasename): Declare.
 
2010-04-20 Nick Clifton <nickc@redhat.com>
 
* sha1.h: Update copyright notice to use GPLv3.
 
2010-04-14 Doug Evans <dje@google.com>
 
* filenames.h (HAS_DRIVE_SPEC, STRIP_DRIVE_SPEC): New macros.
 
2010-04-13 Matthias Klose <doko@ubuntu.com>
 
* elf: Remove empty directory.
 
2010-04-06 Jakub Jelinek <jakub@redhat.com>
 
* dwarf2.h (DWARF2_Internal_LineInfo): Add li_max_ops_per_insn
field.
 
2010-03-23 Joseph Myers <joseph@codesourcery.com>
 
* symcat.h (CONCAT5, CONCAT6, XCONCAT5, XCONCAT6): Define.
 
2010-01-13 Joel Brobecker <brobecker@adacore.com>
 
Add new DW_AT_use_GNAT_descriptive_type CU attribute.
* dwarf2.h (dwarf_attribute): Add DW_AT_use_GNAT_descriptive_type.
 
2010-01-11 Tristan Gingold <gingold@adacore.com>
 
* demangle.h (ada_demangle): Add prototype.
 
2010-01-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
 
PR bootstrap/41771
* ansidecl.h: Fix inline test for C99 and Sun Studio cc.
 
2009-12-29 Joel Brobecker <brobecker@adacore.com>
 
* dwarf2.h (enum dwarf_attribute): Add DW_AT_GNAT_descriptive_type.
 
2009-11-06 Jonas Maebe <jonas.maebe@elis.ugent.be>
 
Add DWARF attribute value for the "Borland fastcall" calling
convention.
* elf/dwarf2.h: Add DW_CC_GNU_borland_fastcall_i386 constant.
 
2009-10-23 Kai Tietz <kai.tietz@onevision.com>
 
* splay-tree.h (libi_uhostptr_t): Add gcc specific
__extension__ for long long type case to silent cX9.
(libi_shostptr_t): Likewise.
 
2009-10-19 Rafael Avila de Espindola <espindola@google.com>
 
PR40790
* plugin-api.h: Don't include stdint.h unconditionally.
 
2009-10-15 Jakub Jelinek <jakub@redhat.com>
 
* include/dwarf2.h (DW_LANG_Python): Add comment that it is
a DWARF 4 addition.
 
2009-10-09 Rafael Espindola <espindola@google.com>
 
* plugin-api.h (ld_plugin_add_input_library): Change argument name to
libname.
 
2009-10-05 Rafael Espindola <espindola@google.com>
 
* plugin-api.h (ld_plugin_status): Add LDPS_BAD_HANDLE.
(ld_plugin_get_input_file): New.
(ld_plugin_release_input_file): New.
(ld_plugin_add_input_library): New.
(ld_plugin_message): Mark format const.
(ld_plugin_level): Add LDPT_GET_INPUT_FILE, LDPT_RELEASE_INPUT_FILE and
LDPT_ADD_INPUT_LIBRARY.
(ld_plugin_tv): Add tv_get_input_file, tv_release_input_file and
tv_add_input_library.
 
2009-10-04 Jerry Quinn <jlquinn@optonline.net>
 
* plugin-api.h: Fix compile.
 
2009-10-03 Rafael Espindola <espindola@google.com>
 
* plugin-api.h: New.
* lto-symtab.h: New.
 
2009-09-29 Jason Merrill <jason@redhat.com>
 
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_LAMBDA, DEMANGLE_COMPONENT_DEFAULT_ARG,
DEMANGLE_COMPONENT_UNNAMED_TYPE.
(struct demangle_component): Add s_unary_num.
 
2009-09-25 Dodji Seketeli <dodji@redhat.com>
 
* dwarf2.h (enum dwarf_tag): Rename DW_TAG_template_parameter_pack and
DW_TAG_formal_parameter_pack into DW_TAG_GNU_template_parameter_pack
and DW_TAG_formal_parameter_pack until DWARF 5 is out.
 
2009-09-25 Cary Coutant <ccoutant@google.com>
 
Add rest of new values from DWARF Version 4.
* dwarf2.h (DW_TAG_rvalue_reference_type, DW_TAG_template_alias):
New tags.
(DW_FORM_ref_sig8): New name for DW_FORM_sig8.
(DW_AT_main_subprogram, DW_AT_data_bit_offset, DW_AT_const_expr,
DW_AT_enum_class, DW_AT_linkage_name, DW_AT_GNU_guarded_by,
DW_AT_GNU_pt_guarded_by, DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded,
DW_AT_GNU_locks_excluded, DW_AT_GNU_exclusive_locks_required,
DW_AT_GNU_shared_locks_required, DW_AT_GNU_odr_signature): New
attributes.
(DW_LANG_Python): New language.
 
2009-09-22 Dodji Seketeli <dodji@redhat.com>
 
* dwarf2.h (enum dwarf_tag): Add
DW_TAG_template_parameter_pack and DW_TAG_formal_parameter_pack.
 
2009-07-24 Ian Lance Taylor <iant@google.com>
 
PR bootstrap/40854
* libiberty.h (xcrc32): Rename from crc32.
 
2009-07-24 Ian Lance Taylor <iant@google.com>
 
* libiberty.h (crc32): Declare.
 
2009-07-20 Cary Coutant <ccoutant@google.com>
Doug Evans <dje@google.com>
 
Add some dwarf4 values.
* dwarf2.h (enum dwarf_tag): Add DW_TAG_type_unit.
(enum dwarf_form): Add DW_FORM_sec_offset, DW_FORM_exprloc,
DW_FORM_flag_present, DW_FORM_sig8.
(enum dwarf_attribute): Add DW_AT_signature.
 
2009-07-17 Jan Kratochvil <jan.kratochvil@redhat.com>
 
* demangle.h
(enum demangle_component_type <DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS>)
(enum demangle_component_type <DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS>):
New.
 
2009-07-09 Jakub Jelinek <jakub@redhat.com>
 
* dwarf2.h (enum dwarf_location_atom): Add DW_OP_implicit_value
and DW_OP_stack_value.
 
2009-07-09 Tom Tromey <tromey@redhat.com>
 
* elf/dwarf2.h: Remove, renaming to...
* dwarf2.h: ... this.
 
2009-06-29 Tom Tromey <tromey@redhat.com>
 
* elf/dwarf2.h: New file. Merged with gdb.
 
2009-06-09 Ian Lance Taylor <ian@airs.com>
 
* ansidecl.h (ATTRIBUTE_UNUSED_LABEL): Define for C++.
 
2009-06-03 Ian Lance Taylor <iant@google.com>
 
* ansidecl.h (EXPORTED_CONST): Define.
 
2009-05-31 Ian Lance Taylor <iant@google.com>
 
* ansidecl.h: Add extern "C" when compiling with C++. Treat C++
the way we treat an ISO C compiler. Don't define inline as a
macro when compiling with C++.
* dyn-string.h: Add header guard DYN_STRING_H. Add extern "C"
when compiling with C++.
* fibheap.h: Add extern "C" when compiling with C++.
 
2009-04-22 Taras Glek <tglek@mozilla.com>
 
* hashtab.h: Update GTY annotations to new syntax.
* splay-tree.h: Likewise.
 
2009-03-17 Jason Merrill <jason@redhat.com>
 
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_FUNCTION_PARAM.
 
2008-12-10 Jason Merrill <jason@redhat.com>
 
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_FIXED_TYPE.
 
2008-11-19 Bob Wilson <bob.wilson@acm.org>
* xtensa-config.h (XCHAL_HAVE_MUL16, XCHAL_HAVE_MUL32, XCHAL_HAVE_DIV32)
(XCHAL_HAVE_MINMAX, XCHAL_HAVE_SEXT, XCHAL_HAVE_THREADPTR)
(XCHAL_HAVE_RELEASE_SYNC, XCHAL_HAVE_S32C1I): Change to 1.
(XCHAL_NUM_AREGS): Change to 32.
(XCHAL_ICACHE_SIZE, XCHAL_DCACHE_SIZE): Change to 16K.
(XCHAL_ICACHE_LINESIZE, XCHAL_DCACHE_LINESIZE): Change to 32.
(XCHAL_ICACHE_LINEWIDTH, XCHAL_DCACHE_LINEWIDTH): Change to 5.
(XCHAL_DCACHE_IS_WRITEBACK): Change to 1.
(XCHAL_DEBUGLEVEL): Change to 6.
2008-10-21 Alan Modra <amodra@bigpond.net.au>
 
* obstack.h (obstack_finish <!__GNUC__>): Cast result to void *.
 
2008-10-06 Jason Merrill <jason@redhat.com>
 
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_PACK_EXPANSION.
 
2008-09-09 Jason Merrill <jason@redhat.com>
 
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_DECLTYPE.
 
2008-07-07 Joel Brobecker <brobecker@adacore.com>
 
* safe-ctype.h: Add #include of ctype.h before redefining
the ctype.h macros.
 
2008-07-04 Joel Brobecker <brobecker@adacore.com>
 
* safe-ctype.h: Remove #error when detecting that ctype.h has been
included. Redefine the various macros provided by ctype.h as
undefined variables.
 
2008-06-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (XALLOCA, XDUP, XALLOCAVEC, XDUPVEC, XALLOCAVAR,
XDUPVAR, XOBNEWVEC, XOBNEWVAR): New.
 
2008-03-24 Ian Lance Taylor <iant@google.com>
 
* sha1.h: New file, from gnulib.
 
* md5.h: Add extern "C" when compiled with C++.
 
2008-03-21 Ian Lance Taylor <iant@google.com>
 
* filenames.h: Add extern "C" when compiled with C++.
 
2008-02-11 Bob Wilson <bob.wilson@acm.org>
 
* xtensa-config.h (XCHAL_HAVE_THREADPTR): Redefine to zero.
(XCHAL_NUM_AREGS, XCHAL_MAX_INSTRUCTION_SIZE): New.
 
2008-01-26 David Daney <ddaney@avtrex.com>
 
* demangle.h (demangle_component_type): Add
DEMANGLE_COMPONENT_JAVA_RESOURCE,
DEMANGLE_COMPONENT_COMPOUND_NAME, and
DEMANGLE_COMPONENT_CHARACTER as new enum values.
(demangle_component): Add struct s_character to union u.
 
2007-11-07 Joseph Myers <joseph@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
 
* floatformat.h (struct floatformat): Add split_half field.
(floatformat_ibm_long_double): New.
 
2007-09-06 Tom Tromey <tromey@redhat.com>
 
* libiberty.h (pex_free): Document process killing.
 
2007-08-31 Douglas Gregor <doug.gregor@gmail.com>
* demangle.h (enum demangle_component_type): Add
DEMANGLE_COMPONENT_RVALUE_REFERENCE.
 
2007-07-25 Ben Elliston <bje@au.ibm.com>
 
* ternary.h: Remove.
 
2007-07-18 Bob Wilson <bob.wilson@acm.org>
* xtensa-config.h (XCHAL_HAVE_THREADPTR): New.
(XCHAL_HAVE_RELEASE_SYNC, XCHAL_HAVE_S32C1I): New.
2007-07-17 Nick Clifton <nickc@redhat.com>
 
* COPYING3: New file. Contains version 3 of the GNU General
Public License.
 
2007-07-12 Kai Tietz <kai.tietz@onevision.com>
 
* splay-tree.h (libi_uhostptr_t, libi_shostptr_t): New types,
needed for WIN64 when a long is not wide enough for a pointer.
(splay_tree_key, splay_tree_value): Use the new types.
 
2007-05-07 Nathan Froyd <froydnj@codesourcery.com>
 
* libiberty.h (writeargv): Declare.
 
2007-04-25 Mark Mitchell <mark@codesourcery.com>
 
* demangle.h: Change license to LGPL + exception.
 
2007-03-29 Joel Brobecker <brobecker@adacore.com>
 
* filenames.h (FILENAME_CMP): Adjust define to call filename_cmp
regardless of the type of file system.
 
2007-03-06 Jan Hubicka <jh@suse.cz>
* ansidecl.h (ATTRIBUTE_COLD, ATTRIBUTE_HOT): New.
 
2007-02-09 Joseph S. Myers <joseph@codesourcery.com>
 
* libiberty.h (pex_write_input): Remove prototype.
 
2007-01-31 Vladimir Prus <vladimir@codesourcery.com>
* libiberty.h (PEX_STDERR_TO_PIPE): New define.
(PEX_BINARY_ERROR): New define.
(pex_read_err): New function.
 
2007-01-29 Simon Baldwin <simonb@google.com>
 
* demangle.h: New cplus_demangle_print_callback,
cplus_demangle_v3_callback, and java_demangle_v3_callback function
prototypes, and demangle_callbackref type definition.
 
2006-12-06 Nick Clifton <nickc@redhat.com>
 
* ansidecl.h (ATTRIBUTE_PACKED): Define.
 
2006-11-30 Andrew Stubbs <andrew.stubbs@st.com>
J"orn Rennecke <joern.rennecke@st.com>
 
PR driver/29931
* libiberty.h (make_relative_prefix_ignore_links): Declare.
 
2006-11-27 Bob Wilson <bob.wilson@acm.org>
 
* xtensa-config.h (XSHAL_ABI): New.
(XTHAL_ABI_WINDOWED, XTHAL_ABI_CALL0): New.
 
2006-04-11 Jim Blandy <jimb@codesourcery.com>
 
* libiberty.h (pex_input_file, pex_input_pipe): New declarations.
 
2006-01-18 DJ Delorie <dj@redhat.com>
 
* md5.h: Include ansidecl.h
 
2006-01-09 Bob Wilson <bob.wilson@acm.org>
 
* xtensa-config.h (XCHAL_HAVE_MUL32_HIGH): Define.
 
2005-12-30 Bob Wilson <bob.wilson@acm.org>
 
* xtensa-config.h (XCHAL_HAVE_WIDE_BRANCHES): New.
 
2005-12-10 Terry Laurenzo <tlaurenzo@gmail.com>
 
PR java/9861
* demangle.h : Add DMGL_RET_POSTFIX define to enable alternative
output format for return types
 
2005-10-31 Mark Kettenis <kettenis@gnu.org>
 
* floatformat.h (enum floatformat_byteorders): Add
floatformat_vax.
(floatformat_vax_aingle, floatformat_vax_double): Declare.
 
2005-09-26 Mark Mitchell <mark@codesourcery.com>
 
* libiberty.h (expandargv): New function.
 
2005-08-17 Mark Kettenis <kettenis@gnu.org>
 
* floatformat.h (struct floatformat): Change type of large
argument for is_valid member to `const void *'.
(floatformat_to_double): Change type of second argument to `const
void *'.
(floatformat_from_double): Change type of last argument to `void
*'.
(floatformat_is_valid): Change type of last argument to `const
void *'.
 
2005-07-12 Ben Elliston <bje@au.ibm.com>
 
* xregex2.h (regexec): Qualify this prototype with __extension__
when compiling with GNU C.
 
2005-07-03 Steve Ellcey <sje@cup.hp.com>
 
PR other/13906
* ansidecl.h (ATTRIBUTE_ALIGNED_ALIGNOF): New.
* md5.h (md5_uintptr): New.
(md5_ctx): Align buffer field.
 
2005-06-30 Daniel Berlin <dberlin@dberlin.org>
* hashtab.h (HTAB_DELETED_ENTRY): New macro.
(HTAB_EMPTY_ENTRY): New macro.
 
2005-06-20 Geoffrey Keating <geoffk@apple.com>
 
* libiberty.h (strverscmp): Prototype.
 
2005-06-06 Gabriel Dos Reis <gdr@integrable-solutions.net>
 
* libiberty.h (XOBFINISH): New.
 
2005-06-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (vsnprintf): Add format attribute.
 
2005-05-29 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h: Add ATTRIBUTE_FPTR_PRINTF.
 
2005-05-28 Eli Zaretskii <eliz@gnu.org>
 
* libiberty.h: (snprintf) [!HAVE_DECL_SNPRINTF]: Declare if
needed.
(vsnprintf) [!HAVE_DECL_VSNPRINTF]: Declare if needed.
 
2005-05-25 Richard Henderson <rth@redhat.com>
 
* demangle.h (DEMANGLE_COMPONENT_HIDDEN_ALIAS): New.
 
2005-05-24 Gabriel Dos Reis <gdr@integrable-solutions.net>
 
* libiberty.h (ACONCAT): Properly cast value of alloca().
 
* ansidecl.h (ATTRIBUTE_UNUSED_LABEL): Don't define if
__cplusplus.
 
2005-05-12 Steve Ellcey <sje@cup.hp.com>
 
libiberty.h: Do not define empty basename prototype.
 
2005-05-10 Nick Clifton <nickc@redhat.com>
 
* Update the address and phone number of the FSF organization in
the GPL notices in the following files:
COPYING, ansidecl.h, bfdlink.h, bout.h, demangle.h, dis-asm.h,
dyn-string.h, fibheap.h, filenames.h, floatformat.h,
fnmatch.h, gdbm.h, getopt.h, hashtab.h, hp-symtab.h, ieee.h,
libiberty.h, md5.h, oasys.h, objalloc.h, obstack.h, os9k.h,
partition.h, progress.h, safe-ctype.h, sort.h, splay-tree.h,
symcat.h, ternary.h, xregex2.h, xtensa-config.h,
xtensa-isa-internal.h, xtensa-isa.h
 
2005-04-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (unlock_std_streams): New.
 
2005-04-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* hashtab.h, libiberty.h, objalloc.h, splay-tree.h, ternary.h:
Don't use the PTR macro.
 
* sort.h: Don't use the PARAMS macro.
 
2005-04-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (unlock_stream): New.
 
2005-04-13 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (fopen_unlocked, fdopen_unlocked, freopen_unlocked):
Remove parameter names.
 
2005-04-11 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (fopen_unlocked, fdopen_unlocked, freopen_unlocked):
Provide prototypes for new functions.
 
2005-03-29 Ian Lance Taylor <ian@airs.com>
 
* libiberty.h: Fix indentation.
 
2005-03-28 Ian Lance Taylor <ian@airs.com>
 
* libiberty.h: Include <stdio.h>.
(PEX_RECORD_TIMES, PEX_USE_PIPES, PEX_SAVE_TEMPS): Define.
(PEX_LAST, PEX_SEARCH, PEX_SUFFIX, PEX_STDERR_TO_STDOUT): Define.
(PEX_BINARY_INPUT, PEX_BINARY_OUTPUT): Define.
(pex_init, pex_run, pex_read_output): Declare.
(pex_get_status, pex_get_times, pex_free, pex_one): Declare.
(struct pex_time): Define.
 
2005-03-28 Mark Mitchell <mark@codesourcery.com>
 
* libiberty.h (ffs): Declare, if necessary.
 
2005-03-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
 
* xregex2.h (_RE_ARGS): Remove definition and uses.
 
2005-03-27 Gabriel Dos Reis <gdr@integreable-solutions.net>
 
* ternary.h: Don't use PARAMS anymore.
 
2005-03-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
 
* partition.h: Remove use of PARAMS.
* obstack.h: Remove conditional prototypes __STDC__.
* objalloc.h: Remove use of PARAMS.
* splay-tree.h: Likewise.
 
2005-03-27 Gabriel Dos Reis <gdr@integrable-solutions.net>
 
* md5.h: Remove definition and uses of __P.
* dyn-string.h: Remove uses of PARAMS.
* fibheap.h: Likewise.
* floatformat.h: Likewise.
* hashtab.h: Likewise.
 
2005-03-26 Gabriel Dos Reis <gdr@integrable-solutions.net>
 
* demangle.h: Remove uses of PARAMS.
 
* libiberty.h (ANSI_PROTOTYPES): Remove guard since
ANSI_PROTOTYPES is always assumed.
Remove uses of PARAMS throughout.
 
2005-03-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (xstrndup): Declare.
 
2005-03-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* libiberty.h (make_relative_prefix): Add ATTRIBUTE_MALLOC.
 
2005-03-09 Mark Mitchell <mark@codesourcery.com>
 
* libiberty.h (gettimeofday): Declare.
 
2005-03-01 Jan Beulich <jbeulich@novell.com>
 
* libiberty.h: Declare unlink_if_ordinary.
 
2005-02-14 Paolo Bonzini <bonzini@gnu.org>
 
PR bootstrap/19818
* ansidecl.h (PARAMS): Guard from redefinition.
 
2004-12-11 Ben Elliston <bje@au.ibm.com>
 
* fibheap.h (struct fibnode): Only use unsigned long bitfields
when __GNUC__ is defined and ints are less than 32-bits wide.
 
2004-10-07 Bob Wilson <bob.wilson@acm.org>
 
* xtensa-config.h (XSHAL_USE_ABSOLUTE_LITERALS,
XCHAL_HAVE_PREDICTED_BRANCHES, XCHAL_INST_FETCH_WIDTH): New.
(XCHAL_EXTRA_SA_SIZE, XCHAL_EXTRA_SA_ALIGN): Delete.
 
2004-09-13 Aaron W. LaFramboise <aaronavay62@aaronwl.com>
 
* libiberty.h (basename): Prototype for __MINGW32__.
 
2004-09-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
 
* ansidecl.h (ATTRIBUTE_SENTINEL): Define.
* libiberty.h (concat, reconcat, concat_length, concat_copy,
concat_copy2): Use ATTRIBUTE_SENTINEL.
 
2004-08-02 Gabriel Dos Reis <gdr@integrable-solutions.net>
 
* libiberty.h (XDELETE, XDELETEVEC, XRESIZEVEC): Remove any
const-qualification before disposal.
 
2004-07-24 Bernardo Innocenti <bernie@develer.com>
 
* ansidecl.h (ARG_UNUSED): New Macro.
 
2004-07-24 Bernardo Innocenti <bernie@develer.com>
 
* libiberty.h (XNEW, XCNEW, XNEWVEC, XCNEWVEC, XOBNEW): Move here from
libcpp/internal.h.
(XDELETE, XRESIZEVEC, XDELETEVEC, XNEWVAR, XCNEWVAR, XRESIZEVAR): New
macros.
 
2004-07-21 Paolo Bonzini <bonzini@gnu.org>
 
* ansidecl.h (ATTRIBUTE_PURE): New.
 
2004-07-13 Bernardo Innocenti <bernie@develer.com>
 
* libiberty.h (ASTRDUP): Add casts required for stricter
type conversion rules of C++.
* obstack.h (obstack_free): Likewise.
 
2004-05-04 Andreas Jaeger <aj@suse.de>
 
* demangle.h: Do not use C++ reserved keyword typename as
parameter for cplus_demangle_fill_builtin_type.
 
2004-04-22 Richard Henderson <rth@redhat.com>
 
* hashtab.h (struct htab): Add size_prime_index.
 
2004-04-13 Jeff Law <law@redhat.com>
 
* hashtab.h (htab_remove_elt_with_hash): Prototype new function.
 
2004-03-30 Zack Weinberg <zack@codesourcery.com>
 
* hashtab.h, splay-tree.h: Use new shorter form of GTY markers.
 
2004-02-24 Ian Lance Taylor <ian@wasabisystems.com>
 
* dyn-string.h: Update copyright date.
 
2004-02-23 Ian Lance Taylor <ian@wasabisystems.com>
 
* dyn-string.h: Remove test of IN_LIBGCC2 and IN_GLIBCPP_V3 and
the associated #defines.
 
2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
 
* demangle.h: Instead of checking ANSI_PROTOTYPES, just include
"libiberty.h".
 
* demangle.h: If ANSI_PROTOTYPES is defined, include <stddef.h>.
 
* demangle.h (enum demangle_component_type): Define.
(struct demangle_operator_info): Declare.
(struct demangle_builtin_type_info): Declare.
(struct demangle_component): Define.
(cplus_demangle_fill_component): Declare.
(cplus_demangle_fill_name): Declare.
(cplus_demangle_fill_builtin_type): Declare.
(cplus_demangle_fill_operator): Declare.
(cplus_demangle_fill_extended_operator): Declare.
(cplus_demangle_fill_ctor, cplus_demangle_fill_dtor): Declare.
(cplus_demangle_v3_components): Declare.
(cplus_demangle_print): Declare.
 
For older changes see ChangeLog-9103
Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
/getopt.h
0,0 → 1,144
/* Declarations for getopt.
Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998, 2000,
2002 Free Software Foundation, Inc.
 
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@gnu.org.
 
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
USA. */
 
#ifndef _GETOPT_H
#define _GETOPT_H 1
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* For communication from `getopt' to the caller.
When `getopt' finds an option that takes an argument,
the argument value is returned here.
Also, when `ordering' is RETURN_IN_ORDER,
each non-option ARGV-element is returned here. */
 
extern char *optarg;
 
/* Index in ARGV of the next element to be scanned.
This is used for communication to and from the caller
and for communication between successive calls to `getopt'.
 
On entry to `getopt', zero means this is the first call; initialize.
 
When `getopt' returns -1, this is the index of the first of the
non-option elements that the caller should itself scan.
 
Otherwise, `optind' communicates from one call to the next
how much of ARGV has been scanned so far. */
 
extern int optind;
 
/* Callers store zero here to inhibit the error message `getopt' prints
for unrecognized options. */
 
extern int opterr;
 
/* Set to an option character which was unrecognized. */
 
extern int optopt;
 
/* Describe the long-named options requested by the application.
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
of `struct option' terminated by an element containing a name which is
zero.
 
The field `has_arg' is:
no_argument (or 0) if the option does not take an argument,
required_argument (or 1) if the option requires an argument,
optional_argument (or 2) if the option takes an optional argument.
 
If the field `flag' is not NULL, it points to a variable that is set
to the value given in the field `val' when the option is found, but
left unchanged if the option is not found.
 
To have a long-named option do something other than set an `int' to
a compiled-in constant, such as set a value from `optarg', set the
option's `flag' field to zero and its `val' field to a nonzero
value (the equivalent single-letter option character, if there is
one). For long options that have a zero `flag' field, `getopt'
returns the contents of the `val' field. */
 
struct option
{
#if defined (__STDC__) && __STDC__
const char *name;
#else
char *name;
#endif
/* has_arg can't be an enum because some compilers complain about
type mismatches in all the code that assumes it is an int. */
int has_arg;
int *flag;
int val;
};
 
/* Names for the values of the `has_arg' field of `struct option'. */
 
#define no_argument 0
#define required_argument 1
#define optional_argument 2
 
#if defined (__STDC__) && __STDC__
/* HAVE_DECL_* is a three-state macro: undefined, 0 or 1. If it is
undefined, we haven't run the autoconf check so provide the
declaration without arguments. If it is 0, we checked and failed
to find the declaration so provide a fully prototyped one. If it
is 1, we found it so don't provide any declaration at all. */
#if !HAVE_DECL_GETOPT
#if defined (__GNU_LIBRARY__) || defined (HAVE_DECL_GETOPT)
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in unistd.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
extern int getopt (int argc, char *const *argv, const char *shortopts);
#else
#ifndef __cplusplus
extern int getopt ();
#endif /* __cplusplus */
#endif
#endif /* !HAVE_DECL_GETOPT */
 
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
const struct option *longopts, int *longind);
extern int getopt_long_only (int argc, char *const *argv,
const char *shortopts,
const struct option *longopts, int *longind);
 
/* Internal only. Users should not call this directly. */
extern int _getopt_internal (int argc, char *const *argv,
const char *shortopts,
const struct option *longopts, int *longind,
int long_only);
#else /* not __STDC__ */
extern int getopt ();
extern int getopt_long ();
extern int getopt_long_only ();
 
extern int _getopt_internal ();
#endif /* __STDC__ */
 
#ifdef __cplusplus
}
#endif
 
#endif /* getopt.h */
/xregex.h
0,0 → 1,29
/* This file redefines all regex external names before including
a renamed copy of glibc's regex.h. */
 
#ifndef _XREGEX_H
#define _XREGEX_H 1
 
# define regfree xregfree
# define regexec xregexec
# define regcomp xregcomp
# define regerror xregerror
# define regoff_t xregoff_t
# define re_set_registers xre_set_registers
# define re_match_2 xre_match_2
# define re_match xre_match
# define re_search xre_search
# define re_compile_pattern xre_compile_pattern
# define re_set_syntax xre_set_syntax
# define re_search_2 xre_search_2
# define re_compile_fastmap xre_compile_fastmap
# define re_syntax_options xre_syntax_options
# define re_max_failures xre_max_failures
 
# define _REGEX_RE_COMP
# define re_comp xre_comp
# define re_exec xre_exec
 
#include "xregex2.h"
 
#endif /* xregex.h */
/filenames.h
0,0 → 1,91
/* Macros for taking apart, interpreting and processing file names.
 
These are here because some non-Posix (a.k.a. DOSish) systems have
drive letter brain-damage at the beginning of an absolute file name,
use forward- and back-slash in path names interchangeably, and
some of them have case-insensitive file names.
 
Copyright 2000, 2001, 2007, 2010 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
 
#ifndef FILENAMES_H
#define FILENAMES_H
 
#ifdef __cplusplus
extern "C" {
#endif
 
#if defined(__MSDOS__) || defined(_WIN32) || defined(__OS2__) || defined (__CYGWIN__)
# ifndef HAVE_DOS_BASED_FILE_SYSTEM
# define HAVE_DOS_BASED_FILE_SYSTEM 1
# endif
# ifndef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
# define HAVE_CASE_INSENSITIVE_FILE_SYSTEM 1
# endif
# define HAS_DRIVE_SPEC(f) HAS_DOS_DRIVE_SPEC (f)
# define IS_DIR_SEPARATOR(c) IS_DOS_DIR_SEPARATOR (c)
# define IS_ABSOLUTE_PATH(f) IS_DOS_ABSOLUTE_PATH (f)
#else /* not DOSish */
# if defined(__APPLE__)
# ifndef HAVE_CASE_INSENSITIVE_FILE_SYSTEM
# define HAVE_CASE_INSENSITIVE_FILE_SYSTEM 1
# endif
# endif /* __APPLE__ */
# define HAS_DRIVE_SPEC(f) (0)
# define IS_DIR_SEPARATOR(c) IS_UNIX_DIR_SEPARATOR (c)
# define IS_ABSOLUTE_PATH(f) IS_UNIX_ABSOLUTE_PATH (f)
#endif
 
#define IS_DIR_SEPARATOR_1(dos_based, c) \
(((c) == '/') \
|| (((c) == '\\') && (dos_based)))
 
#define HAS_DRIVE_SPEC_1(dos_based, f) \
((f)[0] && ((f)[1] == ':') && (dos_based))
 
/* Remove the drive spec from F, assuming HAS_DRIVE_SPEC (f).
The result is a pointer to the remainder of F. */
#define STRIP_DRIVE_SPEC(f) ((f) + 2)
 
#define IS_DOS_DIR_SEPARATOR(c) IS_DIR_SEPARATOR_1 (1, c)
#define IS_DOS_ABSOLUTE_PATH(f) IS_ABSOLUTE_PATH_1 (1, f)
#define HAS_DOS_DRIVE_SPEC(f) HAS_DRIVE_SPEC_1 (1, f)
 
#define IS_UNIX_DIR_SEPARATOR(c) IS_DIR_SEPARATOR_1 (0, c)
#define IS_UNIX_ABSOLUTE_PATH(f) IS_ABSOLUTE_PATH_1 (0, f)
 
/* Note that when DOS_BASED is true, IS_ABSOLUTE_PATH accepts d:foo as
well, although it is only semi-absolute. This is because the users
of IS_ABSOLUTE_PATH want to know whether to prepend the current
working directory to a file name, which should not be done with a
name like d:foo. */
#define IS_ABSOLUTE_PATH_1(dos_based, f) \
(IS_DIR_SEPARATOR_1 (dos_based, (f)[0]) \
|| HAS_DRIVE_SPEC_1 (dos_based, f))
 
extern int filename_cmp (const char *s1, const char *s2);
#define FILENAME_CMP(s1, s2) filename_cmp(s1, s2)
 
extern int filename_ncmp (const char *s1, const char *s2,
size_t n);
 
#ifdef __cplusplus
}
#endif
 
#endif /* FILENAMES_H */
/COPYING3
0,0 → 1,674
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
 
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
 
Preamble
 
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
 
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
 
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
 
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
 
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
 
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
 
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
 
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
 
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
 
The precise terms and conditions for copying, distribution and
modification follow.
 
TERMS AND CONDITIONS
 
0. Definitions.
 
"This License" refers to version 3 of the GNU General Public License.
 
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
 
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
 
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
 
A "covered work" means either the unmodified Program or a work based
on the Program.
 
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
 
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
 
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
 
1. Source Code.
 
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
 
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
 
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
 
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
 
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
 
The Corresponding Source for a work in source code form is that
same work.
 
2. Basic Permissions.
 
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
 
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
 
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
 
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
 
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
 
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
 
4. Conveying Verbatim Copies.
 
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
 
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
 
5. Conveying Modified Source Versions.
 
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
 
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
 
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
 
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
 
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
 
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
 
6. Conveying Non-Source Forms.
 
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
 
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
 
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
 
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
 
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
 
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
 
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
 
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
 
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
 
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
 
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
 
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
 
7. Additional Terms.
 
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
 
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
 
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
 
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
 
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
 
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
 
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
 
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
 
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
 
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
 
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
 
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
 
8. Termination.
 
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
 
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
 
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
 
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
 
9. Acceptance Not Required for Having Copies.
 
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
 
10. Automatic Licensing of Downstream Recipients.
 
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
 
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
 
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
 
11. Patents.
 
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
 
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
 
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
 
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
 
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
 
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
 
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
 
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
 
12. No Surrender of Others' Freedom.
 
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
 
13. Use with the GNU Affero General Public License.
 
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
 
14. Revised Versions of this License.
 
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
 
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
 
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
 
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
 
15. Disclaimer of Warranty.
 
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 
16. Limitation of Liability.
 
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
 
17. Interpretation of Sections 15 and 16.
 
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
 
END OF TERMS AND CONDITIONS
 
How to Apply These Terms to Your New Programs
 
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
 
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
 
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
 
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
 
Also add information on how to contact you by electronic and paper mail.
 
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
 
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
 
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
 
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
 
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
/plugin-api.h
0,0 → 1,400
/* plugin-api.h -- External linker plugin API. */
 
/* Copyright 2009, 2010 Free Software Foundation, Inc.
Written by Cary Coutant <ccoutant@google.com>.
 
This file is part of binutils.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
MA 02110-1301, USA. */
 
/* This file defines the interface for writing a linker plugin, which is
described at < http://gcc.gnu.org/wiki/whopr/driver >. */
 
#ifndef PLUGIN_API_H
#define PLUGIN_API_H
 
#ifdef HAVE_STDINT_H
#include <stdint.h>
#elif defined(HAVE_INTTYPES_H)
#include <inttypes.h>
#endif
#include <sys/types.h>
#if !defined(HAVE_STDINT_H) && !defined(HAVE_INTTYPES_H) && \
!defined(UINT64_MAX) && !defined(uint64_t)
#error can not find uint64_t type
#endif
 
#ifdef __cplusplus
extern "C"
{
#endif
 
/* Status code returned by most API routines. */
 
enum ld_plugin_status
{
LDPS_OK = 0,
LDPS_NO_SYMS, /* Attempt to get symbols that haven't been added. */
LDPS_BAD_HANDLE, /* No claimed object associated with given handle. */
LDPS_ERR
/* Additional Error codes TBD. */
};
 
/* The version of the API specification. */
 
enum ld_plugin_api_version
{
LD_PLUGIN_API_VERSION = 1
};
 
/* The type of output file being generated by the linker. */
 
enum ld_plugin_output_file_type
{
LDPO_REL,
LDPO_EXEC,
LDPO_DYN
};
 
/* An input file managed by the plugin library. */
 
struct ld_plugin_input_file
{
const char *name;
int fd;
off_t offset;
off_t filesize;
void *handle;
};
 
/* A symbol belonging to an input file managed by the plugin library. */
 
struct ld_plugin_symbol
{
char *name;
char *version;
int def;
int visibility;
uint64_t size;
char *comdat_key;
int resolution;
};
 
/* An object's section. */
 
struct ld_plugin_section
{
const void* handle;
unsigned int shndx;
};
 
/* Whether the symbol is a definition, reference, or common, weak or not. */
 
enum ld_plugin_symbol_kind
{
LDPK_DEF,
LDPK_WEAKDEF,
LDPK_UNDEF,
LDPK_WEAKUNDEF,
LDPK_COMMON
};
 
/* The visibility of the symbol. */
 
enum ld_plugin_symbol_visibility
{
LDPV_DEFAULT,
LDPV_PROTECTED,
LDPV_INTERNAL,
LDPV_HIDDEN
};
 
/* How a symbol is resolved. */
 
enum ld_plugin_symbol_resolution
{
LDPR_UNKNOWN = 0,
 
/* Symbol is still undefined at this point. */
LDPR_UNDEF,
 
/* This is the prevailing definition of the symbol, with references from
regular object code. */
LDPR_PREVAILING_DEF,
 
/* This is the prevailing definition of the symbol, with no
references from regular objects. It is only referenced from IR
code. */
LDPR_PREVAILING_DEF_IRONLY,
 
/* This definition was pre-empted by a definition in a regular
object file. */
LDPR_PREEMPTED_REG,
 
/* This definition was pre-empted by a definition in another IR file. */
LDPR_PREEMPTED_IR,
 
/* This symbol was resolved by a definition in another IR file. */
LDPR_RESOLVED_IR,
 
/* This symbol was resolved by a definition in a regular object
linked into the main executable. */
LDPR_RESOLVED_EXEC,
 
/* This symbol was resolved by a definition in a shared object. */
LDPR_RESOLVED_DYN,
 
/* This is the prevailing definition of the symbol, with no
references from regular objects. It is only referenced from IR
code, but the symbol is exported and may be referenced from
a dynamic object (not seen at link time). */
LDPR_PREVAILING_DEF_IRONLY_EXP
};
 
/* The plugin library's "claim file" handler. */
 
typedef
enum ld_plugin_status
(*ld_plugin_claim_file_handler) (
const struct ld_plugin_input_file *file, int *claimed);
 
/* The plugin library's "all symbols read" handler. */
 
typedef
enum ld_plugin_status
(*ld_plugin_all_symbols_read_handler) (void);
 
/* The plugin library's cleanup handler. */
 
typedef
enum ld_plugin_status
(*ld_plugin_cleanup_handler) (void);
 
/* The linker's interface for registering the "claim file" handler. */
 
typedef
enum ld_plugin_status
(*ld_plugin_register_claim_file) (ld_plugin_claim_file_handler handler);
 
/* The linker's interface for registering the "all symbols read" handler. */
 
typedef
enum ld_plugin_status
(*ld_plugin_register_all_symbols_read) (
ld_plugin_all_symbols_read_handler handler);
 
/* The linker's interface for registering the cleanup handler. */
 
typedef
enum ld_plugin_status
(*ld_plugin_register_cleanup) (ld_plugin_cleanup_handler handler);
 
/* The linker's interface for adding symbols from a claimed input file. */
 
typedef
enum ld_plugin_status
(*ld_plugin_add_symbols) (void *handle, int nsyms,
const struct ld_plugin_symbol *syms);
 
/* The linker's interface for getting the input file information with
an open (possibly re-opened) file descriptor. */
 
typedef
enum ld_plugin_status
(*ld_plugin_get_input_file) (const void *handle,
struct ld_plugin_input_file *file);
 
typedef
enum ld_plugin_status
(*ld_plugin_get_view) (const void *handle, const void **viewp);
 
/* The linker's interface for releasing the input file. */
 
typedef
enum ld_plugin_status
(*ld_plugin_release_input_file) (const void *handle);
 
/* The linker's interface for retrieving symbol resolution information. */
 
typedef
enum ld_plugin_status
(*ld_plugin_get_symbols) (const void *handle, int nsyms,
struct ld_plugin_symbol *syms);
 
/* The linker's interface for adding a compiled input file. */
 
typedef
enum ld_plugin_status
(*ld_plugin_add_input_file) (const char *pathname);
 
/* The linker's interface for adding a library that should be searched. */
 
typedef
enum ld_plugin_status
(*ld_plugin_add_input_library) (const char *libname);
 
/* The linker's interface for adding a library path that should be searched. */
 
typedef
enum ld_plugin_status
(*ld_plugin_set_extra_library_path) (const char *path);
 
/* The linker's interface for issuing a warning or error message. */
 
typedef
enum ld_plugin_status
(*ld_plugin_message) (int level, const char *format, ...);
 
/* The linker's interface for retrieving the number of sections in an object.
The handle is obtained in the claim_file handler. This interface should
only be invoked in the claim_file handler. This function sets *COUNT to
the number of sections in the object. */
 
typedef
enum ld_plugin_status
(*ld_plugin_get_input_section_count) (const void* handle, unsigned int *count);
 
/* The linker's interface for retrieving the section type of a specific
section in an object. This interface should only be invoked in the
claim_file handler. This function sets *TYPE to an ELF SHT_xxx value. */
 
typedef
enum ld_plugin_status
(*ld_plugin_get_input_section_type) (const struct ld_plugin_section section,
unsigned int *type);
 
/* The linker's interface for retrieving the name of a specific section in
an object. This interface should only be invoked in the claim_file handler.
This function sets *SECTION_NAME_PTR to a null-terminated buffer allocated
by malloc. The plugin must free *SECTION_NAME_PTR. */
 
typedef
enum ld_plugin_status
(*ld_plugin_get_input_section_name) (const struct ld_plugin_section section,
char **section_name_ptr);
 
/* The linker's interface for retrieving the contents of a specific section
in an object. This interface should only be invoked in the claim_file
handler. This function sets *SECTION_CONTENTS to point to a buffer that is
valid until clam_file handler returns. It sets *LEN to the size of the
buffer. */
 
typedef
enum ld_plugin_status
(*ld_plugin_get_input_section_contents) (const struct ld_plugin_section section,
const unsigned char **section_contents,
size_t* len);
 
/* The linker's interface for specifying the desired order of sections.
The sections should be specifed using the array SECTION_LIST in the
order in which they should appear in the final layout. NUM_SECTIONS
specifies the number of entries in each array. This should be invoked
in the all_symbols_read handler. */
 
typedef
enum ld_plugin_status
(*ld_plugin_update_section_order) (const struct ld_plugin_section *section_list,
unsigned int num_sections);
 
/* The linker's interface for specifying that reordering of sections is
desired so that the linker can prepare for it. This should be invoked
before update_section_order, preferably in the claim_file handler. */
 
typedef
enum ld_plugin_status
(*ld_plugin_allow_section_ordering) (void);
 
enum ld_plugin_level
{
LDPL_INFO,
LDPL_WARNING,
LDPL_ERROR,
LDPL_FATAL
};
 
/* Values for the tv_tag field of the transfer vector. */
 
enum ld_plugin_tag
{
LDPT_NULL = 0,
LDPT_API_VERSION,
LDPT_GOLD_VERSION,
LDPT_LINKER_OUTPUT,
LDPT_OPTION,
LDPT_REGISTER_CLAIM_FILE_HOOK,
LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK,
LDPT_REGISTER_CLEANUP_HOOK,
LDPT_ADD_SYMBOLS,
LDPT_GET_SYMBOLS,
LDPT_ADD_INPUT_FILE,
LDPT_MESSAGE,
LDPT_GET_INPUT_FILE,
LDPT_RELEASE_INPUT_FILE,
LDPT_ADD_INPUT_LIBRARY,
LDPT_OUTPUT_NAME,
LDPT_SET_EXTRA_LIBRARY_PATH,
LDPT_GNU_LD_VERSION,
LDPT_GET_VIEW,
LDPT_GET_INPUT_SECTION_COUNT,
LDPT_GET_INPUT_SECTION_TYPE,
LDPT_GET_INPUT_SECTION_NAME,
LDPT_GET_INPUT_SECTION_CONTENTS,
LDPT_UPDATE_SECTION_ORDER,
LDPT_ALLOW_SECTION_ORDERING,
LDPT_GET_SYMBOLS_V2
};
 
/* The plugin transfer vector. */
 
struct ld_plugin_tv
{
enum ld_plugin_tag tv_tag;
union
{
int tv_val;
const char *tv_string;
ld_plugin_register_claim_file tv_register_claim_file;
ld_plugin_register_all_symbols_read tv_register_all_symbols_read;
ld_plugin_register_cleanup tv_register_cleanup;
ld_plugin_add_symbols tv_add_symbols;
ld_plugin_get_symbols tv_get_symbols;
ld_plugin_add_input_file tv_add_input_file;
ld_plugin_message tv_message;
ld_plugin_get_input_file tv_get_input_file;
ld_plugin_get_view tv_get_view;
ld_plugin_release_input_file tv_release_input_file;
ld_plugin_add_input_library tv_add_input_library;
ld_plugin_set_extra_library_path tv_set_extra_library_path;
ld_plugin_get_input_section_count tv_get_input_section_count;
ld_plugin_get_input_section_type tv_get_input_section_type;
ld_plugin_get_input_section_name tv_get_input_section_name;
ld_plugin_get_input_section_contents tv_get_input_section_contents;
ld_plugin_update_section_order tv_update_section_order;
ld_plugin_allow_section_ordering tv_allow_section_ordering;
} tv_u;
};
 
/* The plugin library's "onload" entry point. */
 
typedef
enum ld_plugin_status
(*ld_plugin_onload) (struct ld_plugin_tv *tv);
 
#ifdef __cplusplus
}
#endif
 
#endif /* !defined(PLUGIN_API_H) */
/xtensa-config.h
0,0 → 1,177
/* Xtensa configuration settings.
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
Free Software Foundation, Inc.
Contributed by Bob Wilson (bob.wilson@acm.org) at Tensilica.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
 
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
 
#ifndef XTENSA_CONFIG_H
#define XTENSA_CONFIG_H
 
/* The macros defined here match those with the same names in the Xtensa
compile-time HAL (Hardware Abstraction Layer). Please refer to the
Xtensa System Software Reference Manual for documentation of these
macros. */
 
#undef XCHAL_HAVE_BE
#define XCHAL_HAVE_BE 1
 
#undef XCHAL_HAVE_DENSITY
#define XCHAL_HAVE_DENSITY 1
 
#undef XCHAL_HAVE_CONST16
#define XCHAL_HAVE_CONST16 0
 
#undef XCHAL_HAVE_ABS
#define XCHAL_HAVE_ABS 1
 
#undef XCHAL_HAVE_ADDX
#define XCHAL_HAVE_ADDX 1
 
#undef XCHAL_HAVE_L32R
#define XCHAL_HAVE_L32R 1
 
#undef XSHAL_USE_ABSOLUTE_LITERALS
#define XSHAL_USE_ABSOLUTE_LITERALS 0
 
#undef XSHAL_HAVE_TEXT_SECTION_LITERALS
#define XSHAL_HAVE_TEXT_SECTION_LITERALS 1 /* Set if there is some memory that allows both code and literals. */
 
#undef XCHAL_HAVE_MAC16
#define XCHAL_HAVE_MAC16 0
 
#undef XCHAL_HAVE_MUL16
#define XCHAL_HAVE_MUL16 1
 
#undef XCHAL_HAVE_MUL32
#define XCHAL_HAVE_MUL32 1
 
#undef XCHAL_HAVE_MUL32_HIGH
#define XCHAL_HAVE_MUL32_HIGH 0
 
#undef XCHAL_HAVE_DIV32
#define XCHAL_HAVE_DIV32 1
 
#undef XCHAL_HAVE_NSA
#define XCHAL_HAVE_NSA 1
 
#undef XCHAL_HAVE_MINMAX
#define XCHAL_HAVE_MINMAX 1
 
#undef XCHAL_HAVE_SEXT
#define XCHAL_HAVE_SEXT 1
 
#undef XCHAL_HAVE_LOOPS
#define XCHAL_HAVE_LOOPS 1
 
#undef XCHAL_HAVE_THREADPTR
#define XCHAL_HAVE_THREADPTR 1
 
#undef XCHAL_HAVE_RELEASE_SYNC
#define XCHAL_HAVE_RELEASE_SYNC 1
 
#undef XCHAL_HAVE_S32C1I
#define XCHAL_HAVE_S32C1I 1
 
#undef XCHAL_HAVE_BOOLEANS
#define XCHAL_HAVE_BOOLEANS 0
 
#undef XCHAL_HAVE_FP
#define XCHAL_HAVE_FP 0
 
#undef XCHAL_HAVE_FP_DIV
#define XCHAL_HAVE_FP_DIV 0
 
#undef XCHAL_HAVE_FP_RECIP
#define XCHAL_HAVE_FP_RECIP 0
 
#undef XCHAL_HAVE_FP_SQRT
#define XCHAL_HAVE_FP_SQRT 0
 
#undef XCHAL_HAVE_FP_RSQRT
#define XCHAL_HAVE_FP_RSQRT 0
 
#undef XCHAL_HAVE_DFP_accel
#define XCHAL_HAVE_DFP_accel 0
#undef XCHAL_HAVE_WINDOWED
#define XCHAL_HAVE_WINDOWED 1
 
#undef XCHAL_NUM_AREGS
#define XCHAL_NUM_AREGS 32
 
#undef XCHAL_HAVE_WIDE_BRANCHES
#define XCHAL_HAVE_WIDE_BRANCHES 0
 
#undef XCHAL_HAVE_PREDICTED_BRANCHES
#define XCHAL_HAVE_PREDICTED_BRANCHES 0
 
 
#undef XCHAL_ICACHE_SIZE
#define XCHAL_ICACHE_SIZE 16384
 
#undef XCHAL_DCACHE_SIZE
#define XCHAL_DCACHE_SIZE 16384
 
#undef XCHAL_ICACHE_LINESIZE
#define XCHAL_ICACHE_LINESIZE 32
 
#undef XCHAL_DCACHE_LINESIZE
#define XCHAL_DCACHE_LINESIZE 32
 
#undef XCHAL_ICACHE_LINEWIDTH
#define XCHAL_ICACHE_LINEWIDTH 5
 
#undef XCHAL_DCACHE_LINEWIDTH
#define XCHAL_DCACHE_LINEWIDTH 5
 
#undef XCHAL_DCACHE_IS_WRITEBACK
#define XCHAL_DCACHE_IS_WRITEBACK 1
 
 
#undef XCHAL_HAVE_MMU
#define XCHAL_HAVE_MMU 1
 
#undef XCHAL_MMU_MIN_PTE_PAGE_SIZE
#define XCHAL_MMU_MIN_PTE_PAGE_SIZE 12
 
 
#undef XCHAL_HAVE_DEBUG
#define XCHAL_HAVE_DEBUG 1
 
#undef XCHAL_NUM_IBREAK
#define XCHAL_NUM_IBREAK 2
 
#undef XCHAL_NUM_DBREAK
#define XCHAL_NUM_DBREAK 2
 
#undef XCHAL_DEBUGLEVEL
#define XCHAL_DEBUGLEVEL 6
 
 
#undef XCHAL_MAX_INSTRUCTION_SIZE
#define XCHAL_MAX_INSTRUCTION_SIZE 3
 
#undef XCHAL_INST_FETCH_WIDTH
#define XCHAL_INST_FETCH_WIDTH 4
 
 
#undef XSHAL_ABI
#undef XTHAL_ABI_WINDOWED
#undef XTHAL_ABI_CALL0
#define XSHAL_ABI XTHAL_ABI_WINDOWED
#define XTHAL_ABI_WINDOWED 0
#define XTHAL_ABI_CALL0 1
 
#endif /* !XTENSA_CONFIG_H */
/partition.h
0,0 → 1,82
/* List implementation of a partition of consecutive integers.
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
Contributed by CodeSourcery, LLC.
 
This file is part of GCC.
 
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
 
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
/* This package implements a partition of consecutive integers. The
elements are partitioned into classes. Each class is represented
by one of its elements, the canonical element, which is chosen
arbitrarily from elements in the class. The principal operations
on a partition are FIND, which takes an element, determines its
class, and returns the canonical element for that class, and UNION,
which unites the two classes that contain two given elements into a
single class.
 
The list implementation used here provides constant-time finds. By
storing the size of each class with the class's canonical element,
it is able to perform unions over all the classes in the partition
in O (N log N) time. */
 
#ifndef _PARTITION_H
#define _PARTITION_H
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
#include "ansidecl.h"
#include <stdio.h>
 
struct partition_elem
{
/* The canonical element that represents the class containing this
element. */
int class_element;
/* The next element in this class. Elements in each class form a
circular list. */
struct partition_elem* next;
/* The number of elements in this class. Valid only if this is the
canonical element for its class. */
unsigned class_count;
};
 
typedef struct partition_def
{
/* The number of elements in this partition. */
int num_elements;
/* The elements in the partition. */
struct partition_elem elements[1];
} *partition;
 
extern partition partition_new (int);
extern void partition_delete (partition);
extern int partition_union (partition, int, int);
extern void partition_print (partition, FILE*);
 
/* Returns the canonical element corresponding to the class containing
ELEMENT__ in PARTITION__. */
 
#define partition_find(partition__, element__) \
((partition__)->elements[(element__)].class_element)
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
 
#endif /* _PARTITION_H */
/hashtab.h
0,0 → 1,209
/* An expandable hash tables datatype.
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2009, 2010
Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
 
/* This package implements basic hash table functionality. It is possible
to search for an entry, create an entry and destroy an entry.
 
Elements in the table are generic pointers.
 
The size of the table is not fixed; if the occupancy of the table
grows too high the hash table will be expanded.
 
The abstract data implementation is based on generalized Algorithm D
from Knuth's book "The art of computer programming". Hash table is
expanded by creation of new hash table and transferring elements from
the old table to the new table. */
 
#ifndef __HASHTAB_H__
#define __HASHTAB_H__
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
#include "ansidecl.h"
 
#ifndef GTY
#define GTY(X)
#endif
 
/* The type for a hash code. */
typedef unsigned int hashval_t;
 
/* Callback function pointer types. */
 
/* Calculate hash of a table entry. */
typedef hashval_t (*htab_hash) (const void *);
 
/* Compare a table entry with a possible entry. The entry already in
the table always comes first, so the second element can be of a
different type (but in this case htab_find and htab_find_slot
cannot be used; instead the variants that accept a hash value
must be used). */
typedef int (*htab_eq) (const void *, const void *);
 
/* Cleanup function called whenever a live element is removed from
the hash table. */
typedef void (*htab_del) (void *);
/* Function called by htab_traverse for each live element. The first
arg is the slot of the element (which can be passed to htab_clear_slot
if desired), the second arg is the auxiliary pointer handed to
htab_traverse. Return 1 to continue scan, 0 to stop. */
typedef int (*htab_trav) (void **, void *);
 
/* Memory-allocation function, with the same functionality as calloc().
Iff it returns NULL, the hash table implementation will pass an error
code back to the user, so if your code doesn't handle errors,
best if you use xcalloc instead. */
typedef void *(*htab_alloc) (size_t, size_t);
 
/* We also need a free() routine. */
typedef void (*htab_free) (void *);
 
/* Memory allocation and deallocation; variants which take an extra
argument. */
typedef void *(*htab_alloc_with_arg) (void *, size_t, size_t);
typedef void (*htab_free_with_arg) (void *, void *);
 
/* This macro defines reserved value for empty table entry. */
 
#define HTAB_EMPTY_ENTRY ((PTR) 0)
 
/* This macro defines reserved value for table entry which contained
a deleted element. */
 
#define HTAB_DELETED_ENTRY ((PTR) 1)
 
/* Hash tables are of the following type. The structure
(implementation) of this type is not needed for using the hash
tables. All work with hash table should be executed only through
functions mentioned below. The size of this structure is subject to
change. */
 
struct GTY(()) htab {
/* Pointer to hash function. */
htab_hash hash_f;
 
/* Pointer to comparison function. */
htab_eq eq_f;
 
/* Pointer to cleanup function. */
htab_del del_f;
 
/* Table itself. */
void ** GTY ((use_param, length ("%h.size"))) entries;
 
/* Current size (in entries) of the hash table. */
size_t size;
 
/* Current number of elements including also deleted elements. */
size_t n_elements;
 
/* Current number of deleted elements in the table. */
size_t n_deleted;
 
/* The following member is used for debugging. Its value is number
of all calls of `htab_find_slot' for the hash table. */
unsigned int searches;
 
/* The following member is used for debugging. Its value is number
of collisions fixed for time of work with the hash table. */
unsigned int collisions;
 
/* Pointers to allocate/free functions. */
htab_alloc alloc_f;
htab_free free_f;
 
/* Alternate allocate/free functions, which take an extra argument. */
void * GTY((skip)) alloc_arg;
htab_alloc_with_arg alloc_with_arg_f;
htab_free_with_arg free_with_arg_f;
 
/* Current size (in entries) of the hash table, as an index into the
table of primes. */
unsigned int size_prime_index;
};
 
typedef struct htab *htab_t;
 
/* An enum saying whether we insert into the hash table or not. */
enum insert_option {NO_INSERT, INSERT};
 
/* The prototypes of the package functions. */
 
extern htab_t htab_create_alloc (size_t, htab_hash,
htab_eq, htab_del,
htab_alloc, htab_free);
 
extern htab_t htab_create_alloc_ex (size_t, htab_hash,
htab_eq, htab_del,
void *, htab_alloc_with_arg,
htab_free_with_arg);
 
extern htab_t htab_create_typed_alloc (size_t, htab_hash, htab_eq, htab_del,
htab_alloc, htab_alloc, htab_free);
 
/* Backward-compatibility functions. */
extern htab_t htab_create (size_t, htab_hash, htab_eq, htab_del);
extern htab_t htab_try_create (size_t, htab_hash, htab_eq, htab_del);
 
extern void htab_set_functions_ex (htab_t, htab_hash,
htab_eq, htab_del,
void *, htab_alloc_with_arg,
htab_free_with_arg);
 
extern void htab_delete (htab_t);
extern void htab_empty (htab_t);
 
extern void * htab_find (htab_t, const void *);
extern void ** htab_find_slot (htab_t, const void *, enum insert_option);
extern void * htab_find_with_hash (htab_t, const void *, hashval_t);
extern void ** htab_find_slot_with_hash (htab_t, const void *,
hashval_t, enum insert_option);
extern void htab_clear_slot (htab_t, void **);
extern void htab_remove_elt (htab_t, void *);
extern void htab_remove_elt_with_hash (htab_t, void *, hashval_t);
 
extern void htab_traverse (htab_t, htab_trav, void *);
extern void htab_traverse_noresize (htab_t, htab_trav, void *);
 
extern size_t htab_size (htab_t);
extern size_t htab_elements (htab_t);
extern double htab_collisions (htab_t);
 
/* A hash function for pointers. */
extern htab_hash htab_hash_pointer;
 
/* An equality function for pointers. */
extern htab_eq htab_eq_pointer;
 
/* A hash function for null-terminated strings. */
extern hashval_t htab_hash_string (const void *);
 
/* An iterative hash function for arbitrary data. */
extern hashval_t iterative_hash (const void *, size_t, hashval_t);
/* Shorthand for hashing something with an intrinsic size. */
#define iterative_hash_object(OB,INIT) iterative_hash (&OB, sizeof (OB), INIT)
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
 
#endif /* __HASHTAB_H */
/demangle.h
0,0 → 1,660
/* Defs for interface to demanglers.
Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002,
2003, 2004, 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License
as published by the Free Software Foundation; either version 2, or
(at your option) any later version.
 
In addition to the permissions in the GNU Library General Public
License, the Free Software Foundation gives you unlimited
permission to link the compiled version of this file into
combinations with other programs, and to distribute those
combinations without any restriction coming from the use of this
file. (The Library Public License restrictions do apply in other
respects; for example, they cover modification of the file, and
distribution when not linked into a combined executable.)
 
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
 
You should have received a copy of the GNU Library General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
 
 
#if !defined (DEMANGLE_H)
#define DEMANGLE_H
 
#include "libiberty.h"
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
/* Options passed to cplus_demangle (in 2nd parameter). */
 
#define DMGL_NO_OPTS 0 /* For readability... */
#define DMGL_PARAMS (1 << 0) /* Include function args */
#define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */
#define DMGL_JAVA (1 << 2) /* Demangle as Java rather than C++. */
#define DMGL_VERBOSE (1 << 3) /* Include implementation details. */
#define DMGL_TYPES (1 << 4) /* Also try to demangle type encodings. */
#define DMGL_RET_POSTFIX (1 << 5) /* Print function return types (when
present) after function signature.
It applies only to the toplevel
function type. */
#define DMGL_RET_DROP (1 << 6) /* Suppress printing function return
types, even if present. It applies
only to the toplevel function type.
*/
 
#define DMGL_AUTO (1 << 8)
#define DMGL_GNU (1 << 9)
#define DMGL_LUCID (1 << 10)
#define DMGL_ARM (1 << 11)
#define DMGL_HP (1 << 12) /* For the HP aCC compiler;
same as ARM except for
template arguments, etc. */
#define DMGL_EDG (1 << 13)
#define DMGL_GNU_V3 (1 << 14)
#define DMGL_GNAT (1 << 15)
 
/* If none of these are set, use 'current_demangling_style' as the default. */
#define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM|DMGL_HP|DMGL_EDG|DMGL_GNU_V3|DMGL_JAVA|DMGL_GNAT)
 
/* Enumeration of possible demangling styles.
 
Lucid and ARM styles are still kept logically distinct, even though
they now both behave identically. The resulting style is actual the
union of both. I.E. either style recognizes both "__pt__" and "__rf__"
for operator "->", even though the first is lucid style and the second
is ARM style. (FIXME?) */
 
extern enum demangling_styles
{
no_demangling = -1,
unknown_demangling = 0,
auto_demangling = DMGL_AUTO,
gnu_demangling = DMGL_GNU,
lucid_demangling = DMGL_LUCID,
arm_demangling = DMGL_ARM,
hp_demangling = DMGL_HP,
edg_demangling = DMGL_EDG,
gnu_v3_demangling = DMGL_GNU_V3,
java_demangling = DMGL_JAVA,
gnat_demangling = DMGL_GNAT
} current_demangling_style;
 
/* Define string names for the various demangling styles. */
 
#define NO_DEMANGLING_STYLE_STRING "none"
#define AUTO_DEMANGLING_STYLE_STRING "auto"
#define GNU_DEMANGLING_STYLE_STRING "gnu"
#define LUCID_DEMANGLING_STYLE_STRING "lucid"
#define ARM_DEMANGLING_STYLE_STRING "arm"
#define HP_DEMANGLING_STYLE_STRING "hp"
#define EDG_DEMANGLING_STYLE_STRING "edg"
#define GNU_V3_DEMANGLING_STYLE_STRING "gnu-v3"
#define JAVA_DEMANGLING_STYLE_STRING "java"
#define GNAT_DEMANGLING_STYLE_STRING "gnat"
 
/* Some macros to test what demangling style is active. */
 
#define CURRENT_DEMANGLING_STYLE current_demangling_style
#define AUTO_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_AUTO)
#define GNU_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNU)
#define LUCID_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_LUCID)
#define ARM_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_ARM)
#define HP_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_HP)
#define EDG_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_EDG)
#define GNU_V3_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNU_V3)
#define JAVA_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_JAVA)
#define GNAT_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNAT)
 
/* Provide information about the available demangle styles. This code is
pulled from gdb into libiberty because it is useful to binutils also. */
 
extern const struct demangler_engine
{
const char *const demangling_style_name;
const enum demangling_styles demangling_style;
const char *const demangling_style_doc;
} libiberty_demanglers[];
 
extern char *
cplus_demangle (const char *mangled, int options);
 
extern int
cplus_demangle_opname (const char *opname, char *result, int options);
 
extern const char *
cplus_mangle_opname (const char *opname, int options);
 
/* Note: This sets global state. FIXME if you care about multi-threading. */
 
extern void
set_cplus_marker_for_demangling (int ch);
 
extern enum demangling_styles
cplus_demangle_set_style (enum demangling_styles style);
 
extern enum demangling_styles
cplus_demangle_name_to_style (const char *name);
 
/* Callback typedef for allocation-less demangler interfaces. */
typedef void (*demangle_callbackref) (const char *, size_t, void *);
 
/* V3 ABI demangling entry points, defined in cp-demangle.c. Callback
variants return non-zero on success, zero on error. char* variants
return a string allocated by malloc on success, NULL on error. */
extern int
cplus_demangle_v3_callback (const char *mangled, int options,
demangle_callbackref callback, void *opaque);
 
extern char*
cplus_demangle_v3 (const char *mangled, int options);
 
extern int
java_demangle_v3_callback (const char *mangled,
demangle_callbackref callback, void *opaque);
 
extern char*
java_demangle_v3 (const char *mangled);
 
char *
ada_demangle (const char *mangled, int options);
 
enum gnu_v3_ctor_kinds {
gnu_v3_complete_object_ctor = 1,
gnu_v3_base_object_ctor,
gnu_v3_complete_object_allocating_ctor,
gnu_v3_object_ctor_group
};
 
/* Return non-zero iff NAME is the mangled form of a constructor name
in the G++ V3 ABI demangling style. Specifically, return an `enum
gnu_v3_ctor_kinds' value indicating what kind of constructor
it is. */
extern enum gnu_v3_ctor_kinds
is_gnu_v3_mangled_ctor (const char *name);
 
 
enum gnu_v3_dtor_kinds {
gnu_v3_deleting_dtor = 1,
gnu_v3_complete_object_dtor,
gnu_v3_base_object_dtor,
gnu_v3_object_dtor_group
};
 
/* Return non-zero iff NAME is the mangled form of a destructor name
in the G++ V3 ABI demangling style. Specifically, return an `enum
gnu_v3_dtor_kinds' value, indicating what kind of destructor
it is. */
extern enum gnu_v3_dtor_kinds
is_gnu_v3_mangled_dtor (const char *name);
 
/* The V3 demangler works in two passes. The first pass builds a tree
representation of the mangled name, and the second pass turns the
tree representation into a demangled string. Here we define an
interface to permit a caller to build their own tree
representation, which they can pass to the demangler to get a
demangled string. This can be used to canonicalize user input into
something which the demangler might output. It could also be used
by other demanglers in the future. */
 
/* These are the component types which may be found in the tree. Many
component types have one or two subtrees, referred to as left and
right (a component type with only one subtree puts it in the left
subtree). */
 
enum demangle_component_type
{
/* A name, with a length and a pointer to a string. */
DEMANGLE_COMPONENT_NAME,
/* A qualified name. The left subtree is a class or namespace or
some such thing, and the right subtree is a name qualified by
that class. */
DEMANGLE_COMPONENT_QUAL_NAME,
/* A local name. The left subtree describes a function, and the
right subtree is a name which is local to that function. */
DEMANGLE_COMPONENT_LOCAL_NAME,
/* A typed name. The left subtree is a name, and the right subtree
describes that name as a function. */
DEMANGLE_COMPONENT_TYPED_NAME,
/* A template. The left subtree is a template name, and the right
subtree is a template argument list. */
DEMANGLE_COMPONENT_TEMPLATE,
/* A template parameter. This holds a number, which is the template
parameter index. */
DEMANGLE_COMPONENT_TEMPLATE_PARAM,
/* A function parameter. This holds a number, which is the index. */
DEMANGLE_COMPONENT_FUNCTION_PARAM,
/* A constructor. This holds a name and the kind of
constructor. */
DEMANGLE_COMPONENT_CTOR,
/* A destructor. This holds a name and the kind of destructor. */
DEMANGLE_COMPONENT_DTOR,
/* A vtable. This has one subtree, the type for which this is a
vtable. */
DEMANGLE_COMPONENT_VTABLE,
/* A VTT structure. This has one subtree, the type for which this
is a VTT. */
DEMANGLE_COMPONENT_VTT,
/* A construction vtable. The left subtree is the type for which
this is a vtable, and the right subtree is the derived type for
which this vtable is built. */
DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE,
/* A typeinfo structure. This has one subtree, the type for which
this is the tpeinfo structure. */
DEMANGLE_COMPONENT_TYPEINFO,
/* A typeinfo name. This has one subtree, the type for which this
is the typeinfo name. */
DEMANGLE_COMPONENT_TYPEINFO_NAME,
/* A typeinfo function. This has one subtree, the type for which
this is the tpyeinfo function. */
DEMANGLE_COMPONENT_TYPEINFO_FN,
/* A thunk. This has one subtree, the name for which this is a
thunk. */
DEMANGLE_COMPONENT_THUNK,
/* A virtual thunk. This has one subtree, the name for which this
is a virtual thunk. */
DEMANGLE_COMPONENT_VIRTUAL_THUNK,
/* A covariant thunk. This has one subtree, the name for which this
is a covariant thunk. */
DEMANGLE_COMPONENT_COVARIANT_THUNK,
/* A Java class. This has one subtree, the type. */
DEMANGLE_COMPONENT_JAVA_CLASS,
/* A guard variable. This has one subtree, the name for which this
is a guard variable. */
DEMANGLE_COMPONENT_GUARD,
/* A reference temporary. This has one subtree, the name for which
this is a temporary. */
DEMANGLE_COMPONENT_REFTEMP,
/* A hidden alias. This has one subtree, the encoding for which it
is providing alternative linkage. */
DEMANGLE_COMPONENT_HIDDEN_ALIAS,
/* A standard substitution. This holds the name of the
substitution. */
DEMANGLE_COMPONENT_SUB_STD,
/* The restrict qualifier. The one subtree is the type which is
being qualified. */
DEMANGLE_COMPONENT_RESTRICT,
/* The volatile qualifier. The one subtree is the type which is
being qualified. */
DEMANGLE_COMPONENT_VOLATILE,
/* The const qualifier. The one subtree is the type which is being
qualified. */
DEMANGLE_COMPONENT_CONST,
/* The restrict qualifier modifying a member function. The one
subtree is the type which is being qualified. */
DEMANGLE_COMPONENT_RESTRICT_THIS,
/* The volatile qualifier modifying a member function. The one
subtree is the type which is being qualified. */
DEMANGLE_COMPONENT_VOLATILE_THIS,
/* The const qualifier modifying a member function. The one subtree
is the type which is being qualified. */
DEMANGLE_COMPONENT_CONST_THIS,
/* A vendor qualifier. The left subtree is the type which is being
qualified, and the right subtree is the name of the
qualifier. */
DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL,
/* A pointer. The one subtree is the type which is being pointed
to. */
DEMANGLE_COMPONENT_POINTER,
/* A reference. The one subtree is the type which is being
referenced. */
DEMANGLE_COMPONENT_REFERENCE,
/* C++0x: An rvalue reference. The one subtree is the type which is
being referenced. */
DEMANGLE_COMPONENT_RVALUE_REFERENCE,
/* A complex type. The one subtree is the base type. */
DEMANGLE_COMPONENT_COMPLEX,
/* An imaginary type. The one subtree is the base type. */
DEMANGLE_COMPONENT_IMAGINARY,
/* A builtin type. This holds the builtin type information. */
DEMANGLE_COMPONENT_BUILTIN_TYPE,
/* A vendor's builtin type. This holds the name of the type. */
DEMANGLE_COMPONENT_VENDOR_TYPE,
/* A function type. The left subtree is the return type. The right
subtree is a list of ARGLIST nodes. Either or both may be
NULL. */
DEMANGLE_COMPONENT_FUNCTION_TYPE,
/* An array type. The left subtree is the dimension, which may be
NULL, or a string (represented as DEMANGLE_COMPONENT_NAME), or an
expression. The right subtree is the element type. */
DEMANGLE_COMPONENT_ARRAY_TYPE,
/* A pointer to member type. The left subtree is the class type,
and the right subtree is the member type. CV-qualifiers appear
on the latter. */
DEMANGLE_COMPONENT_PTRMEM_TYPE,
/* A fixed-point type. */
DEMANGLE_COMPONENT_FIXED_TYPE,
/* A vector type. The left subtree is the number of elements,
the right subtree is the element type. */
DEMANGLE_COMPONENT_VECTOR_TYPE,
/* An argument list. The left subtree is the current argument, and
the right subtree is either NULL or another ARGLIST node. */
DEMANGLE_COMPONENT_ARGLIST,
/* A template argument list. The left subtree is the current
template argument, and the right subtree is either NULL or
another TEMPLATE_ARGLIST node. */
DEMANGLE_COMPONENT_TEMPLATE_ARGLIST,
/* An initializer list. The left subtree is either an explicit type or
NULL, and the right subtree is a DEMANGLE_COMPONENT_ARGLIST. */
DEMANGLE_COMPONENT_INITIALIZER_LIST,
/* An operator. This holds information about a standard
operator. */
DEMANGLE_COMPONENT_OPERATOR,
/* An extended operator. This holds the number of arguments, and
the name of the extended operator. */
DEMANGLE_COMPONENT_EXTENDED_OPERATOR,
/* A typecast, represented as a unary operator. The one subtree is
the type to which the argument should be cast. */
DEMANGLE_COMPONENT_CAST,
/* A nullary expression. The left subtree is the operator. */
DEMANGLE_COMPONENT_NULLARY,
/* A unary expression. The left subtree is the operator, and the
right subtree is the single argument. */
DEMANGLE_COMPONENT_UNARY,
/* A binary expression. The left subtree is the operator, and the
right subtree is a BINARY_ARGS. */
DEMANGLE_COMPONENT_BINARY,
/* Arguments to a binary expression. The left subtree is the first
argument, and the right subtree is the second argument. */
DEMANGLE_COMPONENT_BINARY_ARGS,
/* A trinary expression. The left subtree is the operator, and the
right subtree is a TRINARY_ARG1. */
DEMANGLE_COMPONENT_TRINARY,
/* Arguments to a trinary expression. The left subtree is the first
argument, and the right subtree is a TRINARY_ARG2. */
DEMANGLE_COMPONENT_TRINARY_ARG1,
/* More arguments to a trinary expression. The left subtree is the
second argument, and the right subtree is the third argument. */
DEMANGLE_COMPONENT_TRINARY_ARG2,
/* A literal. The left subtree is the type, and the right subtree
is the value, represented as a DEMANGLE_COMPONENT_NAME. */
DEMANGLE_COMPONENT_LITERAL,
/* A negative literal. Like LITERAL, but the value is negated.
This is a minor hack: the NAME used for LITERAL points directly
to the mangled string, but since negative numbers are mangled
using 'n' instead of '-', we want a way to indicate a negative
number which involves neither modifying the mangled string nor
allocating a new copy of the literal in memory. */
DEMANGLE_COMPONENT_LITERAL_NEG,
/* A libgcj compiled resource. The left subtree is the name of the
resource. */
DEMANGLE_COMPONENT_JAVA_RESOURCE,
/* A name formed by the concatenation of two parts. The left
subtree is the first part and the right subtree the second. */
DEMANGLE_COMPONENT_COMPOUND_NAME,
/* A name formed by a single character. */
DEMANGLE_COMPONENT_CHARACTER,
/* A number. */
DEMANGLE_COMPONENT_NUMBER,
/* A decltype type. */
DEMANGLE_COMPONENT_DECLTYPE,
/* Global constructors keyed to name. */
DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS,
/* Global destructors keyed to name. */
DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS,
/* A lambda closure type. */
DEMANGLE_COMPONENT_LAMBDA,
/* A default argument scope. */
DEMANGLE_COMPONENT_DEFAULT_ARG,
/* An unnamed type. */
DEMANGLE_COMPONENT_UNNAMED_TYPE,
/* A transactional clone. This has one subtree, the encoding for
which it is providing alternative linkage. */
DEMANGLE_COMPONENT_TRANSACTION_CLONE,
/* A non-transactional clone entry point. In the i386/x86_64 abi,
the unmangled symbol of a tm_callable becomes a thunk and the
non-transactional function version is mangled thus. */
DEMANGLE_COMPONENT_NONTRANSACTION_CLONE,
/* A pack expansion. */
DEMANGLE_COMPONENT_PACK_EXPANSION,
/* A cloned function. */
DEMANGLE_COMPONENT_CLONE
};
 
/* Types which are only used internally. */
 
struct demangle_operator_info;
struct demangle_builtin_type_info;
 
/* A node in the tree representation is an instance of a struct
demangle_component. Note that the field names of the struct are
not well protected against macros defined by the file including
this one. We can fix this if it ever becomes a problem. */
 
struct demangle_component
{
/* The type of this component. */
enum demangle_component_type type;
 
union
{
/* For DEMANGLE_COMPONENT_NAME. */
struct
{
/* A pointer to the name (which need not NULL terminated) and
its length. */
const char *s;
int len;
} s_name;
 
/* For DEMANGLE_COMPONENT_OPERATOR. */
struct
{
/* Operator. */
const struct demangle_operator_info *op;
} s_operator;
 
/* For DEMANGLE_COMPONENT_EXTENDED_OPERATOR. */
struct
{
/* Number of arguments. */
int args;
/* Name. */
struct demangle_component *name;
} s_extended_operator;
 
/* For DEMANGLE_COMPONENT_FIXED_TYPE. */
struct
{
/* The length, indicated by a C integer type name. */
struct demangle_component *length;
/* _Accum or _Fract? */
short accum;
/* Saturating or not? */
short sat;
} s_fixed;
 
/* For DEMANGLE_COMPONENT_CTOR. */
struct
{
/* Kind of constructor. */
enum gnu_v3_ctor_kinds kind;
/* Name. */
struct demangle_component *name;
} s_ctor;
 
/* For DEMANGLE_COMPONENT_DTOR. */
struct
{
/* Kind of destructor. */
enum gnu_v3_dtor_kinds kind;
/* Name. */
struct demangle_component *name;
} s_dtor;
 
/* For DEMANGLE_COMPONENT_BUILTIN_TYPE. */
struct
{
/* Builtin type. */
const struct demangle_builtin_type_info *type;
} s_builtin;
 
/* For DEMANGLE_COMPONENT_SUB_STD. */
struct
{
/* Standard substitution string. */
const char* string;
/* Length of string. */
int len;
} s_string;
 
/* For DEMANGLE_COMPONENT_*_PARAM. */
struct
{
/* Parameter index. */
long number;
} s_number;
 
/* For DEMANGLE_COMPONENT_CHARACTER. */
struct
{
int character;
} s_character;
 
/* For other types. */
struct
{
/* Left (or only) subtree. */
struct demangle_component *left;
/* Right subtree. */
struct demangle_component *right;
} s_binary;
 
struct
{
/* subtree, same place as d_left. */
struct demangle_component *sub;
/* integer. */
int num;
} s_unary_num;
 
} u;
};
 
/* People building mangled trees are expected to allocate instances of
struct demangle_component themselves. They can then call one of
the following functions to fill them in. */
 
/* Fill in most component types with a left subtree and a right
subtree. Returns non-zero on success, zero on failure, such as an
unrecognized or inappropriate component type. */
 
extern int
cplus_demangle_fill_component (struct demangle_component *fill,
enum demangle_component_type,
struct demangle_component *left,
struct demangle_component *right);
 
/* Fill in a DEMANGLE_COMPONENT_NAME. Returns non-zero on success,
zero for bad arguments. */
 
extern int
cplus_demangle_fill_name (struct demangle_component *fill,
const char *, int);
 
/* Fill in a DEMANGLE_COMPONENT_BUILTIN_TYPE, using the name of the
builtin type (e.g., "int", etc.). Returns non-zero on success,
zero if the type is not recognized. */
 
extern int
cplus_demangle_fill_builtin_type (struct demangle_component *fill,
const char *type_name);
 
/* Fill in a DEMANGLE_COMPONENT_OPERATOR, using the name of the
operator and the number of arguments which it takes (the latter is
used to disambiguate operators which can be both binary and unary,
such as '-'). Returns non-zero on success, zero if the operator is
not recognized. */
 
extern int
cplus_demangle_fill_operator (struct demangle_component *fill,
const char *opname, int args);
 
/* Fill in a DEMANGLE_COMPONENT_EXTENDED_OPERATOR, providing the
number of arguments and the name. Returns non-zero on success,
zero for bad arguments. */
 
extern int
cplus_demangle_fill_extended_operator (struct demangle_component *fill,
int numargs,
struct demangle_component *nm);
 
/* Fill in a DEMANGLE_COMPONENT_CTOR. Returns non-zero on success,
zero for bad arguments. */
 
extern int
cplus_demangle_fill_ctor (struct demangle_component *fill,
enum gnu_v3_ctor_kinds kind,
struct demangle_component *name);
 
/* Fill in a DEMANGLE_COMPONENT_DTOR. Returns non-zero on success,
zero for bad arguments. */
 
extern int
cplus_demangle_fill_dtor (struct demangle_component *fill,
enum gnu_v3_dtor_kinds kind,
struct demangle_component *name);
 
/* This function translates a mangled name into a struct
demangle_component tree. The first argument is the mangled name.
The second argument is DMGL_* options. This returns a pointer to a
tree on success, or NULL on failure. On success, the third
argument is set to a block of memory allocated by malloc. This
block should be passed to free when the tree is no longer
needed. */
 
extern struct demangle_component *
cplus_demangle_v3_components (const char *mangled, int options, void **mem);
 
/* This function takes a struct demangle_component tree and returns
the corresponding demangled string. The first argument is DMGL_*
options. The second is the tree to demangle. The third is a guess
at the length of the demangled string, used to initially allocate
the return buffer. The fourth is a pointer to a size_t. On
success, this function returns a buffer allocated by malloc(), and
sets the size_t pointed to by the fourth argument to the size of
the allocated buffer (not the length of the returned string). On
failure, this function returns NULL, and sets the size_t pointed to
by the fourth argument to 0 for an invalid tree, or to 1 for a
memory allocation error. */
 
extern char *
cplus_demangle_print (int options,
const struct demangle_component *tree,
int estimated_length,
size_t *p_allocated_size);
 
/* This function takes a struct demangle_component tree and passes back
a demangled string in one or more calls to a callback function.
The first argument is DMGL_* options. The second is the tree to
demangle. The third is a pointer to a callback function; on each call
this receives an element of the demangled string, its length, and an
opaque value. The fourth is the opaque value passed to the callback.
The callback is called once or more to return the full demangled
string. The demangled element string is always nul-terminated, though
its length is also provided for convenience. In contrast to
cplus_demangle_print(), this function does not allocate heap memory
to grow output strings (except perhaps where alloca() is implemented
by malloc()), and so is normally safe for use where the heap has been
corrupted. On success, this function returns 1; on failure, 0. */
 
extern int
cplus_demangle_print_callback (int options,
const struct demangle_component *tree,
demangle_callbackref callback, void *opaque);
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
 
#endif /* DEMANGLE_H */
/floatformat.h
0,0 → 1,151
/* IEEE floating point support declarations, for GDB, the GNU Debugger.
Copyright 1991, 1994, 1995, 1997, 2000, 2003, 2005, 2010
Free Software Foundation, Inc.
 
This file is part of GDB.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
 
#if !defined (FLOATFORMAT_H)
#define FLOATFORMAT_H 1
 
#include "ansidecl.h"
 
/* A floatformat consists of a sign bit, an exponent and a mantissa. Once the
bytes are concatenated according to the byteorder flag, then each of those
fields is contiguous. We number the bits with 0 being the most significant
(i.e. BITS_BIG_ENDIAN type numbering), and specify which bits each field
contains with the *_start and *_len fields. */
 
/* What is the order of the bytes? */
 
enum floatformat_byteorders {
/* Standard little endian byte order.
EX: 1.2345678e10 => 00 00 80 c5 e0 fe 06 42 */
floatformat_little,
 
/* Standard big endian byte order.
EX: 1.2345678e10 => 42 06 fe e0 c5 80 00 00 */
floatformat_big,
 
/* Little endian byte order but big endian word order.
EX: 1.2345678e10 => e0 fe 06 42 00 00 80 c5 */
floatformat_littlebyte_bigword,
 
/* VAX byte order. Little endian byte order with 16-bit words. The
following example is an illustration of the byte order only; VAX
doesn't have a fully IEEE compliant floating-point format.
EX: 1.2345678e10 => 80 c5 00 00 06 42 e0 fe */
floatformat_vax
};
 
enum floatformat_intbit { floatformat_intbit_yes, floatformat_intbit_no };
 
struct floatformat
{
enum floatformat_byteorders byteorder;
unsigned int totalsize; /* Total size of number in bits */
 
/* Sign bit is always one bit long. 1 means negative, 0 means positive. */
unsigned int sign_start;
 
unsigned int exp_start;
unsigned int exp_len;
/* Bias added to a "true" exponent to form the biased exponent. It
is intentionally signed as, otherwize, -exp_bias can turn into a
very large number (e.g., given the exp_bias of 0x3fff and a 64
bit long, the equation (long)(1 - exp_bias) evaluates to
4294950914) instead of -16382). */
int exp_bias;
/* Exponent value which indicates NaN. This is the actual value stored in
the float, not adjusted by the exp_bias. This usually consists of all
one bits. */
unsigned int exp_nan;
 
unsigned int man_start;
unsigned int man_len;
 
/* Is the integer bit explicit or implicit? */
enum floatformat_intbit intbit;
 
/* Internal name for debugging. */
const char *name;
 
/* Validator method. */
int (*is_valid) (const struct floatformat *fmt, const void *from);
 
/* Is the format actually the sum of two smaller floating point
formats (IBM long double, as described in
gcc/config/rs6000/darwin-ldouble-format)? If so, this is the
smaller format in question, and the fields sign_start through
intbit describe the first half. If not, this is NULL. */
const struct floatformat *split_half;
};
 
/* floatformats for IEEE single and double, big and little endian. */
 
extern const struct floatformat floatformat_ieee_half_big;
extern const struct floatformat floatformat_ieee_half_little;
extern const struct floatformat floatformat_ieee_single_big;
extern const struct floatformat floatformat_ieee_single_little;
extern const struct floatformat floatformat_ieee_double_big;
extern const struct floatformat floatformat_ieee_double_little;
 
/* floatformat for ARM IEEE double, little endian bytes and big endian words */
 
extern const struct floatformat floatformat_ieee_double_littlebyte_bigword;
 
/* floatformats for VAX. */
 
extern const struct floatformat floatformat_vax_f;
extern const struct floatformat floatformat_vax_d;
extern const struct floatformat floatformat_vax_g;
 
/* floatformats for various extendeds. */
 
extern const struct floatformat floatformat_i387_ext;
extern const struct floatformat floatformat_m68881_ext;
extern const struct floatformat floatformat_i960_ext;
extern const struct floatformat floatformat_m88110_ext;
extern const struct floatformat floatformat_m88110_harris_ext;
extern const struct floatformat floatformat_arm_ext_big;
extern const struct floatformat floatformat_arm_ext_littlebyte_bigword;
/* IA-64 Floating Point register spilt into memory. */
extern const struct floatformat floatformat_ia64_spill_big;
extern const struct floatformat floatformat_ia64_spill_little;
extern const struct floatformat floatformat_ia64_quad_big;
extern const struct floatformat floatformat_ia64_quad_little;
/* IBM long double (double+double). */
extern const struct floatformat floatformat_ibm_long_double;
 
/* Convert from FMT to a double.
FROM is the address of the extended float.
Store the double in *TO. */
 
extern void
floatformat_to_double (const struct floatformat *, const void *, double *);
 
/* The converse: convert the double *FROM to FMT
and store where TO points. */
 
extern void
floatformat_from_double (const struct floatformat *, const double *, void *);
 
/* Return non-zero iff the data at FROM is a valid number in format FMT. */
 
extern int
floatformat_is_valid (const struct floatformat *fmt, const void *from);
 
#endif /* defined (FLOATFORMAT_H) */
/fnmatch.h
0,0 → 1,70
/* Copyright 1991, 1992, 1993, 1996 Free Software Foundation, Inc.
 
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
 
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
#ifndef _FNMATCH_H
 
#define _FNMATCH_H 1
 
#ifdef __cplusplus
extern "C" {
#endif
 
#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
#undef __P
#define __P(args) args
#else /* Not C++ or ANSI C. */
#undef __P
#define __P(args) ()
/* We can get away without defining `const' here only because in this file
it is used only inside the prototype for `fnmatch', which is elided in
non-ANSI C where `const' is problematical. */
#endif /* C++ or ANSI C. */
 
 
/* We #undef these before defining them because some losing systems
(HP-UX A.08.07 for example) define these in <unistd.h>. */
#undef FNM_PATHNAME
#undef FNM_NOESCAPE
#undef FNM_PERIOD
 
/* Bits set in the FLAGS argument to `fnmatch'. */
#define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */
#define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
#define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */
 
#if !defined (_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 2 || defined (_GNU_SOURCE)
#define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */
#define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */
#define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */
#endif
 
/* Value returned by `fnmatch' if STRING does not match PATTERN. */
#define FNM_NOMATCH 1
 
/* Match STRING against the filename pattern PATTERN,
returning zero if it matches, FNM_NOMATCH if not. */
extern int fnmatch __P ((const char *__pattern, const char *__string,
int __flags));
 
#ifdef __cplusplus
}
#endif
 
#endif /* fnmatch.h */
/ansidecl.h
0,0 → 1,434
/* ANSI and traditional C compatability macros
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
 
/* ANSI and traditional C compatibility macros
 
ANSI C is assumed if __STDC__ is #defined.
 
Macro ANSI C definition Traditional C definition
----- ---- - ---------- ----------- - ----------
ANSI_PROTOTYPES 1 not defined
PTR `void *' `char *'
PTRCONST `void *const' `char *'
LONG_DOUBLE `long double' `double'
const not defined `'
volatile not defined `'
signed not defined `'
VA_START(ap, var) va_start(ap, var) va_start(ap)
 
Note that it is safe to write "void foo();" indicating a function
with no return value, in all K+R compilers we have been able to test.
 
For declaring functions with prototypes, we also provide these:
 
PARAMS ((prototype))
-- for functions which take a fixed number of arguments. Use this
when declaring the function. When defining the function, write a
K+R style argument list. For example:
 
char *strcpy PARAMS ((char *dest, char *source));
...
char *
strcpy (dest, source)
char *dest;
char *source;
{ ... }
 
 
VPARAMS ((prototype, ...))
-- for functions which take a variable number of arguments. Use
PARAMS to declare the function, VPARAMS to define it. For example:
 
int printf PARAMS ((const char *format, ...));
...
int
printf VPARAMS ((const char *format, ...))
{
...
}
 
For writing functions which take variable numbers of arguments, we
also provide the VA_OPEN, VA_CLOSE, and VA_FIXEDARG macros. These
hide the differences between K+R <varargs.h> and C89 <stdarg.h> more
thoroughly than the simple VA_START() macro mentioned above.
 
VA_OPEN and VA_CLOSE are used *instead of* va_start and va_end.
Immediately after VA_OPEN, put a sequence of VA_FIXEDARG calls
corresponding to the list of fixed arguments. Then use va_arg
normally to get the variable arguments, or pass your va_list object
around. You do not declare the va_list yourself; VA_OPEN does it
for you.
 
Here is a complete example:
 
int
printf VPARAMS ((const char *format, ...))
{
int result;
 
VA_OPEN (ap, format);
VA_FIXEDARG (ap, const char *, format);
 
result = vfprintf (stdout, format, ap);
VA_CLOSE (ap);
 
return result;
}
 
 
You can declare variables either before or after the VA_OPEN,
VA_FIXEDARG sequence. Also, VA_OPEN and VA_CLOSE are the beginning
and end of a block. They must appear at the same nesting level,
and any variables declared after VA_OPEN go out of scope at
VA_CLOSE. Unfortunately, with a K+R compiler, that includes the
argument list. You can have multiple instances of VA_OPEN/VA_CLOSE
pairs in a single function in case you need to traverse the
argument list more than once.
 
For ease of writing code which uses GCC extensions but needs to be
portable to other compilers, we provide the GCC_VERSION macro that
simplifies testing __GNUC__ and __GNUC_MINOR__ together, and various
wrappers around __attribute__. Also, __extension__ will be #defined
to nothing if it doesn't work. See below.
 
This header also defines a lot of obsolete macros:
CONST, VOLATILE, SIGNED, PROTO, EXFUN, DEFUN, DEFUN_VOID,
AND, DOTS, NOARGS. Don't use them. */
 
#ifndef _ANSIDECL_H
#define _ANSIDECL_H 1
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* Every source file includes this file,
so they will all get the switch for lint. */
/* LINTLIBRARY */
 
/* Using MACRO(x,y) in cpp #if conditionals does not work with some
older preprocessors. Thus we can't define something like this:
 
#define HAVE_GCC_VERSION(MAJOR, MINOR) \
(__GNUC__ > (MAJOR) || (__GNUC__ == (MAJOR) && __GNUC_MINOR__ >= (MINOR)))
 
and then test "#if HAVE_GCC_VERSION(2,7)".
 
So instead we use the macro below and test it against specific values. */
 
/* This macro simplifies testing whether we are using gcc, and if it
is of a particular minimum version. (Both major & minor numbers are
significant.) This macro will evaluate to 0 if we are not using
gcc at all. */
#ifndef GCC_VERSION
#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
#endif /* GCC_VERSION */
 
#if defined (__STDC__) || defined(__cplusplus) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(_WIN32)
/* All known AIX compilers implement these things (but don't always
define __STDC__). The RISC/OS MIPS compiler defines these things
in SVR4 mode, but does not define __STDC__. */
/* eraxxon@alumni.rice.edu: The Compaq C++ compiler, unlike many other
C++ compilers, does not define __STDC__, though it acts as if this
was so. (Verified versions: 5.7, 6.2, 6.3, 6.5) */
 
#define ANSI_PROTOTYPES 1
#define PTR void *
#define PTRCONST void *const
#define LONG_DOUBLE long double
 
/* PARAMS is often defined elsewhere (e.g. by libintl.h), so wrap it in
a #ifndef. */
#ifndef PARAMS
#define PARAMS(ARGS) ARGS
#endif
 
#define VPARAMS(ARGS) ARGS
#define VA_START(VA_LIST, VAR) va_start(VA_LIST, VAR)
 
/* variadic function helper macros */
/* "struct Qdmy" swallows the semicolon after VA_OPEN/VA_FIXEDARG's
use without inhibiting further decls and without declaring an
actual variable. */
#define VA_OPEN(AP, VAR) { va_list AP; va_start(AP, VAR); { struct Qdmy
#define VA_CLOSE(AP) } va_end(AP); }
#define VA_FIXEDARG(AP, T, N) struct Qdmy
#undef const
#undef volatile
#undef signed
 
/* inline requires special treatment; it's in C99, and GCC >=2.7 supports
it too, but it's not in C89. */
#undef inline
#if __STDC_VERSION__ >= 199901L || defined(__cplusplus) || (defined(__SUNPRO_C) && defined(__C99FEATURES__))
/* it's a keyword */
#else
# if GCC_VERSION >= 2007
# define inline __inline__ /* __inline__ prevents -pedantic warnings */
# else
# define inline /* nothing */
# endif
#endif
 
/* These are obsolete. Do not use. */
#ifndef IN_GCC
#define CONST const
#define VOLATILE volatile
#define SIGNED signed
 
#define PROTO(type, name, arglist) type name arglist
#define EXFUN(name, proto) name proto
#define DEFUN(name, arglist, args) name(args)
#define DEFUN_VOID(name) name(void)
#define AND ,
#define DOTS , ...
#define NOARGS void
#endif /* ! IN_GCC */
 
#else /* Not ANSI C. */
 
#undef ANSI_PROTOTYPES
#define PTR char *
#define PTRCONST PTR
#define LONG_DOUBLE double
 
#define PARAMS(args) ()
#define VPARAMS(args) (va_alist) va_dcl
#define VA_START(va_list, var) va_start(va_list)
 
#define VA_OPEN(AP, VAR) { va_list AP; va_start(AP); { struct Qdmy
#define VA_CLOSE(AP) } va_end(AP); }
#define VA_FIXEDARG(AP, TYPE, NAME) TYPE NAME = va_arg(AP, TYPE)
 
/* some systems define these in header files for non-ansi mode */
#undef const
#undef volatile
#undef signed
#undef inline
#define const
#define volatile
#define signed
#define inline
 
#ifndef IN_GCC
#define CONST
#define VOLATILE
#define SIGNED
 
#define PROTO(type, name, arglist) type name ()
#define EXFUN(name, proto) name()
#define DEFUN(name, arglist, args) name arglist args;
#define DEFUN_VOID(name) name()
#define AND ;
#define DOTS
#define NOARGS
#endif /* ! IN_GCC */
 
#endif /* ANSI C. */
 
/* Define macros for some gcc attributes. This permits us to use the
macros freely, and know that they will come into play for the
version of gcc in which they are supported. */
 
#if (GCC_VERSION < 2007)
# define __attribute__(x)
#endif
 
/* Attribute __malloc__ on functions was valid as of gcc 2.96. */
#ifndef ATTRIBUTE_MALLOC
# if (GCC_VERSION >= 2096)
# define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
# else
# define ATTRIBUTE_MALLOC
# endif /* GNUC >= 2.96 */
#endif /* ATTRIBUTE_MALLOC */
 
/* Attributes on labels were valid as of gcc 2.93 and g++ 4.5. For
g++ an attribute on a label must be followed by a semicolon. */
#ifndef ATTRIBUTE_UNUSED_LABEL
# ifndef __cplusplus
# if GCC_VERSION >= 2093
# define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED
# else
# define ATTRIBUTE_UNUSED_LABEL
# endif
# else
# if GCC_VERSION >= 4005
# define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED ;
# else
# define ATTRIBUTE_UNUSED_LABEL
# endif
# endif
#endif
 
#ifndef ATTRIBUTE_UNUSED
#define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
#endif /* ATTRIBUTE_UNUSED */
 
/* Before GCC 3.4, the C++ frontend couldn't parse attributes placed after the
identifier name. */
#if ! defined(__cplusplus) || (GCC_VERSION >= 3004)
# define ARG_UNUSED(NAME) NAME ATTRIBUTE_UNUSED
#else /* !__cplusplus || GNUC >= 3.4 */
# define ARG_UNUSED(NAME) NAME
#endif /* !__cplusplus || GNUC >= 3.4 */
 
#ifndef ATTRIBUTE_NORETURN
#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
#endif /* ATTRIBUTE_NORETURN */
 
/* Attribute `nonnull' was valid as of gcc 3.3. */
#ifndef ATTRIBUTE_NONNULL
# if (GCC_VERSION >= 3003)
# define ATTRIBUTE_NONNULL(m) __attribute__ ((__nonnull__ (m)))
# else
# define ATTRIBUTE_NONNULL(m)
# endif /* GNUC >= 3.3 */
#endif /* ATTRIBUTE_NONNULL */
 
/* Attribute `pure' was valid as of gcc 3.0. */
#ifndef ATTRIBUTE_PURE
# if (GCC_VERSION >= 3000)
# define ATTRIBUTE_PURE __attribute__ ((__pure__))
# else
# define ATTRIBUTE_PURE
# endif /* GNUC >= 3.0 */
#endif /* ATTRIBUTE_PURE */
 
/* Use ATTRIBUTE_PRINTF when the format specifier must not be NULL.
This was the case for the `printf' format attribute by itself
before GCC 3.3, but as of 3.3 we need to add the `nonnull'
attribute to retain this behavior. */
#ifndef ATTRIBUTE_PRINTF
#define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) ATTRIBUTE_NONNULL(m)
#define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
#define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
#define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
#define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
#define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
#endif /* ATTRIBUTE_PRINTF */
 
/* Use ATTRIBUTE_FPTR_PRINTF when the format attribute is to be set on
a function pointer. Format attributes were allowed on function
pointers as of gcc 3.1. */
#ifndef ATTRIBUTE_FPTR_PRINTF
# if (GCC_VERSION >= 3001)
# define ATTRIBUTE_FPTR_PRINTF(m, n) ATTRIBUTE_PRINTF(m, n)
# else
# define ATTRIBUTE_FPTR_PRINTF(m, n)
# endif /* GNUC >= 3.1 */
# define ATTRIBUTE_FPTR_PRINTF_1 ATTRIBUTE_FPTR_PRINTF(1, 2)
# define ATTRIBUTE_FPTR_PRINTF_2 ATTRIBUTE_FPTR_PRINTF(2, 3)
# define ATTRIBUTE_FPTR_PRINTF_3 ATTRIBUTE_FPTR_PRINTF(3, 4)
# define ATTRIBUTE_FPTR_PRINTF_4 ATTRIBUTE_FPTR_PRINTF(4, 5)
# define ATTRIBUTE_FPTR_PRINTF_5 ATTRIBUTE_FPTR_PRINTF(5, 6)
#endif /* ATTRIBUTE_FPTR_PRINTF */
 
/* Use ATTRIBUTE_NULL_PRINTF when the format specifier may be NULL. A
NULL format specifier was allowed as of gcc 3.3. */
#ifndef ATTRIBUTE_NULL_PRINTF
# if (GCC_VERSION >= 3003)
# define ATTRIBUTE_NULL_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
# else
# define ATTRIBUTE_NULL_PRINTF(m, n)
# endif /* GNUC >= 3.3 */
# define ATTRIBUTE_NULL_PRINTF_1 ATTRIBUTE_NULL_PRINTF(1, 2)
# define ATTRIBUTE_NULL_PRINTF_2 ATTRIBUTE_NULL_PRINTF(2, 3)
# define ATTRIBUTE_NULL_PRINTF_3 ATTRIBUTE_NULL_PRINTF(3, 4)
# define ATTRIBUTE_NULL_PRINTF_4 ATTRIBUTE_NULL_PRINTF(4, 5)
# define ATTRIBUTE_NULL_PRINTF_5 ATTRIBUTE_NULL_PRINTF(5, 6)
#endif /* ATTRIBUTE_NULL_PRINTF */
 
/* Attribute `sentinel' was valid as of gcc 3.5. */
#ifndef ATTRIBUTE_SENTINEL
# if (GCC_VERSION >= 3005)
# define ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__))
# else
# define ATTRIBUTE_SENTINEL
# endif /* GNUC >= 3.5 */
#endif /* ATTRIBUTE_SENTINEL */
 
 
#ifndef ATTRIBUTE_ALIGNED_ALIGNOF
# if (GCC_VERSION >= 3000)
# define ATTRIBUTE_ALIGNED_ALIGNOF(m) __attribute__ ((__aligned__ (__alignof__ (m))))
# else
# define ATTRIBUTE_ALIGNED_ALIGNOF(m)
# endif /* GNUC >= 3.0 */
#endif /* ATTRIBUTE_ALIGNED_ALIGNOF */
 
/* Useful for structures whose layout must much some binary specification
regardless of the alignment and padding qualities of the compiler. */
#ifndef ATTRIBUTE_PACKED
# define ATTRIBUTE_PACKED __attribute__ ((packed))
#endif
 
/* Attribute `hot' and `cold' was valid as of gcc 4.3. */
#ifndef ATTRIBUTE_COLD
# if (GCC_VERSION >= 4003)
# define ATTRIBUTE_COLD __attribute__ ((__cold__))
# else
# define ATTRIBUTE_COLD
# endif /* GNUC >= 4.3 */
#endif /* ATTRIBUTE_COLD */
#ifndef ATTRIBUTE_HOT
# if (GCC_VERSION >= 4003)
# define ATTRIBUTE_HOT __attribute__ ((__hot__))
# else
# define ATTRIBUTE_HOT
# endif /* GNUC >= 4.3 */
#endif /* ATTRIBUTE_HOT */
 
/* We use __extension__ in some places to suppress -pedantic warnings
about GCC extensions. This feature didn't work properly before
gcc 2.8. */
#if GCC_VERSION < 2008
#define __extension__
#endif
 
/* This is used to declare a const variable which should be visible
outside of the current compilation unit. Use it as
EXPORTED_CONST int i = 1;
This is because the semantics of const are different in C and C++.
"extern const" is permitted in C but it looks strange, and gcc
warns about it when -Wc++-compat is not used. */
#ifdef __cplusplus
#define EXPORTED_CONST extern const
#else
#define EXPORTED_CONST const
#endif
 
/* Be conservative and only use enum bitfields with C++ or GCC.
FIXME: provide a complete autoconf test for buggy enum bitfields. */
 
#ifdef __cplusplus
#define ENUM_BITFIELD(TYPE) enum TYPE
#elif (GCC_VERSION > 2000)
#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE
#else
#define ENUM_BITFIELD(TYPE) unsigned int
#endif
 
#ifdef __cplusplus
}
#endif
 
#endif /* ansidecl.h */
/COPYING
0,0 → 1,340
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
 
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
 
Preamble
 
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
 
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
 
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
 
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
 
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
 
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
 
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
 
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
 
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
 
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
 
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
 
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
 
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
 
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
 
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
 
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
 
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
 
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
 
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
 
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
 
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
 
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
 
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
 
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
 
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
 
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
 
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
 
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
 
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
 
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
 
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
 
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
 
NO WARRANTY
 
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
 
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
 
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
 
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
 
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
 
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
 
Also add information on how to contact you by electronic and paper mail.
 
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
 
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
 
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
 
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
 
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
 
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
 
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
/xregex2.h
0,0 → 1,565
/* Definitions for data structures and routines for the regular
expression library, version 0.12.
 
Copyright (C) 1985, 1989, 1990, 1991, 1992, 1993, 1995, 1996, 1997,
1998, 2000, 2005 Free Software Foundation, Inc.
 
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
 
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
 
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
 
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA. */
 
#ifndef _REGEX_H
#define _REGEX_H 1
 
/* Allow the use in C++ code. */
#ifdef __cplusplus
extern "C" {
#endif
 
/* POSIX says that <sys/types.h> must be included (by the caller) before
<regex.h>. */
 
#if !defined _POSIX_C_SOURCE && !defined _POSIX_SOURCE && defined VMS
/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
should be there. */
# include <stddef.h>
#endif
 
/* The following two types have to be signed and unsigned integer type
wide enough to hold a value of a pointer. For most ANSI compilers
ptrdiff_t and size_t should be likely OK. Still size of these two
types is 2 for Microsoft C. Ugh... */
typedef long int s_reg_t;
typedef unsigned long int active_reg_t;
 
/* The following bits are used to determine the regexp syntax we
recognize. The set/not-set meanings are chosen so that Emacs syntax
remains the value 0. The bits are given in alphabetical order, and
the definitions shifted by one from the previous bit; thus, when we
add or remove a bit, only one other definition need change. */
typedef unsigned long int reg_syntax_t;
 
/* If this bit is not set, then \ inside a bracket expression is literal.
If set, then such a \ quotes the following character. */
#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1)
 
/* If this bit is not set, then + and ? are operators, and \+ and \? are
literals.
If set, then \+ and \? are operators and + and ? are literals. */
#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
 
/* If this bit is set, then character classes are supported. They are:
[:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
[:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
If not set, then character classes are not supported. */
#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
 
/* If this bit is set, then ^ and $ are always anchors (outside bracket
expressions, of course).
If this bit is not set, then it depends:
^ is an anchor if it is at the beginning of a regular
expression or after an open-group or an alternation operator;
$ is an anchor if it is at the end of a regular expression, or
before a close-group or an alternation operator.
 
This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
POSIX draft 11.2 says that * etc. in leading positions is undefined.
We already implemented a previous draft which made those constructs
invalid, though, so we haven't changed the code back. */
#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
 
/* If this bit is set, then special characters are always special
regardless of where they are in the pattern.
If this bit is not set, then special characters are special only in
some contexts; otherwise they are ordinary. Specifically,
* + ? and intervals are only special when not after the beginning,
open-group, or alternation operator. */
#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
 
/* If this bit is set, then *, +, ?, and { cannot be first in an re or
immediately after an alternation or begin-group operator. */
#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
 
/* If this bit is set, then . matches newline.
If not set, then it doesn't. */
#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
 
/* If this bit is set, then . doesn't match NUL.
If not set, then it does. */
#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
 
/* If this bit is set, nonmatching lists [^...] do not match newline.
If not set, they do. */
#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
 
/* If this bit is set, either \{...\} or {...} defines an
interval, depending on RE_NO_BK_BRACES.
If not set, \{, \}, {, and } are literals. */
#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
 
/* If this bit is set, +, ? and | aren't recognized as operators.
If not set, they are. */
#define RE_LIMITED_OPS (RE_INTERVALS << 1)
 
/* If this bit is set, newline is an alternation operator.
If not set, newline is literal. */
#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
 
/* If this bit is set, then `{...}' defines an interval, and \{ and \}
are literals.
If not set, then `\{...\}' defines an interval. */
#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
 
/* If this bit is set, (...) defines a group, and \( and \) are literals.
If not set, \(...\) defines a group, and ( and ) are literals. */
#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
 
/* If this bit is set, then \<digit> matches <digit>.
If not set, then \<digit> is a back-reference. */
#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
 
/* If this bit is set, then | is an alternation operator, and \| is literal.
If not set, then \| is an alternation operator, and | is literal. */
#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
 
/* If this bit is set, then an ending range point collating higher
than the starting range point, as in [z-a], is invalid.
If not set, then when ending range point collates higher than the
starting range point, the range is ignored. */
#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
 
/* If this bit is set, then an unmatched ) is ordinary.
If not set, then an unmatched ) is invalid. */
#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
 
/* If this bit is set, succeed as soon as we match the whole pattern,
without further backtracking. */
#define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1)
 
/* If this bit is set, do not process the GNU regex operators.
If not set, then the GNU regex operators are recognized. */
#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1)
 
/* If this bit is set, turn on internal regex debugging.
If not set, and debugging was on, turn it off.
This only works if regex.c is compiled -DDEBUG.
We define this bit always, so that all that's needed to turn on
debugging is to recompile regex.c; the calling code can always have
this bit set, and it won't affect anything in the normal case. */
#define RE_DEBUG (RE_NO_GNU_OPS << 1)
 
/* If this bit is set, a syntactically invalid interval is treated as
a string of ordinary characters. For example, the ERE 'a{1' is
treated as 'a\{1'. */
#define RE_INVALID_INTERVAL_ORD (RE_DEBUG << 1)
 
/* This global variable defines the particular regexp syntax to use (for
some interfaces). When a regexp is compiled, the syntax used is
stored in the pattern buffer, so changing this does not affect
already-compiled regexps. */
extern reg_syntax_t re_syntax_options;
/* Define combinations of the above bits for the standard possibilities.
(The [[[ comments delimit what gets put into the Texinfo file, so
don't delete them!) */
/* [[[begin syntaxes]]] */
#define RE_SYNTAX_EMACS 0
 
#define RE_SYNTAX_AWK \
(RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
| RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
| RE_DOT_NEWLINE | RE_CONTEXT_INDEP_ANCHORS \
| RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS)
 
#define RE_SYNTAX_GNU_AWK \
((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DEBUG) \
& ~(RE_DOT_NOT_NULL | RE_INTERVALS | RE_CONTEXT_INDEP_OPS))
 
#define RE_SYNTAX_POSIX_AWK \
(RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS \
| RE_INTERVALS | RE_NO_GNU_OPS)
 
#define RE_SYNTAX_GREP \
(RE_BK_PLUS_QM | RE_CHAR_CLASSES \
| RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
| RE_NEWLINE_ALT)
 
#define RE_SYNTAX_EGREP \
(RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
| RE_NEWLINE_ALT | RE_NO_BK_PARENS \
| RE_NO_BK_VBAR)
 
#define RE_SYNTAX_POSIX_EGREP \
(RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES \
| RE_INVALID_INTERVAL_ORD)
 
/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */
#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
 
#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
 
/* Syntax bits common to both basic and extended POSIX regex syntax. */
#define _RE_SYNTAX_POSIX_COMMON \
(RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
| RE_INTERVALS | RE_NO_EMPTY_RANGES)
 
#define RE_SYNTAX_POSIX_BASIC \
(_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
 
/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this
isn't minimal, since other operators, such as \`, aren't disabled. */
#define RE_SYNTAX_POSIX_MINIMAL_BASIC \
(_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
 
#define RE_SYNTAX_POSIX_EXTENDED \
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
| RE_NO_BK_PARENS | RE_NO_BK_VBAR \
| RE_CONTEXT_INVALID_OPS | RE_UNMATCHED_RIGHT_PAREN_ORD)
 
/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INDEP_OPS is
removed and RE_NO_BK_REFS is added. */
#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
| RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
/* [[[end syntaxes]]] */
/* Maximum number of duplicates an interval can allow. Some systems
(erroneously) define this in other header files, but we want our
value, so remove any previous define. */
#ifdef RE_DUP_MAX
# undef RE_DUP_MAX
#endif
/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */
#define RE_DUP_MAX (0x7fff)
 
 
/* POSIX `cflags' bits (i.e., information for `regcomp'). */
 
/* If this bit is set, then use extended regular expression syntax.
If not set, then use basic regular expression syntax. */
#define REG_EXTENDED 1
 
/* If this bit is set, then ignore case when matching.
If not set, then case is significant. */
#define REG_ICASE (REG_EXTENDED << 1)
 
/* If this bit is set, then anchors do not match at newline
characters in the string.
If not set, then anchors do match at newlines. */
#define REG_NEWLINE (REG_ICASE << 1)
 
/* If this bit is set, then report only success or fail in regexec.
If not set, then returns differ between not matching and errors. */
#define REG_NOSUB (REG_NEWLINE << 1)
 
 
/* POSIX `eflags' bits (i.e., information for regexec). */
 
/* If this bit is set, then the beginning-of-line operator doesn't match
the beginning of the string (presumably because it's not the
beginning of a line).
If not set, then the beginning-of-line operator does match the
beginning of the string. */
#define REG_NOTBOL 1
 
/* Like REG_NOTBOL, except for the end-of-line. */
#define REG_NOTEOL (1 << 1)
 
 
/* If any error codes are removed, changed, or added, update the
`re_error_msg' table in regex.c. */
typedef enum
{
#ifdef _XOPEN_SOURCE
REG_ENOSYS = -1, /* This will never happen for this implementation. */
#endif
 
REG_NOERROR = 0, /* Success. */
REG_NOMATCH, /* Didn't find a match (for regexec). */
 
/* POSIX regcomp return error codes. (In the order listed in the
standard.) */
REG_BADPAT, /* Invalid pattern. */
REG_ECOLLATE, /* Not implemented. */
REG_ECTYPE, /* Invalid character class name. */
REG_EESCAPE, /* Trailing backslash. */
REG_ESUBREG, /* Invalid back reference. */
REG_EBRACK, /* Unmatched left bracket. */
REG_EPAREN, /* Parenthesis imbalance. */
REG_EBRACE, /* Unmatched \{. */
REG_BADBR, /* Invalid contents of \{\}. */
REG_ERANGE, /* Invalid range end. */
REG_ESPACE, /* Ran out of memory. */
REG_BADRPT, /* No preceding re for repetition op. */
 
/* Error codes we've added. */
REG_EEND, /* Premature end. */
REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */
} reg_errcode_t;
/* This data structure represents a compiled pattern. Before calling
the pattern compiler, the fields `buffer', `allocated', `fastmap',
`translate', and `no_sub' can be set. After the pattern has been
compiled, the `re_nsub' field is available. All other fields are
private to the regex routines. */
 
#ifndef RE_TRANSLATE_TYPE
# define RE_TRANSLATE_TYPE char *
#endif
 
struct re_pattern_buffer
{
/* [[[begin pattern_buffer]]] */
/* Space that holds the compiled pattern. It is declared as
`unsigned char *' because its elements are
sometimes used as array indexes. */
unsigned char *buffer;
 
/* Number of bytes to which `buffer' points. */
unsigned long int allocated;
 
/* Number of bytes actually used in `buffer'. */
unsigned long int used;
 
/* Syntax setting with which the pattern was compiled. */
reg_syntax_t syntax;
 
/* Pointer to a fastmap, if any, otherwise zero. re_search uses
the fastmap, if there is one, to skip over impossible
starting points for matches. */
char *fastmap;
 
/* Either a translate table to apply to all characters before
comparing them, or zero for no translation. The translation
is applied to a pattern when it is compiled and to a string
when it is matched. */
RE_TRANSLATE_TYPE translate;
 
/* Number of subexpressions found by the compiler. */
size_t re_nsub;
 
/* Zero if this pattern cannot match the empty string, one else.
Well, in truth it's used only in `re_search_2', to see
whether or not we should use the fastmap, so we don't set
this absolutely perfectly; see `re_compile_fastmap' (the
`duplicate' case). */
unsigned can_be_null : 1;
 
/* If REGS_UNALLOCATED, allocate space in the `regs' structure
for `max (RE_NREGS, re_nsub + 1)' groups.
If REGS_REALLOCATE, reallocate space if necessary.
If REGS_FIXED, use what's there. */
#define REGS_UNALLOCATED 0
#define REGS_REALLOCATE 1
#define REGS_FIXED 2
unsigned regs_allocated : 2;
 
/* Set to zero when `regex_compile' compiles a pattern; set to one
by `re_compile_fastmap' if it updates the fastmap. */
unsigned fastmap_accurate : 1;
 
/* If set, `re_match_2' does not return information about
subexpressions. */
unsigned no_sub : 1;
 
/* If set, a beginning-of-line anchor doesn't match at the
beginning of the string. */
unsigned not_bol : 1;
 
/* Similarly for an end-of-line anchor. */
unsigned not_eol : 1;
 
/* If true, an anchor at a newline matches. */
unsigned newline_anchor : 1;
 
/* [[[end pattern_buffer]]] */
};
 
typedef struct re_pattern_buffer regex_t;
/* Type for byte offsets within the string. POSIX mandates this. */
typedef int regoff_t;
 
 
/* This is the structure we store register match data in. See
regex.texinfo for a full description of what registers match. */
struct re_registers
{
unsigned num_regs;
regoff_t *start;
regoff_t *end;
};
 
 
/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
`re_match_2' returns information about at least this many registers
the first time a `regs' structure is passed. */
#ifndef RE_NREGS
# define RE_NREGS 30
#endif
 
 
/* POSIX specification for registers. Aside from the different names than
`re_registers', POSIX uses an array of structures, instead of a
structure of arrays. */
typedef struct
{
regoff_t rm_so; /* Byte offset from string's start to substring's start. */
regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
} regmatch_t;
/* Declarations for routines. */
 
/* To avoid duplicating every routine declaration -- once with a
prototype (if we are ANSI), and once without (if we aren't) -- we
use the following macro to declare argument types. This
unfortunately clutters up the declarations a bit, but I think it's
worth it. */
 
/* Sets the current default syntax to SYNTAX, and return the old syntax.
You can also simply assign to the `re_syntax_options' variable. */
extern reg_syntax_t re_set_syntax (reg_syntax_t syntax);
 
/* Compile the regular expression PATTERN, with length LENGTH
and syntax given by the global `re_syntax_options', into the buffer
BUFFER. Return NULL if successful, and an error string if not. */
extern const char *re_compile_pattern (const char *pattern, size_t length,
struct re_pattern_buffer *buffer);
 
 
/* Compile a fastmap for the compiled pattern in BUFFER; used to
accelerate searches. Return 0 if successful and -2 if was an
internal error. */
extern int re_compile_fastmap (struct re_pattern_buffer *buffer);
 
 
/* Search in the string STRING (with length LENGTH) for the pattern
compiled into BUFFER. Start searching at position START, for RANGE
characters. Return the starting position of the match, -1 for no
match, or -2 for an internal error. Also return register
information in REGS (if REGS and BUFFER->no_sub are nonzero). */
extern int re_search (struct re_pattern_buffer *buffer, const char *string,
int length, int start, int range,
struct re_registers *regs);
 
 
/* Like `re_search', but search in the concatenation of STRING1 and
STRING2. Also, stop searching at index START + STOP. */
extern int re_search_2 (struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, int range, struct re_registers *regs,
int stop);
 
 
/* Like `re_search', but return how many characters in STRING the regexp
in BUFFER matched, starting at position START. */
extern int re_match (struct re_pattern_buffer *buffer, const char *string,
int length, int start, struct re_registers *regs);
 
 
/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
extern int re_match_2 (struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, struct re_registers *regs, int stop);
 
 
/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
ENDS. Subsequent matches using BUFFER and REGS will use this memory
for recording register information. STARTS and ENDS must be
allocated with malloc, and must each be at least `NUM_REGS * sizeof
(regoff_t)' bytes long.
 
If NUM_REGS == 0, then subsequent matches should allocate their own
register data.
 
Unless this function is called, the first search or match using
PATTERN_BUFFER will allocate its own register data, without
freeing the old data. */
extern void re_set_registers (struct re_pattern_buffer *buffer,
struct re_registers *regs,
unsigned num_regs, regoff_t *starts,
regoff_t *ends);
 
#if defined _REGEX_RE_COMP || defined _LIBC
# ifndef _CRAY
/* 4.2 bsd compatibility. */
extern char *re_comp (const char *);
extern int re_exec (const char *);
# endif
#endif
 
/* GCC 2.95 and later have "__restrict"; C99 compilers have
"restrict", and "configure" may have defined "restrict". */
#ifndef __restrict
# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
# if defined restrict || 199901L <= __STDC_VERSION__
# define __restrict restrict
# else
# define __restrict
# endif
# endif
#endif
 
/* GCC 3.1 and later support declaring arrays as non-overlapping
using the syntax array_name[restrict] */
#ifndef __restrict_arr
# if ! (3 < __GNUC__ || (3 == __GNUC__ && 1 <= __GNUC_MINOR__)) || defined (__GNUG__)
# define __restrict_arr
# else
# define __restrict_arr __restrict
# endif
#endif
 
/* POSIX compatibility. */
extern int regcomp (regex_t *__restrict __preg,
const char *__restrict __pattern,
int __cflags);
 
#if (__GNUC__)
__extension__
#endif
extern int regexec (const regex_t *__restrict __preg,
const char *__restrict __string, size_t __nmatch,
regmatch_t __pmatch[__restrict_arr],
int __eflags);
 
extern size_t regerror (int __errcode, const regex_t *__preg,
char *__errbuf, size_t __errbuf_size);
 
extern void regfree (regex_t *__preg);
 
 
#ifdef __cplusplus
}
#endif /* C++ */
 
#endif /* regex.h */
/*
Local variables:
make-backup-files: t
version-control: t
trim-versions-without-asking: nil
End:
*/
/libiberty.h
0,0 → 1,686
/* Function declarations for libiberty.
 
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
Note - certain prototypes declared in this header file are for
functions whoes implementation copyright does not belong to the
FSF. Those prototypes are present in this file for reference
purposes only and their presence in this file should not construed
as an indication of ownership by the FSF of the implementation of
those functions in any way or form whatsoever.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA.
Written by Cygnus Support, 1994.
 
The libiberty library provides a number of functions which are
missing on some operating systems. We do not declare those here,
to avoid conflicts with the system header files on operating
systems that do support those functions. In this file we only
declare those functions which are specific to libiberty. */
 
#ifndef LIBIBERTY_H
#define LIBIBERTY_H
 
#ifdef __cplusplus
extern "C" {
#endif
 
#include "ansidecl.h"
 
/* Get a definition for size_t. */
#include <stddef.h>
/* Get a definition for va_list. */
#include <stdarg.h>
 
#include <stdio.h>
 
/* If the OS supports it, ensure that the supplied stream is setup to
avoid any multi-threaded locking. Otherwise leave the FILE pointer
unchanged. If the stream is NULL do nothing. */
 
extern void unlock_stream (FILE *);
 
/* If the OS supports it, ensure that the standard I/O streams, stdin,
stdout and stderr are setup to avoid any multi-threaded locking.
Otherwise do nothing. */
 
extern void unlock_std_streams (void);
 
/* Open and return a FILE pointer. If the OS supports it, ensure that
the stream is setup to avoid any multi-threaded locking. Otherwise
return the FILE pointer unchanged. */
 
extern FILE *fopen_unlocked (const char *, const char *);
extern FILE *fdopen_unlocked (int, const char *);
extern FILE *freopen_unlocked (const char *, const char *, FILE *);
 
/* Build an argument vector from a string. Allocates memory using
malloc. Use freeargv to free the vector. */
 
extern char **buildargv (const char *) ATTRIBUTE_MALLOC;
 
/* Free a vector returned by buildargv. */
 
extern void freeargv (char **);
 
/* Duplicate an argument vector. Allocates memory using malloc. Use
freeargv to free the vector. */
 
extern char **dupargv (char **) ATTRIBUTE_MALLOC;
 
/* Expand "@file" arguments in argv. */
 
extern void expandargv PARAMS ((int *, char ***));
 
/* Write argv to an @-file, inserting necessary quoting. */
 
extern int writeargv PARAMS ((char **, FILE *));
 
/* Return the number of elements in argv. */
 
extern int countargv (char**);
 
/* Return the last component of a path name. Note that we can't use a
prototype here because the parameter is declared inconsistently
across different systems, sometimes as "char *" and sometimes as
"const char *" */
 
/* HAVE_DECL_* is a three-state macro: undefined, 0 or 1. If it is
undefined, we haven't run the autoconf check so provide the
declaration without arguments. If it is 0, we checked and failed
to find the declaration so provide a fully prototyped one. If it
is 1, we found it so don't provide any declaration at all. */
#if !HAVE_DECL_BASENAME
#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined(__NetBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) || defined (__MINGW32__) || defined (HAVE_DECL_BASENAME)
extern char *basename (const char *);
#else
/* Do not allow basename to be used if there is no prototype seen. We
either need to use the above prototype or have one from
autoconf which would result in HAVE_DECL_BASENAME being set. */
#define basename basename_cannot_be_used_without_a_prototype
#endif
#endif
 
/* A well-defined basename () that is always compiled in. */
 
extern const char *lbasename (const char *);
 
/* Same, but assumes DOS semantics (drive name, backslash is also a
dir separator) regardless of host. */
 
extern const char *dos_lbasename (const char *);
 
/* Same, but assumes Unix semantics (absolute paths always start with
a slash, only forward slash is accepted as dir separator)
regardless of host. */
 
extern const char *unix_lbasename (const char *);
 
/* A well-defined realpath () that is always compiled in. */
 
extern char *lrealpath (const char *);
 
/* Concatenate an arbitrary number of strings. You must pass NULL as
the last argument of this function, to terminate the list of
strings. Allocates memory using xmalloc. */
 
extern char *concat (const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_SENTINEL;
 
/* Concatenate an arbitrary number of strings. You must pass NULL as
the last argument of this function, to terminate the list of
strings. Allocates memory using xmalloc. The first argument is
not one of the strings to be concatenated, but if not NULL is a
pointer to be freed after the new string is created, similar to the
way xrealloc works. */
 
extern char *reconcat (char *, const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_SENTINEL;
 
/* Determine the length of concatenating an arbitrary number of
strings. You must pass NULL as the last argument of this function,
to terminate the list of strings. */
 
extern unsigned long concat_length (const char *, ...) ATTRIBUTE_SENTINEL;
 
/* Concatenate an arbitrary number of strings into a SUPPLIED area of
memory. You must pass NULL as the last argument of this function,
to terminate the list of strings. The supplied memory is assumed
to be large enough. */
 
extern char *concat_copy (char *, const char *, ...) ATTRIBUTE_SENTINEL;
 
/* Concatenate an arbitrary number of strings into a GLOBAL area of
memory. You must pass NULL as the last argument of this function,
to terminate the list of strings. The supplied memory is assumed
to be large enough. */
 
extern char *concat_copy2 (const char *, ...) ATTRIBUTE_SENTINEL;
 
/* This is the global area used by concat_copy2. */
 
extern char *libiberty_concat_ptr;
 
/* Concatenate an arbitrary number of strings. You must pass NULL as
the last argument of this function, to terminate the list of
strings. Allocates memory using alloca. The arguments are
evaluated twice! */
#define ACONCAT(ACONCAT_PARAMS) \
(libiberty_concat_ptr = (char *) alloca (concat_length ACONCAT_PARAMS + 1), \
concat_copy2 ACONCAT_PARAMS)
 
/* Check whether two file descriptors refer to the same file. */
 
extern int fdmatch (int fd1, int fd2);
 
/* Return the position of the first bit set in the argument. */
/* Prototypes vary from system to system, so we only provide a
prototype on systems where we know that we need it. */
#if defined (HAVE_DECL_FFS) && !HAVE_DECL_FFS
extern int ffs(int);
#endif
 
/* Get the working directory. The result is cached, so don't call
chdir() between calls to getpwd(). */
 
extern char * getpwd (void);
 
/* Get the current time. */
/* Prototypes vary from system to system, so we only provide a
prototype on systems where we know that we need it. */
#ifdef __MINGW32__
/* Forward declaration to avoid #include <sys/time.h>. */
struct timeval;
extern int gettimeofday (struct timeval *, void *);
#endif
 
/* Get the amount of time the process has run, in microseconds. */
 
extern long get_run_time (void);
 
/* Generate a relocated path to some installation directory. Allocates
return value using malloc. */
 
extern char *make_relative_prefix (const char *, const char *,
const char *) ATTRIBUTE_MALLOC;
 
/* Generate a relocated path to some installation directory without
attempting to follow any soft links. Allocates
return value using malloc. */
 
extern char *make_relative_prefix_ignore_links (const char *, const char *,
const char *) ATTRIBUTE_MALLOC;
 
/* Choose a temporary directory to use for scratch files. */
 
extern char *choose_temp_base (void) ATTRIBUTE_MALLOC;
 
/* Return a temporary file name or NULL if unable to create one. */
 
extern char *make_temp_file (const char *) ATTRIBUTE_MALLOC;
 
/* Remove a link to a file unless it is special. */
 
extern int unlink_if_ordinary (const char *);
 
/* Allocate memory filled with spaces. Allocates using malloc. */
 
extern const char *spaces (int count);
 
/* Return the maximum error number for which strerror will return a
string. */
 
extern int errno_max (void);
 
/* Return the name of an errno value (e.g., strerrno (EINVAL) returns
"EINVAL"). */
 
extern const char *strerrno (int);
 
/* Given the name of an errno value, return the value. */
 
extern int strtoerrno (const char *);
 
/* ANSI's strerror(), but more robust. */
 
extern char *xstrerror (int);
 
/* Return the maximum signal number for which strsignal will return a
string. */
 
extern int signo_max (void);
 
/* Return a signal message string for a signal number
(e.g., strsignal (SIGHUP) returns something like "Hangup"). */
/* This is commented out as it can conflict with one in system headers.
We still document its existence though. */
 
/*extern const char *strsignal (int);*/
 
/* Return the name of a signal number (e.g., strsigno (SIGHUP) returns
"SIGHUP"). */
 
extern const char *strsigno (int);
 
/* Given the name of a signal, return its number. */
 
extern int strtosigno (const char *);
 
/* Register a function to be run by xexit. Returns 0 on success. */
 
extern int xatexit (void (*fn) (void));
 
/* Exit, calling all the functions registered with xatexit. */
 
extern void xexit (int status) ATTRIBUTE_NORETURN;
 
/* Set the program name used by xmalloc. */
 
extern void xmalloc_set_program_name (const char *);
 
/* Report an allocation failure. */
extern void xmalloc_failed (size_t) ATTRIBUTE_NORETURN;
 
/* Allocate memory without fail. If malloc fails, this will print a
message to stderr (using the name set by xmalloc_set_program_name,
if any) and then call xexit. */
 
extern void *xmalloc (size_t) ATTRIBUTE_MALLOC;
 
/* Reallocate memory without fail. This works like xmalloc. Note,
realloc type functions are not suitable for attribute malloc since
they may return the same address across multiple calls. */
 
extern void *xrealloc (void *, size_t);
 
/* Allocate memory without fail and set it to zero. This works like
xmalloc. */
 
extern void *xcalloc (size_t, size_t) ATTRIBUTE_MALLOC;
 
/* Copy a string into a memory buffer without fail. */
 
extern char *xstrdup (const char *) ATTRIBUTE_MALLOC;
 
/* Copy at most N characters from string into a buffer without fail. */
 
extern char *xstrndup (const char *, size_t) ATTRIBUTE_MALLOC;
 
/* Copy an existing memory buffer to a new memory buffer without fail. */
 
extern void *xmemdup (const void *, size_t, size_t) ATTRIBUTE_MALLOC;
 
/* Physical memory routines. Return values are in BYTES. */
extern double physmem_total (void);
extern double physmem_available (void);
 
/* Compute the 32-bit CRC of a block of memory. */
extern unsigned int xcrc32 (const unsigned char *, int, unsigned int);
 
/* These macros provide a K&R/C89/C++-friendly way of allocating structures
with nice encapsulation. The XDELETE*() macros are technically
superfluous, but provided here for symmetry. Using them consistently
makes it easier to update client code to use different allocators such
as new/delete and new[]/delete[]. */
 
/* Scalar allocators. */
 
#define XALLOCA(T) ((T *) alloca (sizeof (T)))
#define XNEW(T) ((T *) xmalloc (sizeof (T)))
#define XCNEW(T) ((T *) xcalloc (1, sizeof (T)))
#define XDUP(T, P) ((T *) xmemdup ((P), sizeof (T), sizeof (T)))
#define XDELETE(P) free ((void*) (P))
 
/* Array allocators. */
 
#define XALLOCAVEC(T, N) ((T *) alloca (sizeof (T) * (N)))
#define XNEWVEC(T, N) ((T *) xmalloc (sizeof (T) * (N)))
#define XCNEWVEC(T, N) ((T *) xcalloc ((N), sizeof (T)))
#define XDUPVEC(T, P, N) ((T *) xmemdup ((P), sizeof (T) * (N), sizeof (T) * (N)))
#define XRESIZEVEC(T, P, N) ((T *) xrealloc ((void *) (P), sizeof (T) * (N)))
#define XDELETEVEC(P) free ((void*) (P))
 
/* Allocators for variable-sized structures and raw buffers. */
 
#define XALLOCAVAR(T, S) ((T *) alloca ((S)))
#define XNEWVAR(T, S) ((T *) xmalloc ((S)))
#define XCNEWVAR(T, S) ((T *) xcalloc (1, (S)))
#define XDUPVAR(T, P, S1, S2) ((T *) xmemdup ((P), (S1), (S2)))
#define XRESIZEVAR(T, P, S) ((T *) xrealloc ((P), (S)))
 
/* Type-safe obstack allocator. */
 
#define XOBNEW(O, T) ((T *) obstack_alloc ((O), sizeof (T)))
#define XOBNEWVEC(O, T, N) ((T *) obstack_alloc ((O), sizeof (T) * (N)))
#define XOBNEWVAR(O, T, S) ((T *) obstack_alloc ((O), (S)))
#define XOBFINISH(O, T) ((T) obstack_finish ((O)))
 
/* hex character manipulation routines */
 
#define _hex_array_size 256
#define _hex_bad 99
extern const unsigned char _hex_value[_hex_array_size];
extern void hex_init (void);
#define hex_p(c) (hex_value (c) != _hex_bad)
/* If you change this, note well: Some code relies on side effects in
the argument being performed exactly once. */
#define hex_value(c) ((unsigned int) _hex_value[(unsigned char) (c)])
 
/* Flags for pex_init. These are bits to be or'ed together. */
 
/* Record subprocess times, if possible. */
#define PEX_RECORD_TIMES 0x1
 
/* Use pipes for communication between processes, if possible. */
#define PEX_USE_PIPES 0x2
 
/* Save files used for communication between processes. */
#define PEX_SAVE_TEMPS 0x4
 
/* Prepare to execute one or more programs, with standard output of
each program fed to standard input of the next.
FLAGS As above.
PNAME The name of the program to report in error messages.
TEMPBASE A base name to use for temporary files; may be NULL to
use a random name.
Returns NULL on error. */
 
extern struct pex_obj *pex_init (int flags, const char *pname,
const char *tempbase);
 
/* Flags for pex_run. These are bits to be or'ed together. */
 
/* Last program in pipeline. Standard output of program goes to
OUTNAME, or, if OUTNAME is NULL, to standard output of caller. Do
not set this if you want to call pex_read_output. After this is
set, pex_run may no longer be called with the same struct
pex_obj. */
#define PEX_LAST 0x1
 
/* Search for program in executable search path. */
#define PEX_SEARCH 0x2
 
/* OUTNAME is a suffix. */
#define PEX_SUFFIX 0x4
 
/* Send program's standard error to standard output. */
#define PEX_STDERR_TO_STDOUT 0x8
 
/* Input file should be opened in binary mode. This flag is ignored
on Unix. */
#define PEX_BINARY_INPUT 0x10
 
/* Output file should be opened in binary mode. This flag is ignored
on Unix. For proper behaviour PEX_BINARY_INPUT and
PEX_BINARY_OUTPUT have to match appropriately--i.e., a call using
PEX_BINARY_OUTPUT should be followed by a call using
PEX_BINARY_INPUT. */
#define PEX_BINARY_OUTPUT 0x20
 
/* Capture stderr to a pipe. The output can be read by
calling pex_read_err and reading from the returned
FILE object. This flag may be specified only for
the last program in a pipeline.
 
This flag is supported only on Unix and Windows. */
#define PEX_STDERR_TO_PIPE 0x40
 
/* Capture stderr in binary mode. This flag is ignored
on Unix. */
#define PEX_BINARY_ERROR 0x80
 
 
/* Execute one program. Returns NULL on success. On error returns an
error string (typically just the name of a system call); the error
string is statically allocated.
 
OBJ Returned by pex_init.
 
FLAGS As above.
 
EXECUTABLE The program to execute.
 
ARGV NULL terminated array of arguments to pass to the program.
 
OUTNAME Sets the output file name as follows:
 
PEX_SUFFIX set (OUTNAME may not be NULL):
TEMPBASE parameter to pex_init not NULL:
Output file name is the concatenation of TEMPBASE
and OUTNAME.
TEMPBASE is NULL:
Output file name is a random file name ending in
OUTNAME.
PEX_SUFFIX not set:
OUTNAME not NULL:
Output file name is OUTNAME.
OUTNAME NULL, TEMPBASE not NULL:
Output file name is randomly chosen using
TEMPBASE.
OUTNAME NULL, TEMPBASE NULL:
Output file name is randomly chosen.
 
If PEX_LAST is not set, the output file name is the
name to use for a temporary file holding stdout, if
any (there will not be a file if PEX_USE_PIPES is set
and the system supports pipes). If a file is used, it
will be removed when no longer needed unless
PEX_SAVE_TEMPS is set.
 
If PEX_LAST is set, and OUTNAME is not NULL, standard
output is written to the output file name. The file
will not be removed. If PEX_LAST and PEX_SUFFIX are
both set, TEMPBASE may not be NULL.
 
ERRNAME If not NULL, this is the name of a file to which
standard error is written. If NULL, standard error of
the program is standard error of the caller.
 
ERR On an error return, *ERR is set to an errno value, or
to 0 if there is no relevant errno.
*/
 
extern const char *pex_run (struct pex_obj *obj, int flags,
const char *executable, char * const *argv,
const char *outname, const char *errname,
int *err);
 
/* As for pex_run (), but takes an extra parameter to enable the
environment for the child process to be specified.
 
ENV The environment for the child process, specified as
an array of character pointers. Each element of the
array should point to a string of the form VAR=VALUE,
with the exception of the last element which must be
a null pointer.
*/
 
extern const char *pex_run_in_environment (struct pex_obj *obj, int flags,
const char *executable,
char * const *argv,
char * const *env,
const char *outname,
const char *errname, int *err);
 
/* Return a stream for a temporary file to pass to the first program
in the pipeline as input. The file name is chosen as for pex_run.
pex_run closes the file automatically; don't close it yourself. */
 
extern FILE *pex_input_file (struct pex_obj *obj, int flags,
const char *in_name);
 
/* Return a stream for a pipe connected to the standard input of the
first program in the pipeline. You must have passed
`PEX_USE_PIPES' to `pex_init'. Close the returned stream
yourself. */
 
extern FILE *pex_input_pipe (struct pex_obj *obj, int binary);
 
/* Read the standard output of the last program to be executed.
pex_run can not be called after this. BINARY should be non-zero if
the file should be opened in binary mode; this is ignored on Unix.
Returns NULL on error. Don't call fclose on the returned FILE; it
will be closed by pex_free. */
 
extern FILE *pex_read_output (struct pex_obj *, int binary);
 
/* Read the standard error of the last program to be executed.
pex_run can not be called after this. BINARY should be non-zero if
the file should be opened in binary mode; this is ignored on Unix.
Returns NULL on error. Don't call fclose on the returned FILE; it
will be closed by pex_free. */
 
extern FILE *pex_read_err (struct pex_obj *, int binary);
 
/* Return exit status of all programs in VECTOR. COUNT indicates the
size of VECTOR. The status codes in the vector are in the order of
the calls to pex_run. Returns 0 on error, 1 on success. */
 
extern int pex_get_status (struct pex_obj *, int count, int *vector);
 
/* Return times of all programs in VECTOR. COUNT indicates the size
of VECTOR. struct pex_time is really just struct timeval, but that
is not portable to all systems. Returns 0 on error, 1 on
success. */
 
struct pex_time
{
unsigned long user_seconds;
unsigned long user_microseconds;
unsigned long system_seconds;
unsigned long system_microseconds;
};
 
extern int pex_get_times (struct pex_obj *, int count,
struct pex_time *vector);
 
/* Clean up a pex_obj. If you have not called pex_get_times or
pex_get_status, this will try to kill the subprocesses. */
 
extern void pex_free (struct pex_obj *);
 
/* Just execute one program. Return value is as for pex_run.
FLAGS Combination of PEX_SEARCH and PEX_STDERR_TO_STDOUT.
EXECUTABLE As for pex_run.
ARGV As for pex_run.
PNAME As for pex_init.
OUTNAME As for pex_run when PEX_LAST is set.
ERRNAME As for pex_run.
STATUS Set to exit status on success.
ERR As for pex_run.
*/
 
extern const char *pex_one (int flags, const char *executable,
char * const *argv, const char *pname,
const char *outname, const char *errname,
int *status, int *err);
 
/* pexecute and pwait are the old pexecute interface, still here for
backward compatibility. Don't use these for new code. Instead,
use pex_init/pex_run/pex_get_status/pex_free, or pex_one. */
 
/* Definitions used by the pexecute routine. */
 
#define PEXECUTE_FIRST 1
#define PEXECUTE_LAST 2
#define PEXECUTE_ONE (PEXECUTE_FIRST + PEXECUTE_LAST)
#define PEXECUTE_SEARCH 4
#define PEXECUTE_VERBOSE 8
 
/* Execute a program. */
 
extern int pexecute (const char *, char * const *, const char *,
const char *, char **, char **, int);
 
/* Wait for pexecute to finish. */
 
extern int pwait (int, int *, int);
 
#if !HAVE_DECL_ASPRINTF
/* Like sprintf but provides a pointer to malloc'd storage, which must
be freed by the caller. */
 
extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
#endif
 
#if !HAVE_DECL_VASPRINTF
/* Like vsprintf but provides a pointer to malloc'd storage, which
must be freed by the caller. */
 
extern int vasprintf (char **, const char *, va_list) ATTRIBUTE_PRINTF(2,0);
#endif
 
#if defined(HAVE_DECL_SNPRINTF) && !HAVE_DECL_SNPRINTF
/* Like sprintf but prints at most N characters. */
extern int snprintf (char *, size_t, const char *, ...) ATTRIBUTE_PRINTF_3;
#endif
 
#if defined(HAVE_DECL_VSNPRINTF) && !HAVE_DECL_VSNPRINTF
/* Like vsprintf but prints at most N characters. */
extern int vsnprintf (char *, size_t, const char *, va_list) ATTRIBUTE_PRINTF(3,0);
#endif
 
#if defined(HAVE_DECL_STRVERSCMP) && !HAVE_DECL_STRVERSCMP
/* Compare version strings. */
extern int strverscmp (const char *, const char *);
#endif
 
/* Set the title of a process */
extern void setproctitle (const char *name, ...);
 
/* Increase stack limit if possible. */
extern void stack_limit_increase (unsigned long);
 
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
 
/* Drastically simplified alloca configurator. If we're using GCC,
we use __builtin_alloca; otherwise we use the C alloca. The C
alloca is always available. You can override GCC by defining
USE_C_ALLOCA yourself. The canonical autoconf macro C_ALLOCA is
also set/unset as it is often used to indicate whether code needs
to call alloca(0). */
extern void *C_alloca (size_t) ATTRIBUTE_MALLOC;
#undef alloca
#if GCC_VERSION >= 2000 && !defined USE_C_ALLOCA
# define alloca(x) __builtin_alloca(x)
# undef C_ALLOCA
# define ASTRDUP(X) \
(__extension__ ({ const char *const libiberty_optr = (X); \
const unsigned long libiberty_len = strlen (libiberty_optr) + 1; \
char *const libiberty_nptr = (char *const) alloca (libiberty_len); \
(char *) memcpy (libiberty_nptr, libiberty_optr, libiberty_len); }))
#else
# define alloca(x) C_alloca(x)
# undef USE_C_ALLOCA
# define USE_C_ALLOCA 1
# undef C_ALLOCA
# define C_ALLOCA 1
extern const char *libiberty_optr;
extern char *libiberty_nptr;
extern unsigned long libiberty_len;
# define ASTRDUP(X) \
(libiberty_optr = (X), \
libiberty_len = strlen (libiberty_optr) + 1, \
libiberty_nptr = (char *) alloca (libiberty_len), \
(char *) memcpy (libiberty_nptr, libiberty_optr, libiberty_len))
#endif
 
#ifdef __cplusplus
}
#endif
 
 
#endif /* ! defined (LIBIBERTY_H) */
/dwarf2.h
0,0 → 1,933
/* Declarations and definitions of codes relating to the DWARF2 and
DWARF3 symbolic debugging information formats.
Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
 
Written by Gary Funck (gary@intrepid.com) The Ada Joint Program
Office (AJPO), Florida State University and Silicon Graphics Inc.
provided support for this effort -- June 21, 1995.
 
Derived from the DWARF 1 implementation written by Ron Guilmette
(rfg@netcom.com), November 1990.
 
This file is part of GCC.
 
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.
 
GCC is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
 
Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.
 
You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
 
/* This file is derived from the DWARF specification (a public document)
Revision 2.0.0 (July 27, 1993) developed by the UNIX International
Programming Languages Special Interest Group (UI/PLSIG) and distributed
by UNIX International. Copies of this specification are available from
UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
 
This file also now contains definitions from the DWARF 3 specification
published Dec 20, 2005, available from: http://dwarf.freestandards.org. */
 
/* This file is shared between GCC and GDB, and should not contain
prototypes. */
 
#ifndef _DWARF2_H
#define _DWARF2_H
 
/* Tag names and codes. */
enum dwarf_tag
{
DW_TAG_padding = 0x00,
DW_TAG_array_type = 0x01,
DW_TAG_class_type = 0x02,
DW_TAG_entry_point = 0x03,
DW_TAG_enumeration_type = 0x04,
DW_TAG_formal_parameter = 0x05,
DW_TAG_imported_declaration = 0x08,
DW_TAG_label = 0x0a,
DW_TAG_lexical_block = 0x0b,
DW_TAG_member = 0x0d,
DW_TAG_pointer_type = 0x0f,
DW_TAG_reference_type = 0x10,
DW_TAG_compile_unit = 0x11,
DW_TAG_string_type = 0x12,
DW_TAG_structure_type = 0x13,
DW_TAG_subroutine_type = 0x15,
DW_TAG_typedef = 0x16,
DW_TAG_union_type = 0x17,
DW_TAG_unspecified_parameters = 0x18,
DW_TAG_variant = 0x19,
DW_TAG_common_block = 0x1a,
DW_TAG_common_inclusion = 0x1b,
DW_TAG_inheritance = 0x1c,
DW_TAG_inlined_subroutine = 0x1d,
DW_TAG_module = 0x1e,
DW_TAG_ptr_to_member_type = 0x1f,
DW_TAG_set_type = 0x20,
DW_TAG_subrange_type = 0x21,
DW_TAG_with_stmt = 0x22,
DW_TAG_access_declaration = 0x23,
DW_TAG_base_type = 0x24,
DW_TAG_catch_block = 0x25,
DW_TAG_const_type = 0x26,
DW_TAG_constant = 0x27,
DW_TAG_enumerator = 0x28,
DW_TAG_file_type = 0x29,
DW_TAG_friend = 0x2a,
DW_TAG_namelist = 0x2b,
DW_TAG_namelist_item = 0x2c,
DW_TAG_packed_type = 0x2d,
DW_TAG_subprogram = 0x2e,
DW_TAG_template_type_param = 0x2f,
DW_TAG_template_value_param = 0x30,
DW_TAG_thrown_type = 0x31,
DW_TAG_try_block = 0x32,
DW_TAG_variant_part = 0x33,
DW_TAG_variable = 0x34,
DW_TAG_volatile_type = 0x35,
/* DWARF 3. */
DW_TAG_dwarf_procedure = 0x36,
DW_TAG_restrict_type = 0x37,
DW_TAG_interface_type = 0x38,
DW_TAG_namespace = 0x39,
DW_TAG_imported_module = 0x3a,
DW_TAG_unspecified_type = 0x3b,
DW_TAG_partial_unit = 0x3c,
DW_TAG_imported_unit = 0x3d,
DW_TAG_condition = 0x3f,
DW_TAG_shared_type = 0x40,
/* DWARF 4. */
DW_TAG_type_unit = 0x41,
DW_TAG_rvalue_reference_type = 0x42,
DW_TAG_template_alias = 0x43,
 
DW_TAG_lo_user = 0x4080,
DW_TAG_hi_user = 0xffff,
 
/* SGI/MIPS Extensions. */
DW_TAG_MIPS_loop = 0x4081,
 
/* HP extensions. See: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz . */
DW_TAG_HP_array_descriptor = 0x4090,
DW_TAG_HP_Bliss_field = 0x4091,
DW_TAG_HP_Bliss_field_set = 0x4092,
 
/* GNU extensions. */
DW_TAG_format_label = 0x4101, /* For FORTRAN 77 and Fortran 90. */
DW_TAG_function_template = 0x4102, /* For C++. */
DW_TAG_class_template = 0x4103, /* For C++. */
DW_TAG_GNU_BINCL = 0x4104,
DW_TAG_GNU_EINCL = 0x4105,
/* Template template parameter.
See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */
DW_TAG_GNU_template_template_param = 0x4106,
 
/* Template parameter pack extension, specified at
http://wiki.dwarfstd.org/index.php?title=C%2B%2B0x:_Variadic_templates
The values of these two TAGS are in the DW_TAG_GNU_* space until the tags
are properly part of DWARF 5. */
DW_TAG_GNU_template_parameter_pack = 0x4107,
DW_TAG_GNU_formal_parameter_pack = 0x4108,
/* The GNU call site extension, specified at
http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open .
The values of these two TAGS are in the DW_TAG_GNU_* space until the tags
are properly part of DWARF 5. */
DW_TAG_GNU_call_site = 0x4109,
DW_TAG_GNU_call_site_parameter = 0x410a,
/* Extensions for UPC. See: http://upc.gwu.edu/~upc. */
DW_TAG_upc_shared_type = 0x8765,
DW_TAG_upc_strict_type = 0x8766,
DW_TAG_upc_relaxed_type = 0x8767,
/* PGI (STMicroelectronics) extensions. No documentation available. */
DW_TAG_PGI_kanji_type = 0xA000,
DW_TAG_PGI_interface_block = 0xA020
};
 
/* Flag that tells whether entry has a child or not. */
#define DW_children_no 0
#define DW_children_yes 1
 
/* Form names and codes. */
enum dwarf_form
{
DW_FORM_addr = 0x01,
DW_FORM_block2 = 0x03,
DW_FORM_block4 = 0x04,
DW_FORM_data2 = 0x05,
DW_FORM_data4 = 0x06,
DW_FORM_data8 = 0x07,
DW_FORM_string = 0x08,
DW_FORM_block = 0x09,
DW_FORM_block1 = 0x0a,
DW_FORM_data1 = 0x0b,
DW_FORM_flag = 0x0c,
DW_FORM_sdata = 0x0d,
DW_FORM_strp = 0x0e,
DW_FORM_udata = 0x0f,
DW_FORM_ref_addr = 0x10,
DW_FORM_ref1 = 0x11,
DW_FORM_ref2 = 0x12,
DW_FORM_ref4 = 0x13,
DW_FORM_ref8 = 0x14,
DW_FORM_ref_udata = 0x15,
DW_FORM_indirect = 0x16,
/* DWARF 4. */
DW_FORM_sec_offset = 0x17,
DW_FORM_exprloc = 0x18,
DW_FORM_flag_present = 0x19,
DW_FORM_ref_sig8 = 0x20,
/* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
DW_FORM_GNU_ref_index = 0x1f00,
DW_FORM_GNU_addr_index = 0x1f01,
DW_FORM_GNU_str_index = 0x1f02
};
 
/* Attribute names and codes. */
enum dwarf_attribute
{
DW_AT_sibling = 0x01,
DW_AT_location = 0x02,
DW_AT_name = 0x03,
DW_AT_ordering = 0x09,
DW_AT_subscr_data = 0x0a,
DW_AT_byte_size = 0x0b,
DW_AT_bit_offset = 0x0c,
DW_AT_bit_size = 0x0d,
DW_AT_element_list = 0x0f,
DW_AT_stmt_list = 0x10,
DW_AT_low_pc = 0x11,
DW_AT_high_pc = 0x12,
DW_AT_language = 0x13,
DW_AT_member = 0x14,
DW_AT_discr = 0x15,
DW_AT_discr_value = 0x16,
DW_AT_visibility = 0x17,
DW_AT_import = 0x18,
DW_AT_string_length = 0x19,
DW_AT_common_reference = 0x1a,
DW_AT_comp_dir = 0x1b,
DW_AT_const_value = 0x1c,
DW_AT_containing_type = 0x1d,
DW_AT_default_value = 0x1e,
DW_AT_inline = 0x20,
DW_AT_is_optional = 0x21,
DW_AT_lower_bound = 0x22,
DW_AT_producer = 0x25,
DW_AT_prototyped = 0x27,
DW_AT_return_addr = 0x2a,
DW_AT_start_scope = 0x2c,
DW_AT_bit_stride = 0x2e,
#define DW_AT_stride_size DW_AT_bit_stride /* Note: The use of DW_AT_stride_size is deprecated. */
DW_AT_upper_bound = 0x2f,
DW_AT_abstract_origin = 0x31,
DW_AT_accessibility = 0x32,
DW_AT_address_class = 0x33,
DW_AT_artificial = 0x34,
DW_AT_base_types = 0x35,
DW_AT_calling_convention = 0x36,
DW_AT_count = 0x37,
DW_AT_data_member_location = 0x38,
DW_AT_decl_column = 0x39,
DW_AT_decl_file = 0x3a,
DW_AT_decl_line = 0x3b,
DW_AT_declaration = 0x3c,
DW_AT_discr_list = 0x3d,
DW_AT_encoding = 0x3e,
DW_AT_external = 0x3f,
DW_AT_frame_base = 0x40,
DW_AT_friend = 0x41,
DW_AT_identifier_case = 0x42,
DW_AT_macro_info = 0x43,
DW_AT_namelist_items = 0x44,
DW_AT_priority = 0x45,
DW_AT_segment = 0x46,
DW_AT_specification = 0x47,
DW_AT_static_link = 0x48,
DW_AT_type = 0x49,
DW_AT_use_location = 0x4a,
DW_AT_variable_parameter = 0x4b,
DW_AT_virtuality = 0x4c,
DW_AT_vtable_elem_location = 0x4d,
/* DWARF 3 values. */
DW_AT_allocated = 0x4e,
DW_AT_associated = 0x4f,
DW_AT_data_location = 0x50,
DW_AT_byte_stride = 0x51,
#define DW_AT_stride DW_AT_byte_stride /* Note: The use of DW_AT_stride is deprecated. */
DW_AT_entry_pc = 0x52,
DW_AT_use_UTF8 = 0x53,
DW_AT_extension = 0x54,
DW_AT_ranges = 0x55,
DW_AT_trampoline = 0x56,
DW_AT_call_column = 0x57,
DW_AT_call_file = 0x58,
DW_AT_call_line = 0x59,
DW_AT_description = 0x5a,
DW_AT_binary_scale = 0x5b,
DW_AT_decimal_scale = 0x5c,
DW_AT_small = 0x5d,
DW_AT_decimal_sign = 0x5e,
DW_AT_digit_count = 0x5f,
DW_AT_picture_string = 0x60,
DW_AT_mutable = 0x61,
DW_AT_threads_scaled = 0x62,
DW_AT_explicit = 0x63,
DW_AT_object_pointer = 0x64,
DW_AT_endianity = 0x65,
DW_AT_elemental = 0x66,
DW_AT_pure = 0x67,
DW_AT_recursive = 0x68,
/* DWARF 4. */
DW_AT_signature = 0x69,
DW_AT_main_subprogram = 0x6a,
DW_AT_data_bit_offset = 0x6b,
DW_AT_const_expr = 0x6c,
DW_AT_enum_class = 0x6d,
DW_AT_linkage_name = 0x6e,
 
DW_AT_lo_user = 0x2000, /* Implementation-defined range start. */
DW_AT_hi_user = 0x3fff, /* Implementation-defined range end. */
 
/* SGI/MIPS extensions. */
DW_AT_MIPS_fde = 0x2001,
DW_AT_MIPS_loop_begin = 0x2002,
DW_AT_MIPS_tail_loop_begin = 0x2003,
DW_AT_MIPS_epilog_begin = 0x2004,
DW_AT_MIPS_loop_unroll_factor = 0x2005,
DW_AT_MIPS_software_pipeline_depth = 0x2006,
DW_AT_MIPS_linkage_name = 0x2007,
DW_AT_MIPS_stride = 0x2008,
DW_AT_MIPS_abstract_name = 0x2009,
DW_AT_MIPS_clone_origin = 0x200a,
DW_AT_MIPS_has_inlines = 0x200b,
/* HP extensions. */
DW_AT_HP_block_index = 0x2000,
DW_AT_HP_unmodifiable = 0x2001, /* Same as DW_AT_MIPS_fde. */
DW_AT_HP_prologue = 0x2005, /* Same as DW_AT_MIPS_loop_unroll. */
DW_AT_HP_epilogue = 0x2008, /* Same as DW_AT_MIPS_stride. */
DW_AT_HP_actuals_stmt_list = 0x2010,
DW_AT_HP_proc_per_section = 0x2011,
DW_AT_HP_raw_data_ptr = 0x2012,
DW_AT_HP_pass_by_reference = 0x2013,
DW_AT_HP_opt_level = 0x2014,
DW_AT_HP_prof_version_id = 0x2015,
DW_AT_HP_opt_flags = 0x2016,
DW_AT_HP_cold_region_low_pc = 0x2017,
DW_AT_HP_cold_region_high_pc = 0x2018,
DW_AT_HP_all_variables_modifiable = 0x2019,
DW_AT_HP_linkage_name = 0x201a,
DW_AT_HP_prof_flags = 0x201b, /* In comp unit of procs_info for -g. */
DW_AT_HP_unit_name = 0x201f,
DW_AT_HP_unit_size = 0x2020,
DW_AT_HP_widened_byte_size = 0x2021,
DW_AT_HP_definition_points = 0x2022,
DW_AT_HP_default_location = 0x2023,
DW_AT_HP_is_result_param = 0x2029,
 
/* GNU extensions. */
DW_AT_sf_names = 0x2101,
DW_AT_src_info = 0x2102,
DW_AT_mac_info = 0x2103,
DW_AT_src_coords = 0x2104,
DW_AT_body_begin = 0x2105,
DW_AT_body_end = 0x2106,
DW_AT_GNU_vector = 0x2107,
/* Thread-safety annotations.
See http://gcc.gnu.org/wiki/ThreadSafetyAnnotation . */
DW_AT_GNU_guarded_by = 0x2108,
DW_AT_GNU_pt_guarded_by = 0x2109,
DW_AT_GNU_guarded = 0x210a,
DW_AT_GNU_pt_guarded = 0x210b,
DW_AT_GNU_locks_excluded = 0x210c,
DW_AT_GNU_exclusive_locks_required = 0x210d,
DW_AT_GNU_shared_locks_required = 0x210e,
/* One-definition rule violation detection.
See http://gcc.gnu.org/wiki/DwarfSeparateTypeInfo . */
DW_AT_GNU_odr_signature = 0x210f,
/* Template template argument name.
See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */
DW_AT_GNU_template_name = 0x2110,
/* The GNU call site extension.
See http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open . */
DW_AT_GNU_call_site_value = 0x2111,
DW_AT_GNU_call_site_data_value = 0x2112,
DW_AT_GNU_call_site_target = 0x2113,
DW_AT_GNU_call_site_target_clobbered = 0x2114,
DW_AT_GNU_tail_call = 0x2115,
DW_AT_GNU_all_tail_call_sites = 0x2116,
DW_AT_GNU_all_call_sites = 0x2117,
DW_AT_GNU_all_source_call_sites = 0x2118,
/* Section offset into .debug_macro section. */
DW_AT_GNU_macros = 0x2119,
/* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */
DW_AT_GNU_dwo_name = 0x2130,
DW_AT_GNU_dwo_id = 0x2131,
DW_AT_GNU_ref_base = 0x2132,
DW_AT_GNU_addr_base = 0x2133,
DW_AT_GNU_pubnames = 0x2134,
DW_AT_GNU_pubtypes = 0x2135,
/* VMS extensions. */
DW_AT_VMS_rtnbeg_pd_address = 0x2201,
/* GNAT extensions. */
/* GNAT descriptive type.
See http://gcc.gnu.org/wiki/DW_AT_GNAT_descriptive_type . */
DW_AT_use_GNAT_descriptive_type = 0x2301,
DW_AT_GNAT_descriptive_type = 0x2302,
/* UPC extension. */
DW_AT_upc_threads_scaled = 0x3210,
/* PGI (STMicroelectronics) extensions. */
DW_AT_PGI_lbase = 0x3a00,
DW_AT_PGI_soffset = 0x3a01,
DW_AT_PGI_lstride = 0x3a02
};
 
/* Location atom names and codes. */
enum dwarf_location_atom
{
DW_OP_addr = 0x03,
DW_OP_deref = 0x06,
DW_OP_const1u = 0x08,
DW_OP_const1s = 0x09,
DW_OP_const2u = 0x0a,
DW_OP_const2s = 0x0b,
DW_OP_const4u = 0x0c,
DW_OP_const4s = 0x0d,
DW_OP_const8u = 0x0e,
DW_OP_const8s = 0x0f,
DW_OP_constu = 0x10,
DW_OP_consts = 0x11,
DW_OP_dup = 0x12,
DW_OP_drop = 0x13,
DW_OP_over = 0x14,
DW_OP_pick = 0x15,
DW_OP_swap = 0x16,
DW_OP_rot = 0x17,
DW_OP_xderef = 0x18,
DW_OP_abs = 0x19,
DW_OP_and = 0x1a,
DW_OP_div = 0x1b,
DW_OP_minus = 0x1c,
DW_OP_mod = 0x1d,
DW_OP_mul = 0x1e,
DW_OP_neg = 0x1f,
DW_OP_not = 0x20,
DW_OP_or = 0x21,
DW_OP_plus = 0x22,
DW_OP_plus_uconst = 0x23,
DW_OP_shl = 0x24,
DW_OP_shr = 0x25,
DW_OP_shra = 0x26,
DW_OP_xor = 0x27,
DW_OP_bra = 0x28,
DW_OP_eq = 0x29,
DW_OP_ge = 0x2a,
DW_OP_gt = 0x2b,
DW_OP_le = 0x2c,
DW_OP_lt = 0x2d,
DW_OP_ne = 0x2e,
DW_OP_skip = 0x2f,
DW_OP_lit0 = 0x30,
DW_OP_lit1 = 0x31,
DW_OP_lit2 = 0x32,
DW_OP_lit3 = 0x33,
DW_OP_lit4 = 0x34,
DW_OP_lit5 = 0x35,
DW_OP_lit6 = 0x36,
DW_OP_lit7 = 0x37,
DW_OP_lit8 = 0x38,
DW_OP_lit9 = 0x39,
DW_OP_lit10 = 0x3a,
DW_OP_lit11 = 0x3b,
DW_OP_lit12 = 0x3c,
DW_OP_lit13 = 0x3d,
DW_OP_lit14 = 0x3e,
DW_OP_lit15 = 0x3f,
DW_OP_lit16 = 0x40,
DW_OP_lit17 = 0x41,
DW_OP_lit18 = 0x42,
DW_OP_lit19 = 0x43,
DW_OP_lit20 = 0x44,
DW_OP_lit21 = 0x45,
DW_OP_lit22 = 0x46,
DW_OP_lit23 = 0x47,
DW_OP_lit24 = 0x48,
DW_OP_lit25 = 0x49,
DW_OP_lit26 = 0x4a,
DW_OP_lit27 = 0x4b,
DW_OP_lit28 = 0x4c,
DW_OP_lit29 = 0x4d,
DW_OP_lit30 = 0x4e,
DW_OP_lit31 = 0x4f,
DW_OP_reg0 = 0x50,
DW_OP_reg1 = 0x51,
DW_OP_reg2 = 0x52,
DW_OP_reg3 = 0x53,
DW_OP_reg4 = 0x54,
DW_OP_reg5 = 0x55,
DW_OP_reg6 = 0x56,
DW_OP_reg7 = 0x57,
DW_OP_reg8 = 0x58,
DW_OP_reg9 = 0x59,
DW_OP_reg10 = 0x5a,
DW_OP_reg11 = 0x5b,
DW_OP_reg12 = 0x5c,
DW_OP_reg13 = 0x5d,
DW_OP_reg14 = 0x5e,
DW_OP_reg15 = 0x5f,
DW_OP_reg16 = 0x60,
DW_OP_reg17 = 0x61,
DW_OP_reg18 = 0x62,
DW_OP_reg19 = 0x63,
DW_OP_reg20 = 0x64,
DW_OP_reg21 = 0x65,
DW_OP_reg22 = 0x66,
DW_OP_reg23 = 0x67,
DW_OP_reg24 = 0x68,
DW_OP_reg25 = 0x69,
DW_OP_reg26 = 0x6a,
DW_OP_reg27 = 0x6b,
DW_OP_reg28 = 0x6c,
DW_OP_reg29 = 0x6d,
DW_OP_reg30 = 0x6e,
DW_OP_reg31 = 0x6f,
DW_OP_breg0 = 0x70,
DW_OP_breg1 = 0x71,
DW_OP_breg2 = 0x72,
DW_OP_breg3 = 0x73,
DW_OP_breg4 = 0x74,
DW_OP_breg5 = 0x75,
DW_OP_breg6 = 0x76,
DW_OP_breg7 = 0x77,
DW_OP_breg8 = 0x78,
DW_OP_breg9 = 0x79,
DW_OP_breg10 = 0x7a,
DW_OP_breg11 = 0x7b,
DW_OP_breg12 = 0x7c,
DW_OP_breg13 = 0x7d,
DW_OP_breg14 = 0x7e,
DW_OP_breg15 = 0x7f,
DW_OP_breg16 = 0x80,
DW_OP_breg17 = 0x81,
DW_OP_breg18 = 0x82,
DW_OP_breg19 = 0x83,
DW_OP_breg20 = 0x84,
DW_OP_breg21 = 0x85,
DW_OP_breg22 = 0x86,
DW_OP_breg23 = 0x87,
DW_OP_breg24 = 0x88,
DW_OP_breg25 = 0x89,
DW_OP_breg26 = 0x8a,
DW_OP_breg27 = 0x8b,
DW_OP_breg28 = 0x8c,
DW_OP_breg29 = 0x8d,
DW_OP_breg30 = 0x8e,
DW_OP_breg31 = 0x8f,
DW_OP_regx = 0x90,
DW_OP_fbreg = 0x91,
DW_OP_bregx = 0x92,
DW_OP_piece = 0x93,
DW_OP_deref_size = 0x94,
DW_OP_xderef_size = 0x95,
DW_OP_nop = 0x96,
/* DWARF 3 extensions. */
DW_OP_push_object_address = 0x97,
DW_OP_call2 = 0x98,
DW_OP_call4 = 0x99,
DW_OP_call_ref = 0x9a,
DW_OP_form_tls_address = 0x9b,
DW_OP_call_frame_cfa = 0x9c,
DW_OP_bit_piece = 0x9d,
 
/* DWARF 4 extensions. */
DW_OP_implicit_value = 0x9e,
DW_OP_stack_value = 0x9f,
 
DW_OP_lo_user = 0xe0, /* Implementation-defined range start. */
DW_OP_hi_user = 0xff, /* Implementation-defined range end. */
 
/* GNU extensions. */
DW_OP_GNU_push_tls_address = 0xe0,
/* The following is for marking variables that are uninitialized. */
DW_OP_GNU_uninit = 0xf0,
DW_OP_GNU_encoded_addr = 0xf1,
/* The GNU implicit pointer extension.
See http://www.dwarfstd.org/ShowIssue.php?issue=100831.1&type=open . */
DW_OP_GNU_implicit_pointer = 0xf2,
/* The GNU entry value extension.
See http://www.dwarfstd.org/ShowIssue.php?issue=100909.1&type=open . */
DW_OP_GNU_entry_value = 0xf3,
/* The GNU typed stack extension.
See http://www.dwarfstd.org/doc/040408.1.html . */
DW_OP_GNU_const_type = 0xf4,
DW_OP_GNU_regval_type = 0xf5,
DW_OP_GNU_deref_type = 0xf6,
DW_OP_GNU_convert = 0xf7,
DW_OP_GNU_reinterpret = 0xf9,
/* The GNU parameter ref extension. */
DW_OP_GNU_parameter_ref = 0xfa,
/* HP extensions. */
DW_OP_HP_unknown = 0xe0, /* Ouch, the same as GNU_push_tls_address. */
DW_OP_HP_is_value = 0xe1,
DW_OP_HP_fltconst4 = 0xe2,
DW_OP_HP_fltconst8 = 0xe3,
DW_OP_HP_mod_range = 0xe4,
DW_OP_HP_unmod_range = 0xe5,
DW_OP_HP_tls = 0xe6,
/* PGI (STMicroelectronics) extensions. */
DW_OP_PGI_omp_thread_num = 0xf8
};
 
/* Type encodings. */
enum dwarf_type
{
DW_ATE_void = 0x0,
DW_ATE_address = 0x1,
DW_ATE_boolean = 0x2,
DW_ATE_complex_float = 0x3,
DW_ATE_float = 0x4,
DW_ATE_signed = 0x5,
DW_ATE_signed_char = 0x6,
DW_ATE_unsigned = 0x7,
DW_ATE_unsigned_char = 0x8,
/* DWARF 3. */
DW_ATE_imaginary_float = 0x9,
DW_ATE_packed_decimal = 0xa,
DW_ATE_numeric_string = 0xb,
DW_ATE_edited = 0xc,
DW_ATE_signed_fixed = 0xd,
DW_ATE_unsigned_fixed = 0xe,
DW_ATE_decimal_float = 0xf,
/* DWARF 4. */
DW_ATE_UTF = 0x10,
 
DW_ATE_lo_user = 0x80,
DW_ATE_hi_user = 0xff,
 
/* HP extensions. */
DW_ATE_HP_float80 = 0x80, /* Floating-point (80 bit). */
DW_ATE_HP_complex_float80 = 0x81, /* Complex floating-point (80 bit). */
DW_ATE_HP_float128 = 0x82, /* Floating-point (128 bit). */
DW_ATE_HP_complex_float128 = 0x83, /* Complex fp (128 bit). */
DW_ATE_HP_floathpintel = 0x84, /* Floating-point (82 bit IA64). */
DW_ATE_HP_imaginary_float80 = 0x85,
DW_ATE_HP_imaginary_float128 = 0x86,
DW_ATE_HP_VAX_float = 0x88, /* F or G floating. */
DW_ATE_HP_VAX_float_d = 0x89, /* D floating. */
DW_ATE_HP_packed_decimal = 0x8a, /* Cobol. */
DW_ATE_HP_zoned_decimal = 0x8b, /* Cobol. */
DW_ATE_HP_edited = 0x8c, /* Cobol. */
DW_ATE_HP_signed_fixed = 0x8d, /* Cobol. */
DW_ATE_HP_unsigned_fixed = 0x8e, /* Cobol. */
DW_ATE_HP_VAX_complex_float = 0x8f, /* F or G floating complex. */
DW_ATE_HP_VAX_complex_float_d = 0x90 /* D floating complex. */
};
 
/* Decimal sign encodings. */
enum dwarf_decimal_sign_encoding
{
/* DWARF 3. */
DW_DS_unsigned = 0x01,
DW_DS_leading_overpunch = 0x02,
DW_DS_trailing_overpunch = 0x03,
DW_DS_leading_separate = 0x04,
DW_DS_trailing_separate = 0x05
};
 
/* Endianity encodings. */
enum dwarf_endianity_encoding
{
/* DWARF 3. */
DW_END_default = 0x00,
DW_END_big = 0x01,
DW_END_little = 0x02,
 
DW_END_lo_user = 0x40,
DW_END_hi_user = 0xff
};
 
/* Array ordering names and codes. */
enum dwarf_array_dim_ordering
{
DW_ORD_row_major = 0,
DW_ORD_col_major = 1
};
 
/* Access attribute. */
enum dwarf_access_attribute
{
DW_ACCESS_public = 1,
DW_ACCESS_protected = 2,
DW_ACCESS_private = 3
};
 
/* Visibility. */
enum dwarf_visibility_attribute
{
DW_VIS_local = 1,
DW_VIS_exported = 2,
DW_VIS_qualified = 3
};
 
/* Virtuality. */
enum dwarf_virtuality_attribute
{
DW_VIRTUALITY_none = 0,
DW_VIRTUALITY_virtual = 1,
DW_VIRTUALITY_pure_virtual = 2
};
 
/* Case sensitivity. */
enum dwarf_id_case
{
DW_ID_case_sensitive = 0,
DW_ID_up_case = 1,
DW_ID_down_case = 2,
DW_ID_case_insensitive = 3
};
 
/* Calling convention. */
enum dwarf_calling_convention
{
DW_CC_normal = 0x1,
DW_CC_program = 0x2,
DW_CC_nocall = 0x3,
 
DW_CC_lo_user = 0x40,
DW_CC_hi_user = 0xff,
 
DW_CC_GNU_renesas_sh = 0x40,
DW_CC_GNU_borland_fastcall_i386 = 0x41,
 
/* This DW_CC_ value is not currently generated by any toolchain. It is
used internally to GDB to indicate OpenCL C functions that have been
compiled with the IBM XL C for OpenCL compiler and use a non-platform
calling convention for passing OpenCL C vector types. This value may
be changed freely as long as it does not conflict with any other DW_CC_
value defined here. */
DW_CC_GDB_IBM_OpenCL = 0xff
};
 
/* Inline attribute. */
enum dwarf_inline_attribute
{
DW_INL_not_inlined = 0,
DW_INL_inlined = 1,
DW_INL_declared_not_inlined = 2,
DW_INL_declared_inlined = 3
};
 
/* Discriminant lists. */
enum dwarf_discrim_list
{
DW_DSC_label = 0,
DW_DSC_range = 1
};
 
/* Line number opcodes. */
enum dwarf_line_number_ops
{
DW_LNS_extended_op = 0,
DW_LNS_copy = 1,
DW_LNS_advance_pc = 2,
DW_LNS_advance_line = 3,
DW_LNS_set_file = 4,
DW_LNS_set_column = 5,
DW_LNS_negate_stmt = 6,
DW_LNS_set_basic_block = 7,
DW_LNS_const_add_pc = 8,
DW_LNS_fixed_advance_pc = 9,
/* DWARF 3. */
DW_LNS_set_prologue_end = 10,
DW_LNS_set_epilogue_begin = 11,
DW_LNS_set_isa = 12
};
 
/* Line number extended opcodes. */
enum dwarf_line_number_x_ops
{
DW_LNE_end_sequence = 1,
DW_LNE_set_address = 2,
DW_LNE_define_file = 3,
DW_LNE_set_discriminator = 4,
/* HP extensions. */
DW_LNE_HP_negate_is_UV_update = 0x11,
DW_LNE_HP_push_context = 0x12,
DW_LNE_HP_pop_context = 0x13,
DW_LNE_HP_set_file_line_column = 0x14,
DW_LNE_HP_set_routine_name = 0x15,
DW_LNE_HP_set_sequence = 0x16,
DW_LNE_HP_negate_post_semantics = 0x17,
DW_LNE_HP_negate_function_exit = 0x18,
DW_LNE_HP_negate_front_end_logical = 0x19,
DW_LNE_HP_define_proc = 0x20,
DW_LNE_HP_source_file_correlation = 0x80,
 
DW_LNE_lo_user = 0x80,
DW_LNE_hi_user = 0xff
};
 
/* Sub-opcodes for DW_LNE_HP_source_file_correlation. */
enum dwarf_line_number_hp_sfc_ops
{
DW_LNE_HP_SFC_formfeed = 1,
DW_LNE_HP_SFC_set_listing_line = 2,
DW_LNE_HP_SFC_associate = 3
};
 
/* Call frame information. */
enum dwarf_call_frame_info
{
DW_CFA_advance_loc = 0x40,
DW_CFA_offset = 0x80,
DW_CFA_restore = 0xc0,
DW_CFA_nop = 0x00,
DW_CFA_set_loc = 0x01,
DW_CFA_advance_loc1 = 0x02,
DW_CFA_advance_loc2 = 0x03,
DW_CFA_advance_loc4 = 0x04,
DW_CFA_offset_extended = 0x05,
DW_CFA_restore_extended = 0x06,
DW_CFA_undefined = 0x07,
DW_CFA_same_value = 0x08,
DW_CFA_register = 0x09,
DW_CFA_remember_state = 0x0a,
DW_CFA_restore_state = 0x0b,
DW_CFA_def_cfa = 0x0c,
DW_CFA_def_cfa_register = 0x0d,
DW_CFA_def_cfa_offset = 0x0e,
/* DWARF 3. */
DW_CFA_def_cfa_expression = 0x0f,
DW_CFA_expression = 0x10,
DW_CFA_offset_extended_sf = 0x11,
DW_CFA_def_cfa_sf = 0x12,
DW_CFA_def_cfa_offset_sf = 0x13,
DW_CFA_val_offset = 0x14,
DW_CFA_val_offset_sf = 0x15,
DW_CFA_val_expression = 0x16,
 
DW_CFA_lo_user = 0x1c,
DW_CFA_hi_user = 0x3f,
 
/* SGI/MIPS specific. */
DW_CFA_MIPS_advance_loc8 = 0x1d,
/* GNU extensions. */
DW_CFA_GNU_window_save = 0x2d,
DW_CFA_GNU_args_size = 0x2e,
DW_CFA_GNU_negative_offset_extended = 0x2f
};
 
#define DW_CIE_ID 0xffffffff
#define DW64_CIE_ID 0xffffffffffffffffULL
#define DW_CIE_VERSION 1
 
#define DW_CFA_extended 0
 
#define DW_CHILDREN_no 0x00
#define DW_CHILDREN_yes 0x01
 
#define DW_ADDR_none 0
 
/* Source language names and codes. */
enum dwarf_source_language
{
DW_LANG_C89 = 0x0001,
DW_LANG_C = 0x0002,
DW_LANG_Ada83 = 0x0003,
DW_LANG_C_plus_plus = 0x0004,
DW_LANG_Cobol74 = 0x0005,
DW_LANG_Cobol85 = 0x0006,
DW_LANG_Fortran77 = 0x0007,
DW_LANG_Fortran90 = 0x0008,
DW_LANG_Pascal83 = 0x0009,
DW_LANG_Modula2 = 0x000a,
/* DWARF 3. */
DW_LANG_Java = 0x000b,
DW_LANG_C99 = 0x000c,
DW_LANG_Ada95 = 0x000d,
DW_LANG_Fortran95 = 0x000e,
DW_LANG_PLI = 0x000f,
DW_LANG_ObjC = 0x0010,
DW_LANG_ObjC_plus_plus = 0x0011,
DW_LANG_UPC = 0x0012,
DW_LANG_D = 0x0013,
/* DWARF 4. */
DW_LANG_Python = 0x0014,
/* DWARF 5. */
DW_LANG_Go = 0x0016,
 
DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */
DW_LANG_hi_user = 0xffff, /* Implementation-defined range start. */
 
/* MIPS. */
DW_LANG_Mips_Assembler = 0x8001,
/* UPC. */
DW_LANG_Upc = 0x8765,
/* HP extensions. */
DW_LANG_HP_Bliss = 0x8003,
DW_LANG_HP_Basic91 = 0x8004,
DW_LANG_HP_Pascal91 = 0x8005,
DW_LANG_HP_IMacro = 0x8006,
DW_LANG_HP_Assembler = 0x8007
};
 
/* Names and codes for macro information. */
enum dwarf_macinfo_record_type
{
DW_MACINFO_define = 1,
DW_MACINFO_undef = 2,
DW_MACINFO_start_file = 3,
DW_MACINFO_end_file = 4,
DW_MACINFO_vendor_ext = 255
};
 
/* Names and codes for new style macro information. */
enum dwarf_macro_record_type
{
DW_MACRO_GNU_define = 1,
DW_MACRO_GNU_undef = 2,
DW_MACRO_GNU_start_file = 3,
DW_MACRO_GNU_end_file = 4,
DW_MACRO_GNU_define_indirect = 5,
DW_MACRO_GNU_undef_indirect = 6,
DW_MACRO_GNU_transparent_include = 7,
DW_MACRO_GNU_lo_user = 0xe0,
DW_MACRO_GNU_hi_user = 0xff
};
/* @@@ For use with GNU frame unwind information. */
 
#define DW_EH_PE_absptr 0x00
#define DW_EH_PE_omit 0xff
 
#define DW_EH_PE_uleb128 0x01
#define DW_EH_PE_udata2 0x02
#define DW_EH_PE_udata4 0x03
#define DW_EH_PE_udata8 0x04
#define DW_EH_PE_sleb128 0x09
#define DW_EH_PE_sdata2 0x0A
#define DW_EH_PE_sdata4 0x0B
#define DW_EH_PE_sdata8 0x0C
#define DW_EH_PE_signed 0x08
 
#define DW_EH_PE_pcrel 0x10
#define DW_EH_PE_textrel 0x20
#define DW_EH_PE_datarel 0x30
#define DW_EH_PE_funcrel 0x40
#define DW_EH_PE_aligned 0x50
 
#define DW_EH_PE_indirect 0x80
 
#endif /* _DWARF2_H */
/md5.h
0,0 → 1,149
/* md5.h - Declaration of functions and data types used for MD5 sum
computing library functions.
Copyright 1995, 1996, 2000 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
 
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
 
#ifndef _MD5_H
#define _MD5_H 1
 
#include <stdio.h>
 
#if defined HAVE_LIMITS_H || _LIBC
# include <limits.h>
#endif
 
#include "ansidecl.h"
 
/* The following contortions are an attempt to use the C preprocessor
to determine an unsigned integral type that is 32 bits wide. An
alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
doing that would require that the configure script compile and *run*
the resulting executable. Locally running cross-compiled executables
is usually not possible. */
 
#ifdef _LIBC
# include <sys/types.h>
typedef u_int32_t md5_uint32;
typedef uintptr_t md5_uintptr;
#else
# define INT_MAX_32_BITS 2147483647
 
/* If UINT_MAX isn't defined, assume it's a 32-bit type.
This should be valid for all systems GNU cares about because
that doesn't include 16-bit systems, and only modern systems
(that certainly have <limits.h>) have 64+-bit integral types. */
 
# ifndef INT_MAX
# define INT_MAX INT_MAX_32_BITS
# endif
 
# if INT_MAX == INT_MAX_32_BITS
typedef unsigned int md5_uint32;
# else
# if SHRT_MAX == INT_MAX_32_BITS
typedef unsigned short md5_uint32;
# else
# if LONG_MAX == INT_MAX_32_BITS
typedef unsigned long md5_uint32;
# else
/* The following line is intended to evoke an error.
Using #error is not portable enough. */
"Cannot determine unsigned 32-bit data type."
# endif
# endif
# endif
/* We have to make a guess about the integer type equivalent in size
to pointers which should always be correct. */
typedef unsigned long int md5_uintptr;
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* Structure to save state of computation between the single steps. */
struct md5_ctx
{
md5_uint32 A;
md5_uint32 B;
md5_uint32 C;
md5_uint32 D;
 
md5_uint32 total[2];
md5_uint32 buflen;
char buffer[128] ATTRIBUTE_ALIGNED_ALIGNOF(md5_uint32);
};
 
/*
* The following three functions are build up the low level used in
* the functions `md5_stream' and `md5_buffer'.
*/
 
/* Initialize structure containing state of computation.
(RFC 1321, 3.3: Step 3) */
extern void md5_init_ctx (struct md5_ctx *ctx);
 
/* Starting with the result of former calls of this function (or the
initialization function update the context for the next LEN bytes
starting at BUFFER.
It is necessary that LEN is a multiple of 64!!! */
extern void md5_process_block (const void *buffer, size_t len,
struct md5_ctx *ctx);
 
/* Starting with the result of former calls of this function (or the
initialization function update the context for the next LEN bytes
starting at BUFFER.
It is NOT required that LEN is a multiple of 64. */
extern void md5_process_bytes (const void *buffer, size_t len,
struct md5_ctx *ctx);
 
/* Process the remaining bytes in the buffer and put result from CTX
in first 16 bytes following RESBUF. The result is always in little
endian byte order, so that a byte-wise output yields to the wanted
ASCII representation of the message digest.
 
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
extern void *md5_finish_ctx (struct md5_ctx *ctx, void *resbuf);
 
 
/* Put result from CTX in first 16 bytes following RESBUF. The result is
always in little endian byte order, so that a byte-wise output yields
to the wanted ASCII representation of the message digest.
 
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
extern void *md5_read_ctx (const struct md5_ctx *ctx, void *resbuf);
 
 
/* Compute MD5 message digest for bytes read from STREAM. The
resulting message digest number will be written into the 16 bytes
beginning at RESBLOCK. */
extern int md5_stream (FILE *stream, void *resblock);
 
/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
result is always in little endian byte order, so that a byte-wise
output yields to the wanted ASCII representation of the message
digest. */
extern void *md5_buffer (const char *buffer, size_t len, void *resblock);
 
#ifdef __cplusplus
}
#endif
 
#endif
/objalloc.h
0,0 → 1,115
/* objalloc.h -- routines to allocate memory for objects
Copyright 1997, 2001 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Solutions.
 
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
#ifndef OBJALLOC_H
#define OBJALLOC_H
 
#include "ansidecl.h"
 
/* These routines allocate space for an object. The assumption is
that the object will want to allocate space as it goes along, but
will never want to free any particular block. There is a function
to free a block, which also frees all more recently allocated
blocks. There is also a function to free all the allocated space.
 
This is essentially a specialization of obstacks. The main
difference is that a block may not be allocated a bit at a time.
Another difference is that these routines are always built on top
of malloc, and always pass an malloc failure back to the caller,
unlike more recent versions of obstacks. */
 
/* This is what an objalloc structure looks like. Callers should not
refer to these fields, nor should they allocate these structure
themselves. Instead, they should only create them via
objalloc_init, and only access them via the functions and macros
listed below. The structure is only defined here so that we can
access it via macros. */
 
struct objalloc
{
char *current_ptr;
unsigned int current_space;
void *chunks;
};
 
/* Work out the required alignment. */
 
struct objalloc_align { char x; double d; };
 
#if defined (__STDC__) && __STDC__
#ifndef offsetof
#include <stddef.h>
#endif
#endif
#ifndef offsetof
#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER)
#endif
#define OBJALLOC_ALIGN offsetof (struct objalloc_align, d)
 
/* Create an objalloc structure. Returns NULL if malloc fails. */
 
extern struct objalloc *objalloc_create (void);
 
/* Allocate space from an objalloc structure. Returns NULL if malloc
fails. */
 
extern void *_objalloc_alloc (struct objalloc *, unsigned long);
 
/* The macro version of objalloc_alloc. We only define this if using
gcc, because otherwise we would have to evaluate the arguments
multiple times, or use a temporary field as obstack.h does. */
 
#if defined (__GNUC__) && defined (__STDC__) && __STDC__
 
/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
does not implement __extension__. But that compiler doesn't define
__GNUC_MINOR__. */
#if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
#define __extension__
#endif
 
#define objalloc_alloc(o, l) \
__extension__ \
({ struct objalloc *__o = (o); \
unsigned long __len = (l); \
if (__len == 0) \
__len = 1; \
__len = (__len + OBJALLOC_ALIGN - 1) &~ (OBJALLOC_ALIGN - 1); \
(__len <= __o->current_space \
? (__o->current_ptr += __len, \
__o->current_space -= __len, \
(void *) (__o->current_ptr - __len)) \
: _objalloc_alloc (__o, __len)); })
 
#else /* ! __GNUC__ */
 
#define objalloc_alloc(o, l) _objalloc_alloc ((o), (l))
 
#endif /* ! __GNUC__ */
 
/* Free an entire objalloc structure. */
 
extern void objalloc_free (struct objalloc *);
 
/* Free a block allocated by objalloc_alloc. This also frees all more
recently allocated blocks. */
 
extern void objalloc_free_block (struct objalloc *, void *);
 
#endif /* OBJALLOC_H */
/splay-tree.h
0,0 → 1,168
/* A splay-tree datatype.
Copyright 1998, 1999, 2000, 2002, 2005, 2007, 2009, 2010
Free Software Foundation, Inc.
Contributed by Mark Mitchell (mark@markmitchell.com).
 
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
 
GCC is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
/* For an easily readable description of splay-trees, see:
 
Lewis, Harry R. and Denenberg, Larry. Data Structures and Their
Algorithms. Harper-Collins, Inc. 1991.
 
The major feature of splay trees is that all basic tree operations
are amortized O(log n) time for a tree with n nodes. */
 
#ifndef _SPLAY_TREE_H
#define _SPLAY_TREE_H
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
#include "ansidecl.h"
 
#ifndef _WIN64
typedef unsigned long int libi_uhostptr_t;
typedef long int libi_shostptr_t;
#else
#ifdef __GNUC__
__extension__
#endif
typedef unsigned long long libi_uhostptr_t;
#ifdef __GNUC__
__extension__
#endif
typedef long long libi_shostptr_t;
#endif
 
#ifndef GTY
#define GTY(X)
#endif
 
/* Use typedefs for the key and data types to facilitate changing
these types, if necessary. These types should be sufficiently wide
that any pointer or scalar can be cast to these types, and then
cast back, without loss of precision. */
typedef libi_uhostptr_t splay_tree_key;
typedef libi_uhostptr_t splay_tree_value;
 
/* Forward declaration for a node in the tree. */
typedef struct splay_tree_node_s *splay_tree_node;
 
/* The type of a function which compares two splay-tree keys. The
function should return values as for qsort. */
typedef int (*splay_tree_compare_fn) (splay_tree_key, splay_tree_key);
 
/* The type of a function used to deallocate any resources associated
with the key. */
typedef void (*splay_tree_delete_key_fn) (splay_tree_key);
 
/* The type of a function used to deallocate any resources associated
with the value. */
typedef void (*splay_tree_delete_value_fn) (splay_tree_value);
 
/* The type of a function used to iterate over the tree. */
typedef int (*splay_tree_foreach_fn) (splay_tree_node, void*);
 
/* The type of a function used to allocate memory for tree root and
node structures. The first argument is the number of bytes needed;
the second is a data pointer the splay tree functions pass through
to the allocator. This function must never return zero. */
typedef void *(*splay_tree_allocate_fn) (int, void *);
 
/* The type of a function used to free memory allocated using the
corresponding splay_tree_allocate_fn. The first argument is the
memory to be freed; the latter is a data pointer the splay tree
functions pass through to the freer. */
typedef void (*splay_tree_deallocate_fn) (void *, void *);
 
/* The nodes in the splay tree. */
struct GTY(()) splay_tree_node_s {
/* The key. */
splay_tree_key GTY ((use_param1)) key;
 
/* The value. */
splay_tree_value GTY ((use_param2)) value;
 
/* The left and right children, respectively. */
splay_tree_node GTY ((use_params)) left;
splay_tree_node GTY ((use_params)) right;
};
 
/* The splay tree itself. */
struct GTY(()) splay_tree_s {
/* The root of the tree. */
splay_tree_node GTY ((use_params)) root;
 
/* The comparision function. */
splay_tree_compare_fn comp;
 
/* The deallocate-key function. NULL if no cleanup is necessary. */
splay_tree_delete_key_fn delete_key;
 
/* The deallocate-value function. NULL if no cleanup is necessary. */
splay_tree_delete_value_fn delete_value;
 
/* Node allocate function. Takes allocate_data as a parameter. */
splay_tree_allocate_fn allocate;
 
/* Free function for nodes and trees. Takes allocate_data as a parameter. */
splay_tree_deallocate_fn deallocate;
 
/* Parameter for allocate/free functions. */
void * GTY((skip)) allocate_data;
};
 
typedef struct splay_tree_s *splay_tree;
 
extern splay_tree splay_tree_new (splay_tree_compare_fn,
splay_tree_delete_key_fn,
splay_tree_delete_value_fn);
extern splay_tree splay_tree_new_with_allocator (splay_tree_compare_fn,
splay_tree_delete_key_fn,
splay_tree_delete_value_fn,
splay_tree_allocate_fn,
splay_tree_deallocate_fn,
void *);
extern splay_tree splay_tree_new_typed_alloc (splay_tree_compare_fn,
splay_tree_delete_key_fn,
splay_tree_delete_value_fn,
splay_tree_allocate_fn,
splay_tree_allocate_fn,
splay_tree_deallocate_fn,
void *);
extern void splay_tree_delete (splay_tree);
extern splay_tree_node splay_tree_insert (splay_tree,
splay_tree_key,
splay_tree_value);
extern void splay_tree_remove (splay_tree, splay_tree_key);
extern splay_tree_node splay_tree_lookup (splay_tree, splay_tree_key);
extern splay_tree_node splay_tree_predecessor (splay_tree, splay_tree_key);
extern splay_tree_node splay_tree_successor (splay_tree, splay_tree_key);
extern splay_tree_node splay_tree_max (splay_tree);
extern splay_tree_node splay_tree_min (splay_tree);
extern int splay_tree_foreach (splay_tree, splay_tree_foreach_fn, void*);
extern int splay_tree_compare_ints (splay_tree_key, splay_tree_key);
extern int splay_tree_compare_pointers (splay_tree_key, splay_tree_key);
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
 
#endif /* _SPLAY_TREE_H */
/obstack.h
0,0 → 1,545
/* obstack.h - object stack macros
Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
Free Software Foundation, Inc.
 
 
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@gnu.org.
 
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301,
USA. */
 
/* Summary:
 
All the apparent functions defined here are macros. The idea
is that you would use these pre-tested macros to solve a
very specific set of problems, and they would run fast.
Caution: no side-effects in arguments please!! They may be
evaluated MANY times!!
 
These macros operate a stack of objects. Each object starts life
small, and may grow to maturity. (Consider building a word syllable
by syllable.) An object can move while it is growing. Once it has
been "finished" it never changes address again. So the "top of the
stack" is typically an immature growing object, while the rest of the
stack is of mature, fixed size and fixed address objects.
 
These routines grab large chunks of memory, using a function you
supply, called `obstack_chunk_alloc'. On occasion, they free chunks,
by calling `obstack_chunk_free'. You must define them and declare
them before using any obstack macros.
 
Each independent stack is represented by a `struct obstack'.
Each of the obstack macros expects a pointer to such a structure
as the first argument.
 
One motivation for this package is the problem of growing char strings
in symbol tables. Unless you are "fascist pig with a read-only mind"
--Gosper's immortal quote from HAKMEM item 154, out of context--you
would not like to put any arbitrary upper limit on the length of your
symbols.
 
In practice this often means you will build many short symbols and a
few long symbols. At the time you are reading a symbol you don't know
how long it is. One traditional method is to read a symbol into a
buffer, realloc()ating the buffer every time you try to read a symbol
that is longer than the buffer. This is beaut, but you still will
want to copy the symbol from the buffer to a more permanent
symbol-table entry say about half the time.
 
With obstacks, you can work differently. Use one obstack for all symbol
names. As you read a symbol, grow the name in the obstack gradually.
When the name is complete, finalize it. Then, if the symbol exists already,
free the newly read name.
 
The way we do this is to take a large chunk, allocating memory from
low addresses. When you want to build a symbol in the chunk you just
add chars above the current "high water mark" in the chunk. When you
have finished adding chars, because you got to the end of the symbol,
you know how long the chars are, and you can create a new object.
Mostly the chars will not burst over the highest address of the chunk,
because you would typically expect a chunk to be (say) 100 times as
long as an average object.
 
In case that isn't clear, when we have enough chars to make up
the object, THEY ARE ALREADY CONTIGUOUS IN THE CHUNK (guaranteed)
so we just point to it where it lies. No moving of chars is
needed and this is the second win: potentially long strings need
never be explicitly shuffled. Once an object is formed, it does not
change its address during its lifetime.
 
When the chars burst over a chunk boundary, we allocate a larger
chunk, and then copy the partly formed object from the end of the old
chunk to the beginning of the new larger chunk. We then carry on
accreting characters to the end of the object as we normally would.
 
A special macro is provided to add a single char at a time to a
growing object. This allows the use of register variables, which
break the ordinary 'growth' macro.
 
Summary:
We allocate large chunks.
We carve out one object at a time from the current chunk.
Once carved, an object never moves.
We are free to append data of any size to the currently
growing object.
Exactly one object is growing in an obstack at any one time.
You can run one obstack per control block.
You may have as many control blocks as you dare.
Because of the way we do it, you can `unwind' an obstack
back to a previous state. (You may remove objects much
as you would with a stack.)
*/
 
 
/* Don't do the contents of this file more than once. */
 
#ifndef _OBSTACK_H
#define _OBSTACK_H 1
 
#ifdef __cplusplus
extern "C" {
#endif
/* We use subtraction of (char *) 0 instead of casting to int
because on word-addressable machines a simple cast to int
may ignore the byte-within-word field of the pointer. */
 
#ifndef __PTR_TO_INT
# define __PTR_TO_INT(P) ((P) - (char *) 0)
#endif
 
#ifndef __INT_TO_PTR
# define __INT_TO_PTR(P) ((P) + (char *) 0)
#endif
 
/* We need the type of the resulting object. If __PTRDIFF_TYPE__ is
defined, as with GNU C, use that; that way we don't pollute the
namespace with <stddef.h>'s symbols. Otherwise, if <stddef.h> is
available, include it and use ptrdiff_t. In traditional C, long is
the best that we can do. */
 
#ifdef __PTRDIFF_TYPE__
# define PTR_INT_TYPE __PTRDIFF_TYPE__
#else
# ifdef HAVE_STDDEF_H
# include <stddef.h>
# define PTR_INT_TYPE ptrdiff_t
# else
# define PTR_INT_TYPE long
# endif
#endif
 
#if defined _LIBC || defined HAVE_STRING_H
# include <string.h>
# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
#else
# ifdef memcpy
# define _obstack_memcpy(To, From, N) memcpy ((To), (char *)(From), (N))
# else
# define _obstack_memcpy(To, From, N) bcopy ((char *)(From), (To), (N))
# endif
#endif
 
struct _obstack_chunk /* Lives at front of each chunk. */
{
char *limit; /* 1 past end of this chunk */
struct _obstack_chunk *prev; /* address of prior chunk or NULL */
char contents[4]; /* objects begin here */
};
 
struct obstack /* control current object in current chunk */
{
long chunk_size; /* preferred size to allocate chunks in */
struct _obstack_chunk *chunk; /* address of current struct obstack_chunk */
char *object_base; /* address of object we are building */
char *next_free; /* where to add next char to current object */
char *chunk_limit; /* address of char after current chunk */
PTR_INT_TYPE temp; /* Temporary for some macros. */
int alignment_mask; /* Mask of alignment for each object. */
/* These prototypes vary based on `use_extra_arg', and we use
casts to the prototypeless function type in all assignments,
but having prototypes here quiets -Wstrict-prototypes. */
struct _obstack_chunk *(*chunkfun) (void *, long);
void (*freefun) (void *, struct _obstack_chunk *);
void *extra_arg; /* first arg for chunk alloc/dealloc funcs */
unsigned use_extra_arg:1; /* chunk alloc/dealloc funcs take extra arg */
unsigned maybe_empty_object:1;/* There is a possibility that the current
chunk contains a zero-length object. This
prevents freeing the chunk if we allocate
a bigger chunk to replace it. */
unsigned alloc_failed:1; /* No longer used, as we now call the failed
handler on error, but retained for binary
compatibility. */
};
 
/* Declare the external functions we use; they are in obstack.c. */
 
extern void _obstack_newchunk (struct obstack *, int);
extern void _obstack_free (struct obstack *, void *);
extern int _obstack_begin (struct obstack *, int, int,
void *(*) (long), void (*) (void *));
extern int _obstack_begin_1 (struct obstack *, int, int,
void *(*) (void *, long),
void (*) (void *, void *), void *);
extern int _obstack_memory_used (struct obstack *);
/* Do the function-declarations after the structs
but before defining the macros. */
 
void obstack_init (struct obstack *obstack);
 
void * obstack_alloc (struct obstack *obstack, int size);
 
void * obstack_copy (struct obstack *obstack, void *address, int size);
void * obstack_copy0 (struct obstack *obstack, void *address, int size);
 
void obstack_free (struct obstack *obstack, void *block);
 
void obstack_blank (struct obstack *obstack, int size);
 
void obstack_grow (struct obstack *obstack, void *data, int size);
void obstack_grow0 (struct obstack *obstack, void *data, int size);
 
void obstack_1grow (struct obstack *obstack, int data_char);
void obstack_ptr_grow (struct obstack *obstack, void *data);
void obstack_int_grow (struct obstack *obstack, int data);
 
void * obstack_finish (struct obstack *obstack);
 
int obstack_object_size (struct obstack *obstack);
 
int obstack_room (struct obstack *obstack);
void obstack_make_room (struct obstack *obstack, int size);
void obstack_1grow_fast (struct obstack *obstack, int data_char);
void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
void obstack_int_grow_fast (struct obstack *obstack, int data);
void obstack_blank_fast (struct obstack *obstack, int size);
 
void * obstack_base (struct obstack *obstack);
void * obstack_next_free (struct obstack *obstack);
int obstack_alignment_mask (struct obstack *obstack);
int obstack_chunk_size (struct obstack *obstack);
int obstack_memory_used (struct obstack *obstack);
 
/* Error handler called when `obstack_chunk_alloc' failed to allocate
more memory. This can be set to a user defined function. The
default action is to print a message and abort. */
extern void (*obstack_alloc_failed_handler) (void);
 
/* Exit value used when `print_and_abort' is used. */
extern int obstack_exit_failure;
/* Pointer to beginning of object being allocated or to be allocated next.
Note that this might not be the final address of the object
because a new chunk might be needed to hold the final size. */
 
#define obstack_base(h) ((h)->object_base)
 
/* Size for allocating ordinary chunks. */
 
#define obstack_chunk_size(h) ((h)->chunk_size)
 
/* Pointer to next byte not yet allocated in current chunk. */
 
#define obstack_next_free(h) ((h)->next_free)
 
/* Mask specifying low bits that should be clear in address of an object. */
 
#define obstack_alignment_mask(h) ((h)->alignment_mask)
 
/* To prevent prototype warnings provide complete argument list in
standard C version. */
# define obstack_init(h) \
_obstack_begin ((h), 0, 0, \
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
 
# define obstack_begin(h, size) \
_obstack_begin ((h), (size), 0, \
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
 
# define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
_obstack_begin ((h), (size), (alignment), \
(void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun))
 
# define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
_obstack_begin_1 ((h), (size), (alignment), \
(void *(*) (void *, long)) (chunkfun), \
(void (*) (void *, void *)) (freefun), (arg))
 
# define obstack_chunkfun(h, newchunkfun) \
((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
 
# define obstack_freefun(h, newfreefun) \
((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
 
#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = (achar))
 
#define obstack_blank_fast(h,n) ((h)->next_free += (n))
 
#define obstack_memory_used(h) _obstack_memory_used (h)
#if defined __GNUC__ && defined __STDC__ && __STDC__
/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
does not implement __extension__. But that compiler doesn't define
__GNUC_MINOR__. */
# if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
# define __extension__
# endif
 
/* For GNU C, if not -traditional,
we can define these macros to compute all args only once
without using a global variable.
Also, we can avoid using the `temp' slot, to make faster code. */
 
# define obstack_object_size(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
(unsigned) (__o->next_free - __o->object_base); })
 
# define obstack_room(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
(unsigned) (__o->chunk_limit - __o->next_free); })
 
# define obstack_make_room(OBSTACK,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
if (__o->chunk_limit - __o->next_free < __len) \
_obstack_newchunk (__o, __len); \
(void) 0; })
 
# define obstack_empty_p(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
(__o->chunk->prev == 0 && __o->next_free - __o->chunk->contents == 0); })
 
# define obstack_grow(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
if (__o->next_free + __len > __o->chunk_limit) \
_obstack_newchunk (__o, __len); \
_obstack_memcpy (__o->next_free, (where), __len); \
__o->next_free += __len; \
(void) 0; })
 
# define obstack_grow0(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
if (__o->next_free + __len + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, __len + 1); \
_obstack_memcpy (__o->next_free, (where), __len); \
__o->next_free += __len; \
*(__o->next_free)++ = 0; \
(void) 0; })
 
# define obstack_1grow(OBSTACK,datum) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, 1); \
obstack_1grow_fast (__o, datum); \
(void) 0; })
 
/* These assume that the obstack alignment is good enough for pointers or ints,
and that the data added so far to the current object
shares that much alignment. */
 
# define obstack_ptr_grow(OBSTACK,datum) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
_obstack_newchunk (__o, sizeof (void *)); \
obstack_ptr_grow_fast (__o, datum); })
 
# define obstack_int_grow(OBSTACK,datum) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (int) > __o->chunk_limit) \
_obstack_newchunk (__o, sizeof (int)); \
obstack_int_grow_fast (__o, datum); })
 
# define obstack_ptr_grow_fast(OBSTACK,aptr) \
__extension__ \
({ struct obstack *__o1 = (OBSTACK); \
*(const void **) __o1->next_free = (aptr); \
__o1->next_free += sizeof (const void *); \
(void) 0; })
 
# define obstack_int_grow_fast(OBSTACK,aint) \
__extension__ \
({ struct obstack *__o1 = (OBSTACK); \
*(int *) __o1->next_free = (aint); \
__o1->next_free += sizeof (int); \
(void) 0; })
 
# define obstack_blank(OBSTACK,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
if (__o->chunk_limit - __o->next_free < __len) \
_obstack_newchunk (__o, __len); \
obstack_blank_fast (__o, __len); \
(void) 0; })
 
# define obstack_alloc(OBSTACK,length) \
__extension__ \
({ struct obstack *__h = (OBSTACK); \
obstack_blank (__h, (length)); \
obstack_finish (__h); })
 
# define obstack_copy(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__h = (OBSTACK); \
obstack_grow (__h, (where), (length)); \
obstack_finish (__h); })
 
# define obstack_copy0(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__h = (OBSTACK); \
obstack_grow0 (__h, (where), (length)); \
obstack_finish (__h); })
 
/* The local variable is named __o1 to avoid a name conflict
when obstack_blank is called. */
# define obstack_finish(OBSTACK) \
__extension__ \
({ struct obstack *__o1 = (OBSTACK); \
void *value; \
value = (void *) __o1->object_base; \
if (__o1->next_free == value) \
__o1->maybe_empty_object = 1; \
__o1->next_free \
= __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
& ~ (__o1->alignment_mask)); \
if (__o1->next_free - (char *)__o1->chunk \
> __o1->chunk_limit - (char *)__o1->chunk) \
__o1->next_free = __o1->chunk_limit; \
__o1->object_base = __o1->next_free; \
value; })
 
# define obstack_free(OBSTACK, OBJ) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
void *__obj = (void *) (OBJ); \
if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) \
__o->next_free = __o->object_base = (char *) __obj; \
else (obstack_free) (__o, __obj); })
#else /* not __GNUC__ or not __STDC__ */
 
# define obstack_object_size(h) \
(unsigned) ((h)->next_free - (h)->object_base)
 
# define obstack_room(h) \
(unsigned) ((h)->chunk_limit - (h)->next_free)
 
# define obstack_empty_p(h) \
((h)->chunk->prev == 0 && (h)->next_free - (h)->chunk->contents == 0)
 
/* Note that the call to _obstack_newchunk is enclosed in (..., 0)
so that we can avoid having void expressions
in the arms of the conditional expression.
Casting the third operand to void was tried before,
but some compilers won't accept it. */
 
# define obstack_make_room(h,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0))
 
# define obstack_grow(h,where,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
_obstack_memcpy ((h)->next_free, (where), (h)->temp), \
(h)->next_free += (h)->temp)
 
# define obstack_grow0(h,where,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0), \
_obstack_memcpy ((h)->next_free, (where), (h)->temp), \
(h)->next_free += (h)->temp, \
*((h)->next_free)++ = 0)
 
# define obstack_1grow(h,datum) \
( (((h)->next_free + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), 1), 0) : 0), \
obstack_1grow_fast (h, datum))
 
# define obstack_ptr_grow(h,datum) \
( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \
obstack_ptr_grow_fast (h, datum))
 
# define obstack_int_grow(h,datum) \
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
obstack_int_grow_fast (h, datum))
 
# define obstack_ptr_grow_fast(h,aptr) \
(((const void **) ((h)->next_free += sizeof (void *)))[-1] = (aptr))
 
# define obstack_int_grow_fast(h,aint) \
(((int *) ((h)->next_free += sizeof (int)))[-1] = (aptr))
 
# define obstack_blank(h,length) \
( (h)->temp = (length), \
(((h)->chunk_limit - (h)->next_free < (h)->temp) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
obstack_blank_fast (h, (h)->temp))
 
# define obstack_alloc(h,length) \
(obstack_blank ((h), (length)), obstack_finish ((h)))
 
# define obstack_copy(h,where,length) \
(obstack_grow ((h), (where), (length)), obstack_finish ((h)))
 
# define obstack_copy0(h,where,length) \
(obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
 
# define obstack_finish(h) \
( ((h)->next_free == (h)->object_base \
? (((h)->maybe_empty_object = 1), 0) \
: 0), \
(h)->temp = __PTR_TO_INT ((h)->object_base), \
(h)->next_free \
= __INT_TO_PTR ((__PTR_TO_INT ((h)->next_free)+(h)->alignment_mask) \
& ~ ((h)->alignment_mask)), \
(((h)->next_free - (char *) (h)->chunk \
> (h)->chunk_limit - (char *) (h)->chunk) \
? ((h)->next_free = (h)->chunk_limit) : 0), \
(h)->object_base = (h)->next_free, \
(void *) __INT_TO_PTR ((h)->temp))
 
# define obstack_free(h,obj) \
( (h)->temp = (char *) (obj) - (char *) (h)->chunk, \
(((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
? (((h)->next_free = (h)->object_base \
= (h)->temp + (char *) (h)->chunk), 0) \
: ((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0)))
 
#endif /* not __GNUC__ or not __STDC__ */
 
#ifdef __cplusplus
} /* C++ */
#endif
 
#endif /* obstack.h */
/sort.h
0,0 → 1,48
/* Sorting algorithms.
Copyright (C) 2000, 2002 Free Software Foundation, Inc.
Contributed by Mark Mitchell <mark@codesourcery.com>.
 
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
 
GCC is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street - Fifth Floor,
Boston, MA 02110-1301, USA. */
 
#ifndef SORT_H
#define SORT_H
 
#include <sys/types.h> /* For size_t */
#ifdef __STDC__
#include <stddef.h>
#endif /* __STDC__ */
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
#include "ansidecl.h"
 
/* Sort an array of pointers. */
 
extern void sort_pointers (size_t, void **, void **);
 
#ifdef __cplusplus
}
#endif /* __cplusplus */
 
#endif /* SORT_H */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.