- int claimed = 0;
- struct ld_plugin_input_file file;
- bfd *iobfd;
- static int have_loaded = 0;
- static int have_plugin = 0;
-
- if (!have_loaded)
- {
- have_loaded = 1;
- have_plugin = load_plugin ();
- }
- if (!have_plugin)
- return NULL;
-
- file.name = abfd->filename;
-
- if (abfd->my_archive)
- {
- iobfd = abfd->my_archive;
- file.offset = abfd->origin;
- file.filesize = arelt_size (abfd);
- }
- else
- {
- iobfd = abfd;
- file.offset = 0;
- file.filesize = 0;
- }
-
- if (!iobfd->iostream && !bfd_open_file (iobfd))
- return NULL;
-
- 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)