This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] TILEPro/BFD: Correct private object data allocation
- From: "Maciej W. Rozycki" <macro at codesourcery dot com>
- To: <binutils at sourceware dot org>
- Cc: Walter Lee <walt at tilera dot com>
- Date: Thu, 29 Nov 2012 11:40:05 +0000
- Subject: [PATCH] TILEPro/BFD: Correct private object data allocation
Hi,
While browsing sources for code reuse I've noticed the TILEPro BFD
defines its own version of ELF private object data with an extra structure
member beyond the generic elf_obj_tdata structure. However it does not
override the generic bfd_elf_make_object data allocator that only
guarantees to get elf_obj_tdata worth of memory space. As a result any
accesses made to the extra member are out of range and have unpredictable
semantics, although this may be masked on some systems by extra padding
provided by malloc(3).
Anyway, this needs to be fixed, here's my proposal. No regressions for
tilepro-elf (obviously my host system must have enough padding there).
OK to apply?
2012-11-29 Maciej W. Rozycki <macro@codesourcery.com>
bfd/
* elf32-tilepro.c (tilepro_elf_mkobject): New function.
(bfd_elf32_mkobject): New macro.
Maciej
binutils-bfd-tilepro-tdata.diff
Index: binutils-fsf-trunk-quilt/bfd/elf32-tilepro.c
===================================================================
--- binutils-fsf-trunk-quilt.orig/bfd/elf32-tilepro.c 2012-11-29 01:52:35.000000000 +0000
+++ binutils-fsf-trunk-quilt/bfd/elf32-tilepro.c 2012-11-29 11:37:52.721797273 +0000
@@ -737,6 +737,16 @@ struct _bfd_tilepro_elf_obj_tdata
&& elf_tdata (bfd) != NULL \
&& elf_object_id (bfd) == TILEPRO_ELF_DATA)
+/* Allocate TILEPro ELF private object data. */
+
+static bfd_boolean
+tilepro_elf_mkobject (bfd *abfd)
+{
+ return bfd_elf_allocate_object (abfd,
+ sizeof (struct _bfd_tilepro_elf_obj_tdata),
+ TILEPRO_ELF_DATA);
+}
+
#include "elf/common.h"
#include "elf/internal.h"
@@ -4008,6 +4018,8 @@ tilepro_additional_program_headers (bfd
#define elf_backend_grok_psinfo tilepro_elf_grok_psinfo
#define elf_backend_additional_program_headers tilepro_additional_program_headers
+#define bfd_elf32_mkobject tilepro_elf_mkobject
+
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_can_gc_sections 1