libiberty.h (ACONCAT): Properly cast value of alloca().

include/
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.

libiberty/
2005-05-24  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* configure.ac: Check declarations for calloc(), getenv(),
	malloc(), realloc() and sbrk().
	* config.in: Regenerate.
	* configure: Likewise.

	* alloca.c (C_alloca): Change "new" to "new_storage".  Use XNEWVEC
	instead of xmalloc.
	* choose-temp.c (choose_temp_base): Use XNEWVEC instea od xmalloc.
	* concat.c (liiberty_concat_ptr): Surround definition with an
	extern "C" block, if __cplusplus.
	(concat): Use XNEWVEC instead of xmalloc.
	(reconcat): Likewise.
	* cp-demangle.c (struct d_print_template): Rename member
	"template" to "template_decl".  Adjust use throughout the file.
	(d_print_resize): Properly cast return value of realloc().
	(cplus_demangle_print): Same for malloc().
	(d_demangle): Likewise.
	* cp-demint.c (cplus_demangle_fill_builtin_type): Rename parameter
	"typename" to "type_name".
	* cplus-dem.c (grow_vect): Use XRESIZEVEC instead of xrealloc().
	(work_stuff_copy_to_from): Use XNEWVEC insteand of xmalloc().
	(demangle_template_value_parm): Likewise.
	(demangle_template): Likewise.
	(recursively_demangle): Likewise.
	(do_hpacc_template_literal): Likewise.
	(do_arg): Likewise.
	(remember_type): Likewise.
	(remember_Ktype): Likewise.
	(register_Btype): Likewise.
	(string_need): Use XRESIZEVEC instead of xrealloc().
	* dyn-string.c (dyn_string_init): Use XNEWVEC.
	(dyn_string_new): Use XNEW.
	(dyn_string_resize): Use XRESIZEVEC.
	* fnmatch.c (fnmatch): Rename local variable "not" to "negate".
	* getopt.c (getenv): Declare only if !__cplusplus and !getenv.
	Otherwise include <stdlib.h>.
	(exchange): Cast return value of malloc().
	* hashtab.c (htab_size): Define as both macro and non-inline
	function.
	(htab_elements): Likewise.
	* getpwd.c (getpwd): Use XNEWVEC.
	(htab_create_alloc_ex): Use C90 prototype-style.
	* lrealpath.c (lrealpath): Appropriately cast return value of
	malloc().
	* make-relative-prefix.c (save_string): Likewise.
	* make-temp-file.c (try_dir): Rename from "try".  Adjust use in
	the file.
	(choose_tmpdir): Use XNEWVEC.
	* mkstemps.c (mkstemps): Rename parameter "template" to "pattern".
	* pex-common.c (pex_init_common): Use XNEW.
	(pex_add_remove): Use XRESIZEVEC.
	(pex_run): Likewise.
	(pex_get_status_and_time): Likewise.
	* pex-djgpp.c (pex_djgpp_exec_child): Likewise.
	* pex-msdos.c (pex_init): Use XNEW.
	(pex_msdos_exec_child): Likewise.
	(pex_msdos_exec_child): Use XRESIZEVEC.
	* pex-unix.c (pex_wait): Use XNEW.
	* pex-win32.c (fix_argv): Use XNEWVEC.
	* pexecute.c (pwait): Likewise.
	* setenv.c (setenv): Properly cast return value of malloc().
	* sigsetmask.c (sigsetmask): Rename local variables "old" and
	"new" to "old_sig" and "new_sig".
	* sort.c (main): Use XNEWVEC.
	* spaces.c (spaces): Cast return value of malloc().
	* strndup.c (strndup): Likewise.
	* ternary.c (ternary_insert): Use XNEW.
	* xmalloc.c (malloc, realloc, calloc, sbrk): Surround declaration
	with an extern "C" block if __cplusplus.
	* xstrdup.c (xstrdup): Cast return value of memcpy().
	* xstrerror.c (strerror): Enclose declaration in an extern "C"
	block if __cplusplus.
	* xstrndup.c (xstrndup): Use XNEW. Cast return value of memcpy().

From-SVN: r100115
This commit is contained in:
Gabriel Dos Reis 2005-05-24 20:48:25 +00:00 committed by Gabriel Dos Reis
parent de3e06c62c
commit d7cf8390c7
38 changed files with 651 additions and 155 deletions

View File

@ -1,3 +1,10 @@
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> 2005-05-12 Steve Ellcey <sje@cup.hp.com>
libiberty.h: Do not define empty basename prototype. libiberty.h: Do not define empty basename prototype.

View File

@ -258,11 +258,11 @@ So instead we use the macro below and test it against specific values. */
/* Attributes on labels were valid as of gcc 2.93. */ /* Attributes on labels were valid as of gcc 2.93. */
#ifndef ATTRIBUTE_UNUSED_LABEL #ifndef ATTRIBUTE_UNUSED_LABEL
# if (GCC_VERSION >= 2093) # if (!defined (__cplusplus) && GCC_VERSION >= 2093)
# define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED # define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED
# else # else
# define ATTRIBUTE_UNUSED_LABEL # define ATTRIBUTE_UNUSED_LABEL
# endif /* GNUC >= 2.93 */ # endif /* !__cplusplus && GNUC >= 2.93 */
#endif /* ATTRIBUTE_UNUSED_LABEL */ #endif /* ATTRIBUTE_UNUSED_LABEL */
#ifndef ATTRIBUTE_UNUSED #ifndef ATTRIBUTE_UNUSED

View File

@ -156,7 +156,7 @@ extern char *libiberty_concat_ptr;
strings. Allocates memory using alloca. The arguments are strings. Allocates memory using alloca. The arguments are
evaluated twice! */ evaluated twice! */
#define ACONCAT(ACONCAT_PARAMS) \ #define ACONCAT(ACONCAT_PARAMS) \
(libiberty_concat_ptr = alloca (concat_length ACONCAT_PARAMS + 1), \ (libiberty_concat_ptr = (char *) alloca (concat_length ACONCAT_PARAMS + 1), \
concat_copy2 ACONCAT_PARAMS) concat_copy2 ACONCAT_PARAMS)
/* Check whether two file descriptors refer to the same file. */ /* Check whether two file descriptors refer to the same file. */

View File

@ -1,3 +1,79 @@
2005-05-24 Gabriel Dos Reis <gdr@integrable-solutions.net>
* configure.ac: Check declarations for calloc(), getenv(),
malloc(), realloc() and sbrk().
* config.in: Regenerate.
* configure: Likewise.
* alloca.c (C_alloca): Change "new" to "new_storage". Use XNEWVEC
instead of xmalloc.
* choose-temp.c (choose_temp_base): Use XNEWVEC instea od xmalloc.
* concat.c (liiberty_concat_ptr): Surround definition with an
extern "C" block, if __cplusplus.
(concat): Use XNEWVEC instead of xmalloc.
(reconcat): Likewise.
* cp-demangle.c (struct d_print_template): Rename member
"template" to "template_decl". Adjust use throughout the file.
(d_print_resize): Properly cast return value of realloc().
(cplus_demangle_print): Same for malloc().
(d_demangle): Likewise.
* cp-demint.c (cplus_demangle_fill_builtin_type): Rename parameter
"typename" to "type_name".
* cplus-dem.c (grow_vect): Use XRESIZEVEC instead of xrealloc().
(work_stuff_copy_to_from): Use XNEWVEC insteand of xmalloc().
(demangle_template_value_parm): Likewise.
(demangle_template): Likewise.
(recursively_demangle): Likewise.
(do_hpacc_template_literal): Likewise.
(do_arg): Likewise.
(remember_type): Likewise.
(remember_Ktype): Likewise.
(register_Btype): Likewise.
(string_need): Use XRESIZEVEC instead of xrealloc().
* dyn-string.c (dyn_string_init): Use XNEWVEC.
(dyn_string_new): Use XNEW.
(dyn_string_resize): Use XRESIZEVEC.
* fnmatch.c (fnmatch): Rename local variable "not" to "negate".
* getopt.c (getenv): Declare only if !__cplusplus and !getenv.
Otherwise include <stdlib.h>.
(exchange): Cast return value of malloc().
* hashtab.c (htab_size): Define as both macro and non-inline
function.
(htab_elements): Likewise.
* getpwd.c (getpwd): Use XNEWVEC.
(htab_create_alloc_ex): Use C90 prototype-style.
* lrealpath.c (lrealpath): Appropriately cast return value of
malloc().
* make-relative-prefix.c (save_string): Likewise.
* make-temp-file.c (try_dir): Rename from "try". Adjust use in
the file.
(choose_tmpdir): Use XNEWVEC.
* mkstemps.c (mkstemps): Rename parameter "template" to "pattern".
* pex-common.c (pex_init_common): Use XNEW.
(pex_add_remove): Use XRESIZEVEC.
(pex_run): Likewise.
(pex_get_status_and_time): Likewise.
* pex-djgpp.c (pex_djgpp_exec_child): Likewise.
* pex-msdos.c (pex_init): Use XNEW.
(pex_msdos_exec_child): Likewise.
(pex_msdos_exec_child): Use XRESIZEVEC.
* pex-unix.c (pex_wait): Use XNEW.
* pex-win32.c (fix_argv): Use XNEWVEC.
* pexecute.c (pwait): Likewise.
* setenv.c (setenv): Properly cast return value of malloc().
* sigsetmask.c (sigsetmask): Rename local variables "old" and
"new" to "old_sig" and "new_sig".
* sort.c (main): Use XNEWVEC.
* spaces.c (spaces): Cast return value of malloc().
* strndup.c (strndup): Likewise.
* ternary.c (ternary_insert): Use XNEW.
* xmalloc.c (malloc, realloc, calloc, sbrk): Surround declaration
with an extern "C" block if __cplusplus.
* xstrdup.c (xstrdup): Cast return value of memcpy().
* xstrerror.c (strerror): Enclose declaration in an extern "C"
block if __cplusplus.
* xstrndup.c (xstrndup): Use XNEW. Cast return value of memcpy().
2005-05-16 Andreas Jaeger <aj@suse.de> 2005-05-16 Andreas Jaeger <aj@suse.de>
* getpwd.c: Remove unneeded prototype getcwd and move getwd so * getpwd.c: Remove unneeded prototype getcwd and move getwd so

View File

@ -57,9 +57,15 @@ the possibility of a GCC built-in function.
/* These variables are used by the ASTRDUP implementation that relies /* These variables are used by the ASTRDUP implementation that relies
on C_alloca. */ on C_alloca. */
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
const char *libiberty_optr; const char *libiberty_optr;
char *libiberty_nptr; char *libiberty_nptr;
unsigned long libiberty_len; unsigned long libiberty_len;
#ifdef __cplusplus
}
#endif /* __cplusplus */
/* If your stack is a linked list of frames, you have to /* If your stack is a linked list of frames, you have to
provide an "address metric" ADDRESS_FUNCTION macro. */ provide an "address metric" ADDRESS_FUNCTION macro. */
@ -191,20 +197,20 @@ C_alloca (size_t size)
/* Allocate combined header + user data storage. */ /* Allocate combined header + user data storage. */
{ {
register PTR new = xmalloc (sizeof (header) + size); register void *new_storage = XNEWVEC (char, sizeof (header) + size);
/* Address of header. */ /* Address of header. */
if (new == 0) if (new_storage == 0)
abort(); abort();
((header *) new)->h.next = last_alloca_header; ((header *) new_storage)->h.next = last_alloca_header;
((header *) new)->h.deep = depth; ((header *) new_storage)->h.deep = depth;
last_alloca_header = (header *) new; last_alloca_header = (header *) new_storage;
/* User storage begins just after header. */ /* User storage begins just after header. */
return (PTR) ((char *) new + sizeof (header)); return (PTR) ((char *) new_storage + sizeof (header));
} }
} }

View File

@ -61,7 +61,7 @@ choose_temp_base (void)
int len; int len;
len = strlen (base); len = strlen (base);
temp_filename = xmalloc (len + TEMP_FILE_LEN + 1); temp_filename = XNEWVEC (char, len + TEMP_FILE_LEN + 1);
strcpy (temp_filename, base); strcpy (temp_filename, base);
strcpy (temp_filename + len, TEMP_FILE); strcpy (temp_filename + len, TEMP_FILE);

View File

@ -127,7 +127,13 @@ concat_copy (char *dst, const char *first, ...)
return save_dst; return save_dst;
} }
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
char *libiberty_concat_ptr; char *libiberty_concat_ptr;
#ifdef __cplusplus
}
#endif /* __cplusplus */
/* @undocumented concat_copy2 */ /* @undocumented concat_copy2 */
@ -150,7 +156,7 @@ concat (const char *first, ...)
/* First compute the size of the result and get sufficient memory. */ /* First compute the size of the result and get sufficient memory. */
VA_OPEN (args, first); VA_OPEN (args, first);
VA_FIXEDARG (args, const char *, first); VA_FIXEDARG (args, const char *, first);
newstr = (char *) xmalloc (vconcat_length (first, args) + 1); newstr = XNEWVEC (char, vconcat_length (first, args) + 1);
VA_CLOSE (args); VA_CLOSE (args);
/* Now copy the individual pieces to the result string. */ /* Now copy the individual pieces to the result string. */
@ -188,7 +194,7 @@ reconcat (char *optr, const char *first, ...)
VA_OPEN (args, first); VA_OPEN (args, first);
VA_FIXEDARG (args, char *, optr); VA_FIXEDARG (args, char *, optr);
VA_FIXEDARG (args, const char *, first); VA_FIXEDARG (args, const char *, first);
newstr = (char *) xmalloc (vconcat_length (first, args) + 1); newstr = XNEWVEC (char, vconcat_length (first, args) + 1);
VA_CLOSE (args); VA_CLOSE (args);
/* Now copy the individual pieces to the result string. */ /* Now copy the individual pieces to the result string. */

View File

@ -45,9 +45,29 @@
don't. */ don't. */
#undef HAVE_DECL_BASENAME #undef HAVE_DECL_BASENAME
/* Define to 1 if you have the declaration of `calloc', and to 0 if you don't.
*/
#undef HAVE_DECL_CALLOC
/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */ /* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
#undef HAVE_DECL_FFS #undef HAVE_DECL_FFS
/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
*/
#undef HAVE_DECL_GETENV
/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't.
*/
#undef HAVE_DECL_MALLOC
/* Define to 1 if you have the declaration of `realloc', and to 0 if you
don't. */
#undef HAVE_DECL_REALLOC
/* Define to 1 if you have the declaration of `sbrk', and to 0 if you don't.
*/
#undef HAVE_DECL_SBRK
/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you /* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
don't. */ don't. */
#undef HAVE_DECL_VASPRINTF #undef HAVE_DECL_VASPRINTF

352
libiberty/configure vendored
View File

@ -7214,6 +7214,358 @@ else
_ACEOF _ACEOF
fi
echo "$as_me:$LINENO: checking whether calloc is declared" >&5
echo $ECHO_N "checking whether calloc is declared... $ECHO_C" >&6
if test "${ac_cv_have_decl_calloc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
int
main ()
{
#ifndef calloc
char *p = (char *) calloc;
#endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_have_decl_calloc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have_decl_calloc=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have_decl_calloc" >&5
echo "${ECHO_T}$ac_cv_have_decl_calloc" >&6
if test $ac_cv_have_decl_calloc = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_CALLOC 1
_ACEOF
else
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_CALLOC 0
_ACEOF
fi
echo "$as_me:$LINENO: checking whether getenv is declared" >&5
echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6
if test "${ac_cv_have_decl_getenv+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
int
main ()
{
#ifndef getenv
char *p = (char *) getenv;
#endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_have_decl_getenv=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have_decl_getenv=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6
if test $ac_cv_have_decl_getenv = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_GETENV 1
_ACEOF
else
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_GETENV 0
_ACEOF
fi
echo "$as_me:$LINENO: checking whether malloc is declared" >&5
echo $ECHO_N "checking whether malloc is declared... $ECHO_C" >&6
if test "${ac_cv_have_decl_malloc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
int
main ()
{
#ifndef malloc
char *p = (char *) malloc;
#endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_have_decl_malloc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have_decl_malloc=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have_decl_malloc" >&5
echo "${ECHO_T}$ac_cv_have_decl_malloc" >&6
if test $ac_cv_have_decl_malloc = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_MALLOC 1
_ACEOF
else
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_MALLOC 0
_ACEOF
fi
echo "$as_me:$LINENO: checking whether realloc is declared" >&5
echo $ECHO_N "checking whether realloc is declared... $ECHO_C" >&6
if test "${ac_cv_have_decl_realloc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
int
main ()
{
#ifndef realloc
char *p = (char *) realloc;
#endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_have_decl_realloc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have_decl_realloc=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have_decl_realloc" >&5
echo "${ECHO_T}$ac_cv_have_decl_realloc" >&6
if test $ac_cv_have_decl_realloc = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_REALLOC 1
_ACEOF
else
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_REALLOC 0
_ACEOF
fi
echo "$as_me:$LINENO: checking whether sbrk is declared" >&5
echo $ECHO_N "checking whether sbrk is declared... $ECHO_C" >&6
if test "${ac_cv_have_decl_sbrk+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
int
main ()
{
#ifndef sbrk
char *p = (char *) sbrk;
#endif
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_have_decl_sbrk=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have_decl_sbrk=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have_decl_sbrk" >&5
echo "${ECHO_T}$ac_cv_have_decl_sbrk" >&6
if test $ac_cv_have_decl_sbrk = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_SBRK 1
_ACEOF
else
cat >>confdefs.h <<_ACEOF
#define HAVE_DECL_SBRK 0
_ACEOF
fi fi

View File

@ -519,6 +519,7 @@ if test -z "${setobjs}"; then
AC_CHECK_FUNCS($checkfuncs) AC_CHECK_FUNCS($checkfuncs)
AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf]) AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf])
AC_CHECK_DECLS([calloc, getenv, malloc, realloc, sbrk])
libiberty_NEED_DECLARATION(canonicalize_file_name) libiberty_NEED_DECLARATION(canonicalize_file_name)
fi fi

View File

@ -210,7 +210,7 @@ struct d_print_template
/* Next template on the list. */ /* Next template on the list. */
struct d_print_template *next; struct d_print_template *next;
/* This template. */ /* This template. */
const struct demangle_component *template; const struct demangle_component *template_decl;
}; };
/* A list of type modifiers. This is used while printing. */ /* A list of type modifiers. This is used while printing. */
@ -2551,7 +2551,7 @@ d_print_resize (struct d_print_info *dpi, size_t add)
char *newbuf; char *newbuf;
newalc = dpi->alc * 2; newalc = dpi->alc * 2;
newbuf = realloc (dpi->buf, newalc); newbuf = (char *) realloc (dpi->buf, newalc);
if (newbuf == NULL) if (newbuf == NULL)
{ {
free (dpi->buf); free (dpi->buf);
@ -2629,7 +2629,7 @@ cplus_demangle_print (int options, const struct demangle_component *dc,
dpi.options = options; dpi.options = options;
dpi.alc = estimate + 1; dpi.alc = estimate + 1;
dpi.buf = malloc (dpi.alc); dpi.buf = (char *) malloc (dpi.alc);
if (dpi.buf == NULL) if (dpi.buf == NULL)
{ {
*palc = 1; *palc = 1;
@ -2730,7 +2730,7 @@ d_print_comp (struct d_print_info *dpi,
{ {
dpt.next = dpi->templates; dpt.next = dpi->templates;
dpi->templates = &dpt; dpi->templates = &dpt;
dpt.template = typed_name; dpt.template_decl = typed_name;
} }
/* If typed_name is a DEMANGLE_COMPONENT_LOCAL_NAME, then /* If typed_name is a DEMANGLE_COMPONENT_LOCAL_NAME, then
@ -2826,7 +2826,7 @@ d_print_comp (struct d_print_info *dpi,
return; return;
} }
i = dc->u.s_number.number; i = dc->u.s_number.number;
for (a = d_right (dpi->templates->template); for (a = d_right (dpi->templates->template_decl);
a != NULL; a != NULL;
a = d_right (a)) a = d_right (a))
{ {
@ -3683,7 +3683,7 @@ d_print_cast (struct d_print_info *dpi,
dpt.next = dpi->templates; dpt.next = dpi->templates;
dpi->templates = &dpt; dpi->templates = &dpt;
dpt.template = d_left (dc); dpt.template_decl = d_left (dc);
d_print_comp (dpi, d_left (d_left (dc))); d_print_comp (dpi, d_left (d_left (dc)));
@ -3764,7 +3764,7 @@ d_demangle (const char* mangled, int options, size_t *palc)
{ {
char *r; char *r;
r = malloc (40 + len - 11); r = (char *) malloc (40 + len - 11);
if (r == NULL) if (r == NULL)
*palc = 1; *palc = 1;
else else

View File

@ -130,18 +130,18 @@ cplus_demangle_fill_component (struct demangle_component *p,
int int
cplus_demangle_fill_builtin_type (struct demangle_component *p, cplus_demangle_fill_builtin_type (struct demangle_component *p,
const char *typename) const char *type_name)
{ {
int len; int len;
unsigned int i; unsigned int i;
if (p == NULL || typename == NULL) if (p == NULL || type_name == NULL)
return 0; return 0;
len = strlen (typename); len = strlen (type_name);
for (i = 0; i < D_BUILTIN_TYPE_COUNT; ++i) for (i = 0; i < D_BUILTIN_TYPE_COUNT; ++i)
{ {
if (len == cplus_demangle_builtin_types[i].len if (len == cplus_demangle_builtin_types[i].len
&& strcmp (typename, cplus_demangle_builtin_types[i].name) == 0) && strcmp (type_name, cplus_demangle_builtin_types[i].name) == 0)
{ {
p->type = DEMANGLE_COMPONENT_BUILTIN_TYPE; p->type = DEMANGLE_COMPONENT_BUILTIN_TYPE;
p->u.s_builtin.type = &cplus_demangle_builtin_types[i]; p->u.s_builtin.type = &cplus_demangle_builtin_types[i];

View File

@ -892,7 +892,7 @@ grow_vect (char **old_vect, size_t *size, size_t min_size, int element_size)
*size *= 2; *size *= 2;
if (*size < min_size) if (*size < min_size)
*size = min_size; *size = min_size;
*old_vect = (void *) xrealloc (*old_vect, *size * element_size); *old_vect = XRESIZEVAR (char, *old_vect, *size * element_size);
} }
} }
@ -1102,56 +1102,52 @@ work_stuff_copy_to_from (struct work_stuff *to, struct work_stuff *from)
/* Deep-copy dynamic storage. */ /* Deep-copy dynamic storage. */
if (from->typevec_size) if (from->typevec_size)
to->typevec to->typevec = XNEWVEC (char *, from->typevec_size);
= (char **) xmalloc (from->typevec_size * sizeof (to->typevec[0]));
for (i = 0; i < from->ntypes; i++) for (i = 0; i < from->ntypes; i++)
{ {
int len = strlen (from->typevec[i]) + 1; int len = strlen (from->typevec[i]) + 1;
to->typevec[i] = xmalloc (len); to->typevec[i] = XNEWVEC (char, len);
memcpy (to->typevec[i], from->typevec[i], len); memcpy (to->typevec[i], from->typevec[i], len);
} }
if (from->ksize) if (from->ksize)
to->ktypevec to->ktypevec = XNEWVEC (char *, from->ksize);
= (char **) xmalloc (from->ksize * sizeof (to->ktypevec[0]));
for (i = 0; i < from->numk; i++) for (i = 0; i < from->numk; i++)
{ {
int len = strlen (from->ktypevec[i]) + 1; int len = strlen (from->ktypevec[i]) + 1;
to->ktypevec[i] = xmalloc (len); to->ktypevec[i] = XNEWVEC (char, len);
memcpy (to->ktypevec[i], from->ktypevec[i], len); memcpy (to->ktypevec[i], from->ktypevec[i], len);
} }
if (from->bsize) if (from->bsize)
to->btypevec to->btypevec = XNEWVEC (char *, from->bsize);
= (char **) xmalloc (from->bsize * sizeof (to->btypevec[0]));
for (i = 0; i < from->numb; i++) for (i = 0; i < from->numb; i++)
{ {
int len = strlen (from->btypevec[i]) + 1; int len = strlen (from->btypevec[i]) + 1;
to->btypevec[i] = xmalloc (len); to->btypevec[i] = XNEWVEC (char , len);
memcpy (to->btypevec[i], from->btypevec[i], len); memcpy (to->btypevec[i], from->btypevec[i], len);
} }
if (from->ntmpl_args) if (from->ntmpl_args)
to->tmpl_argvec to->tmpl_argvec = XNEWVEC (char *, from->ntmpl_args);
= (char **) xmalloc (from->ntmpl_args * sizeof (to->tmpl_argvec[0]));
for (i = 0; i < from->ntmpl_args; i++) for (i = 0; i < from->ntmpl_args; i++)
{ {
int len = strlen (from->tmpl_argvec[i]) + 1; int len = strlen (from->tmpl_argvec[i]) + 1;
to->tmpl_argvec[i] = xmalloc (len); to->tmpl_argvec[i] = XNEWVEC (char, len);
memcpy (to->tmpl_argvec[i], from->tmpl_argvec[i], len); memcpy (to->tmpl_argvec[i], from->tmpl_argvec[i], len);
} }
if (from->previous_argument) if (from->previous_argument)
{ {
to->previous_argument = (string*) xmalloc (sizeof (string)); to->previous_argument = XNEW (string);
string_init (to->previous_argument); string_init (to->previous_argument);
string_appends (to->previous_argument, from->previous_argument); string_appends (to->previous_argument, from->previous_argument);
} }
@ -1895,7 +1891,7 @@ demangle_template_value_parm (struct work_stuff *work, const char **mangled,
string_appendn (s, "0", 1); string_appendn (s, "0", 1);
else else
{ {
char *p = xmalloc (symbol_len + 1), *q; char *p = XNEWVEC (char, symbol_len + 1), *q;
strncpy (p, *mangled, symbol_len); strncpy (p, *mangled, symbol_len);
p [symbol_len] = '\0'; p [symbol_len] = '\0';
/* We use cplus_demangle here, rather than /* We use cplus_demangle here, rather than
@ -2001,7 +1997,7 @@ demangle_template (struct work_stuff *work, const char **mangled,
if (!is_type) if (!is_type)
{ {
/* Create an array for saving the template argument values. */ /* Create an array for saving the template argument values. */
work->tmpl_argvec = (char**) xmalloc (r * sizeof (char *)); work->tmpl_argvec = XNEWVEC (char *, r);
work->ntmpl_args = r; work->ntmpl_args = r;
for (i = 0; i < r; i++) for (i = 0; i < r; i++)
work->tmpl_argvec[i] = 0; work->tmpl_argvec[i] = 0;
@ -2026,7 +2022,7 @@ demangle_template (struct work_stuff *work, const char **mangled,
{ {
/* Save the template argument. */ /* Save the template argument. */
int len = temp.p - temp.b; int len = temp.p - temp.b;
work->tmpl_argvec[i] = xmalloc (len + 1); work->tmpl_argvec[i] = XNEWVEC (char, len + 1);
memcpy (work->tmpl_argvec[i], temp.b, len); memcpy (work->tmpl_argvec[i], temp.b, len);
work->tmpl_argvec[i][len] = '\0'; work->tmpl_argvec[i][len] = '\0';
} }
@ -2054,7 +2050,7 @@ demangle_template (struct work_stuff *work, const char **mangled,
{ {
/* Save the template argument. */ /* Save the template argument. */
int len = r2; int len = r2;
work->tmpl_argvec[i] = xmalloc (len + 1); work->tmpl_argvec[i] = XNEWVEC (char, len + 1);
memcpy (work->tmpl_argvec[i], *mangled, len); memcpy (work->tmpl_argvec[i], *mangled, len);
work->tmpl_argvec[i][len] = '\0'; work->tmpl_argvec[i][len] = '\0';
} }
@ -2100,7 +2096,7 @@ demangle_template (struct work_stuff *work, const char **mangled,
if (!is_type) if (!is_type)
{ {
int len = s->p - s->b; int len = s->p - s->b;
work->tmpl_argvec[i] = xmalloc (len + 1); work->tmpl_argvec[i] = XNEWVEC (char, len + 1);
memcpy (work->tmpl_argvec[i], s->b, len); memcpy (work->tmpl_argvec[i], s->b, len);
work->tmpl_argvec[i][len] = '\0'; work->tmpl_argvec[i][len] = '\0';
@ -2998,7 +2994,7 @@ recursively_demangle(struct work_stuff *work, const char **mangled,
char * recurse = (char *)NULL; char * recurse = (char *)NULL;
char * recurse_dem = (char *)NULL; char * recurse_dem = (char *)NULL;
recurse = (char *) xmalloc (namelength + 1); recurse = XNEWVEC (char, namelength + 1);
memcpy (recurse, *mangled, namelength); memcpy (recurse, *mangled, namelength);
recurse[namelength] = '\000'; recurse[namelength] = '\000';
@ -3969,7 +3965,7 @@ do_hpacc_template_literal (struct work_stuff *work, const char **mangled,
string_append (result, "&"); string_append (result, "&");
/* Now recursively demangle the literal name */ /* Now recursively demangle the literal name */
recurse = (char *) xmalloc (literal_len + 1); recurse = XNEWVEC (char, literal_len + 1);
memcpy (recurse, *mangled, literal_len); memcpy (recurse, *mangled, literal_len);
recurse[literal_len] = '\000'; recurse[literal_len] = '\000';
@ -4071,7 +4067,7 @@ do_arg (struct work_stuff *work, const char **mangled, string *result)
if (work->previous_argument) if (work->previous_argument)
string_delete (work->previous_argument); string_delete (work->previous_argument);
else else
work->previous_argument = (string*) xmalloc (sizeof (string)); work->previous_argument = XNEW (string);
if (!do_type (work, mangled, work->previous_argument)) if (!do_type (work, mangled, work->previous_argument))
return 0; return 0;
@ -4095,18 +4091,16 @@ remember_type (struct work_stuff *work, const char *start, int len)
if (work -> typevec_size == 0) if (work -> typevec_size == 0)
{ {
work -> typevec_size = 3; work -> typevec_size = 3;
work -> typevec work -> typevec = XNEWVEC (char *, work->typevec_size);
= (char **) xmalloc (sizeof (char *) * work -> typevec_size);
} }
else else
{ {
work -> typevec_size *= 2; work -> typevec_size *= 2;
work -> typevec work -> typevec
= (char **) xrealloc ((char *)work -> typevec, = XRESIZEVEC (char *, work->typevec, work->typevec_size);
sizeof (char *) * work -> typevec_size);
} }
} }
tem = xmalloc (len + 1); tem = XNEWVEC (char, len + 1);
memcpy (tem, start, len); memcpy (tem, start, len);
tem[len] = '\0'; tem[len] = '\0';
work -> typevec[work -> ntypes++] = tem; work -> typevec[work -> ntypes++] = tem;
@ -4124,18 +4118,16 @@ remember_Ktype (struct work_stuff *work, const char *start, int len)
if (work -> ksize == 0) if (work -> ksize == 0)
{ {
work -> ksize = 5; work -> ksize = 5;
work -> ktypevec work -> ktypevec = XNEWVEC (char *, work->ksize);
= (char **) xmalloc (sizeof (char *) * work -> ksize);
} }
else else
{ {
work -> ksize *= 2; work -> ksize *= 2;
work -> ktypevec work -> ktypevec
= (char **) xrealloc ((char *)work -> ktypevec, = XRESIZEVEC (char *, work->ktypevec, work->ksize);
sizeof (char *) * work -> ksize);
} }
} }
tem = xmalloc (len + 1); tem = XNEWVEC (char, len + 1);
memcpy (tem, start, len); memcpy (tem, start, len);
tem[len] = '\0'; tem[len] = '\0';
work -> ktypevec[work -> numk++] = tem; work -> ktypevec[work -> numk++] = tem;
@ -4155,15 +4147,13 @@ register_Btype (struct work_stuff *work)
if (work -> bsize == 0) if (work -> bsize == 0)
{ {
work -> bsize = 5; work -> bsize = 5;
work -> btypevec work -> btypevec = XNEWVEC (char *, work->bsize);
= (char **) xmalloc (sizeof (char *) * work -> bsize);
} }
else else
{ {
work -> bsize *= 2; work -> bsize *= 2;
work -> btypevec work -> btypevec
= (char **) xrealloc ((char *)work -> btypevec, = XRESIZEVEC (char *, work->btypevec, work->bsize);
sizeof (char *) * work -> bsize);
} }
} }
ret = work -> numb++; ret = work -> numb++;
@ -4179,7 +4169,7 @@ remember_Btype (struct work_stuff *work, const char *start,
{ {
char *tem; char *tem;
tem = xmalloc (len + 1); tem = XNEWVEC (char, len + 1);
memcpy (tem, start, len); memcpy (tem, start, len);
tem[len] = '\0'; tem[len] = '\0';
work -> btypevec[index] = tem; work -> btypevec[index] = tem;
@ -4600,7 +4590,7 @@ string_need (string *s, int n)
{ {
n = 32; n = 32;
} }
s->p = s->b = xmalloc (n); s->p = s->b = XNEWVEC (char, n);
s->e = s->b + n; s->e = s->b + n;
} }
else if (s->e - s->p < n) else if (s->e - s->p < n)
@ -4608,7 +4598,7 @@ string_need (string *s, int n)
tem = s->p - s->b; tem = s->p - s->b;
n += tem; n += tem;
n *= 2; n *= 2;
s->b = xrealloc (s->b, n); s->b = XRESIZEVEC (char, s->b, n);
s->p = s->b + tem; s->p = s->b + tem;
s->e = s->b + n; s->e = s->b + n;
} }

View File

@ -67,7 +67,7 @@ dyn_string_init (struct dyn_string *ds_struct_ptr, int space)
if (ds_struct_ptr->s == NULL) if (ds_struct_ptr->s == NULL)
return 0; return 0;
#else #else
ds_struct_ptr->s = (char *) xmalloc (space); ds_struct_ptr->s = XNEWVEC (char, space);
#endif #endif
ds_struct_ptr->allocated = space; ds_struct_ptr->allocated = space;
ds_struct_ptr->length = 0; ds_struct_ptr->length = 0;
@ -96,7 +96,7 @@ dyn_string_new (int space)
return NULL; return NULL;
} }
#else #else
result = (dyn_string_t) xmalloc (sizeof (struct dyn_string)); result = XNEW (struct dyn_string);
dyn_string_init (result, space); dyn_string_init (result, space);
#endif #endif
return result; return result;
@ -159,7 +159,7 @@ dyn_string_resize (dyn_string_t ds, int space)
return NULL; return NULL;
} }
#else #else
ds->s = (char *) xrealloc (ds->s, ds->allocated); ds->s = XRESIZEVEC (char, ds->s, ds->allocated);
#endif #endif
} }

View File

@ -124,7 +124,7 @@ fnmatch (const char *pattern, const char *string, int flags)
case '[': case '[':
{ {
/* Nonzero if the sense of the character class is inverted. */ /* Nonzero if the sense of the character class is inverted. */
register int not; register int negate;
if (*n == '\0') if (*n == '\0')
return FNM_NOMATCH; return FNM_NOMATCH;
@ -133,8 +133,8 @@ fnmatch (const char *pattern, const char *string, int flags)
(n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/'))) (n == string || ((flags & FNM_FILE_NAME) && n[-1] == '/')))
return FNM_NOMATCH; return FNM_NOMATCH;
not = (*p == '!' || *p == '^'); negate = (*p == '!' || *p == '^');
if (not) if (negate)
++p; ++p;
c = *p++; c = *p++;
@ -177,7 +177,7 @@ fnmatch (const char *pattern, const char *string, int flags)
if (c == ']') if (c == ']')
break; break;
} }
if (!not) if (!negate)
return FNM_NOMATCH; return FNM_NOMATCH;
break; break;
@ -194,7 +194,7 @@ fnmatch (const char *pattern, const char *string, int flags)
/* XXX 1003.2d11 is unclear if this is right. */ /* XXX 1003.2d11 is unclear if this is right. */
++p; ++p;
} }
if (not) if (negate)
return FNM_NOMATCH; return FNM_NOMATCH;
} }
break; break;

View File

@ -212,8 +212,16 @@ static char *posixly_correct;
/* Avoid depending on library functions or files /* Avoid depending on library functions or files
whose names are inconsistent. */ whose names are inconsistent. */
#ifndef getenv #if HAVE_STDLIB_H && HAVE_DECL_GETENV
extern char *getenv (); # include <stdlib.h>
#elif !defined(getenv)
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
extern char *getenv (const char *);
# ifdef __cplusplus
}
# endif /* __cplusplus */
#endif #endif
static char * static char *
@ -325,7 +333,7 @@ exchange (char **argv)
{ {
/* We must extend the array. The user plays games with us and /* We must extend the array. The user plays games with us and
presents new arguments. */ presents new arguments. */
char *new_str = malloc (top + 1); char *new_str = (char *) malloc (top + 1);
if (new_str == NULL) if (new_str == NULL)
nonoption_flags_len = nonoption_flags_max_len = 0; nonoption_flags_len = nonoption_flags_max_len = 0;
else else

View File

@ -84,7 +84,7 @@ getpwd (void)
&& dotstat.st_dev == pwdstat.st_dev)) && dotstat.st_dev == pwdstat.st_dev))
/* The shortcut didn't work. Try the slow, ``sure'' way. */ /* The shortcut didn't work. Try the slow, ``sure'' way. */
for (s = GUESSPATHLEN; ! getcwd (p = xmalloc (s), s); s *= 2) for (s = GUESSPATHLEN; !getcwd (p = XNEWVEC (char, s), s); s *= 2)
{ {
int e = errno; int e = errno;
free (p); free (p);
@ -117,7 +117,7 @@ getpwd (void)
static char *pwd = 0; static char *pwd = 0;
if (!pwd) if (!pwd)
pwd = getcwd (xmalloc (MAXPATHLEN + 1), MAXPATHLEN + 1 pwd = getcwd (XNEWVEC (char, MAXPATHLEN + 1), MAXPATHLEN + 1
#ifdef VMS #ifdef VMS
, 0 , 0
#endif #endif

View File

@ -216,20 +216,30 @@ eq_pointer (const PTR p1, const PTR p2)
return p1 == p2; return p1 == p2;
} }
/* Return the current size of given hash table. */
inline size_t /* The parens around the function names in the next two definitions
htab_size (htab_t htab) are essential in order to prevent macro expansions of the name.
The bodies, however, are expanded as expected, so they are not
recursive definitions. */
/* Return the current size of given hash table. */
#define htab_size(htab) ((htab)->size)
size_t
(htab_size) (htab_t htab)
{ {
return htab->size; return htab_size (htab);
} }
/* Return the current number of elements in given hash table. */ /* Return the current number of elements in given hash table. */
inline size_t #define htab_elements(htab) ((htab)->n_elements - (htab)->n_deleted)
htab_elements (htab_t htab)
size_t
(htab_elements) (htab_t htab)
{ {
return htab->n_elements - htab->n_deleted; return htab_elements (htab);
} }
/* Return X % Y. */ /* Return X % Y. */
@ -317,15 +327,10 @@ htab_create_alloc (size_t size, htab_hash hash_f, htab_eq eq_f,
an extra argument. */ an extra argument. */
htab_t htab_t
htab_create_alloc_ex (size, hash_f, eq_f, del_f, alloc_arg, alloc_f, htab_create_alloc_ex (size_t size, htab_hash hash_f, htab_eq eq_f,
free_f) htab_del del_f, void *alloc_arg,
size_t size; htab_alloc_with_arg alloc_f,
htab_hash hash_f; htab_free_with_arg free_f)
htab_eq eq_f;
htab_del del_f;
PTR alloc_arg;
htab_alloc_with_arg alloc_f;
htab_free_with_arg free_f;
{ {
htab_t result; htab_t result;
unsigned int size_prime_index; unsigned int size_prime_index;

View File

@ -117,7 +117,7 @@ lrealpath (const char *filename)
{ {
/* PATH_MAX is bounded. */ /* PATH_MAX is bounded. */
char *buf, *rp, *ret; char *buf, *rp, *ret;
buf = malloc (path_max); buf = (char *) malloc (path_max);
if (buf == NULL) if (buf == NULL)
return NULL; return NULL;
rp = realpath (filename, buf); rp = realpath (filename, buf);

View File

@ -102,7 +102,7 @@ static void free_split_directories (char **);
static char * static char *
save_string (const char *s, int len) save_string (const char *s, int len)
{ {
char *result = malloc (len + 1); char *result = (char *) malloc (len + 1);
memcpy (result, s, len); memcpy (result, s, len);
result[len] = 0; result[len] = 0;

View File

@ -61,10 +61,10 @@ extern int mkstemps (char *, int);
If success, DIR is returned. If success, DIR is returned.
Otherwise NULL is returned. */ Otherwise NULL is returned. */
static inline const char *try (const char *, const char *); static inline const char *try_dir (const char *, const char *);
static inline const char * static inline const char *
try (const char *dir, const char *base) try_dir (const char *dir, const char *base)
{ {
if (base != 0) if (base != 0)
return base; return base;
@ -103,18 +103,18 @@ choose_tmpdir (void)
if (memoized_tmpdir) if (memoized_tmpdir)
return memoized_tmpdir; return memoized_tmpdir;
base = try (getenv ("TMPDIR"), base); base = try_dir (getenv ("TMPDIR"), base);
base = try (getenv ("TMP"), base); base = try_dir (getenv ("TMP"), base);
base = try (getenv ("TEMP"), base); base = try_dir (getenv ("TEMP"), base);
#ifdef P_tmpdir #ifdef P_tmpdir
base = try (P_tmpdir, base); base = try_dir (P_tmpdir, base);
#endif #endif
/* Try /var/tmp, /usr/tmp, then /tmp. */ /* Try /var/tmp, /usr/tmp, then /tmp. */
base = try (vartmp, base); base = try_dir (vartmp, base);
base = try (usrtmp, base); base = try_dir (usrtmp, base);
base = try (tmp, base); base = try_dir (tmp, base);
/* If all else fails, use the current directory! */ /* If all else fails, use the current directory! */
if (base == 0) if (base == 0)
@ -123,7 +123,7 @@ choose_tmpdir (void)
/* Append DIR_SEPARATOR to the directory we've chosen /* Append DIR_SEPARATOR to the directory we've chosen
and return it. */ and return it. */
len = strlen (base); len = strlen (base);
tmpdir = xmalloc (len + 2); tmpdir = XNEWVEC (char, len + 2);
strcpy (tmpdir, base); strcpy (tmpdir, base);
tmpdir[len] = DIR_SEPARATOR; tmpdir[len] = DIR_SEPARATOR;
tmpdir[len+1] = '\0'; tmpdir[len+1] = '\0';
@ -158,7 +158,7 @@ make_temp_file (const char *suffix)
base_len = strlen (base); base_len = strlen (base);
suffix_len = strlen (suffix); suffix_len = strlen (suffix);
temp_filename = xmalloc (base_len temp_filename = XNEWVEC (char, base_len
+ TEMP_FILE_LEN + TEMP_FILE_LEN
+ suffix_len + 1); + suffix_len + 1);
strcpy (temp_filename, base); strcpy (temp_filename, base);

View File

@ -51,17 +51,17 @@ typedef unsigned long gcc_uint64_t;
/* /*
@deftypefn Replacement int mkstemps (char *@var{template}, int @var{suffix_len}) @deftypefn Replacement int mkstemps (char *@var{pattern}, int @var{suffix_len})
Generate a unique temporary file name from @var{template}. Generate a unique temporary file name from @var{pattern}.
@var{template} has the form: @var{pattern} has the form:
@example @example
@var{path}/ccXXXXXX@var{suffix} @var{path}/ccXXXXXX@var{suffix}
@end example @end example
@var{suffix_len} tells us how long @var{suffix} is (it can be zero @var{suffix_len} tells us how long @var{suffix} is (it can be zero
length). The last six characters of @var{template} before @var{suffix} length). The last six characters of @var{pattern} before @var{suffix}
must be @samp{XXXXXX}; they are replaced with a string that makes the must be @samp{XXXXXX}; they are replaced with a string that makes the
filename unique. Returns a file descriptor open on the file for filename unique. Returns a file descriptor open on the file for
reading and writing. reading and writing.
@ -71,7 +71,7 @@ reading and writing.
*/ */
int int
mkstemps (char *template, int suffix_len) mkstemps (char *pattern, int suffix_len)
{ {
static const char letters[] static const char letters[]
= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
@ -83,15 +83,15 @@ mkstemps (char *template, int suffix_len)
size_t len; size_t len;
int count; int count;
len = strlen (template); len = strlen (pattern);
if ((int) len < 6 + suffix_len if ((int) len < 6 + suffix_len
|| strncmp (&template[len - 6 - suffix_len], "XXXXXX", 6)) || strncmp (&pattern[len - 6 - suffix_len], "XXXXXX", 6))
{ {
return -1; return -1;
} }
XXXXXX = &template[len - 6 - suffix_len]; XXXXXX = &pattern[len - 6 - suffix_len];
#ifdef HAVE_GETTIMEOFDAY #ifdef HAVE_GETTIMEOFDAY
/* Get some more or less random data. */ /* Get some more or less random data. */
@ -119,7 +119,7 @@ mkstemps (char *template, int suffix_len)
v /= 62; v /= 62;
XXXXXX[5] = letters[v % 62]; XXXXXX[5] = letters[v % 62];
fd = open (template, O_RDWR|O_CREAT|O_EXCL, 0600); fd = open (pattern, O_RDWR|O_CREAT|O_EXCL, 0600);
if (fd >= 0) if (fd >= 0)
/* The file does not exist. */ /* The file does not exist. */
return fd; return fd;
@ -131,6 +131,6 @@ mkstemps (char *template, int suffix_len)
} }
/* We return the null string if we can't find a unique file name. */ /* We return the null string if we can't find a unique file name. */
template[0] = '\0'; pattern[0] = '\0';
return -1; return -1;
} }

View File

@ -55,7 +55,7 @@ pex_init_common (int flags, const char *pname, const char *tempbase,
{ {
struct pex_obj *obj; struct pex_obj *obj;
obj = xmalloc (sizeof (*obj)); obj = XNEW (struct pex_obj);
obj->flags = flags; obj->flags = flags;
obj->pname = pname; obj->pname = pname;
obj->tempbase = tempbase; obj->tempbase = tempbase;
@ -83,7 +83,7 @@ pex_add_remove (struct pex_obj *obj, const char *name, int allocated)
char *add; char *add;
++obj->remove_count; ++obj->remove_count;
obj->remove = xrealloc (obj->remove, obj->remove_count * sizeof (char *)); obj->remove = XRESIZEVEC (char *, obj->remove, obj->remove_count);
if (allocated) if (allocated)
add = (char *) name; add = (char *) name;
else else
@ -280,7 +280,7 @@ pex_run (struct pex_obj *obj, int flags, const char *executable,
goto error_exit; goto error_exit;
++obj->count; ++obj->count;
obj->children = xrealloc (obj->children, obj->count * sizeof (long)); obj->children = XRESIZEVEC (long, obj->children, obj->count);
obj->children[obj->count - 1] = pid; obj->children[obj->count - 1] = pid;
return NULL; return NULL;
@ -352,9 +352,9 @@ pex_get_status_and_time (struct pex_obj *obj, int done, const char **errmsg,
if (obj->number_waited == obj->count) if (obj->number_waited == obj->count)
return 1; return 1;
obj->status = xrealloc (obj->status, obj->count * sizeof (int)); obj->status = XRESIZEVEC (int, obj->status, obj->count);
if ((obj->flags & PEX_RECORD_TIMES) != 0) if ((obj->flags & PEX_RECORD_TIMES) != 0)
obj->time = xrealloc (obj->time, obj->count * sizeof (struct pex_time)); obj->time = XRESIZEVEC (struct pex_time, obj->time, obj->count);
ret = 1; ret = 1;
for (i = obj->number_waited; i < obj->count; ++i) for (i = obj->number_waited; i < obj->count; ++i)

View File

@ -257,7 +257,7 @@ pex_djgpp_exec_child (struct pex_obj *obj, int flags, const char *executable,
is the number of children which have executed before this is the number of children which have executed before this
one. */ one. */
statuses = (int *) obj->sysdep; statuses = (int *) obj->sysdep;
statuses = xrealloc (statuses, (obj->count + 1) * sizeof (int)); statuses = XRESIZEVEC (int, statuses, obj->count + 1);
statuses[obj->count] = status; statuses[obj->count] = status;
obj->sysdep = (void *) statuses; obj->sysdep = (void *) statuses;

View File

@ -89,7 +89,7 @@ pex_init (int flags, const char *pname, const char *tempbase)
ret = pex_init_common (flags, pname, tempbase, funcs); ret = pex_init_common (flags, pname, tempbase, funcs);
ret->sysdep = xmalloc (sizeof (struct pex_msdos)); ret->sysdep = XNEW (struct pex_msdos);
for (i = 0; i < PEX_MSDOS_FILE_COUNT; ++i) for (i = 0; i < PEX_MSDOS_FILE_COUNT; ++i)
ret->files[i] = NULL; ret->files[i] = NULL;
ret->statuses = NULL; ret->statuses = NULL;
@ -210,7 +210,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
outfile = ms->files[outindex]; outfile = ms->files[outindex];
} }
scmd = xmalloc (strlen (program) scmd = XNEWVEC (char, strlen (program)
+ ((flags & PEXECUTE_SEARCH) != 0 ? 4 : 0) + ((flags & PEXECUTE_SEARCH) != 0 ? 4 : 0)
+ strlen (rf) + strlen (rf)
+ strlen (infile) + strlen (infile)
@ -269,7 +269,7 @@ pex_msdos_exec_child (struct pex_obj *obj, int flags, const char *executable,
/* Save the exit status for later. When we are called, obj->count /* Save the exit status for later. When we are called, obj->count
is the number of children which have executed before this is the number of children which have executed before this
one. */ one. */
ms->statuses = xrealloc (ms->statuses, (obj->count + 1) * sizeof (int)); ms->statuses = XRESIZEVEC(int, ms->statuses, obj->count + 1);
ms->statuses[obj->count] = status; ms->statuses[obj->count] = status;
return obj->count; return obj->count;

View File

@ -252,7 +252,7 @@ pex_wait (struct pex_obj *obj, pid_t pid, int *status, struct pex_time *time)
return cpid; return cpid;
} }
psl = xmalloc (sizeof (struct status_list)); psl = XNEW (struct status_list);
psl->pid = cpid; psl->pid = cpid;
psl->status = *status; psl->status = *status;
if (time != NULL) if (time != NULL)

View File

@ -79,7 +79,7 @@ fix_argv (char * const *argvec)
for (i = 0; argvec[i] != NULL; i++) for (i = 0; argvec[i] != NULL; i++)
; ;
argv = xmalloc ((i + 1) * sizeof (char *)); argv = XNEWVEC (char *, i + 1);
for (i = 0; argvec[i] != NULL; i++) for (i = 0; argvec[i] != NULL; i++)
argv[i] = xstrdup (argvec[i]); argv[i] = xstrdup (argvec[i]);
argv[i] = NULL; argv[i] = NULL;
@ -105,7 +105,7 @@ fix_argv (char * const *argvec)
{ {
if (temp[j] == '"') if (temp[j] == '"')
{ {
newtemp = xmalloc (len + 2); newtemp = XNEWVEC (char, len + 2);
strncpy (newtemp, temp, j); strncpy (newtemp, temp, j);
newtemp [j] = '\\'; newtemp [j] = '\\';
strncpy (&newtemp [j+1], &temp [j], len-j); strncpy (&newtemp [j+1], &temp [j], len-j);
@ -150,7 +150,7 @@ fix_argv (char * const *argvec)
len += 2; /* and for the enclosing quotes. */ len += 2; /* and for the enclosing quotes. */
temp = xmalloc (len + 1); temp = XNEWVEC (char, len + 1);
temp[0] = '"'; temp[0] = '"';
strcpy (temp + 1, argv[i]); strcpy (temp + 1, argv[i]);
if (trailing_backslash) if (trailing_backslash)

View File

@ -99,7 +99,7 @@ pwait (int pid, int *status, int flags ATTRIBUTE_UNUSED)
{ {
int *vector; int *vector;
vector = xmalloc (idx * sizeof (int)); vector = XNEWVEC (int, idx);
if (!pex_get_status (pex, idx, vector)) if (!pex_get_status (pex, idx, vector))
return -1; return -1;
*status = vector[pid]; *status = vector[pid];

View File

@ -115,7 +115,7 @@ setenv (const char *name, const char *value, int replace)
return -1; return -1;
} }
new_environ[size] = malloc (namelen + 1 + vallen); new_environ[size] = (char *) malloc (namelen + 1 + vallen);
if (new_environ[size] == NULL) if (new_environ[size] == NULL)
{ {
free ((char *) new_environ); free ((char *) new_environ);
@ -142,13 +142,13 @@ setenv (const char *name, const char *value, int replace)
if (len + 1 < namelen + 1 + vallen) if (len + 1 < namelen + 1 + vallen)
{ {
/* The existing string is too short; malloc a new one. */ /* The existing string is too short; malloc a new one. */
char *new = malloc (namelen + 1 + vallen); char *new_string = (char *) malloc (namelen + 1 + vallen);
if (new == NULL) if (new_string == NULL)
{ {
UNLOCK; UNLOCK;
return -1; return -1;
} }
*ep = new; *ep = new_string;
} }
memcpy (*ep, name, namelen); memcpy (*ep, name, namelen);
(*ep)[namelen] = '='; (*ep)[namelen] = '=';

View File

@ -27,14 +27,14 @@ extern void abort (void) ATTRIBUTE_NORETURN;
int int
sigsetmask (int set) sigsetmask (int set)
{ {
sigset_t new; sigset_t new_sig;
sigset_t old; sigset_t old_sig;
sigemptyset (&new); sigemptyset (&new_sig);
if (set != 0) { if (set != 0) {
abort(); /* FIXME, we don't know how to translate old mask to new */ abort(); /* FIXME, we don't know how to translate old mask to new */
} }
sigprocmask(SIG_SETMASK, &new, &old); sigprocmask(SIG_SETMASK, &new_sig, &old_sig);
return 1; /* FIXME, we always return 1 as old value. */ return 1; /* FIXME, we always return 1 as old value. */
} }
#endif #endif

View File

@ -155,8 +155,8 @@ int main (int argc, char **argv)
else else
k = 10; k = 10;
pointers = xmalloc (k * sizeof (void *)); pointers = XNEWVEC (void*, k);
work = xmalloc (k * sizeof (void *)); work = XNEWVEC (void*, k);
for (i = 0; i < k; ++i) for (i = 0; i < k; ++i)
{ {

View File

@ -57,7 +57,7 @@ spaces (int count)
{ {
free (buf); free (buf);
} }
buf = malloc (count + 1); buf = (char *) malloc (count + 1);
if (buf == (char *) 0) if (buf == (char *) 0)
return 0; return 0;
for (t = buf + count ; t != buf ; ) for (t = buf + count ; t != buf ; )

View File

@ -46,10 +46,10 @@ strndup (const char *s, size_t n)
if (n < len) if (n < len)
len = n; len = n;
result = malloc (len + 1); result = (char *) malloc (len + 1);
if (!result) if (!result)
return 0; return 0;
result[len] = '\0'; result[len] = '\0';
return memcpy (result, s, len); return (char *) memcpy (result, s, len);
} }

View File

@ -74,7 +74,7 @@ ternary_insert (ternary_tree *root, const char *s, PTR data, int replace)
for (;;) for (;;)
{ {
/* Allocate the memory for the node, and fill it in */ /* Allocate the memory for the node, and fill it in */
*pcurr = (ternary_tree) xmalloc (sizeof (ternary_node)); *pcurr = XNEW (ternary_node);
curr = *pcurr; curr = *pcurr;
curr->splitchar = *s; curr->splitchar = *s;
curr->lokid = curr->hikid = curr->eqkid = 0; curr->lokid = curr->hikid = curr->eqkid = 0;

View File

@ -75,11 +75,23 @@ function will be called to print an error message and terminate execution.
#include <unixlib.h> #include <unixlib.h>
#else #else
/* For systems with larger pointers than ints, these must be declared. */ /* For systems with larger pointers than ints, these must be declared. */
PTR malloc (size_t); # if HAVE_STDLIB_H && HAVE_UNISTD_H && HAVE_DECL_MALLOC \
PTR realloc (PTR, size_t); && HAVE_DECL_REALLOC && HAVE_DECL_CALLOC && HAVE_DECL_SBRK
PTR calloc (size_t, size_t); # include <stdlib.h>
PTR sbrk (ptrdiff_t); # include <unistd.h>
#endif # else
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
void *malloc (size_t);
void *realloc (void *, size_t);
void *calloc (size_t, size_t);
void *sbrk (ptrdiff_t);
# ifdef __cplusplus
}
# endif /* __cplusplus */
# endif /* HAVE_STDLIB_H ... */
#endif /* VMS */
/* The program name if set. */ /* The program name if set. */
static const char *name = ""; static const char *name = "";

View File

@ -31,6 +31,6 @@ char *
xstrdup (const char *s) xstrdup (const char *s)
{ {
register size_t len = strlen (s) + 1; register size_t len = strlen (s) + 1;
register char *ret = xmalloc (len); register char *ret = XNEWVEC (char, len);
return (char *) memcpy (ret, s, len); return (char *) memcpy (ret, s, len);
} }

View File

@ -19,15 +19,28 @@ will never return a @code{NULL} pointer.
#include "libiberty.h" #include "libiberty.h"
#ifdef VMS #ifdef VMS
#include <errno.h> # include <errno.h>
#if !defined (__STRICT_ANSI__) && !defined (__HIDE_FORBIDDEN_NAMES) # if !defined (__STRICT_ANSI__) && !defined (__HIDE_FORBIDDEN_NAMES)
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
extern char *strerror (int,...); extern char *strerror (int,...);
#define DONT_DECLARE_STRERROR # define DONT_DECLARE_STRERROR
#endif # ifdef __cplusplus
#endif /* VMS */ }
# endif /* __cplusplus */
# endif
#endif /* VMS */
#ifndef DONT_DECLARE_STRERROR #ifndef DONT_DECLARE_STRERROR
# ifdef __cplusplus
extern "C" {
# endif /* __cplusplus */
extern char *strerror (int); extern char *strerror (int);
# ifdef __cplusplus
}
# endif /* __cplusplus */
#endif #endif
/* If strerror returns NULL, we'll format the number into a static buffer. */ /* If strerror returns NULL, we'll format the number into a static buffer. */

View File

@ -53,8 +53,8 @@ xstrndup (const char *s, size_t n)
if (n < len) if (n < len)
len = n; len = n;
result = xmalloc (len + 1); result = XNEWVEC (char, len + 1);
result[len] = '\0'; result[len] = '\0';
return memcpy (result, s, len); return (char *) memcpy (result, s, len);
} }