projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
NEWS and documentation for alias default-args related concept and commands.
[deliverable/binutils-gdb.git]
/
binutils
/
objcopy.c
diff --git
a/binutils/objcopy.c
b/binutils/objcopy.c
index 09facf0061ea28865eabe83e6feb36c38bd35dad..3866c7f458861dd522a44e07b20d8485f66719b1 100644
(file)
--- a/
binutils/objcopy.c
+++ b/
binutils/objcopy.c
@@
-2596,7
+2596,7
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
void *dhandle;
enum bfd_architecture iarch;
unsigned int imach;
void *dhandle;
enum bfd_architecture iarch;
unsigned int imach;
- unsigned int c, i;
+ unsigned int
num_se
c, i;
if (ibfd->xvec->byteorder != obfd->xvec->byteorder
&& ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN
if (ibfd->xvec->byteorder != obfd->xvec->byteorder
&& ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN
@@
-2774,6
+2774,11
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
file_alignment, section_alignment);
}
file_alignment, section_alignment);
}
+
+ if (preserve_dates
+ && bfd_get_flavour (ibfd) == bfd_target_coff_flavour
+ && bfd_pei_p (ibfd))
+ pe->timestamp = pe_data (ibfd)->coff.timestamp;
}
if (isympp)
}
if (isympp)
@@
-2978,6
+2983,9
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
for (pdump = dump_sections; pdump != NULL; pdump = pdump->next)
{
for (pdump = dump_sections; pdump != NULL; pdump = pdump->next)
{
+ FILE * f;
+ bfd_byte *contents;
+
osec = bfd_get_section_by_name (ibfd, pdump->name);
if (osec == NULL)
{
osec = bfd_get_section_by_name (ibfd, pdump->name);
if (osec == NULL)
{
@@
-2995,14
+3003,8
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
}
bfd_size_type size = bfd_section_size (osec);
}
bfd_size_type size = bfd_section_size (osec);
- if (size == 0)
- {
- bfd_nonfatal_message (NULL, ibfd, osec,
- _("can't dump section - it is empty"));
- continue;
- }
+ /* Note - we allow the dumping of zero-sized sections. */
- FILE * f;
f = fopen (pdump->filename, FOPEN_WB);
if (f == NULL)
{
f = fopen (pdump->filename, FOPEN_WB);
if (f == NULL)
{
@@
-3011,7
+3013,6
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
continue;
}
continue;
}
- bfd_byte *contents;
if (bfd_malloc_and_get_section (ibfd, osec, &contents))
{
if (fwrite (contents, 1, size, f) != size)
if (bfd_malloc_and_get_section (ibfd, osec, &contents))
{
if (fwrite (contents, 1, size, f) != size)
@@
-3101,8
+3102,8
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
}
}
}
}
- c = bfd_count_sections (obfd);
- if (c != 0
+
num_se
c = bfd_count_sections (obfd);
+ if (
num_se
c != 0
&& (gap_fill_set || pad_to_set))
{
asection **set;
&& (gap_fill_set || pad_to_set))
{
asection **set;
@@
-3113,18
+3114,18
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
increasing the section sizes as required to fill the gaps.
We write out the gap contents below. */
increasing the section sizes as required to fill the gaps.
We write out the gap contents below. */
- osections =
(asection **) xmalloc (c * sizeof (asection *
));
+ osections =
xmalloc (num_sec * sizeof (*osections
));
set = osections;
bfd_map_over_sections (obfd, get_sections, &set);
set = osections;
bfd_map_over_sections (obfd, get_sections, &set);
- qsort (osections,
c, sizeof (asection *
), compare_section_lma);
+ qsort (osections,
num_sec, sizeof (*osections
), compare_section_lma);
- gaps =
(bfd_size_type *) xmalloc (c * sizeof (bfd_size_type
));
- memset (gaps, 0,
c * sizeof (bfd_size_type
));
+ gaps =
xmalloc (num_sec * sizeof (*gaps
));
+ memset (gaps, 0,
num_sec * sizeof (*gaps
));
if (gap_fill_set)
{
if (gap_fill_set)
{
- for (i = 0; i < c - 1; i++)
+ for (i = 0; i <
num_se
c - 1; i++)
{
flagword flags;
bfd_size_type size; /* Octets. */
{
flagword flags;
bfd_size_type size; /* Octets. */
@@
-3161,22
+3162,22
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
{
bfd_vma lma; /* Octets. */
bfd_size_type size; /* Octets. */
{
bfd_vma lma; /* Octets. */
bfd_size_type size; /* Octets. */
- unsigned int opb = bfd_octets_per_byte (obfd, osections[c - 1]);
+ unsigned int opb = bfd_octets_per_byte (obfd, osections[
num_se
c - 1]);
bfd_vma _pad_to = pad_to * opb;
bfd_vma _pad_to = pad_to * opb;
- lma = bfd_section_lma (osections[c - 1]) * opb;
- size = bfd_section_size (osections[c - 1]);
+ lma = bfd_section_lma (osections[
num_se
c - 1]) * opb;
+ size = bfd_section_size (osections[
num_se
c - 1]);
if (lma + size < _pad_to)
{
if (lma + size < _pad_to)
{
- if (!bfd_set_section_size (osections[c - 1], _pad_to - lma))
+ if (!bfd_set_section_size (osections[
num_se
c - 1], _pad_to - lma))
{
{
- bfd_nonfatal_message (NULL, obfd, osections[c - 1],
+ bfd_nonfatal_message (NULL, obfd, osections[
num_se
c - 1],
_("can't add padding"));
status = 1;
}
else
{
_("can't add padding"));
status = 1;
}
else
{
- gaps[c - 1] = _pad_to - (lma + size);
+ gaps[
num_se
c - 1] = _pad_to - (lma + size);
if (max_gap < _pad_to - (lma + size))
max_gap = _pad_to - (lma + size);
}
if (max_gap < _pad_to - (lma + size))
max_gap = _pad_to - (lma + size);
}
@@
-3376,7
+3377,7
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
}
}
}
}
- if (gap
_fill_set || pad_to_set
)
+ if (gap
s != NULL
)
{
bfd_byte *buf;
{
bfd_byte *buf;
@@
-3386,8
+3387,7
@@
copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
buf = (bfd_byte *) xmalloc (max_gap);
memset (buf, gap_fill, max_gap);
buf = (bfd_byte *) xmalloc (max_gap);
memset (buf, gap_fill, max_gap);
- c = bfd_count_sections (obfd);
- for (i = 0; i < c; i++)
+ for (i = 0; i < num_sec; i++)
{
if (gaps[i] != 0)
{
{
if (gaps[i] != 0)
{
@@
-4294,6
+4294,7
@@
copy_relocations_in_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
status = 1;
bfd_nonfatal_message (NULL, ibfd, isection,
_("relocation count is negative"));
status = 1;
bfd_nonfatal_message (NULL, ibfd, isection,
_("relocation count is negative"));
+ free (relpp);
return;
}
}
return;
}
}
@@
-4318,7
+4319,7
@@
copy_relocations_in_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
temp_relpp [temp_relcount++] = relpp [i];
}
relcount = temp_relcount;
temp_relpp [temp_relcount++] = relpp [i];
}
relcount = temp_relcount;
- if (
isection->orelocation == NULL
)
+ if (
relpp != isection->orelocation
)
free (relpp);
relpp = temp_relpp;
}
free (relpp);
relpp = temp_relpp;
}
@@
-4327,7
+4328,8
@@
copy_relocations_in_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
if (relcount == 0)
{
osection->flags &= ~SEC_RELOC;
if (relcount == 0)
{
osection->flags &= ~SEC_RELOC;
- free (relpp);
+ if (relpp != isection->orelocation)
+ free (relpp);
}
}
}
}
}
}
This page took
0.02647 seconds
and
4
git commands to generate.