aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2014-11-04 13:39:38 +1030
committerAlan Modra <amodra@gmail.com>2014-11-04 22:36:13 +1030
commitef42b83ec01d65286ba2906ef66caa3b943108dd (patch)
treecf9ab148004396f299e27bdcd04b288053e84357 /bfd
parent049b0c3a2467c785f9068915d81fdba4985470bf (diff)
downloadgdb-ef42b83ec01d65286ba2906ef66caa3b943108dd.zip
gdb-ef42b83ec01d65286ba2906ef66caa3b943108dd.tar.gz
gdb-ef42b83ec01d65286ba2906ef66caa3b943108dd.tar.bz2
Provide stat function for spu overlay manager iovec
Commit f54498b4 broke spu-elf, specifically the change "Do not try to load a string table bigger than the file", because bfd_get_size returns zero for the spu built-in overlay manager bfd. * elf32-spu.c (ovl_mgr_stat): New function. (spu_elf_open_builtin_lib): Pass to bfd_openr_iovec.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-spu.c14
2 files changed, 18 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 0222d32..c8e23ba 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2014-11-04 Alan Modra <amodra@gmail.com>
+
+ * elf32-spu.c (ovl_mgr_stat): New function.
+ (spu_elf_open_builtin_lib): Pass to bfd_openr_iovec.
+
2014-11-03 Andrew Burgess <andrew.burgess@embecosm.com>
* elf32-avr.c (elf32_avr_relax_delete_bytes): During linker
diff --git a/bfd/elf32-spu.c b/bfd/elf32-spu.c
index 13806ad..ebc9e6a 100644
--- a/bfd/elf32-spu.c
+++ b/bfd/elf32-spu.c
@@ -1828,6 +1828,18 @@ ovl_mgr_pread (struct bfd *abfd ATTRIBUTE_UNUSED,
return count;
}
+static int
+ovl_mgr_stat (struct bfd *abfd ATTRIBUTE_UNUSED,
+ void *stream,
+ struct stat *sb)
+{
+ struct _ovl_stream *os = (struct _ovl_stream *) stream;
+
+ memset (sb, 0, sizeof (*sb));
+ sb->st_size = (const char *) os->end - (const char *) os->start;
+ return 0;
+}
+
bfd_boolean
spu_elf_open_builtin_lib (bfd **ovl_bfd, const struct _ovl_stream *stream)
{
@@ -1837,7 +1849,7 @@ spu_elf_open_builtin_lib (bfd **ovl_bfd, const struct _ovl_stream *stream)
(void *) stream,
ovl_mgr_pread,
NULL,
- NULL);
+ ovl_mgr_stat);
return *ovl_bfd != NULL;
}