mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 00:59:15 +08:00
merge from gcc
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
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-10 Tristan Gingold <gingold@adacore.com>
|
2010-06-10 Tristan Gingold <gingold@adacore.com>
|
||||||
|
|
||||||
* dwarf2.h (enum dwarf_tag): Add DW_TAG_HP_Bliss_field and
|
* dwarf2.h (enum dwarf_tag): Add DW_TAG_HP_Bliss_field and
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* An expandable hash tables datatype.
|
/* An expandable hash tables datatype.
|
||||||
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2009
|
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2005, 2009, 2010
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
|
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
|
||||||
|
|
||||||
@ -157,6 +157,9 @@ extern htab_t htab_create_alloc_ex (size_t, htab_hash,
|
|||||||
void *, htab_alloc_with_arg,
|
void *, htab_alloc_with_arg,
|
||||||
htab_free_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. */
|
/* Backward-compatibility functions. */
|
||||||
extern htab_t htab_create (size_t, htab_hash, htab_eq, htab_del);
|
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 htab_t htab_try_create (size_t, htab_hash, htab_eq, htab_del);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* A splay-tree datatype.
|
/* A splay-tree datatype.
|
||||||
Copyright 1998, 1999, 2000, 2002, 2005, 2007, 2009
|
Copyright 1998, 1999, 2000, 2002, 2005, 2007, 2009, 2010
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by Mark Mitchell (mark@markmitchell.com).
|
Contributed by Mark Mitchell (mark@markmitchell.com).
|
||||||
|
|
||||||
@ -119,9 +119,13 @@ struct GTY(()) splay_tree_s {
|
|||||||
/* The deallocate-value function. NULL if no cleanup is necessary. */
|
/* The deallocate-value function. NULL if no cleanup is necessary. */
|
||||||
splay_tree_delete_value_fn delete_value;
|
splay_tree_delete_value_fn delete_value;
|
||||||
|
|
||||||
/* Allocate/free functions, and a data pointer to pass to them. */
|
/* Node allocate function. Takes allocate_data as a parameter. */
|
||||||
splay_tree_allocate_fn allocate;
|
splay_tree_allocate_fn allocate;
|
||||||
|
|
||||||
|
/* Free function for nodes and trees. Takes allocate_data as a parameter. */
|
||||||
splay_tree_deallocate_fn deallocate;
|
splay_tree_deallocate_fn deallocate;
|
||||||
|
|
||||||
|
/* Parameter for allocate/free functions. */
|
||||||
void * GTY((skip)) allocate_data;
|
void * GTY((skip)) allocate_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -136,6 +140,13 @@ extern splay_tree splay_tree_new_with_allocator (splay_tree_compare_fn,
|
|||||||
splay_tree_allocate_fn,
|
splay_tree_allocate_fn,
|
||||||
splay_tree_deallocate_fn,
|
splay_tree_deallocate_fn,
|
||||||
void *);
|
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 void splay_tree_delete (splay_tree);
|
||||||
extern splay_tree_node splay_tree_insert (splay_tree,
|
extern splay_tree_node splay_tree_insert (splay_tree,
|
||||||
splay_tree_key,
|
splay_tree_key,
|
||||||
|
@ -9,6 +9,18 @@
|
|||||||
call.
|
call.
|
||||||
* testsuite/demangle-expected: Add a test for this.
|
* testsuite/demangle-expected: Add a test for this.
|
||||||
|
|
||||||
|
2010-06-08 Laurynas Biveinis <laurynas.biveinis@gmail.com>
|
||||||
|
|
||||||
|
* splay-tree.c: Update copyright years.
|
||||||
|
(splay_tree_new_typed_alloc): New.
|
||||||
|
(splay_tree_new_with_allocator): Use it.
|
||||||
|
|
||||||
|
* hashtab.c: Update copyright years.
|
||||||
|
(htab_create_typed_alloc): New.
|
||||||
|
(htab_create_alloc): Use it.
|
||||||
|
|
||||||
|
* functions.texi: Regenerate.
|
||||||
|
|
||||||
2010-06-03 Joern Rennecke <joern.rennecke@embecosm.com>
|
2010-06-03 Joern Rennecke <joern.rennecke@embecosm.com>
|
||||||
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
@c Edit the *.c files, configure with --enable-maintainer-mode,
|
@c Edit the *.c files, configure with --enable-maintainer-mode,
|
||||||
@c run 'make stamp-functions' and gather-docs will build a new copy.
|
@c run 'make stamp-functions' and gather-docs will build a new copy.
|
||||||
|
|
||||||
@c safe-ctype.c:25
|
@c splay-tree.c:277
|
||||||
@defvr Extension HOST_CHARSET
|
@defvr Extension HOST_CHARSET
|
||||||
This macro indicates the basic character set and encoding used by the
|
This macro indicates the basic character set and encoding used by the
|
||||||
host: more precisely, the encoding used for character constants in
|
host: more precisely, the encoding used for character constants in
|
||||||
@ -24,6 +24,25 @@ The host character set is some variant of EBCDIC. (Only one of the
|
|||||||
nineteen EBCDIC varying characters is tested; exercise caution.)
|
nineteen EBCDIC varying characters is tested; exercise caution.)
|
||||||
@end ftable
|
@end ftable
|
||||||
@end defvr
|
@end defvr
|
||||||
|
@deftypefn Supplemental splay_tree splay_tree_new_with_typed_alloc
|
||||||
|
(splay_tree_compare_fn @var{compare_fn},
|
||||||
|
splay_tree_delete_key_fn @var{delete_key_fn},
|
||||||
|
splay_tree_delete_value_fn @var{delete_value_fn},
|
||||||
|
splay_tree_allocate_fn @var{tree_allocate_fn},
|
||||||
|
splay_tree_allocate_fn @var{node_allocate_fn},
|
||||||
|
splay_tree_deallocate_fn @var{deallocate_fn},
|
||||||
|
void * @var{allocate_data})
|
||||||
|
|
||||||
|
This function creates a splay tree that uses two different allocators
|
||||||
|
@var{tree_allocate_fn} and @var{node_allocate_fn} to use for allocating the
|
||||||
|
tree itself and its nodes respectively. This is useful when variables of
|
||||||
|
different types need to be allocated with different allocators.
|
||||||
|
|
||||||
|
The splay tree will use @var{compare_fn} to compare nodes,
|
||||||
|
@var{delete_key_fn} to deallocate keys, and @var{delete_value_fn} to
|
||||||
|
deallocate values.
|
||||||
|
|
||||||
|
@end deftypefn
|
||||||
|
|
||||||
@c alloca.c:26
|
@c alloca.c:26
|
||||||
@deftypefn Replacement void* alloca (size_t @var{size})
|
@deftypefn Replacement void* alloca (size_t @var{size})
|
||||||
@ -477,6 +496,24 @@ systems.
|
|||||||
|
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
|
@c hashtab.c:336
|
||||||
|
@deftypefn Supplemental htab_t htab_create_typed_alloc (size_t @var{size},
|
||||||
|
htab_hash @var{hash_f}, htab_eq @var{eq_f}, htab_del @var{del_f},
|
||||||
|
htab_alloc @var{alloc_tab_f}, htab_alloc @var{alloc_f},
|
||||||
|
htab_free @var{free_f})
|
||||||
|
|
||||||
|
This function creates a hash table that uses two different allocators
|
||||||
|
@var{alloc_tab_f} and @var{alloc_f} to use for allocating the table itself
|
||||||
|
and its entries respectively. This is useful when variables of different
|
||||||
|
types need to be allocated with different allocators.
|
||||||
|
|
||||||
|
The created hash table is slightly larger than @var{size} and it is
|
||||||
|
initially empty (all the hash table entries are @code{HTAB_EMPTY_ENTRY}).
|
||||||
|
The function returns the created hash table, or @code{NULL} if memory
|
||||||
|
allocation fails.
|
||||||
|
|
||||||
|
@end deftypefn
|
||||||
|
|
||||||
@c index.c:5
|
@c index.c:5
|
||||||
@deftypefn Supplemental char* index (char *@var{s}, int @var{c})
|
@deftypefn Supplemental char* index (char *@var{s}, int @var{c})
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* An expandable hash tables datatype.
|
/* An expandable hash tables datatype.
|
||||||
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2009
|
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2009, 2010
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
|
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
|
||||||
|
|
||||||
@ -291,33 +291,11 @@ htab_t
|
|||||||
htab_create_alloc (size_t size, htab_hash hash_f, htab_eq eq_f,
|
htab_create_alloc (size_t size, htab_hash hash_f, htab_eq eq_f,
|
||||||
htab_del del_f, htab_alloc alloc_f, htab_free free_f)
|
htab_del del_f, htab_alloc alloc_f, htab_free free_f)
|
||||||
{
|
{
|
||||||
htab_t result;
|
return htab_create_typed_alloc (size, hash_f, eq_f, del_f, alloc_f, alloc_f,
|
||||||
unsigned int size_prime_index;
|
free_f);
|
||||||
|
|
||||||
size_prime_index = higher_prime_index (size);
|
|
||||||
size = prime_tab[size_prime_index].prime;
|
|
||||||
|
|
||||||
result = (htab_t) (*alloc_f) (1, sizeof (struct htab));
|
|
||||||
if (result == NULL)
|
|
||||||
return NULL;
|
|
||||||
result->entries = (PTR *) (*alloc_f) (size, sizeof (PTR));
|
|
||||||
if (result->entries == NULL)
|
|
||||||
{
|
|
||||||
if (free_f != NULL)
|
|
||||||
(*free_f) (result);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
result->size = size;
|
|
||||||
result->size_prime_index = size_prime_index;
|
|
||||||
result->hash_f = hash_f;
|
|
||||||
result->eq_f = eq_f;
|
|
||||||
result->del_f = del_f;
|
|
||||||
result->alloc_f = alloc_f;
|
|
||||||
result->free_f = free_f;
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* As above, but use the variants of alloc_f and free_f which accept
|
/* As above, but uses the variants of ALLOC_F and FREE_F which accept
|
||||||
an extra argument. */
|
an extra argument. */
|
||||||
|
|
||||||
htab_t
|
htab_t
|
||||||
@ -353,6 +331,59 @@ htab_create_alloc_ex (size_t size, htab_hash hash_f, htab_eq eq_f,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
@deftypefn Supplemental htab_t htab_create_typed_alloc (size_t @var{size},
|
||||||
|
htab_hash @var{hash_f}, htab_eq @var{eq_f}, htab_del @var{del_f},
|
||||||
|
htab_alloc @var{alloc_tab_f}, htab_alloc @var{alloc_f},
|
||||||
|
htab_free @var{free_f})
|
||||||
|
|
||||||
|
This function creates a hash table that uses two different allocators
|
||||||
|
@var{alloc_tab_f} and @var{alloc_f} to use for allocating the table itself
|
||||||
|
and its entries respectively. This is useful when variables of different
|
||||||
|
types need to be allocated with different allocators.
|
||||||
|
|
||||||
|
The created hash table is slightly larger than @var{size} and it is
|
||||||
|
initially empty (all the hash table entries are @code{HTAB_EMPTY_ENTRY}).
|
||||||
|
The function returns the created hash table, or @code{NULL} if memory
|
||||||
|
allocation fails.
|
||||||
|
|
||||||
|
@end deftypefn
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
htab_t
|
||||||
|
htab_create_typed_alloc (size_t size, htab_hash hash_f, htab_eq eq_f,
|
||||||
|
htab_del del_f, htab_alloc alloc_tab_f,
|
||||||
|
htab_alloc alloc_f, htab_free free_f)
|
||||||
|
{
|
||||||
|
htab_t result;
|
||||||
|
unsigned int size_prime_index;
|
||||||
|
|
||||||
|
size_prime_index = higher_prime_index (size);
|
||||||
|
size = prime_tab[size_prime_index].prime;
|
||||||
|
|
||||||
|
result = (htab_t) (*alloc_tab_f) (1, sizeof (struct htab));
|
||||||
|
if (result == NULL)
|
||||||
|
return NULL;
|
||||||
|
result->entries = (PTR *) (*alloc_f) (size, sizeof (PTR));
|
||||||
|
if (result->entries == NULL)
|
||||||
|
{
|
||||||
|
if (free_f != NULL)
|
||||||
|
(*free_f) (result);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
result->size = size;
|
||||||
|
result->size_prime_index = size_prime_index;
|
||||||
|
result->hash_f = hash_f;
|
||||||
|
result->eq_f = eq_f;
|
||||||
|
result->del_f = del_f;
|
||||||
|
result->alloc_f = alloc_f;
|
||||||
|
result->free_f = free_f;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Update the function pointers and allocation parameter in the htab_t. */
|
/* Update the function pointers and allocation parameter in the htab_t. */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* A splay-tree datatype.
|
/* A splay-tree datatype.
|
||||||
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
Copyright (C) 1998, 1999, 2000, 2001, 2009,
|
||||||
|
2010 Free Software Foundation, Inc.
|
||||||
Contributed by Mark Mitchell (mark@markmitchell.com).
|
Contributed by Mark Mitchell (mark@markmitchell.com).
|
||||||
|
|
||||||
This file is part of GNU CC.
|
This file is part of GNU CC.
|
||||||
@ -265,13 +266,53 @@ splay_tree_new_with_allocator (splay_tree_compare_fn compare_fn,
|
|||||||
splay_tree_deallocate_fn deallocate_fn,
|
splay_tree_deallocate_fn deallocate_fn,
|
||||||
void *allocate_data)
|
void *allocate_data)
|
||||||
{
|
{
|
||||||
splay_tree sp = (splay_tree) (*allocate_fn) (sizeof (struct splay_tree_s),
|
return
|
||||||
|
splay_tree_new_typed_alloc (compare_fn, delete_key_fn, delete_value_fn,
|
||||||
|
allocate_fn, allocate_fn, deallocate_fn,
|
||||||
allocate_data);
|
allocate_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
@deftypefn Supplemental splay_tree splay_tree_new_with_typed_alloc
|
||||||
|
(splay_tree_compare_fn @var{compare_fn},
|
||||||
|
splay_tree_delete_key_fn @var{delete_key_fn},
|
||||||
|
splay_tree_delete_value_fn @var{delete_value_fn},
|
||||||
|
splay_tree_allocate_fn @var{tree_allocate_fn},
|
||||||
|
splay_tree_allocate_fn @var{node_allocate_fn},
|
||||||
|
splay_tree_deallocate_fn @var{deallocate_fn},
|
||||||
|
void * @var{allocate_data})
|
||||||
|
|
||||||
|
This function creates a splay tree that uses two different allocators
|
||||||
|
@var{tree_allocate_fn} and @var{node_allocate_fn} to use for allocating the
|
||||||
|
tree itself and its nodes respectively. This is useful when variables of
|
||||||
|
different types need to be allocated with different allocators.
|
||||||
|
|
||||||
|
The splay tree will use @var{compare_fn} to compare nodes,
|
||||||
|
@var{delete_key_fn} to deallocate keys, and @var{delete_value_fn} to
|
||||||
|
deallocate values.
|
||||||
|
|
||||||
|
@end deftypefn
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
splay_tree
|
||||||
|
splay_tree_new_typed_alloc (splay_tree_compare_fn compare_fn,
|
||||||
|
splay_tree_delete_key_fn delete_key_fn,
|
||||||
|
splay_tree_delete_value_fn delete_value_fn,
|
||||||
|
splay_tree_allocate_fn tree_allocate_fn,
|
||||||
|
splay_tree_allocate_fn node_allocate_fn,
|
||||||
|
splay_tree_deallocate_fn deallocate_fn,
|
||||||
|
void * allocate_data)
|
||||||
|
{
|
||||||
|
splay_tree sp = (splay_tree) (*tree_allocate_fn)
|
||||||
|
(sizeof (struct splay_tree_s), allocate_data);
|
||||||
|
|
||||||
sp->root = 0;
|
sp->root = 0;
|
||||||
sp->comp = compare_fn;
|
sp->comp = compare_fn;
|
||||||
sp->delete_key = delete_key_fn;
|
sp->delete_key = delete_key_fn;
|
||||||
sp->delete_value = delete_value_fn;
|
sp->delete_value = delete_value_fn;
|
||||||
sp->allocate = allocate_fn;
|
sp->allocate = node_allocate_fn;
|
||||||
sp->deallocate = deallocate_fn;
|
sp->deallocate = deallocate_fn;
|
||||||
sp->allocate_data = allocate_data;
|
sp->allocate_data = allocate_data;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user