[PATCH] Cygwin: Update dumper for bfd API changes
Jon Turney
jon.turney@dronecode.org.uk
Wed Feb 26 20:07:00 GMT 2020
Update dumper for bfd API changes in binutils 2.34
libbfd doesn't guarantee API stability, so we've just been lucky this
hasn't broken more often.
See binutils commit fd361982.
---
winsup/utils/dumper.cc | 30 ++++++++++++++++++++++--------
winsup/utils/parse_pe.cc | 4 ++++
2 files changed, 26 insertions(+), 8 deletions(-)
diff --git a/winsup/utils/dumper.cc b/winsup/utils/dumper.cc
index f71bdda8b..226c2283d 100644
--- a/winsup/utils/dumper.cc
+++ b/winsup/utils/dumper.cc
@@ -39,6 +39,20 @@
#define NOTE_NAME_SIZE 16
+#ifdef bfd_get_section_size
+/* for bfd < 2.34 */
+#define get_section_name(abfd, sect) bfd_get_section_name (abfd, sect)
+#define get_section_size(sect) bfd_get_section_size(sect)
+#define set_section_size(abfd, sect, size) bfd_set_section_size(abfd, sect, size)
+#define set_section_flags(abfd, sect, flags) bfd_set_section_flags(abfd, sect, flags)
+#else
+/* otherwise bfd >= 2.34 */
+#define get_section_name(afbd, sect) bfd_section_name (sect)
+#define get_section_size(sect) bfd_section_size(sect)
+#define set_section_size(abfd, sect, size) bfd_set_section_size(sect, size)
+#define set_section_flags(abfd, sect, flags) bfd_set_section_flags(sect, flags)
+#endif
+
typedef struct _note_header
{
Elf_External_Note elf_note_header;
@@ -131,7 +145,7 @@ dumper::sane ()
void
print_section_name (bfd* abfd, asection* sect, PTR obj)
{
- deb_printf (" %s", bfd_get_section_name (abfd, sect));
+ deb_printf (" %s", get_section_name (abfd, sect));
}
void
@@ -712,10 +726,10 @@ dumper::prepare_core_dump ()
if (p->type == pr_ent_module && status_section != NULL)
{
- if (!bfd_set_section_size (core_bfd,
- status_section,
- (bfd_get_section_size (status_section)
- + sect_size)))
+ if (!set_section_size (core_bfd,
+ status_section,
+ (get_section_size (status_section)
+ + sect_size)))
{
bfd_perror ("resizing status section");
goto failed;
@@ -738,8 +752,8 @@ dumper::prepare_core_dump ()
goto failed;
}
- if (!bfd_set_section_flags (core_bfd, new_section, sect_flags) ||
- !bfd_set_section_size (core_bfd, new_section, sect_size))
+ if (!set_section_flags (core_bfd, new_section, sect_flags) ||
+ !set_section_size (core_bfd, new_section, sect_size))
{
bfd_perror ("setting section attributes");
goto failed;
@@ -823,7 +837,7 @@ dumper::write_core_dump ()
deb_printf ("writing section type=%u base=%p size=%p flags=%08x\n",
p->type,
p->section->vma,
- bfd_get_section_size (p->section),
+ get_section_size (p->section),
p->section->flags);
switch (p->type)
diff --git a/winsup/utils/parse_pe.cc b/winsup/utils/parse_pe.cc
index 2a388638c..90b5c0b0d 100644
--- a/winsup/utils/parse_pe.cc
+++ b/winsup/utils/parse_pe.cc
@@ -25,6 +25,10 @@
#include "dumper.h"
+#ifndef bfd_get_section_size
+#define bfd_get_section_size(sect) bfd_section_size(sect)
+#endif
+
int
exclusion::add (LPBYTE mem_base, SIZE_T mem_size)
{
--
2.21.0
More information about the Cygwin-patches
mailing list