mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-18 00:32:30 +08:00
[PATCH] objcopy: Allow --dump-section to dump an empty SEC_HAS_CONTENTS section
* objcopy.c (copy_object): Allow empty section. * testsuite/binutils-all/update-section.exp: Add test.
This commit is contained in:

committed by
Nick Clifton

parent
7242fa8aa7
commit
e052e2ba29
@ -1,3 +1,8 @@
|
|||||||
|
2020-05-04 Fangrui Song <maskray@google.com>
|
||||||
|
|
||||||
|
* objcopy.c (copy_object): Allow empty section.
|
||||||
|
* testsuite/binutils-all/update-section.exp: Add test.
|
||||||
|
|
||||||
2020-05-04 Nick Clifton <nickc@redhat.com>
|
2020-05-04 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
PR 25917
|
PR 25917
|
||||||
|
@ -2983,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);
|
osec = bfd_get_section_by_name (ibfd, pdump->name);
|
||||||
if (osec == NULL)
|
if (osec == NULL)
|
||||||
{
|
{
|
||||||
@ -3000,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)
|
/* Note - we allow the dumping of zero-sized sections. */
|
||||||
{
|
|
||||||
bfd_nonfatal_message (NULL, ibfd, osec,
|
|
||||||
_("can't dump section - it is empty"));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
FILE * f;
|
|
||||||
f = fopen (pdump->filename, FOPEN_WB);
|
f = fopen (pdump->filename, FOPEN_WB);
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
{
|
{
|
||||||
@ -3016,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 (bfd_malloc_and_get_section (ibfd, osec, &contents))
|
||||||
{
|
{
|
||||||
if (fwrite (contents, 1, size, f) != size)
|
if (fwrite (contents, 1, size, f) != size)
|
||||||
|
@ -82,6 +82,13 @@ foreach f [list update-1.s update-2.s update-3.s update-4.s] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Check that we can dump empty sections.
|
||||||
|
if { ![do_objcopy update-1.o "--dump-section .text=tmpdir/empty"] } {
|
||||||
|
fail "objcopy (dump empty section)"
|
||||||
|
} else {
|
||||||
|
pass "objcopy (dump empty section)"
|
||||||
|
}
|
||||||
|
|
||||||
if { ![do_objcopy update-1.o \
|
if { ![do_objcopy update-1.o \
|
||||||
"--dump-section .foo=tmpdir/dumped-contents"]
|
"--dump-section .foo=tmpdir/dumped-contents"]
|
||||||
|| ![do_objcopy update-2.o \
|
|| ![do_objcopy update-2.o \
|
||||||
|
Reference in New Issue
Block a user