aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2021-10-31 10:08:15 +1030
committerAlan Modra <amodra@gmail.com>2021-10-31 11:42:52 +1030
commit590abc168fb25908cde1df89f4905b575c14e55d (patch)
tree7acf9238680c5b56af5602ecc69930961ccf128c /bfd
parent1c5e9d8d8cfdc4528ec4713dc6001e8b66c28134 (diff)
downloadgdb-590abc168fb25908cde1df89f4905b575c14e55d.zip
gdb-590abc168fb25908cde1df89f4905b575c14e55d.tar.gz
gdb-590abc168fb25908cde1df89f4905b575c14e55d.tar.bz2
Don't include coff/pe.h in coff-x86_64.c
This (and other) code from coffcode.h is broken for x86_64_coff_vec, and has been ever since support was added in 2006 commit 99ad839030c1 Here, bfd_coff_aoutsz must match coff_swap_aouthdr_out otherwise we end up writing garbage. /* Note that peicode.h fills in a PEAOUTHDR, not an AOUTHDR. include/coff/pe.h sets AOUTSZ == sizeof (PEAOUTHDR)). */ char * buff; bfd_size_type amount = bfd_coff_aoutsz (abfd); buff = (char *) bfd_malloc (amount); if (buff == NULL) return false; coff_swap_aouthdr_out (abfd, & internal_a, buff); amount = bfd_bwrite (buff, amount, abfd); We have removed support for --target=x86_64-coff, likely because it never worked properly, but still produce coff-x86_64.o with --enable-targets=all. This means objcopy can recognize x86_64 COFF files but will write garbage to the output file, a fact found by fuzzers. I suspect x86_64 COFF is still broken after this fix, and mention of coff-x86_64.* should be removed from bfd/Makefile.am. * coff-x86_64.c: Don't include coff/pe.h. (COFF_WITH_pex64): Don't define here. * pe-x86_64.c: Include coff/pe.h and other headers. (PEI_HEADERS): Define.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/coff-x86_64.c5
-rw-r--r--bfd/pe-x86_64.c5
2 files changed, 5 insertions, 5 deletions
diff --git a/bfd/coff-x86_64.c b/bfd/coff-x86_64.c
index 67f2ee5..9bd1c57 100644
--- a/bfd/coff-x86_64.c
+++ b/bfd/coff-x86_64.c
@@ -20,10 +20,6 @@
Written by Kai Tietz, OneVision Software GmbH&CoKg. */
-#ifndef COFF_WITH_pex64
-#define COFF_WITH_pex64
-#endif
-
/* Note we have to make sure not to include headers twice.
Not all headers are wrapped in #ifdef guards, so we define
PEI_HEADERS to prevent double including here. */
@@ -33,7 +29,6 @@
#include "libbfd.h"
#include "coff/x86_64.h"
#include "coff/internal.h"
-#include "coff/pe.h"
#include "libcoff.h"
#include "libiberty.h"
#endif
diff --git a/bfd/pe-x86_64.c b/bfd/pe-x86_64.c
index 5a777bb..1c1b23f 100644
--- a/bfd/pe-x86_64.c
+++ b/bfd/pe-x86_64.c
@@ -20,9 +20,14 @@
Written by Kai Tietz, OneVision Software GmbH&CoKg. */
+#define PEI_HEADERS
#include "sysdep.h"
#include "bfd.h"
+#include "libbfd.h"
+#include "libiberty.h"
+#include "coff/x86_64.h"
#include "coff/internal.h"
+#include "coff/pe.h"
#include "libcoff.h"
#define TARGET_SYM x86_64_pe_vec