diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 6ecfab5d..f8698213 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -4914,7 +4914,7 @@ display_debug_lines_decoded (struct dwarf_section * section, else { newFileName = (char *) xmalloc (fileNameLength + 1); - strncpy (newFileName, fileName, fileNameLength + 1); + strcpy (newFileName, fileName); } if (!do_wide || (fileNameLength <= MAX_FILENAME_LENGTH)) diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index 3639bfbf..ed080a1a 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -185,20 +185,6 @@ static void d_init_info (const char *, int, size_t, struct d_info *); #define CP_STATIC_IF_GLIBCPP_V3 #endif /* ! defined(IN_GLIBCPP_V3) */ -/* See if the compiler supports dynamic arrays. */ - -#ifdef __GNUC__ -#define CP_DYNAMIC_ARRAYS -#else -#ifdef __STDC__ -#ifdef __STDC_VERSION__ -#if __STDC_VERSION__ >= 199901L && !__STDC_NO_VLA__ -#define CP_DYNAMIC_ARRAYS -#endif /* __STDC_VERSION__ >= 199901L && !__STDC_NO_VLA__ */ -#endif /* defined (__STDC_VERSION__) */ -#endif /* defined (__STDC__) */ -#endif /* ! defined (__GNUC__) */ - /* We avoid pulling in the ctype tables, to prevent pulling in additional unresolved symbols when this code is used in a library. FIXME: Is this really a valid reason? This comes from the original @@ -4343,29 +4329,21 @@ cplus_demangle_print_callback (int options, d_print_init (&dpi, callback, opaque, dc); { -#ifdef CP_DYNAMIC_ARRAYS - /* Avoid zero-length VLAs, which are prohibited by the C99 standard - and flagged as errors by Address Sanitizer. */ - __extension__ struct d_saved_scope scopes[(dpi.num_saved_scopes > 0) - ? dpi.num_saved_scopes : 1]; - __extension__ struct d_print_template temps[(dpi.num_copy_templates > 0) - ? dpi.num_copy_templates : 1]; - - dpi.saved_scopes = scopes; - dpi.copy_templates = temps; -#else - dpi.saved_scopes = alloca (dpi.num_saved_scopes - * sizeof (*dpi.saved_scopes)); - dpi.copy_templates = alloca (dpi.num_copy_templates - * sizeof (*dpi.copy_templates)); -#endif - + dpi.saved_scopes + = (struct d_saved_scope *) xmalloc (dpi.num_saved_scopes + * sizeof (*dpi.saved_scopes)); + dpi.copy_templates + = (struct d_print_template *) xmalloc (dpi.num_copy_templates + * sizeof (*dpi.copy_templates)); d_print_comp (&dpi, options, dc); } d_print_flush (&dpi); - return ! d_print_saw_error (&dpi); + int retval = ! d_print_saw_error (&dpi); + free (dpi.saved_scopes); + free (dpi.copy_templates); + return retval; } /* Turn components into a human readable string. OPTIONS is the @@ -6307,16 +6285,12 @@ d_demangle_callback (const char *mangled, int options, } { -#ifdef CP_DYNAMIC_ARRAYS - __extension__ struct demangle_component comps[di.num_comps]; - __extension__ struct demangle_component *subs[di.num_subs]; - - di.comps = comps; - di.subs = subs; -#else - di.comps = alloca (di.num_comps * sizeof (*di.comps)); - di.subs = alloca (di.num_subs * sizeof (*di.subs)); -#endif + di.comps + = (struct demangle_component *) xmalloc (di.num_comps + * sizeof (*di.comps)); + di.subs + = (struct demangle_component **) xmalloc (di.num_subs + * sizeof (*di.subs)); switch (type) { @@ -6357,6 +6331,8 @@ d_demangle_callback (const char *mangled, int options, : 0; } + free (di.comps); + free (di.subs); return status; } @@ -6588,16 +6564,12 @@ is_ctor_or_dtor (const char *mangled, cplus_demangle_init_info (mangled, DMGL_GNU_V3, strlen (mangled), &di); { -#ifdef CP_DYNAMIC_ARRAYS - __extension__ struct demangle_component comps[di.num_comps]; - __extension__ struct demangle_component *subs[di.num_subs]; - - di.comps = comps; - di.subs = subs; -#else - di.comps = alloca (di.num_comps * sizeof (*di.comps)); - di.subs = alloca (di.num_subs * sizeof (*di.subs)); -#endif + di.comps + = (struct demangle_component *) xmalloc (di.num_comps + * sizeof (*di.comps)); + di.subs + = (struct demangle_component **) xmalloc (di.num_subs + * sizeof (*di.subs)); dc = cplus_demangle_mangled_name (&di, 1); @@ -6640,6 +6612,8 @@ is_ctor_or_dtor (const char *mangled, } } + free (di.comps); + free (di.subs); return ret; } diff --git a/libiberty/make-relative-prefix.c b/libiberty/make-relative-prefix.c index e3f9f920..5dbe6f89 100644 --- a/libiberty/make-relative-prefix.c +++ b/libiberty/make-relative-prefix.c @@ -259,10 +259,7 @@ make_relative_prefix_1 (const char *progname, const char *bin_prefix, #ifdef HAVE_HOST_EXECUTABLE_SUFFIX len += strlen (HOST_EXECUTABLE_SUFFIX); #endif - if (len < MAX_ALLOCA_SIZE) - nstore = (char *) alloca (len); - else - alloc_ptr = nstore = (char *) malloc (len); + alloc_ptr = nstore = (char *) malloc (len); startp = endp = temp; while (1)