aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNelson Chu <nelson.chu@sifive.com>2020-05-13 16:05:45 +0800
committerNelson Chu <nelson.chu@sifive.com>2020-05-14 10:39:54 +0800
commitfc46e8bd351bf9b4eef5110f5ef6f30f8bd57739 (patch)
treef702077d984cb0c73b65606b86bb9b4739b743e8
parent4ac31493c8029a4594dd6dbdcee058aead5ce781 (diff)
downloadbinutils-fc46e8bd351bf9b4eef5110f5ef6f30f8bd57739.zip
binutils-fc46e8bd351bf9b4eef5110f5ef6f30f8bd57739.tar.gz
binutils-fc46e8bd351bf9b4eef5110f5ef6f30f8bd57739.tar.bz2
RISC-V: Add elfNN_riscv_mkobject to initialize RISC-V tdata.
For now we only have one char pointer in RISC-V tdata, so it should be fine. But once we need more elements in tdata, then we may get some uninitialize or unexpected values. I do meet the same problem when extending the RISC-V tdata. bfd/ elfnn-riscv.c (elfNN_riscv_mkobject): New function. We need this to initialize RISC-V tdata.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elfnn-riscv.c9
2 files changed, 14 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 34932e7..06a9f12 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2020-05-14 Nelson Chu <nelson.chu@sifive.com>
+
+ * elfnn-riscv.c (elfNN_riscv_mkobject): New function. We need this
+ to initialize RISC-V tdata.
+
2020-05-12 Gunther Nikl <gnikl@justmail.de>
* aoutx.h (NAME (aout, swap_std_reloc_out)): Reject an unsupported
diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
index 473bf50..a9e8132 100644
--- a/bfd/elfnn-riscv.c
+++ b/bfd/elfnn-riscv.c
@@ -98,6 +98,14 @@ struct _bfd_riscv_elf_obj_tdata
&& elf_tdata (bfd) != NULL \
&& elf_object_id (bfd) == RISCV_ELF_DATA)
+static bfd_boolean
+elfNN_riscv_mkobject (bfd *abfd)
+{
+ return bfd_elf_allocate_object (abfd,
+ sizeof (struct _bfd_riscv_elf_obj_tdata),
+ RISCV_ELF_DATA);
+}
+
#include "elf/common.h"
#include "elf/internal.h"
@@ -4363,6 +4371,7 @@ riscv_elf_obj_attrs_arg_type (int tag)
#define elf_info_to_howto_rel NULL
#define elf_info_to_howto riscv_info_to_howto_rela
#define bfd_elfNN_bfd_relax_section _bfd_riscv_relax_section
+#define bfd_elfNN_mkobject elfNN_riscv_mkobject
#define elf_backend_init_index_section _bfd_elf_init_1_index_section