2011-02-25 Rafael Ávila de Espíndola <respindola@mozilla.com>
* plugin.c (bfd_plugin_object_p): Correctly set the filesize and handle claim_file seeking. Only try to load the plugin once.
This commit is contained in:
parent
eb3f9aa7a1
commit
80549d04a2
|
@ -1,3 +1,8 @@
|
|||
2011-02-25 Rafael Ávila de Espíndola <respindola@mozilla.com>
|
||||
|
||||
* plugin.c (bfd_plugin_object_p): Correctly set the filesize
|
||||
and handle claim_file seeking. Only try to load the plugin once.
|
||||
|
||||
2011-02-22 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* elf32-m68k.c (elf_m68k_finish_dynamic_symbol): For a TLS_GD
|
||||
|
|
22
bfd/plugin.c
22
bfd/plugin.c
|
@ -232,11 +232,17 @@ static const bfd_target *
|
|||
bfd_plugin_object_p (bfd *abfd)
|
||||
{
|
||||
int claimed = 0;
|
||||
int t = load_plugin ();
|
||||
struct ld_plugin_input_file file;
|
||||
bfd *iobfd;
|
||||
static int have_loaded = 0;
|
||||
static int have_plugin = 0;
|
||||
|
||||
if (!t)
|
||||
if (!have_loaded)
|
||||
{
|
||||
have_loaded = 1;
|
||||
have_plugin = load_plugin ();
|
||||
}
|
||||
if (!have_plugin)
|
||||
return NULL;
|
||||
|
||||
file.name = abfd->filename;
|
||||
|
@ -251,7 +257,7 @@ bfd_plugin_object_p (bfd *abfd)
|
|||
{
|
||||
iobfd = abfd;
|
||||
file.offset = 0;
|
||||
file.filesize = 0; /*FIXME*/
|
||||
file.filesize = 0;
|
||||
}
|
||||
|
||||
if (!iobfd->iostream && !bfd_open_file (iobfd))
|
||||
|
@ -259,8 +265,18 @@ bfd_plugin_object_p (bfd *abfd)
|
|||
|
||||
file.fd = fileno ((FILE *) iobfd->iostream);
|
||||
|
||||
if (!abfd->my_archive)
|
||||
{
|
||||
struct stat stat_buf;
|
||||
if (fstat (file.fd, &stat_buf))
|
||||
return NULL;
|
||||
file.filesize = stat_buf.st_size;
|
||||
}
|
||||
|
||||
file.handle = abfd;
|
||||
off_t cur_offset = lseek(file.fd, 0, SEEK_CUR);
|
||||
claim_file (&file, &claimed);
|
||||
lseek(file.fd, cur_offset, SEEK_SET);
|
||||
if (!claimed)
|
||||
return NULL;
|
||||
|
||||
|
|
Loading…
Reference in New Issue