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.
This commit is contained in:
Alan Modra 2014-11-04 13:39:38 +10:30
parent 049b0c3a24
commit ef42b83ec0
2 changed files with 18 additions and 1 deletions

View File

@ -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

View File

@ -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;
}