------- Additional Comments From ebotcazou at gcc dot gnu dot org 2007-10-01 13:47 ------- Hi Nick,
> * The new script is only used when --enable-auto-import is present on the > linker command line, not when the linker magically enables auto import for > itself. (There appears to be code in pe{p}.em:...find_data_imports() that > magically enables auto importing. I was not sure what should be done in this > situation). This is IMO a significant weakness as the auto-import feature is enabled unless specifically disabled by --disable-auto-import. I think that the definitive fix would be to make .rdata writable in this case, much like the text section is made writable: void pe_create_import_fixup (arelent *rel, asection *s, int addend) { char buf[300]; struct bfd_symbol *sym = *rel->sym_ptr_ptr; struct bfd_link_hash_entry *name_thunk_sym; const char *name = sym->name; char *fixup_name = make_import_fixup_mark (rel); bfd *b; sprintf (buf, U ("_nm_thnk_%s"), name); name_thunk_sym = bfd_link_hash_lookup (link_info.hash, buf, 0, 0, 1); if (!name_thunk_sym || name_thunk_sym->type != bfd_link_hash_defined) { bfd *b = make_singleton_name_thunk (name, output_bfd); add_bfd_to_link (b, b->filename, &link_info); /* If we ever use autoimport, we have to cast text section writable. */ config.text_read_only = FALSE; output_bfd->flags &= ~WP_TEXT; } Of course only the section to which the relocation will be applied should be made writable. -- http://sourceware.org/bugzilla/show_bug.cgi?id=4844 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils