* elf32-sh.c (sh_elf_finish_dynamic_sections): Set LSB of DT_INIT
value if .init is an SHmedia function. Similarly for DT_FINI. * elf64-sh64.c (sh64_elf64_finish_dynamic_sections): Likewise.
This commit is contained in:
parent
8e523c2334
commit
3b587c71d7
@ -1,8 +1,15 @@
|
||||
2002-08-23 Stephen Clarke <stephen.clarke@superh.com>,
|
||||
Richard Shann <richard.shann@superh.com>
|
||||
|
||||
* elf32-sh.c (sh_elf_finish_dynamic_sections): Set LSB of DT_INIT
|
||||
value if .init is an SHmedia function. Similarly for DT_FINI.
|
||||
* elf64-sh64.c (sh64_elf64_finish_dynamic_sections): Likewise.
|
||||
|
||||
2002-08-23 Stephen Clarke <stephen.clarke@superh.com>
|
||||
|
||||
* bfd/elf32-sh.c (sh_elf_size_dynamic_sections): Zero initialize
|
||||
* elf32-sh.c (sh_elf_size_dynamic_sections): Zero initialize
|
||||
dynamic section.
|
||||
* bfd/elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewise.
|
||||
* elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewise.
|
||||
|
||||
2002-08-22 Kaz Kojima <kkojima@rr.iij4u.or.jp>
|
||||
|
||||
|
@ -5697,6 +5697,7 @@ sh_elf_finish_dynamic_sections (output_bfd, info)
|
||||
Elf_Internal_Dyn dyn;
|
||||
const char *name;
|
||||
asection *s;
|
||||
struct elf_link_hash_entry *h;
|
||||
|
||||
bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);
|
||||
|
||||
@ -5705,6 +5706,27 @@ sh_elf_finish_dynamic_sections (output_bfd, info)
|
||||
default:
|
||||
break;
|
||||
|
||||
#ifdef INCLUDE_SHMEDIA
|
||||
case DT_INIT:
|
||||
name = info->init_function;
|
||||
goto get_sym;
|
||||
|
||||
case DT_FINI:
|
||||
name = info->fini_function;
|
||||
get_sym:
|
||||
if (dyn.d_un.d_val != 0)
|
||||
{
|
||||
h = elf_link_hash_lookup (elf_hash_table (info), name,
|
||||
false, false, true);
|
||||
if (h != NULL && (h->other & STO_SH5_ISA32))
|
||||
{
|
||||
dyn.d_un.d_val |= 1;
|
||||
bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
case DT_PLTGOT:
|
||||
name = ".got";
|
||||
goto get_vma;
|
||||
|
@ -3990,6 +3990,7 @@ sh64_elf64_finish_dynamic_sections (output_bfd, info)
|
||||
Elf_Internal_Dyn dyn;
|
||||
const char *name;
|
||||
asection *s;
|
||||
struct elf_link_hash_entry *h;
|
||||
|
||||
bfd_elf64_swap_dyn_in (dynobj, dyncon, &dyn);
|
||||
|
||||
@ -3998,6 +3999,25 @@ sh64_elf64_finish_dynamic_sections (output_bfd, info)
|
||||
default:
|
||||
break;
|
||||
|
||||
case DT_INIT:
|
||||
name = info->init_function;
|
||||
goto get_sym;
|
||||
|
||||
case DT_FINI:
|
||||
name = info->fini_function;
|
||||
get_sym:
|
||||
if (dyn.d_un.d_val != 0)
|
||||
{
|
||||
h = elf_link_hash_lookup (elf_hash_table (info), name,
|
||||
false, false, true);
|
||||
if (h != NULL && (h->other & STO_SH5_ISA32))
|
||||
{
|
||||
dyn.d_un.d_val |= 1;
|
||||
bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case DT_PLTGOT:
|
||||
name = ".got";
|
||||
goto get_vma;
|
||||
|
Loading…
Reference in New Issue
Block a user