Home | History | Annotate | Download | only in bfd

Lines Matching full:info

840 #define frvfdpic_got_section(info) \
841 (frvfdpic_hash_table (info)->sgot)
842 #define frvfdpic_gotrel_section(info) \
843 (frvfdpic_hash_table (info)->sgotrel)
844 #define frvfdpic_gotfixup_section(info) \
845 (frvfdpic_hash_table (info)->sgotfixup)
846 #define frvfdpic_plt_section(info) \
847 (frvfdpic_hash_table (info)->splt)
848 #define frvfdpic_pltrel_section(info) \
849 (frvfdpic_hash_table (info)->spltrel)
850 #define frvfdpic_relocs_info(info) \
851 (frvfdpic_hash_table (info)->relocs_info)
852 #define frvfdpic_got_initial_offset(info) \
853 (frvfdpic_hash_table (info)->got0)
854 #define frvfdpic_plt_initial_offset(info) \
855 (frvfdpic_hash_table (info)->plt0)
856 #define frvfdpic_dynamic_got_plt_info(info) \
857 (frvfdpic_hash_table (info)->g)
865 #define frvfdpic_plt_tls_ret_offset(info) \
866 (frvfdpic_plt_initial_offset (info))
880 struct bfd_link_info *info;
974 #define FRVFDPIC_SYM_LOCAL(INFO, H) \
975 (_bfd_elf_symbol_refs_local_p ((H), (INFO), 1) \
976 || ! elf_hash_table (INFO)->dynamic_sections_created)
977 #define FRVFDPIC_FUNCDESC_LOCAL(INFO, H) \
978 ((H)->dynindx == -1 || ! elf_hash_table (INFO)->dynamic_sections_created)
1052 (call && symndx == -1 && ! FRVFDPIC_SYM_LOCAL (info, d.h)) */
1058 && (symndx != -1 || FRVFDPIC_FUNCDESC_LOCAL (info, d.h)))) */
1062 (privfd && symndx == -1 && ! FRVFDPIC_SYM_LOCAL (info, d.h)
1063 && ! (info->flags & DF_BIND_NOW)) */
1317 tls_biased_base (struct bfd_link_info *info)
1320 if (elf_hash_table (info)->tls_sec == NULL)
1322 return elf_hash_table (info)->tls_sec->vma + FRVFDPIC_TLS_BIAS;
1331 struct bfd_link_info *info,
1372 || FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
1388 if (info->executable && !info->pie
1390 || FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
1397 frvfdpic_gotfixup_section (info),
1398 frvfdpic_got_section (info)->output_section
1400 + frvfdpic_got_section (info)->output_offset
1401 + frvfdpic_got_initial_offset (info)
1405 _frvfdpic_add_dyn_reloc (output_bfd, frvfdpic_gotrel_section (info),
1407 (output_bfd, info,
1408 frvfdpic_got_section (info),
1409 frvfdpic_got_initial_offset (info)
1411 + frvfdpic_got_section (info)
1413 + frvfdpic_got_section (info)->output_offset,
1417 frvfdpic_got_section (info)->contents
1418 + frvfdpic_got_initial_offset (info)
1431 && FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
1441 && ! FRVFDPIC_FUNCDESC_LOCAL (info, entry->d.h)
1442 && FRVFDPIC_SYM_LOCAL (info, entry->d.h)
1443 && !(info->executable && !info->pie))
1452 && ! FRVFDPIC_FUNCDESC_LOCAL (info, entry->d.h))
1459 (*info->callbacks->reloc_dangerous)
1460 (info, _("relocation requires zero addend"),
1461 elf_hash_table (info)->dynobj,
1462 frvfdpic_got_section (info),
1471 if (elf_hash_table (info)->dynamic_sections_created)
1474 idx = elf_section_data (frvfdpic_got_section (info)
1476 ad = frvfdpic_got_section (info)->output_offset
1477 + frvfdpic_got_initial_offset (info) + entry->fd_entry;
1486 if (info->executable && !info->pie
1488 || FRVFDPIC_FUNCDESC_LOCAL (info, entry->d.h)))
1490 ad += frvfdpic_got_section (info)->output_section->vma;
1492 frvfdpic_gotfixup_section (info),
1493 frvfdpic_got_section (info)
1495 + frvfdpic_got_section (info)
1497 + frvfdpic_got_initial_offset (info)
1502 frvfdpic_gotrel_section (info),
1504 (output_bfd, info,
1505 frvfdpic_got_section (info),
1506 frvfdpic_got_initial_offset (info)
1508 + frvfdpic_got_section (info)
1510 + frvfdpic_got_section (info)
1516 frvfdpic_got_section (info)->contents
1517 + frvfdpic_got_initial_offset (info)
1533 || FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
1549 if (info->executable && !info->pie
1550 && (entry->symndx != -1 || FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
1559 frvfdpic_gotfixup_section (info),
1560 frvfdpic_got_section (info)
1562 + frvfdpic_got_section (info)
1564 + frvfdpic_got_initial_offset (info)
1567 frvfdpic_gotfixup_section (info),
1568 frvfdpic_got_section (info)
1570 + frvfdpic_got_section (info)
1572 + frvfdpic_got_initial_offset (info)
1581 ? frvfdpic_pltrel_section (info)
1582 : frvfdpic_gotrel_section (info),
1584 (output_bfd, info,
1585 frvfdpic_got_section (info),
1586 frvfdpic_got_initial_offset (info)
1588 + frvfdpic_got_section (info)
1590 + frvfdpic_got_section (info)
1597 if (info->executable && !info->pie && sec && sec->output_section)
1600 highword = frvfdpic_got_section (info)->output_section->vma
1601 + frvfdpic_got_section (info)->output_offset
1602 + frvfdpic_got_initial_offset (info);
1608 (*info->callbacks->reloc_dangerous)
1609 (info, _("relocation requires zero addend"),
1610 elf_hash_table (info)->dynobj,
1611 frvfdpic_got_section (info),
1625 + frvfdpic_plt_section (info)->output_offset
1626 + frvfdpic_plt_section (info)->output_section->vma;
1628 (output_bfd, frvfdpic_plt_section (info)->output_section);
1646 frvfdpic_got_section (info)->contents
1647 + frvfdpic_got_initial_offset (info)
1650 frvfdpic_got_section (info)->contents
1651 + frvfdpic_got_initial_offset (info)
1658 bfd_byte *plt_code = frvfdpic_plt_section (info)->contents
1713 bfd_byte *lzplt_code = frvfdpic_plt_section (info)->contents
1722 if (resolverStub_addr >= frvfdpic_plt_initial_offset (info))
1723 resolverStub_addr = frvfdpic_plt_initial_offset (info) - 12;
1751 || FRVFDPIC_SYM_LOCAL (info, entry->d.h))
1772 if (info->executable
1779 else if (info->executable
1781 || FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
1784 ad += sec->output_section->vma - tls_biased_base (info);
1792 if (! elf_hash_table (info)->tls_sec)
1794 (*info->callbacks->undefined_symbol)
1795 (info, "TLS section", elf_hash_table (info)->dynobj,
1796 frvfdpic_got_section (info), entry->tlsoff_entry, TRUE);
1799 idx = elf_section_data (elf_hash_table (info)->tls_sec)->dynindx;
1802 _frvfdpic_add_dyn_reloc (output_bfd, frvfdpic_gotrel_section (info),
1804 (output_bfd, info,
1805 frvfdpic_got_section (info),
1806 frvfdpic_got_initial_offset (info)
1808 + frvfdpic_got_section (info)
1810 + frvfdpic_got_section (info)
1816 frvfdpic_got_section (info)->contents
1817 + frvfdpic_got_initial_offset (info)
1829 || FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
1845 if (info->executable && ! entry->tlsoff_entry)
1848 if (info->executable && !info->pie
1853 || FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
1865 ad += sec->output_section->vma - tls_biased_base (info);
1868 frvfdpic_plt_section (info)->output_section->vma
1869 + frvfdpic_plt_section (info)->output_offset
1870 + frvfdpic_plt_tls_ret_offset (info),
1871 frvfdpic_got_section (info)->contents
1872 + frvfdpic_got_initial_offset (info)
1876 frvfdpic_gotfixup_section (info),
1877 frvfdpic_got_section (info)
1879 + frvfdpic_got_section (info)
1881 + frvfdpic_got_initial_offset (info)
1884 BFD_ASSERT (frvfdpic_dynamic_got_plt_info (info)->tls_ret_refs);
1889 frvfdpic_dynamic_got_plt_info (info)->tls_ret_refs--;
1897 frvfdpic_plt_section (info)->contents
1898 + frvfdpic_plt_tls_ret_offset (info));
1906 if (! elf_hash_table (info)->tls_sec)
1908 (*info->callbacks->undefined_symbol)
1909 (info, "TLS section", elf_hash_table (info)->dynobj,
1910 frvfdpic_got_section (info), entry->tlsdesc_entry, TRUE);
1913 idx = elf_section_data (elf_hash_table (info)->tls_sec)->dynindx;
1917 _frvfdpic_add_dyn_reloc (output_bfd, frvfdpic_gotrel_section (info),
1919 (output_bfd, info,
1920 frvfdpic_got_section (info),
1921 frvfdpic_got_initial_offset (info)
1923 + frvfdpic_got_section (info)
1925 + frvfdpic_got_section (info)
1930 frvfdpic_got_section (info)->contents
1931 + frvfdpic_got_initial_offset (info)
1936 frvfdpic_got_section (info)->contents
1937 + frvfdpic_got_initial_offset (info)
1944 bfd_byte *plt_code = frvfdpic_plt_section (info)->contents
1947 if (info->executable
1949 || FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
1985 ad += sec->output_section->vma - tls_biased_base (info);
2130 elf32_frv_relocate_gprel12 (struct bfd_link_info *info,
2141 h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
2167 elf32_frv_relocate_gprelu12 (struct bfd_link_info *info,
2179 h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
2295 elf32_frv_relocate_gprelhi (struct bfd_link_info *info,
2306 h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
2328 elf32_frv_relocate_gprello (struct bfd_link_info *info,
2339 h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
2653 struct bfd_link_info *info,
2667 int silence_segment_error = !(info->shared || info->pie);
2676 if (IS_FDPIC (output_bfd) && frvfdpic_got_section (info))
2678 frvfdpic_got_section (info)
2682 if (IS_FDPIC (output_bfd) && frvfdpic_gotfixup_section (info))
2684 frvfdpic_gotfixup_section (info)
2688 if (IS_FDPIC (output_bfd) && frvfdpic_plt_section (info))
2690 frvfdpic_plt_section (info)
2694 if (elf_hash_table (info)->tls_sec)
2696 elf_hash_table (info)->tls_sec);
2743 RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
2752 RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
2755 if (info->relocatable)
2762 && !FRVFDPIC_SYM_LOCAL (info, h))
2807 (info), input_bfd, h,
2814 (info), input_bfd, r_symndx,
2819 if (!_frvfdpic_emit_got_relocs_plt_entries (picrel, output_bfd, info,
2823 info->callbacks->einfo
2836 && ! FRVFDPIC_SYM_LOCAL (info, h)
2837 && _bfd_elf_section_offset (output_bfd, info, input_section,
2840 info->callbacks->einfo
2868 relocation += tls_biased_base (info);
2880 #define LOCAL_EXEC_P(info, picrel) \
2881 ((info)->executable \
2882 && (picrel->symndx != -1 || FRVFDPIC_SYM_LOCAL ((info), (picrel)->d.h)))
2883 #define INITIAL_EXEC_P(info, picrel) \
2884 (((info)->executable || (info)->flags & DF_STATIC_TLS) \
2891 #define TLSMOFF_IN_RANGE_FOR_SETLOS_P(value, info) \
2892 (IN_RANGE_FOR_SETLOS_P ((value) - tls_biased_base (info)))
2894 #define RELAX_GETTLSOFF_LOCAL_EXEC_P(info, picrel, value) \
2895 (LOCAL_EXEC_P ((info), (picrel)) \
2896 && TLSMOFF_IN_RANGE_FOR_SETLOS_P((value), (info)))
2897 #define RELAX_GETTLSOFF_INITIAL_EXEC_P(info, picrel) \
2898 (INITIAL_EXEC_P ((info), (picrel)) \
2901 #define RELAX_TLSDESC_LOCAL_EXEC_P(info, picrel, value) \
2902 (LOCAL_EXEC_P ((info), (picrel)))
2903 #define RELAX_TLSDESC_INITIAL_EXEC_P(info, picrel) \
2904 (INITIAL_EXEC_P ((info), (picrel)))
2906 #define RELAX_GOTTLSOFF_LOCAL_EXEC_P(info, picrel, value) \
2907 (LOCAL_EXEC_P ((info), (picrel)) \
2908 && TLSMOFF_IN_RANGE_FOR_SETLOS_P((value), (info)))
2916 info->callbacks->einfo
2922 if (RELAX_GETTLSOFF_LOCAL_EXEC_P (info, picrel,
2936 else if (RELAX_GETTLSOFF_INITIAL_EXEC_P (info, picrel))
2957 info->callbacks->einfo
2964 if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
2967 info))
2983 else if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
3000 else if (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel))
3028 info->callbacks->einfo
3035 if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
3037 || (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel)
3049 else if (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel))
3065 info->callbacks->einfo
3072 if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
3074 || (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel)
3087 else if (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel))
3112 info->callbacks->einfo
3119 if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
3122 info))
3138 else if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
3155 else if (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel)
3172 else if (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel))
3196 info->callbacks->einfo
3203 if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
3206 info))
3217 else if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
3231 else if (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel))
3250 info->callbacks->einfo
3257 if (RELAX_GOTTLSOFF_LOCAL_EXEC_P (info, picrel,
3280 info->callbacks->einfo
3287 if (RELAX_GOTTLSOFF_LOCAL_EXEC_P (info, picrel,
3289 || (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel)
3309 info->callbacks->einfo
3316 if (RELAX_GOTTLSOFF_LOCAL_EXEC_P (info, picrel,
3318 || (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel)
3339 info->callbacks->einfo
3346 if (RELAX_GOTTLSOFF_LOCAL_EXEC_P (info, picrel,
3361 else if (RELAX_TLSDESC_INITIAL_EXEC_P (info, picrel)
3384 info->callbacks->einfo
3392 info))
3411 info->callbacks->einfo
3419 info))
3452 relocation = frvfdpic_plt_section (info)->output_section->vma
3453 + frvfdpic_plt_section (info)->output_offset
3487 relocation -= frvfdpic_got_section (info)->output_section->vma
3488 + frvfdpic_got_section (info)->output_offset
3489 + frvfdpic_got_initial_offset (info);
3509 && FRVFDPIC_SYM_LOCAL (info, h)))
3519 if (h && ! FRVFDPIC_FUNCDESC_LOCAL (info, h)
3520 && FRVFDPIC_SYM_LOCAL (info, h)
3521 && !(info->executable && !info->pie))
3528 else if (h && ! FRVFDPIC_FUNCDESC_LOCAL (info, h))
3532 info->callbacks->einfo
3546 dynindx = elf_section_data (frvfdpic_got_section (info)
3548 addend = frvfdpic_got_section (info)->output_offset
3549 + frvfdpic_got_initial_offset (info)
3559 if (info->executable && !info->pie
3560 && (!h || FRVFDPIC_FUNCDESC_LOCAL (info, h)))
3562 addend += frvfdpic_got_section (info)->output_section->vma;
3573 info->callbacks->einfo
3581 (output_bfd, info,
3587 (info),
3604 info->callbacks->einfo
3612 (output_bfd, info,
3617 frvfdpic_gotrel_section (info),
3624 addend += frvfdpic_got_section (info)->output_section->vma;
3649 if (h && ! FRVFDPIC_SYM_LOCAL (info, h))
3653 info->callbacks->einfo
3681 if (info->executable && !info->pie
3682 && (!h || FRVFDPIC_SYM_LOCAL (info, h)))
3695 info->callbacks->einfo
3703 (output_bfd, info,
3710 (info),
3718 frvfdpic_gotfixup_section (info),
3738 info->callbacks->einfo
3746 (output_bfd, info,
3751 frvfdpic_gotrel_section (info),
3770 if (info->executable && !info->pie
3771 && (!h || FRVFDPIC_SYM_LOCAL (info, h)))
3773 frvfdpic_got_section (info)->output_section->vma
3774 + frvfdpic_got_section (info)->output_offset
3775 + frvfdpic_got_initial_offset (info),
3785 h && ! FRVFDPIC_SYM_LOCAL (info, h)
3808 relocation = frvfdpic_plt_section (info)->output_section->vma
3809 + frvfdpic_plt_section (info)->output_offset
3845 relocation -= tls_biased_base (info);
3909 info->callbacks->einfo
3913 if (!silence_segment_error && (info->shared || info->pie))
4000 r = elf32_frv_relocate_gprel12 (info, input_bfd, input_section, rel,
4004 r = elf32_frv_relocate_gprelu12 (info, input_bfd, input_section, rel,
4008 r = elf32_frv_relocate_gprello (info, input_bfd, input_section, rel,
4012 r = elf32_frv_relocate_gprelhi (info, input_bfd, input_section, rel,
4030 r = info->callbacks->reloc_overflow
4031 (info, (h ? &h->root : NULL), name, howto->name,
4036 r = info->callbacks->undefined_symbol
4037 (info, name, input_bfd, input_section, rel->r_offset, TRUE);
4059 info->callbacks->einfo
4079 struct bfd_link_info *info,
4092 return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
4101 struct bfd_link_info *info,
4109 && !info->relocatable
4138 struct bfd_link_info *info
4158 /* Create a .got section, as well as its additional info field. This
4163 _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
4207 h = _bfd_elf_define_linkage_sym (abfd, info, s, "_GLOBAL_OFFSET_TABLE_");
4208 elf_hash_table (info)->hgot = h;
4214 if (! bfd_elf_link_record_dynamic_symbol (info, h))
4225 frvfdpic_got_section (info) = s;
4226 frvfdpic_relocs_info (info) = htab_try_create (1,
4230 if (! frvfdpic_relocs_info (info))
4239 frvfdpic_gotrel_section (info) = s;
4248 frvfdpic_gotfixup_section (info) = s;
4263 (info, abfd, "_gp", flags, s, offset, (const char *) NULL, FALSE,
4272 if (IS_FDPIC (abfd) && ! bfd_elf_link_record_dynamic_symbol (info, h))
4296 frvfdpic_plt_section (info) = s;
4302 h = _bfd_elf_define_linkage_sym (abfd, info, s,
4304 elf_hash_table (info)->hplt = h;
4316 frvfdpic_pltrel_section (info) = s;
4325 elf32_frvfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
4341 if (! _frv_create_got_section (abfd, info))
4345 BFD_ASSERT (frvfdpic_got_section (info) && frvfdpic_gotrel_section (info)
4346 && frvfdpic_gotfixup_section (info)
4347 && frvfdpic_plt_section (info)
4348 && frvfdpic_pltrel_section (info));
4374 if (! info->shared)
4425 && entry->symndx == -1 && ! FRVFDPIC_SYM_LOCAL (dinfo->info, entry->d.h)
4426 && elf_hash_table (dinfo->info)->dynamic_sections_created;
4431 || FRVFDPIC_FUNCDESC_LOCAL (dinfo->info, entry->d.h)));
4433 && entry->symndx == -1 && ! FRVFDPIC_SYM_LOCAL (dinfo->info, entry->d.h)
4434 && ! (dinfo->info->flags & DF_BIND_NOW)
4435 && elf_hash_table (dinfo->info)->dynamic_sections_created;
4484 dinfo->info->flags |= DF_STATIC_TLS;
4511 if (!dinfo->info->executable || dinfo->info->pie)
4523 if (!dinfo->info->executable
4525 && ! FRVFDPIC_SYM_LOCAL (dinfo->info, entry->d.h)))
4530 if (entry->symndx != -1 || FRVFDPIC_SYM_LOCAL (dinfo->info, entry->d.h))
4545 || FRVFDPIC_FUNCDESC_LOCAL (dinfo->info, entry->d.h))
4582 BFD_ASSERT (dinfo->info->executable
4583 || (dinfo->info->flags & DF_STATIC_TLS));
4601 if (! dinfo->info->executable
4603 && ! FRVFDPIC_SYM_LOCAL (dinfo->info, entry->d.h)))
4625 && dinfo->info->executable && relaxing
4627 && FRVFDPIC_SYM_LOCAL (dinfo->info, entry->d.h)
4637 - tls_biased_base (dinfo->info)
4640 && (elf_hash_table (dinfo->info)->tls_sec->size
4698 if (dinfo->info->executable || (dinfo->info->flags & DF_STATIC_TLS))
5056 entry->plt_entry = frvfdpic_plt_section (dinfo->g.info)->size;
5070 frvfdpic_plt_section (dinfo->g.info)->size += size;
5089 = frvfdpic_plt_section (dinfo->g.info)->size;
5091 if (dinfo->g.info->executable
5093 || FRVFDPIC_SYM_LOCAL (dinfo->g.info, entry->d.h)))
5102 && elf_hash_table (dinfo->g.info)->tls_sec
5103 && (elf_hash_table (dinfo->g.info)->tls_sec->size
5134 frvfdpic_plt_section (dinfo->g.info)->size += size;
5226 struct bfd_link_info *info = gpinfop->g.info;
5227 bfd *dynobj = elf_hash_table (info)->dynobj;
5229 memcpy (frvfdpic_dynamic_got_plt_info (info), &gpinfop->g,
5294 htab_traverse (frvfdpic_relocs_info (info), _frvfdpic_assign_got_entries,
5297 frvfdpic_got_section (info)->size = gpinfop->gothilo.tmax
5302 if (frvfdpic_got_section (info)->size == 0)
5303 frvfdpic_got_section (info)->flags |= SEC_EXCLUDE;
5304 else if (frvfdpic_got_section (info)->size == 12
5305 && ! elf_hash_table (info)->dynamic_sections_created)
5307 frvfdpic_got_section (info)->flags |= SEC_EXCLUDE;
5308 frvfdpic_got_section (info)->size = 0;
5313 else if (frvfdpic_got_section (info)->contents == NULL)
5315 frvfdpic_got_section (info)->contents =
5317 frvfdpic_got_section (info)->size);
5318 if (frvfdpic_got_section (info)->contents == NULL)
5322 if (frvfdpic_gotrel_section (info))
5325 frvfdpic_gotrel_section (info)->size =
5330 if (frvfdpic_gotrel_section (info)->size == 0)
5331 frvfdpic_gotrel_section (info)->flags |= SEC_EXCLUDE;
5332 else if (frvfdpic_gotrel_section (info)->contents == NULL)
5334 frvfdpic_gotrel_section (info)->contents =
5336 frvfdpic_gotrel_section (info)->size);
5337 if (frvfdpic_gotrel_section (info)->contents == NULL)
5341 frvfdpic_gotfixup_section (info)->size = (gpinfop->g.fixups + 1) * 4;
5342 if (frvfdpic_gotfixup_section (info)->size == 0)
5343 frvfdpic_gotfixup_section (info)->flags |= SEC_EXCLUDE;
5344 else if (frvfdpic_gotfixup_section (info)->contents == NULL)
5346 frvfdpic_gotfixup_section (info)->contents =
5348 frvfdpic_gotfixup_section (info)->size);
5349 if (frvfdpic_gotfixup_section (info)->contents == NULL)
5353 if (frvfdpic_pltrel_section (info))
5355 frvfdpic_pltrel_section (info)->size =
5358 if (frvfdpic_pltrel_section (info)->size == 0)
5359 frvfdpic_pltrel_section (info)->flags |= SEC_EXCLUDE;
5360 else if (frvfdpic_pltrel_section (info)->contents == NULL)
5362 frvfdpic_pltrel_section (info)->contents =
5364 frvfdpic_pltrel_section (info)->size);
5365 if (frvfdpic_pltrel_section (info)->contents == NULL)
5375 if (frvfdpic_plt_section (info))
5377 frvfdpic_plt_section (info)->size = gpinfop->g.lzplt
5388 frvfdpic_got_initial_offset (info) = -gpinfop->gothilo.tmin;
5391 elf_hash_table (info)->hgot->root.u.def.value
5392 = frvfdpic_got_initial_offset (info);
5394 if (frvfdpic_plt_section (info))
5395 frvfdpic_plt_initial_offset (info) =
5396 frvfdpic_plt_section (info)->size;
5401 frvfdpic_plt_section (info)->size += 4;
5403 htab_traverse (frvfdpic_relocs_info (info), _frvfdpic_assign_plt_entries,
5409 if (frvfdpic_plt_section (info))
5411 if (frvfdpic_plt_section (info)->size == 0)
5412 frvfdpic_plt_section (info)->flags |= SEC_EXCLUDE;
5413 else if (frvfdpic_plt_section (info)->contents == NULL)
5415 frvfdpic_plt_section (info)->contents =
5417 frvfdpic_plt_section (info)->size);
5418 if (frvfdpic_plt_section (info)->contents == NULL)
5430 struct bfd_link_info *info)
5436 dynobj = elf_hash_table (info)->dynobj;
5439 if (elf_hash_table (info)->dynamic_sections_created)
5442 if (info->executable)
5452 gpinfo.g.info = info;
5456 htab_t relocs = frvfdpic_relocs_info (info);
5460 if (relocs == frvfdpic_relocs_info (info))
5464 htab_traverse (frvfdpic_relocs_info (info), _frvfdpic_count_got_plt_entries,
5469 frvfdpic_dynamic_got_plt_info (info) = bfd_alloc (dynobj, sizeof (gpinfo.g));
5474 if (elf_hash_table (info)->dynamic_sections_created)
5476 if (frvfdpic_got_section (info)->size)
5477 if (!_bfd_elf_add_dynamic_entry (info, DT_PLTGOT, 0))
5480 if (frvfdpic_pltrel_section (info)->size)
5481 if (!_bfd_elf_add_dynamic_entry (info, DT_PLTRELSZ, 0)
5482 || !_bfd_elf_add_dynamic_entry (info, DT_PLTREL, DT_REL)
5483 || !_bfd_elf_add_dynamic_entry (info, DT_JMPREL, 0))
5486 if (frvfdpic_gotrel_section (info)->size)
5487 if (!_bfd_elf_add_dynamic_entry (info, DT_REL, 0)
5488 || !_bfd_elf_add_dynamic_entry (info, DT_RELSZ, 0)
5489 || !_bfd_elf_add_dynamic_entry (info, DT_RELENT,
5499 struct bfd_link_info *info)
5501 if (!info->relocatable
5502 && !bfd_elf_stack_segment_size (output_bfd, info,
5513 struct bfd_link_info *info,
5543 info, sec, rel->r_offset)
5559 picrel = frvfdpic_relocs_info_for_global (frvfdpic_relocs_info (info),
5563 picrel = frvfdpic_relocs_info_for_local (frvfdpic_relocs_info (info),
5571 dinfo = frvfdpic_dynamic_got_plt_info (info);
5587 struct bfd_link_info *info)
5597 if (!_frvfdpic_check_discarded_relocs (ibfd, s, info, &changed))
5607 memcpy (&gpinfo.g, frvfdpic_dynamic_got_plt_info (info),
5611 htab_traverse (frvfdpic_relocs_info (info),
5639 struct bfd_link_info *info, bfd_boolean *again)
5643 if (info->relocatable)
5644 (*info->callbacks->einfo)
5651 if (sec != frvfdpic_got_section (info))
5656 if (! info->executable && ! (info->flags & DF_STATIC_TLS))
5662 if (elf_hash_table (info)->tls_sec == NULL)
5666 memcpy (&gpinfo.g, frvfdpic_dynamic_got_plt_info (info), sizeof (gpinfo.g));
5670 htab_traverse (frvfdpic_relocs_info (info),
5675 if (memcmp (frvfdpic_dynamic_got_plt_info (info),
5679 htab_traverse (frvfdpic_relocs_info (info),
5685 if (!_frvfdpic_size_got_plt (elf_hash_table (info)->tls_sec->owner,
5705 struct bfd_link_info *info ATTRIBUTE_UNUSED)
5713 struct bfd_link_info *info)
5718 dynobj = elf_hash_table (info)->dynobj;
5720 if (frvfdpic_dynamic_got_plt_info (info))
5722 BFD_ASSERT (frvfdpic_dynamic_got_plt_info (info)->tls_ret_refs == 0);
5724 if (frvfdpic_got_section (info))
5726 BFD_ASSERT (frvfdpic_gotrel_section (info)->size
5727 == (frvfdpic_gotrel_section (info)->reloc_count
5730 if (frvfdpic_gotfixup_section (info))
5732 struct elf_link_hash_entry *hgot = elf_hash_table (info)->hgot;
5738 _frvfdpic_add_rofixup (output_bfd, frvfdpic_gotfixup_section (info),
5741 if (frvfdpic_gotfixup_section (info)->size
5742 != (frvfdpic_gotfixup_section (info)->reloc_count * 4))
5745 info->callbacks->einfo
5750 hend = bfd_link_hash_lookup (info->hash, "__ROFIXUP_END__",
5758 frvfdpic_gotfixup_section (info)->output_section->vma
5759 + frvfdpic_gotfixup_section (info)->output_offset
5760 + frvfdpic_gotfixup_section (info)->size
5769 if (frvfdpic_pltrel_section (info))
5771 BFD_ASSERT (frvfdpic_pltrel_section (info)->size
5772 == (frvfdpic_pltrel_section (info)->reloc_count
5777 if (elf_hash_table (info)->dynamic_sections_created)
5801 dyn.d_un.d_ptr = frvfdpic_got_section (info)->output_section->vma
5802 + frvfdpic_got_section (info)->output_offset
5803 + frvfdpic_got_initial_offset (info);
5808 dyn.d_un.d_ptr = frvfdpic_pltrel_section (info)
5810 + frvfdpic_pltrel_section (info)->output_offset;
5815 dyn.d_un.d_val = frvfdpic_pltrel_section (info)->size;
5830 (struct bfd_link_info *info ATTRIBUTE_UNUSED,
5835 dynobj = elf_hash_table (info)->dynobj;
5863 struct bfd_link_info *info ATTRIBUTE_UNUSED,
5876 struct bfd_link_info *info ATTRIBUTE_UNUSED,
5887 struct bfd_link_info *info,
5894 h = elf_hash_table (info)->hgot;
5899 return _bfd_elf_encode_eh_address (abfd, info, osec, offset,
6020 struct bfd_link_info *info,
6031 if (info->relocatable)
6037 dynobj = elf_hash_table (info)->dynobj;
6099 elf_hash_table (info)->dynobj = dynobj = abfd;
6100 if (! _frv_create_got_section (abfd, info))
6117 bfd_elf_link_record_dynamic_symbol (info, h);
6121 = frvfdpic_relocs_info_for_global (frvfdpic_relocs_info (info),
6127 (info), abfd, r_symndx,
6223 info->flags |= DF_STATIC_TLS;
6229 info->flags |= DF_STATIC_TLS;
6234 info->flags |= DF_STATIC_TLS;
6268 info->callbacks->einfo