merge from gcc
This commit is contained in:
		| @@ -1,3 +1,13 @@ | |||||||
|  | 2013-10-29  Marc Glisse  <marc.glisse@inria.fr> | ||||||
|  |  | ||||||
|  | 	PR tree-optimization/58689 | ||||||
|  | 	* ansidecl.h (ATTRIBUTE_RETURNS_NONNULL): New macro. | ||||||
|  | 	* libiberty.h (basename, lbasename, dos_lbasename, unix_lbasename, | ||||||
|  | 	concat_copy): Mark with attributes nonnull(1) and returns_nonnull. | ||||||
|  | 	(concat, reconcat, concat_copy2, choose_temp_base, xstrerror, | ||||||
|  | 	xmalloc, xrealloc, xcalloc, xstrdup, xstrndup, xmemdup, pex_init): | ||||||
|  | 	Mark with attribute returns_nonnull. | ||||||
|  |  | ||||||
| 2013-10-22  Sterling Augustine  <saugustine@google.com> | 2013-10-22  Sterling Augustine  <saugustine@google.com> | ||||||
|  |  | ||||||
| 	* gdb/gdb-index.h: Merge from gdb tree. | 	* gdb/gdb-index.h: Merge from gdb tree. | ||||||
|   | |||||||
| @@ -311,6 +311,15 @@ So instead we use the macro below and test it against specific values.  */ | |||||||
| # endif /* GNUC >= 3.3 */ | # endif /* GNUC >= 3.3 */ | ||||||
| #endif /* ATTRIBUTE_NONNULL */ | #endif /* ATTRIBUTE_NONNULL */ | ||||||
|  |  | ||||||
|  | /* Attribute `returns_nonnull' was valid as of gcc 4.9.  */ | ||||||
|  | #ifndef ATTRIBUTE_RETURNS_NONNULL | ||||||
|  | # if (GCC_VERSION >= 4009) | ||||||
|  | #  define ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) | ||||||
|  | # else | ||||||
|  | #  define ATTRIBUTE_RETURNS_NONNULL | ||||||
|  | # endif /* GNUC >= 4.9 */ | ||||||
|  | #endif /* ATTRIBUTE_RETURNS_NONNULL */ | ||||||
|  |  | ||||||
| /* Attribute `pure' was valid as of gcc 3.0.  */ | /* Attribute `pure' was valid as of gcc 3.0.  */ | ||||||
| #ifndef ATTRIBUTE_PURE | #ifndef ATTRIBUTE_PURE | ||||||
| # if (GCC_VERSION >= 3000) | # if (GCC_VERSION >= 3000) | ||||||
|   | |||||||
| @@ -107,7 +107,7 @@ extern int countargv (char**); | |||||||
|    is 1, we found it so don't provide any declaration at all.  */ |    is 1, we found it so don't provide any declaration at all.  */ | ||||||
| #if !HAVE_DECL_BASENAME | #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) | #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 *); | extern char *basename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1); | ||||||
| #else | #else | ||||||
| /* Do not allow basename to be used if there is no prototype seen.  We | /* 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 |    either need to use the above prototype or have one from | ||||||
| @@ -118,18 +118,18 @@ extern char *basename (const char *); | |||||||
|  |  | ||||||
| /* A well-defined basename () that is always compiled in.  */ | /* A well-defined basename () that is always compiled in.  */ | ||||||
|  |  | ||||||
| extern const char *lbasename (const char *); | extern const char *lbasename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1); | ||||||
|  |  | ||||||
| /* Same, but assumes DOS semantics (drive name, backslash is also a | /* Same, but assumes DOS semantics (drive name, backslash is also a | ||||||
|    dir separator) regardless of host.  */ |    dir separator) regardless of host.  */ | ||||||
|  |  | ||||||
| extern const char *dos_lbasename (const char *); | extern const char *dos_lbasename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1); | ||||||
|  |  | ||||||
| /* Same, but assumes Unix semantics (absolute paths always start with | /* Same, but assumes Unix semantics (absolute paths always start with | ||||||
|    a slash, only forward slash is accepted as dir separator) |    a slash, only forward slash is accepted as dir separator) | ||||||
|    regardless of host.  */ |    regardless of host.  */ | ||||||
|  |  | ||||||
| extern const char *unix_lbasename (const char *); | extern const char *unix_lbasename (const char *) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1); | ||||||
|  |  | ||||||
| /* A well-defined realpath () that is always compiled in.  */ | /* A well-defined realpath () that is always compiled in.  */ | ||||||
|  |  | ||||||
| @@ -139,7 +139,7 @@ extern char *lrealpath (const char *); | |||||||
|    the last argument of this function, to terminate the list of |    the last argument of this function, to terminate the list of | ||||||
|    strings.  Allocates memory using xmalloc.  */ |    strings.  Allocates memory using xmalloc.  */ | ||||||
|  |  | ||||||
| extern char *concat (const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_SENTINEL; | extern char *concat (const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_SENTINEL; | ||||||
|  |  | ||||||
| /* Concatenate an arbitrary number of strings.  You must pass NULL as | /* Concatenate an arbitrary number of strings.  You must pass NULL as | ||||||
|    the last argument of this function, to terminate the list of |    the last argument of this function, to terminate the list of | ||||||
| @@ -148,7 +148,7 @@ extern char *concat (const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_SENTINEL; | |||||||
|    pointer to be freed after the new string is created, similar to the |    pointer to be freed after the new string is created, similar to the | ||||||
|    way xrealloc works.  */ |    way xrealloc works.  */ | ||||||
|  |  | ||||||
| extern char *reconcat (char *, const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_SENTINEL; | extern char *reconcat (char *, const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_SENTINEL; | ||||||
|  |  | ||||||
| /* Determine the length of concatenating an arbitrary number of | /* Determine the length of concatenating an arbitrary number of | ||||||
|    strings.  You must pass NULL as the last argument of this function, |    strings.  You must pass NULL as the last argument of this function, | ||||||
| @@ -161,14 +161,14 @@ extern unsigned long concat_length (const char *, ...) ATTRIBUTE_SENTINEL; | |||||||
|    to terminate the list of strings.  The supplied memory is assumed |    to terminate the list of strings.  The supplied memory is assumed | ||||||
|    to be large enough.  */ |    to be large enough.  */ | ||||||
|  |  | ||||||
| extern char *concat_copy (char *, const char *, ...) ATTRIBUTE_SENTINEL; | extern char *concat_copy (char *, const char *, ...) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_NONNULL(1) ATTRIBUTE_SENTINEL; | ||||||
|  |  | ||||||
| /* Concatenate an arbitrary number of strings into a GLOBAL area of | /* Concatenate an arbitrary number of strings into a GLOBAL area of | ||||||
|    memory.  You must pass NULL as the last argument of this function, |    memory.  You must pass NULL as the last argument of this function, | ||||||
|    to terminate the list of strings.  The supplied memory is assumed |    to terminate the list of strings.  The supplied memory is assumed | ||||||
|    to be large enough.  */ |    to be large enough.  */ | ||||||
|  |  | ||||||
| extern char *concat_copy2 (const char *, ...) ATTRIBUTE_SENTINEL; | extern char *concat_copy2 (const char *, ...) ATTRIBUTE_RETURNS_NONNULL ATTRIBUTE_SENTINEL; | ||||||
|  |  | ||||||
| /* This is the global area used by concat_copy2.  */ | /* This is the global area used by concat_copy2.  */ | ||||||
|  |  | ||||||
| @@ -226,7 +226,7 @@ extern char *make_relative_prefix_ignore_links (const char *, const char *, | |||||||
|  |  | ||||||
| /* Choose a temporary directory to use for scratch files.  */ | /* Choose a temporary directory to use for scratch files.  */ | ||||||
|  |  | ||||||
| extern char *choose_temp_base (void) ATTRIBUTE_MALLOC; | extern char *choose_temp_base (void) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL; | ||||||
|  |  | ||||||
| /* Return a temporary file name or NULL if unable to create one.  */ | /* Return a temporary file name or NULL if unable to create one.  */ | ||||||
|  |  | ||||||
| @@ -256,7 +256,7 @@ extern int strtoerrno (const char *); | |||||||
|  |  | ||||||
| /* ANSI's strerror(), but more robust.  */ | /* ANSI's strerror(), but more robust.  */ | ||||||
|  |  | ||||||
| extern char *xstrerror (int); | extern char *xstrerror (int) ATTRIBUTE_RETURNS_NONNULL; | ||||||
|  |  | ||||||
| /* Return the maximum signal number for which strsignal will return a | /* Return the maximum signal number for which strsignal will return a | ||||||
|    string.  */ |    string.  */ | ||||||
| @@ -298,30 +298,30 @@ extern void xmalloc_failed (size_t) ATTRIBUTE_NORETURN; | |||||||
|    message to stderr (using the name set by xmalloc_set_program_name, |    message to stderr (using the name set by xmalloc_set_program_name, | ||||||
|    if any) and then call xexit.  */ |    if any) and then call xexit.  */ | ||||||
|  |  | ||||||
| extern void *xmalloc (size_t) ATTRIBUTE_MALLOC; | extern void *xmalloc (size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL; | ||||||
|  |  | ||||||
| /* Reallocate memory without fail.  This works like xmalloc.  Note, | /* Reallocate memory without fail.  This works like xmalloc.  Note, | ||||||
|    realloc type functions are not suitable for attribute malloc since |    realloc type functions are not suitable for attribute malloc since | ||||||
|    they may return the same address across multiple calls. */ |    they may return the same address across multiple calls. */ | ||||||
|  |  | ||||||
| extern void *xrealloc (void *, size_t); | extern void *xrealloc (void *, size_t) ATTRIBUTE_RETURNS_NONNULL; | ||||||
|  |  | ||||||
| /* Allocate memory without fail and set it to zero.  This works like | /* Allocate memory without fail and set it to zero.  This works like | ||||||
|    xmalloc.  */ |    xmalloc.  */ | ||||||
|  |  | ||||||
| extern void *xcalloc (size_t, size_t) ATTRIBUTE_MALLOC; | extern void *xcalloc (size_t, size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL; | ||||||
|  |  | ||||||
| /* Copy a string into a memory buffer without fail.  */ | /* Copy a string into a memory buffer without fail.  */ | ||||||
|  |  | ||||||
| extern char *xstrdup (const char *) ATTRIBUTE_MALLOC; | extern char *xstrdup (const char *) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL; | ||||||
|  |  | ||||||
| /* Copy at most N characters from string into a buffer without fail.  */ | /* Copy at most N characters from string into a buffer without fail.  */ | ||||||
|  |  | ||||||
| extern char *xstrndup (const char *, size_t) ATTRIBUTE_MALLOC; | extern char *xstrndup (const char *, size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL; | ||||||
|  |  | ||||||
| /* Copy an existing memory buffer to a new memory buffer without fail.  */ | /* Copy an existing memory buffer to a new memory buffer without fail.  */ | ||||||
|  |  | ||||||
| extern void *xmemdup (const void *, size_t, size_t) ATTRIBUTE_MALLOC; | extern void *xmemdup (const void *, size_t, size_t) ATTRIBUTE_MALLOC ATTRIBUTE_RETURNS_NONNULL; | ||||||
|  |  | ||||||
| /* Physical memory routines.  Return values are in BYTES.  */ | /* Physical memory routines.  Return values are in BYTES.  */ | ||||||
| extern double physmem_total (void); | extern double physmem_total (void); | ||||||
| @@ -399,7 +399,7 @@ extern void hex_init (void); | |||||||
|    Returns NULL on error.  */ |    Returns NULL on error.  */ | ||||||
|  |  | ||||||
| extern struct pex_obj *pex_init (int flags, const char *pname, | extern struct pex_obj *pex_init (int flags, const char *pname, | ||||||
| 				 const char *tempbase); | 				 const char *tempbase) ATTRIBUTE_RETURNS_NONNULL; | ||||||
|  |  | ||||||
| /* Flags for pex_run.  These are bits to be or'ed together.  */ | /* Flags for pex_run.  These are bits to be or'ed together.  */ | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user