Lines Matching refs:htab

2290 reloc_section_p (struct elf32_arm_link_hash_table *htab,
2293 if (htab->use_rel)
2305 struct elf32_arm_link_hash_table *htab;
2307 htab = elf32_arm_hash_table (info);
2309 if (htab->symbian_p)
2315 htab->sgot = bfd_get_section_by_name (dynobj, ".got");
2316 htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
2317 if (!htab->sgot || !htab->sgotplt)
2320 htab->srelgot = bfd_make_section_with_flags (dynobj,
2321 RELOC_SECTION (htab, ".got"),
2327 if (htab->srelgot == NULL
2328 || ! bfd_set_section_alignment (dynobj, htab->srelgot, 2))
2340 struct elf32_arm_link_hash_table *htab;
2342 htab = elf32_arm_hash_table (info);
2343 if (!htab->sgot && !create_got_section (dynobj, info))
2349 htab->splt = bfd_get_section_by_name (dynobj, ".plt");
2350 htab->srelplt = bfd_get_section_by_name (dynobj,
2351 RELOC_SECTION (htab, ".plt"));
2352 htab->sdynbss = bfd_get_section_by_name (dynobj, ".dynbss");
2354 htab->srelbss = bfd_get_section_by_name (dynobj,
2355 RELOC_SECTION (htab, ".bss"));
2357 if (htab->vxworks_p)
2359 if (!elf_vxworks_create_dynamic_sections (dynobj, info, &htab->srelplt2))
2364 htab->plt_header_size = 0;
2365 htab->plt_entry_size
2370 htab->plt_header_size
2372 htab->plt_entry_size
2377 if (!htab->splt
2378 || !htab->srelplt
2379 || !htab->sdynbss
2380 || (!info->shared && !htab->srelbss))
4002 put_arm_insn (struct elf32_arm_link_hash_table *htab,
4005 if (htab->byteswap_code != bfd_little_endian (output_bfd))
4016 put_thumb_insn (struct elf32_arm_link_hash_table *htab,
4019 if (htab->byteswap_code != bfd_little_endian (output_bfd))
4390 struct elf_link_hash_table *htab = elf_hash_table (info);
4394 if (htab->tls_sec == NULL)
4396 base = align_power ((bfd_vma) TCB_SIZE, htab->tls_sec->alignment_power);
4397 return address - htab->tls_sec->vma + base;
4707 struct elf_link_hash_table *htab = elf_hash_table (info);
4710 && htab->data_index_section != NULL)
4711 osec = htab->data_index_section;
4713 osec = htab->text_index_section;
7537 struct elf32_arm_link_hash_table *htab;
7542 htab = elf32_arm_hash_table (info);
7547 if (htab->root.is_relocatable_executable
7548 && ! htab->root.dynamic_sections_created)
7575 r_type = arm_real_reloc_type (htab, r_type);
7661 htab->tls_ldm_got.refcount++;
7666 if (htab->sgot == NULL)
7668 if (htab->root.dynobj == NULL)
7669 htab->root.dynobj = abfd;
7670 if (!create_got_section (htab->root.dynobj, info))
7678 if (!htab->vxworks_p)
7757 if ((info->shared || htab->root.is_relocatable_executable)
7779 BFD_ASSERT (reloc_section_p (htab, name, sec));
7791 && !htab->symbian_p)
7819 s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
7833 p = bfd_alloc (htab->root.dynobj, amt);
8180 struct elf32_arm_link_hash_table *htab;
8196 htab = elf32_arm_hash_table (info);
8198 if (htab->root.dynamic_sections_created
8213 asection *s = htab->splt;
8218 s->size += htab->plt_header_size;
8224 if (!htab->use_blx && eh->plt_thumb_refcount > 0)
8249 s->size += htab->plt_entry_size;
8251 if (!htab->symbian_p)
8255 eh->plt_got_offset = htab->sgotplt->size;
8256 htab->sgotplt->size += 4;
8260 htab->srelplt->size += RELOC_SIZE (htab);
8265 if (htab->vxworks_p && !info->shared)
8269 if (h->plt.offset == htab->plt_header_size)
8270 htab->srelplt2->size += RELOC_SIZE (htab);
8275 htab->srelplt2->size += RELOC_SIZE (htab) * 2;
8306 if (!htab->symbian_p)
8308 s = htab->sgot;
8327 dyn = htab->root.dynamic_sections_created;
8341 htab->srelgot->size += RELOC_SIZE (htab);
8344 htab->srelgot->size += RELOC_SIZE (htab);
8347 htab->srelgot->size += RELOC_SIZE (htab);
8353 htab->srelgot->size += RELOC_SIZE (htab);
8360 if (!htab->use_blx && h->dynindx != -1
8399 if (info->shared || htab->root.is_relocatable_executable)
8440 else if (htab->root.is_relocatable_executable && h->dynindx == -1
8460 || (htab->root.dynamic_sections_created
8488 sreloc->size += p->count * RELOC_SIZE (htab);
8544 struct elf32_arm_link_hash_table *htab;
8546 htab = elf32_arm_hash_table (info);
8549 check_use_blx (htab);
8594 srel->size += p->count * RELOC_SIZE (htab);
8609 s = htab->sgot;
8610 srel = htab->srelgot;
8625 srel->size += RELOC_SIZE (htab);
8632 if (htab->tls_ldm_got.refcount > 0)
8636 htab->tls_ldm_got.offset = htab->sgot->size;
8637 htab->sgot->size += 8;
8639 htab->srelgot->size += RELOC_SIZE (htab);
8642 htab->tls_ldm_got.offset = -1;
8646 elf_link_hash_traverse (& htab->root, allocate_dynrelocs, info);
8688 if (s != htab->srelplt && s != htab->srelplt2)
8748 htab->use_rel ? DT_REL : DT_RELA)
8755 if (htab->use_rel)
8759 || !add_dynamic_entry (DT_RELENT, RELOC_SIZE (htab)))
8766 || !add_dynamic_entry (DT_RELAENT, RELOC_SIZE (htab)))
8774 elf_link_hash_traverse (&htab->root, elf32_arm_readonly_dynrelocs,
8796 struct elf32_arm_link_hash_table *htab;
8800 htab = elf32_arm_hash_table (info);
8817 srel = bfd_get_section_by_name (dynobj, RELOC_SECTION (htab, ".plt"));
8821 if (htab->symbian_p)
8823 put_arm_insn (htab, output_bfd,
8840 plt_index = ((h->plt.offset - htab->plt_header_size)
8841 / htab->plt_entry_size);
8874 ptr = htab->splt->contents + h->plt.offset;
8875 if (htab->vxworks_p && info->shared)
8880 for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4)
8886 val |= plt_index * RELOC_SIZE (htab);
8890 put_arm_insn (htab, output_bfd, val, ptr);
8893 else if (htab->vxworks_p)
8898 for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4)
8906 val |= plt_index * RELOC_SIZE (htab);
8910 put_arm_insn (htab, output_bfd, val, ptr);
8913 loc = (htab->srelplt2->contents
8914 + (plt_index * 2 + 1) * RELOC_SIZE (htab));
8919 rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_ARM_ABS32);
8921 SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
8922 loc += RELOC_SIZE (htab);
8927 rel.r_info = ELF32_R_INFO (htab->root.hplt->indx, R_ARM_ABS32);
8929 SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
8941 if (!htab->use_blx && eh->plt_thumb_refcount > 0)
8943 put_thumb_insn (htab, output_bfd,
8945 put_thumb_insn (htab, output_bfd,
8949 put_arm_insn (htab, output_bfd,
8953 put_arm_insn (htab, output_bfd,
8957 put_arm_insn (htab, output_bfd,
8978 loc = srel->contents + plt_index * RELOC_SIZE (htab);
8979 SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
9008 srel = bfd_get_section_by_name (dynobj, RELOC_SECTION (htab, ".got"));
9027 if (!htab->use_rel)
9040 loc = srel->contents + srel->reloc_count++ * RELOC_SIZE (htab);
9041 SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
9056 RELOC_SECTION (htab, ".bss"));
9064 loc = s->contents + s->reloc_count++ * RELOC_SIZE (htab);
9065 SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
9072 || (!htab->vxworks_p && h == htab->root.hgot))
9097 struct elf32_arm_link_hash_table *htab;
9099 htab = elf32_arm_hash_table (info);
9144 name = RELOC_SECTION (htab, ".plt");
9148 if (!htab->symbian_p)
9159 if (htab->symbian_p)
9165 RELOC_SECTION (htab, ".plt"));
9173 if (!htab->symbian_p)
9185 RELOC_SECTION (htab, ".plt"));
9203 if (htab->symbian_p)
9264 if (htab->vxworks_p)
9272 put_arm_insn (htab, output_bfd, plt0_entry[0],
9274 put_arm_insn (htab, output_bfd, plt0_entry[1],
9276 put_arm_insn (htab, output_bfd, plt0_entry[2],
9282 rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_ARM_ABS32);
9284 SWAP_RELOC_OUT (htab) (output_bfd, &rel,
9285 htab->srelplt2->contents);
9292 put_arm_insn (htab, output_bfd, plt0_entry[0],
9294 put_arm_insn (htab, output_bfd, plt0_entry[1],
9296 put_arm_insn (htab, output_bfd, plt0_entry[2],
9298 put_arm_insn (htab, output_bfd, plt0_entry[3],
9316 if (htab->vxworks_p && !info->shared && htab->splt->size > 0)
9323 num_plts = ((htab->splt->size - htab->plt_header_size)
9324 / htab->plt_entry_size);
9325 p = htab->srelplt2->contents + RELOC_SIZE (htab);
9331 SWAP_RELOC_IN (htab) (output_bfd, p, &rel);
9332 rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_ARM_ABS32);
9333 SWAP_RELOC_OUT (htab) (output_bfd, &rel, p);
9334 p += RELOC_SIZE (htab);
9336 SWAP_RELOC_IN (htab) (output_bfd, p, &rel);
9337 rel.r_info = ELF32_R_INFO (htab->root.hplt->indx, R_ARM_ABS32);
9338 SWAP_RELOC_OUT (htab) (output_bfd, &rel, p);
9339 p += RELOC_SIZE (htab);
9615 struct elf32_arm_link_hash_table *htab;
9618 htab = elf32_arm_hash_table (osi->info);
9638 struct elf32_arm_link_hash_table *htab;
9642 htab = elf32_arm_hash_table (osi->info);
9658 if (htab->symbian_p)
9665 else if (htab->vxworks_p)
9680 thumb_stub = eh->plt_thumb_refcount > 0 && !htab->use_blx;
9718 struct elf32_arm_link_hash_table *htab;
9722 htab = elf32_arm_hash_table (info);
9723 check_use_blx(htab);
9730 if (htab->arm_glue_size > 0)
9732 osi.sec = bfd_get_section_by_name (htab->bfd_of_glue_owner,
9737 if (info->shared || htab->root.is_relocatable_executable
9738 || htab->pic_veneer)
9740 else if (htab->use_blx)
9745 for (offset = 0; offset < htab->arm_glue_size; offset += size)
9753 if (htab->thumb_glue_size > 0)
9755 osi.sec = bfd_get_section_by_name (htab->bfd_of_glue_owner,
9762 for (offset = 0; offset < htab->thumb_glue_size; offset += size)
9770 if (!htab->splt || htab->splt->size == 0)
9774 htab->splt->output_section);
9775 osi.sec = htab->splt;
9778 if (htab->vxworks_p)
9789 else if (!htab->symbian_p)
9799 elf_link_hash_traverse (&htab->root, elf32_arm_output_plt_map, (void *) &osi);
10287 struct elf32_arm_link_hash_table *htab
10289 htab->use_rel = 0;
10290 htab->vxworks_p = 1;
10353 struct elf32_arm_link_hash_table *htab
10356 htab->plt_header_size = 0;
10358 htab->plt_entry_size = 4 * NUM_ELEM (elf32_arm_symbian_plt_entry);
10359 htab->symbian_p = 1;
10361 htab->use_blx = 1;
10362 htab->root.is_relocatable_executable = 1;