aboutsummaryrefslogtreecommitdiff
path: root/binutils/objcopy.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2016-05-31 20:21:09 +0930
committerAlan Modra <amodra@gmail.com>2016-05-31 20:35:01 +0930
commitf7433f011ef27838551aded73b8666a86d26b8ec (patch)
tree646070656a42b473bff4b312f18ab7809e391fa0 /binutils/objcopy.c
parentc12969f8b53659f0d70b5e049c49b97a96826a3f (diff)
downloadgdb-f7433f011ef27838551aded73b8666a86d26b8ec.zip
gdb-f7433f011ef27838551aded73b8666a86d26b8ec.tar.gz
gdb-f7433f011ef27838551aded73b8666a86d26b8ec.tar.bz2
objcopy add-symbol uninitialised struct
* objcopy.c: Formatting, whitespace throughout. (copy_main): Init newsym->othersym. (parse_symflags): Make len a size_t. Adjust uses.
Diffstat (limited to 'binutils/objcopy.c')
-rw-r--r--binutils/objcopy.c223
1 files changed, 113 insertions, 110 deletions
diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index 0b21899..9426761 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -715,8 +715,8 @@ parse_flags (const char *s)
}
if (0) ;
-#define PARSE_FLAG(fname,fval) \
- else if (strncasecmp (fname, s, len) == 0) ret |= fval
+#define PARSE_FLAG(fname,fval) \
+ else if (strncasecmp (fname, s, len) == 0) ret |= fval
PARSE_FLAG ("alloc", SEC_ALLOC);
PARSE_FLAG ("load", SEC_LOAD);
PARSE_FLAG ("noload", SEC_NEVER_LOAD);
@@ -757,7 +757,7 @@ parse_symflags (const char *s, char **other)
{
flagword ret;
const char *snext;
- int len;
+ size_t len;
ret = BSF_NO_FLAGS;
@@ -765,21 +765,23 @@ parse_symflags (const char *s, char **other)
{
snext = strchr (s, ',');
if (snext == NULL)
- len = strlen (s);
+ len = strlen (s);
else
{
len = snext - s;
++snext;
}
-#define PARSE_FLAG(fname,fval) \
- else if (len == (int) sizeof fname - 1 && strncasecmp (fname, s, len) == 0) \
+#define PARSE_FLAG(fname, fval) \
+ else if (len == sizeof fname - 1 \
+ && strncasecmp (fname, s, len) == 0) \
ret |= fval
-#define PARSE_OTHER(fname,fval) \
- else if (len >= (int) sizeof fname && strncasecmp (fname, s, sizeof fname - 1) == 0) \
+#define PARSE_OTHER(fname, fval) \
+ else if (len >= sizeof fname \
+ && strncasecmp (fname, s, sizeof fname - 1) == 0) \
fval = xstrndup (s + sizeof fname - 1, len - sizeof fname + 1)
-
+
if (0) ;
PARSE_FLAG ("local", BSF_LOCAL);
PARSE_FLAG ("global", BSF_GLOBAL);
@@ -809,9 +811,9 @@ parse_symflags (const char *s, char **other)
copy[len] = '\0';
non_fatal (_("unrecognized symbol flag `%s'"), copy);
fatal (_("supported flags: %s"),
- "local, global, export, debug, function, weak, section, "
- "constructor, warning, indirect, file, object, synthetic, "
- "indirect-function, unique-object, before=<othersym>");
+ "local, global, export, debug, function, weak, section, "
+ "constructor, warning, indirect, file, object, synthetic, "
+ "indirect-function, unique-object, before=<othersym>");
}
s = snext;
@@ -1160,12 +1162,12 @@ is_update_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
struct section_add *pupdate;
for (pupdate = update_sections;
- pupdate != NULL;
- pupdate = pupdate->next)
+ pupdate != NULL;
+ pupdate = pupdate->next)
{
- if (strcmp (sec->name, pupdate->name) == 0)
- return TRUE;
- }
+ if (strcmp (sec->name, pupdate->name) == 0)
+ return TRUE;
+ }
}
return FALSE;
@@ -1190,8 +1192,8 @@ is_strip_section_1 (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
fatal (_("error: section %s matches both remove and copy options"),
bfd_get_section_name (abfd, sec));
if (p && is_update_section (abfd, sec))
- fatal (_("error: section %s matches both update and remove options"),
- bfd_get_section_name (abfd, sec));
+ fatal (_("error: section %s matches both update and remove options"),
+ bfd_get_section_name (abfd, sec));
if (p != NULL)
return TRUE;
@@ -1333,9 +1335,9 @@ need_sym_before (struct addsym_node **node, const char *sym)
static asymbol *
create_new_symbol (struct addsym_node *ptr, bfd *obfd)
{
- asymbol *sym = bfd_make_empty_symbol(obfd);
+ asymbol *sym = bfd_make_empty_symbol (obfd);
- bfd_asymbol_name(sym) = ptr->symdef;
+ bfd_asymbol_name (sym) = ptr->symdef;
sym->value = ptr->symval;
sym->flags = ptr->flags;
if (ptr->section)
@@ -1345,8 +1347,8 @@ create_new_symbol (struct addsym_node *ptr, bfd *obfd)
fatal (_("Section %s not found"), ptr->section);
sym->section = sec;
}
- else
- sym->section = bfd_abs_section_ptr;
+ else
+ sym->section = bfd_abs_section_ptr;
return sym;
}
@@ -1411,12 +1413,12 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
/* Short circuit for change_leading_char if we can do it in-place. */
if (rem_leading_char && add_leading_char && !prefix_symbols_string)
- {
+ {
name[0] = bfd_get_symbol_leading_char (obfd);
bfd_asymbol_name (sym) = name;
rem_leading_char = FALSE;
add_leading_char = FALSE;
- }
+ }
/* Remove leading char. */
if (rem_leading_char)
@@ -1424,23 +1426,23 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
/* Add new leading char and/or prefix. */
if (add_leading_char || prefix_symbols_string)
- {
- char *n, *ptr;
+ {
+ char *n, *ptr;
- ptr = n = (char *) xmalloc (1 + strlen (prefix_symbols_string)
- + strlen (name) + 1);
- if (add_leading_char)
+ ptr = n = (char *) xmalloc (1 + strlen (prefix_symbols_string)
+ + strlen (name) + 1);
+ if (add_leading_char)
*ptr++ = bfd_get_symbol_leading_char (obfd);
- if (prefix_symbols_string)
- {
- strcpy (ptr, prefix_symbols_string);
- ptr += strlen (prefix_symbols_string);
- }
+ if (prefix_symbols_string)
+ {
+ strcpy (ptr, prefix_symbols_string);
+ ptr += strlen (prefix_symbols_string);
+ }
- strcpy (ptr, name);
- bfd_asymbol_name (sym) = n;
- name = n;
+ strcpy (ptr, name);
+ bfd_asymbol_name (sym) = n;
+ name = n;
}
if (strip_symbols == STRIP_ALL)
@@ -1684,7 +1686,7 @@ add_redefine_syms_file (const char *filename)
if ((c == '\r' && (c = getc (file)) == '\n')
|| c == '\n' || c == EOF)
{
- end_of_line:
+ end_of_line:
/* Append the redefinition to the list. */
if (buf[0] != '\0')
redefine_list_append (filename, &buf[0], &buf[outsym_off]);
@@ -1699,7 +1701,7 @@ add_redefine_syms_file (const char *filename)
}
else
fatal (_("%s:%d: garbage found at end of line"), filename, lineno);
- comment:
+ comment:
if (len != 0 && (outsym_off == 0 || outsym_off == len))
fatal (_("%s:%d: missing new symbol name"), filename, lineno);
buf[len++] = '\0';
@@ -2035,15 +2037,15 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
if (bfd_get_section_by_name (obfd, padd->name))
{
bfd_nonfatal_message (NULL, obfd, NULL,
- _("can't add section '%s'"), padd->name);
+ _("can't add section '%s'"), padd->name);
return FALSE;
}
else
{
/* We use LINKER_CREATED here so that the backend hooks
- will create any special section type information,
- instead of presuming we know what we're doing merely
- because we set the flags. */
+ will create any special section type information,
+ instead of presuming we know what we're doing merely
+ because we set the flags. */
padd->section = bfd_make_section_with_flags
(obfd, padd->name, flags | SEC_LINKER_CREATED);
if (padd->section == NULL)
@@ -2406,14 +2408,14 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
struct section_add *pupdate;
for (pupdate = update_sections;
- pupdate != NULL;
- pupdate = pupdate->next)
+ pupdate != NULL;
+ pupdate = pupdate->next)
{
asection *osec;
osec = pupdate->section->output_section;
if (! bfd_set_section_contents (obfd, osec, pupdate->contents,
- 0, pupdate->size))
+ 0, pupdate->size))
{
bfd_nonfatal_message (NULL, obfd, osec, NULL);
return FALSE;
@@ -2535,7 +2537,7 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target,
/* Make a temp directory to hold the contents. */
dir = make_tempdir (bfd_get_filename (obfd));
if (dir == NULL)
- fatal (_("cannot create tempdir for archive copying (error: %s)"),
+ fatal (_("cannot create tempdir for archive copying (error: %s)"),
strerror (errno));
if (strip_symbols == STRIP_ALL)
@@ -2802,7 +2804,7 @@ copy_file (const char *input_filename, const char *output_filename,
bfd *obfd;
/* bfd_get_target does not return the correct value until
- bfd_check_format succeeds. */
+ bfd_check_format succeeds. */
if (output_target == NULL)
{
output_target = bfd_get_target (ibfd);
@@ -2829,7 +2831,7 @@ copy_file (const char *input_filename, const char *output_filename,
do_copy:
/* bfd_get_target does not return the correct value until
- bfd_check_format succeeds. */
+ bfd_check_format succeeds. */
if (output_target == NULL)
output_target = bfd_get_target (ibfd);
@@ -3024,7 +3026,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
flags = p->flags | (flags & (SEC_HAS_CONTENTS | SEC_RELOC));
else if (strip_symbols == STRIP_NONDEBUG
&& (flags & (SEC_ALLOC | SEC_GROUP)) != 0
- && !is_nondebug_keep_contents_section (ibfd, isection))
+ && !is_nondebug_keep_contents_section (ibfd, isection))
{
flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD | SEC_GROUP);
if (obfd->xvec->flavour == bfd_target_elf_flavour)
@@ -3141,7 +3143,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
/* All went well. */
return;
-loser:
+ loser:
status = 1;
bfd_nonfatal_message (NULL, obfd, osection, err);
}
@@ -3525,9 +3527,9 @@ write_debugging_info (bfd *obfd, void *dhandle,
}
/* We can get away with setting the section contents now because
- the next thing the caller is going to do is copy over the
- real sections. We may someday have to split the contents
- setting out of this function. */
+ the next thing the caller is going to do is copy over the
+ real sections. We may someday have to split the contents
+ setting out of this function. */
if (! bfd_set_section_contents (obfd, stabsec, syms, 0, symsize)
|| ! bfd_set_section_contents (obfd, stabstrsec, strings, 0,
stringsize))
@@ -3542,7 +3544,7 @@ write_debugging_info (bfd *obfd, void *dhandle,
bfd_nonfatal_message (NULL, obfd, NULL,
_("don't know how to write debugging information for %s"),
- bfd_get_target (obfd));
+ bfd_get_target (obfd));
return FALSE;
}
@@ -3850,8 +3852,8 @@ convert_efi_target (char *efi)
static struct section_add *
init_section_add (const char *arg,
- struct section_add *next,
- const char *option)
+ struct section_add *next,
+ const char *option)
{
struct section_add *pa;
const char *s;
@@ -3888,7 +3890,7 @@ section_add_load_file (struct section_add *pa)
f = fopen (pa->filename, FOPEN_RB);
if (f == NULL)
fatal (_("cannot open: %s: %s"),
- pa->filename, strerror (errno));
+ pa->filename, strerror (errno));
off = 0;
alloc = 4096;
@@ -3898,14 +3900,14 @@ section_add_load_file (struct section_add *pa)
off_t got;
if (off == alloc)
- {
- alloc <<= 1;
- pa->contents = (bfd_byte *) xrealloc (pa->contents, alloc);
- }
+ {
+ alloc <<= 1;
+ pa->contents = (bfd_byte *) xrealloc (pa->contents, alloc);
+ }
got = fread (pa->contents + off, 1, alloc - off, f);
if (ferror (f))
- fatal (_("%s: fread failed"), pa->filename);
+ fatal (_("%s: fread failed"), pa->filename);
off += got;
}
@@ -4086,20 +4088,20 @@ copy_main (int argc, char *argv[])
break;
case OPTION_ADD_SECTION:
- add_sections = init_section_add (optarg, add_sections,
- "--add-section");
- section_add_load_file (add_sections);
+ add_sections = init_section_add (optarg, add_sections,
+ "--add-section");
+ section_add_load_file (add_sections);
break;
case OPTION_UPDATE_SECTION:
update_sections = init_section_add (optarg, update_sections,
- "--update-section");
+ "--update-section");
section_add_load_file (update_sections);
break;
case OPTION_DUMP_SECTION:
- dump_sections = init_section_add (optarg, dump_sections,
- "--dump-section");
+ dump_sections = init_section_add (optarg, dump_sections,
+ "--dump-section");
break;
case OPTION_ADD_SYMBOL:
@@ -4127,6 +4129,7 @@ copy_main (int argc, char *argv[])
}
t = strchr (t + 1, ',');
+ newsym->othersym = NULL;
if (t)
newsym->flags = parse_symflags (t+1, &newsym->othersym);
else
@@ -4522,39 +4525,39 @@ copy_main (int argc, char *argv[])
break;
case OPTION_REVERSE_BYTES:
- {
- int prev = reverse_bytes;
+ {
+ int prev = reverse_bytes;
- reverse_bytes = atoi (optarg);
- if ((reverse_bytes <= 0) || ((reverse_bytes % 2) != 0))
- fatal (_("number of bytes to reverse must be positive and even"));
+ reverse_bytes = atoi (optarg);
+ if ((reverse_bytes <= 0) || ((reverse_bytes % 2) != 0))
+ fatal (_("number of bytes to reverse must be positive and even"));
- if (prev && prev != reverse_bytes)
- non_fatal (_("Warning: ignoring previous --reverse-bytes value of %d"),
- prev);
- break;
- }
+ if (prev && prev != reverse_bytes)
+ non_fatal (_("Warning: ignoring previous --reverse-bytes value of %d"),
+ prev);
+ break;
+ }
case OPTION_FILE_ALIGNMENT:
pe_file_alignment = parse_vma (optarg, "--file-alignment");
break;
case OPTION_HEAP:
- {
- char *end;
- pe_heap_reserve = strtoul (optarg, &end, 0);
- if (end == optarg
- || (*end != '.' && *end != '\0'))
- non_fatal (_("%s: invalid reserve value for --heap"),
- optarg);
- else if (*end != '\0')
- {
- pe_heap_commit = strtoul (end + 1, &end, 0);
- if (*end != '\0')
- non_fatal (_("%s: invalid commit value for --heap"),
- optarg);
- }
- }
+ {
+ char *end;
+ pe_heap_reserve = strtoul (optarg, &end, 0);
+ if (end == optarg
+ || (*end != '.' && *end != '\0'))
+ non_fatal (_("%s: invalid reserve value for --heap"),
+ optarg);
+ else if (*end != '\0')
+ {
+ pe_heap_commit = strtoul (end + 1, &end, 0);
+ if (*end != '\0')
+ non_fatal (_("%s: invalid commit value for --heap"),
+ optarg);
+ }
+ }
break;
case OPTION_IMAGE_BASE:
@@ -4571,21 +4574,21 @@ copy_main (int argc, char *argv[])
break;
case OPTION_STACK:
- {
- char *end;
- pe_stack_reserve = strtoul (optarg, &end, 0);
- if (end == optarg
- || (*end != '.' && *end != '\0'))
- non_fatal (_("%s: invalid reserve value for --stack"),
- optarg);
- else if (*end != '\0')
- {
- pe_stack_commit = strtoul (end + 1, &end, 0);
- if (*end != '\0')
- non_fatal (_("%s: invalid commit value for --stack"),
- optarg);
- }
- }
+ {
+ char *end;
+ pe_stack_reserve = strtoul (optarg, &end, 0);
+ if (end == optarg
+ || (*end != '.' && *end != '\0'))
+ non_fatal (_("%s: invalid reserve value for --stack"),
+ optarg);
+ else if (*end != '\0')
+ {
+ pe_stack_commit = strtoul (end + 1, &end, 0);
+ if (*end != '\0')
+ non_fatal (_("%s: invalid commit value for --stack"),
+ optarg);
+ }
+ }
break;
case 0: