projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Speed up objdump when displaying disassembly mixed with line number and source code...
[deliverable/binutils-gdb.git]
/
binutils
/
elfcomm.c
diff --git
a/binutils/elfcomm.c
b/binutils/elfcomm.c
index 0cdcf635df7d70961f50420d43a0c79497cfb22c..0db8948775054192d43ba3a46641f24483c34d88 100644
(file)
--- a/
binutils/elfcomm.c
+++ b/
binutils/elfcomm.c
@@
-1,5
+1,5
@@
/* elfcomm.c -- common code for ELF format file.
/* elfcomm.c -- common code for ELF format file.
- Copyright (C) 2010-201
4
Free Software Foundation, Inc.
+ Copyright (C) 2010-201
7
Free Software Foundation, Inc.
Originally developed by Eric Youngdale <eric@andante.jic.com>
Modifications by Nick Clifton <nickc@redhat.com>
Originally developed by Eric Youngdale <eric@andante.jic.com>
Modifications by Nick Clifton <nickc@redhat.com>
@@
-51,7
+51,7
@@
warn (const char *message, ...)
/* Try to keep warning messages in sync with the program's normal output. */
fflush (stdout);
/* Try to keep warning messages in sync with the program's normal output. */
fflush (stdout);
-
+
va_start (args, message);
fprintf (stderr, _("%s: Warning: "), program_name);
vfprintf (stderr, message, args);
va_start (args, message);
fprintf (stderr, _("%s: Warning: "), program_name);
vfprintf (stderr, message, args);
@@
-165,6
+165,7
@@
byte_get_little_endian (unsigned char *field, int size)
| (((unsigned long) (field[1])) << 8)
| (((unsigned long) (field[2])) << 16)
| (((unsigned long) (field[3])) << 24);
| (((unsigned long) (field[1])) << 8)
| (((unsigned long) (field[2])) << 16)
| (((unsigned long) (field[3])) << 24);
+ /* Fall through. */
case 6:
if (sizeof (elf_vma) == 8)
case 6:
if (sizeof (elf_vma) == 8)
@@
-182,6
+183,7
@@
byte_get_little_endian (unsigned char *field, int size)
| (((unsigned long) (field[1])) << 8)
| (((unsigned long) (field[2])) << 16)
| (((unsigned long) (field[3])) << 24);
| (((unsigned long) (field[1])) << 8)
| (((unsigned long) (field[2])) << 16)
| (((unsigned long) (field[3])) << 24);
+ /* Fall through. */
case 7:
if (sizeof (elf_vma) == 8)
case 7:
if (sizeof (elf_vma) == 8)
@@
-200,6
+202,7
@@
byte_get_little_endian (unsigned char *field, int size)
| (((unsigned long) (field[1])) << 8)
| (((unsigned long) (field[2])) << 16)
| (((unsigned long) (field[3])) << 24);
| (((unsigned long) (field[1])) << 8)
| (((unsigned long) (field[2])) << 16)
| (((unsigned long) (field[3])) << 24);
+ /* Fall through. */
case 8:
if (sizeof (elf_vma) == 8)
case 8:
if (sizeof (elf_vma) == 8)
@@
-219,6
+222,7
@@
byte_get_little_endian (unsigned char *field, int size)
| (((unsigned long) (field[1])) << 8)
| (((unsigned long) (field[2])) << 16)
| (((unsigned long) (field[3])) << 24);
| (((unsigned long) (field[1])) << 8)
| (((unsigned long) (field[2])) << 16)
| (((unsigned long) (field[3])) << 24);
+ /* Fall through. */
default:
error (_("Unhandled data length: %d\n"), size);
default:
error (_("Unhandled data length: %d\n"), size);
@@
-265,6
+269,7
@@
byte_get_big_endian (unsigned char *field, int size)
| (((unsigned long) (field[1])) << 16)
| (((unsigned long) (field[0])) << 24);
}
| (((unsigned long) (field[1])) << 16)
| (((unsigned long) (field[0])) << 24);
}
+ /* Fall through. */
case 6:
if (sizeof (elf_vma) == 8)
case 6:
if (sizeof (elf_vma) == 8)
@@
-284,6
+289,7
@@
byte_get_big_endian (unsigned char *field, int size)
| (((unsigned long) (field[1])) << 16)
| (((unsigned long) (field[0])) << 24);
}
| (((unsigned long) (field[1])) << 16)
| (((unsigned long) (field[0])) << 24);
}
+ /* Fall through. */
case 7:
if (sizeof (elf_vma) == 8)
case 7:
if (sizeof (elf_vma) == 8)
@@
-304,6
+310,7
@@
byte_get_big_endian (unsigned char *field, int size)
| (((unsigned long) (field[1])) << 16)
| (((unsigned long) (field[0])) << 24);
}
| (((unsigned long) (field[1])) << 16)
| (((unsigned long) (field[0])) << 24);
}
+ /* Fall through. */
case 8:
if (sizeof (elf_vma) == 8)
case 8:
if (sizeof (elf_vma) == 8)
@@
-325,6
+332,7
@@
byte_get_big_endian (unsigned char *field, int size)
| (((unsigned long) (field[1])) << 16)
| (((unsigned long) (field[0])) << 24);
}
| (((unsigned long) (field[1])) << 16)
| (((unsigned long) (field[0])) << 24);
}
+ /* Fall through. */
default:
error (_("Unhandled data length: %d\n"), size);
default:
error (_("Unhandled data length: %d\n"), size);
@@
-427,7
+435,7
@@
adjust_relative_path (const char *file_name, const char *name,
name_len);
return NULL;
}
name_len);
return NULL;
}
-
+
member_file_name = (char *) malloc (amt);
if (member_file_name == NULL)
{
member_file_name = (char *) malloc (amt);
if (member_file_name == NULL)
{
@@
-491,7
+499,7
@@
process_archive_index_and_symbols (struct archive_info * arch,
unsigned char * index_buffer;
assert (sizeof_ar_index <= sizeof integer_buffer);
unsigned char * index_buffer;
assert (sizeof_ar_index <= sizeof integer_buffer);
-
+
/* Check the size of the archive index. */
if (size < sizeof_ar_index)
{
/* Check the size of the archive index. */
if (size < sizeof_ar_index)
{
@@
-655,6
+663,14
@@
setup_archive (struct archive_info *arch, const char *file_name,
file_name, arch->longnames_size);
return 1;
}
file_name, arch->longnames_size);
return 1;
}
+ /* PR 17531: file: 639d6a26. */
+ if ((signed long) arch->longnames_size < 0)
+ {
+ error (_("%s: long name table is too big, (size = 0x%lx)\n"),
+ file_name, arch->longnames_size);
+ return 1;
+ }
+
arch->next_arhdr_offset += sizeof arch->arhdr + arch->longnames_size;
/* Plus one to allow for a string terminator. */
arch->next_arhdr_offset += sizeof arch->arhdr + arch->longnames_size;
/* Plus one to allow for a string terminator. */
@@
-676,6
+692,8
@@
setup_archive (struct archive_info *arch, const char *file_name,
if ((arch->longnames_size & 1) != 0)
getc (file);
if ((arch->longnames_size & 1) != 0)
getc (file);
+
+ arch->longnames[arch->longnames_size] = 0;
}
return 0;
}
return 0;
@@
-746,7
+764,7
@@
get_archive_member_name (struct archive_info *arch,
error (_("Archive member uses long names, but no longname table found\n"));
return NULL;
}
error (_("Archive member uses long names, but no longname table found\n"));
return NULL;
}
-
+
arch->nested_member_origin = 0;
k = j = strtoul (arch->arhdr.ar_name + 1, &endp, 10);
if (arch->is_thin_archive && endp != NULL && * endp == ':')
arch->nested_member_origin = 0;
k = j = strtoul (arch->arhdr.ar_name + 1, &endp, 10);
if (arch->is_thin_archive && endp != NULL && * endp == ':')
@@
-776,7
+794,7
@@
get_archive_member_name (struct archive_info *arch,
error (_("Invalid Thin archive member name\n"));
return NULL;
}
error (_("Invalid Thin archive member name\n"));
return NULL;
}
-
+
/* This is a proxy for a member of a nested archive.
Find the name of the member in that archive. */
member_file_name = adjust_relative_path (arch->file_name,
/* This is a proxy for a member of a nested archive.
Find the name of the member in that archive. */
member_file_name = adjust_relative_path (arch->file_name,
@@
-889,7
+907,7
@@
make_qualified_name (struct archive_info * arch,
nested_arch->file_name, member_name);
else
snprintf (name, len, "%s[%s(%s)]", arch->file_name,
nested_arch->file_name, member_name);
else
snprintf (name, len, "%s[%s(%s)]", arch->file_name,
- error_name, member_name);
+ error_name, member_name);
}
else if (arch->is_thin_archive)
snprintf (name, len, "%s[%s]", arch->file_name, member_name);
}
else if (arch->is_thin_archive)
snprintf (name, len, "%s[%s]", arch->file_name, member_name);
This page took
0.02502 seconds
and
4
git commands to generate.