diff options
author | Nick Clifton <nickc@redhat.com> | 2016-03-21 16:31:46 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2016-03-21 16:31:46 +0000 |
commit | e1fa0163505af867009ea73fc5f705162120e795 (patch) | |
tree | fd2c95bc22a2dc813c4ab7e70200701f1854d144 /binutils | |
parent | c55978a67a2e23999c3359a13bb807b665fcb33e (diff) | |
download | gdb-e1fa0163505af867009ea73fc5f705162120e795.zip gdb-e1fa0163505af867009ea73fc5f705162120e795.tar.gz gdb-e1fa0163505af867009ea73fc5f705162120e795.tar.bz2 |
Remove use of alloca.
bfd * warning.m4 (GCC_WARN_CFLAGS): Add -Wstack-usage=262144
* configure: Regenerate.
* elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Replace use of
alloca with call to xmalloc.
* elf32-nds32.c: Likewise.
* elf64-hppa.c: Likewise.
* elfxx-mips.c: Likewise.
* pef.c: Likewise.
* pei-x86_64.c: Likewise.
* som.c: Likewise.
* xsym.c: Likewise.
binutils * dlltool.c: Replace use of alloca with call to xmalloc.
* dllwrap.c: Likewise.
* nlmconv.c: Likewise.
* objdump.c: Likewise.
* resrc.c: Likewise.
* winduni.c: Likewise.
* configure: Regenerate.
gas * atof-generic.c: Replace use of alloca with call to xmalloc.
* cgen.c: Likewise.
* dwarf2dbg.c: Likewise.
* macro.c: Likewise.
* remap.c: Likewise.
* stabs.c: Likewise.
* symbols.c: Likewise.
* config/obj-elf.c: Likewise.
* config/tc-aarch64.c: Likewise.
* config/tc-arc.c: Likewise.
* config/tc-arm.c: Likewise.
* config/tc-avr.c: Likewise.
* config/tc-ia64.c: Likewise.
* config/tc-mips.c: Likewise.
* config/tc-msp430.c: Likewise.
* config/tc-nds32.c: Likewise.
* config/tc-ppc.c: Likewise.
* config/tc-sh.c: Likewise.
* config/tc-tic30.c: Likewise.
* config/tc-tic54x.c: Likewise.
* config/tc-xstormy16.c: Likewise.
* config/te-vms.c: Likewise.
* configure: Regenerate.
ld * emultempl/msp430.em: Replace use of alloca with call to xmalloc.
* plugin.c: Likewise.
* pe-dll.c: Likewise.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 10 | ||||
-rwxr-xr-x | binutils/configure | 2 | ||||
-rw-r--r-- | binutils/dlltool.c | 22 | ||||
-rw-r--r-- | binutils/dllwrap.c | 3 | ||||
-rw-r--r-- | binutils/nlmconv.c | 4 | ||||
-rw-r--r-- | binutils/objdump.c | 13 | ||||
-rw-r--r-- | binutils/resrc.c | 3 | ||||
-rw-r--r-- | binutils/winduni.c | 4 |
8 files changed, 42 insertions, 19 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 918299a..50425c7 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,13 @@ +2016-03-21 Nick Clifton <nickc@redhat.com> + + * dlltool.c: Replace use of alloca with call to xmalloc. + * dllwrap.c: Likewise. + * nlmconv.c: Likewise. + * objdump.c: Likewise. + * resrc.c: Likewise. + * winduni.c: Likewise. + * configure: Regenerate. + 2016-03-07 Nick Clifton <nickc@redhat.com> PR binutils/19775 diff --git a/binutils/configure b/binutils/configure index dc735dc..a36b30b 100755 --- a/binutils/configure +++ b/binutils/configure @@ -11982,7 +11982,7 @@ fi NO_WERROR= if test "${ERROR_ON_WARNING}" = yes ; then - GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror" + GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror -Wstack-usage=262144" NO_WERROR="-Wno-error" fi diff --git a/binutils/dlltool.c b/binutils/dlltool.c index f97c6b4..e116e6b 100644 --- a/binutils/dlltool.c +++ b/binutils/dlltool.c @@ -1253,7 +1253,7 @@ def_import (const char *app_name, const char *module, const char *dllext, const char *entry, int ord_val, const char *its_name) { const char *application_name; - char *buf; + char *buf = NULL; if (entry != NULL) application_name = entry; @@ -1266,13 +1266,12 @@ def_import (const char *app_name, const char *module, const char *dllext, } if (dllext != NULL) - { - buf = (char *) alloca (strlen (module) + strlen (dllext) + 2); - sprintf (buf, "%s.%s", module, dllext); - module = buf; - } + module = buf = concat (module, ".", dllext, NULL); append_import (application_name, module, ord_val, its_name); + + if (buf) + free (buf); } void @@ -1334,7 +1333,7 @@ run (const char *what, char *args) if (*s == ' ') i++; i++; - argv = alloca (sizeof (char *) * (i + 3)); + argv = xmalloc (sizeof (char *) * (i + 3)); i = 0; argv[i++] = what; s = args; @@ -1353,6 +1352,7 @@ run (const char *what, char *args) pid = pexecute (argv[0], (char * const *) argv, program_name, temp_base, &errmsg_fmt, &errmsg_arg, PEXECUTE_ONE | PEXECUTE_SEARCH); + free(argv); if (pid == -1) { @@ -1986,12 +1986,13 @@ assemble_file (const char * source, const char * dest) { char * cmd; - cmd = (char *) alloca (strlen (ASM_SWITCHES) + strlen (as_flags) - + strlen (source) + strlen (dest) + 50); + cmd = xmalloc (strlen (ASM_SWITCHES) + strlen (as_flags) + + strlen (source) + strlen (dest) + 50); sprintf (cmd, "%s %s -o %s %s", ASM_SWITCHES, as_flags, dest, source); run (as_name, cmd); + free (cmd); } static const char * temp_file_to_remove[5]; @@ -3295,7 +3296,7 @@ gen_lib_file (int delay) { char *name; - name = (char *) alloca (strlen (TMP_STUB) + 10); + name = xmalloc (strlen (TMP_STUB) + 10); for (i = 0; (exp = d_exports_lexically[i]); i++) { /* Don't delete non-existent stubs for PRIVATE entries. */ @@ -3313,6 +3314,7 @@ gen_lib_file (int delay) non_fatal (_("cannot delete %s: %s"), name, strerror (errno)); } } + free (name); } inform (_("Created lib file")); diff --git a/binutils/dllwrap.c b/binutils/dllwrap.c index d14d154..a5f1b38 100644 --- a/binutils/dllwrap.c +++ b/binutils/dllwrap.c @@ -364,7 +364,7 @@ run (const char *what, char *args) if (*s == ' ') i++; i++; - argv = alloca (sizeof (char *) * (i + 3)); + argv = xmalloc (sizeof (char *) * (i + 3)); i = 0; argv[i++] = what; s = args; @@ -392,6 +392,7 @@ run (const char *what, char *args) pid = pexecute (argv[0], (char * const *) argv, prog_name, temp_base, &errmsg_fmt, &errmsg_arg, PEXECUTE_ONE | PEXECUTE_SEARCH); + free (argv); if (pid == -1) { diff --git a/binutils/nlmconv.c b/binutils/nlmconv.c index f45ff5e..eff15c5 100644 --- a/binutils/nlmconv.c +++ b/binutils/nlmconv.c @@ -2082,7 +2082,7 @@ link_inputs (struct string_list *inputs, char *ld, char * mfile) for (q = inputs; q != NULL; q = q->next) ++c; - argv = (char **) alloca ((c + 7) * sizeof (char *)); + argv = (char **) xmalloc ((c + 7) * sizeof (char *)); #ifndef __MSDOS__ if (ld == NULL) @@ -2140,6 +2140,8 @@ link_inputs (struct string_list *inputs, char *ld, char * mfile) pid = pexecute (ld, argv, program_name, (char *) NULL, &errfmt, &errarg, PEXECUTE_SEARCH | PEXECUTE_ONE); + free (argv); + if (pid == -1) { fprintf (stderr, _("%s: execution of %s failed: "), program_name, ld); diff --git a/binutils/objdump.c b/binutils/objdump.c index 3c94a76..6c8ab73 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -1348,6 +1348,7 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset) unsigned int linenumber; unsigned int discriminator; bfd_boolean reloc; + char *path = NULL; if (! with_line_numbers && ! with_source_code) return; @@ -1368,20 +1369,21 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset) { char *path_up; const char *fname = filename; - char *path = (char *) alloca (prefix_length + PATH_MAX + 1); + + path = xmalloc (prefix_length + PATH_MAX + 1); if (prefix_length) memcpy (path, prefix, prefix_length); path_up = path + prefix_length; /* Build relocated filename, stripping off leading directories - from the initial filename if requested. */ + from the initial filename if requested. */ if (prefix_strip > 0) { int level = 0; const char *s; - /* Skip selected directory levels. */ + /* Skip selected directory levels. */ for (s = fname + 1; *s != '\0' && level < prefix_strip; s++) if (IS_DIR_SEPARATOR(*s)) { @@ -1390,7 +1392,7 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset) } } - /* Update complete filename. */ + /* Update complete filename. */ strncpy (path_up, fname, PATH_MAX); path_up[PATH_MAX] = '\0'; @@ -1469,6 +1471,9 @@ show_line (bfd *abfd, asection *section, bfd_vma addr_offset) if (discriminator != prev_discriminator) prev_discriminator = discriminator; + + if (path) + free (path); } /* Pseudo FILE object for strings. */ diff --git a/binutils/resrc.c b/binutils/resrc.c index 0cfd949..b6e320d 100644 --- a/binutils/resrc.c +++ b/binutils/resrc.c @@ -215,7 +215,7 @@ run_cmd (char *cmd, const char *redir) i++; i++; - argv = alloca (sizeof (char *) * (i + 3)); + argv = xmalloc (sizeof (char *) * (i + 3)); i = 0; s = cmd; @@ -266,6 +266,7 @@ run_cmd (char *cmd, const char *redir) pid = pexecute (argv[0], (char * const *) argv, program_name, temp_base, &errmsg_fmt, &errmsg_arg, PEXECUTE_ONE | PEXECUTE_SEARCH); + free (argv); /* Restore stdout to its previous setting. */ dup2 (stdout_save, STDOUT_FILENO); diff --git a/binutils/winduni.c b/binutils/winduni.c index d459b2e..4a6231a 100644 --- a/binutils/winduni.c +++ b/binutils/winduni.c @@ -213,7 +213,7 @@ unicode_from_ascii_len (rc_uint_type *length, unichar **unicode, const char *asc } /* Make sure we have zero terminated string. */ - p = tmp = (char *) alloca (a_length + 1); + p = tmp = (char *) xmalloc (a_length + 1); memcpy (tmp, ascii, a_length); tmp[a_length] = 0; @@ -279,6 +279,8 @@ unicode_from_ascii_len (rc_uint_type *length, unichar **unicode, const char *asc if (length) *length = idx; + + free (tmp); } /* Convert an unicode string to an ASCII string. We just copy it, |