mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-20 14:22:35 +08:00
2010-09-22 Kai Tietz <kai.tietz@onevision.com>
* peXXigen.c (_bfd_XXi_final_link_postscript): Add handling for setting IAT directory entry.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2010-09-22 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
|
* peXXigen.c (_bfd_XXi_final_link_postscript):
|
||||||
|
Add handling for setting IAT directory entry.
|
||||||
|
|
||||||
2010-09-20 Richard Henderson <rth@redhat.com>
|
2010-09-20 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* elf64-alpha.c (elf64_alpha_howto_table): Use bfd_elf_generic_reloc.
|
* elf64-alpha.c (elf64_alpha_howto_table): Use bfd_elf_generic_reloc.
|
||||||
|
@ -2373,6 +2373,49 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo)
|
|||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
h1 = coff_link_hash_lookup (coff_hash_table (info),
|
||||||
|
"__IAT_start__", FALSE, FALSE, TRUE);
|
||||||
|
if (h1 != NULL
|
||||||
|
&& (h1->root.type == bfd_link_hash_defined
|
||||||
|
|| h1->root.type == bfd_link_hash_defweak)
|
||||||
|
&& h1->root.u.def.section != NULL
|
||||||
|
&& h1->root.u.def.section->output_section != NULL)
|
||||||
|
{
|
||||||
|
bfd_vma iat_va;
|
||||||
|
|
||||||
|
iat_va =
|
||||||
|
(h1->root.u.def.value
|
||||||
|
+ h1->root.u.def.section->output_section->vma
|
||||||
|
+ h1->root.u.def.section->output_offset);
|
||||||
|
|
||||||
|
h1 = coff_link_hash_lookup (coff_hash_table (info),
|
||||||
|
"__IAT_end__", FALSE, FALSE, TRUE);
|
||||||
|
if (h1 != NULL
|
||||||
|
&& (h1->root.type == bfd_link_hash_defined
|
||||||
|
|| h1->root.type == bfd_link_hash_defweak)
|
||||||
|
&& h1->root.u.def.section != NULL
|
||||||
|
&& h1->root.u.def.section->output_section != NULL)
|
||||||
|
{
|
||||||
|
pe_data (abfd)->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE].Size =
|
||||||
|
((h1->root.u.def.value
|
||||||
|
+ h1->root.u.def.section->output_section->vma
|
||||||
|
+ h1->root.u.def.section->output_offset)
|
||||||
|
- iat_va);
|
||||||
|
if (pe_data (abfd)->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE].Size != 0)
|
||||||
|
pe_data (abfd)->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE].VirtualAddress =
|
||||||
|
iat_va - pe_data (abfd)->pe_opthdr.ImageBase;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_bfd_error_handler
|
||||||
|
(_("%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)]"
|
||||||
|
" because .idata$6 is missing"), abfd);
|
||||||
|
result = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
h1 = coff_link_hash_lookup (coff_hash_table (info),
|
h1 = coff_link_hash_lookup (coff_hash_table (info),
|
||||||
"__tls_used", FALSE, FALSE, TRUE);
|
"__tls_used", FALSE, FALSE, TRUE);
|
||||||
|
Reference in New Issue
Block a user