aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2016-03-21 16:31:46 +0000
committerNick Clifton <nickc@redhat.com>2016-03-21 16:31:46 +0000
commite1fa0163505af867009ea73fc5f705162120e795 (patch)
treefd2c95bc22a2dc813c4ab7e70200701f1854d144 /binutils
parentc55978a67a2e23999c3359a13bb807b665fcb33e (diff)
downloadgdb-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/ChangeLog10
-rwxr-xr-xbinutils/configure2
-rw-r--r--binutils/dlltool.c22
-rw-r--r--binutils/dllwrap.c3
-rw-r--r--binutils/nlmconv.c4
-rw-r--r--binutils/objdump.c13
-rw-r--r--binutils/resrc.c3
-rw-r--r--binutils/winduni.c4
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,