summaryrefslogtreecommitdiffstats
path: root/contrib/binutils
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2013-10-02 00:50:27 +0000
committeremaste <emaste@FreeBSD.org>2013-10-02 00:50:27 +0000
commit7d2bbf6ce3e622de950a7a311d409183a426b893 (patch)
treef54353cd04b637f34446f5384c1a8dacd98f592b /contrib/binutils
parentb9aa7441daf414572fb19482edab6cfc5e2a511a (diff)
downloadFreeBSD-src-7d2bbf6ce3e622de950a7a311d409183a426b893.zip
FreeBSD-src-7d2bbf6ce3e622de950a7a311d409183a426b893.tar.gz
Use correct size for MIPS .rld_map section
On MIPS .dynamic is read-only and so a special section .rld_map is used to store the pointer to the rtld information for debuggers. This section had a hard coded size of 4 bytes which is not correct for mips64. (Note that FreeBSD's rtld does not yet populate .rld_map.) Sponsored by: DARPA, AFRL Approved by: re (delphij)
Diffstat (limited to 'contrib/binutils')
-rw-r--r--contrib/binutils/bfd/elfxx-mips.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/contrib/binutils/bfd/elfxx-mips.c b/contrib/binutils/bfd/elfxx-mips.c
index eac685f..8f4b05d 100644
--- a/contrib/binutils/bfd/elfxx-mips.c
+++ b/contrib/binutils/bfd/elfxx-mips.c
@@ -557,6 +557,10 @@ static bfd *reldyn_sorting_bfd;
#define MIPS_ELF_DYN_SIZE(abfd) \
(get_elf_backend_data (abfd)->s->sizeof_dyn)
+/* The size of the rld_map pointer. */
+#define MIPS_ELF_RLD_MAP_SIZE(abfd) \
+ (get_elf_backend_data (abfd)->s->arch_size / 8)
+
/* The size of a GOT entry. */
#define MIPS_ELF_GOT_SIZE(abfd) \
(get_elf_backend_data (abfd)->s->arch_size / 8)
@@ -7492,7 +7496,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
{
/* We add a room for __rld_map. It will be filled in by the
rtld to contain a pointer to the _r_debug structure. */
- s->size += 4;
+ s->size += MIPS_ELF_RLD_MAP_SIZE (output_bfd);
}
else if (SGI_COMPAT (output_bfd)
&& CONST_STRNEQ (name, ".compact_rel"))
OpenPOWER on IntegriCloud