Home | History | Annotate | Download | only in src

Lines Matching refs:scninfo

83 					 struct scninfo *firstp,
102 struct scninfo *scninfo);
107 static void mark_section_used (struct scninfo *scninfo, Elf32_Word shndx,
108 struct scninfo **grpscnp);
170 linked_from_dso_p (struct scninfo *scninfo, size_t symidx)
172 struct usedfiles *file = scninfo->fileinfo;
534 size_t newgrpid = fileinfo->scninfo[shndx].grpid;
535 size_t oldgrpid = oldp->file->scninfo[oldp->scndx].grpid;
539 assert (SCNINFO_SHDR (fileinfo->scninfo[newgrpid].shdr).sh_type
541 assert (SCNINFO_SHDR (oldp->file->scninfo[oldgrpid].shdr).sh_type
544 if (! fileinfo->scninfo[newgrpid].comdat_group
545 || ! oldp->file->scninfo[oldgrpid].comdat_group)
548 if (strcmp (fileinfo->scninfo[newgrpid].symbols->name,
549 oldp->file->scninfo[oldgrpid].symbols->name) != 0)
668 SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_name);
693 SCNINFO_SHDR (oldfile->scninfo[shndx].shdr).sh_name);
770 struct scninfo *ignore;
771 mark_section_used (&fileinfo->scninfo[shndx], shndx, &ignore);
803 static struct scninfo *
807 struct scninfo *runp;
844 SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_name));
853 struct scninfo **grpscnp)
860 struct scninfo *grpscn = find_section_group (fileinfo, shndx, &data);
882 XElf_Shdr *shdr = &SCNINFO_SHDR (fileinfo->scninfo[idx].shdr);
884 if (fileinfo->scninfo[idx].grpid != grpscn->grpid)
900 SCNINFO_SHDR (fileinfo->scninfo[shdr->sh_info].shdr).sh_name)))))
902 struct scninfo *ignore;
904 mark_section_used (&fileinfo->scninfo[idx], idx, &ignore);
911 mark_section_used (struct scninfo *scninfo, Elf32_Word shndx,
912 struct scninfo **grpscnp)
914 if (likely (scninfo->used))
919 scninfo->used = true;
922 XElf_Shdr *shdr = &SCNINFO_SHDR (scninfo->shdr);
924 if (unlikely (scninfo->shdr == NULL))
926 if (unlikely (scninfo->shdr.sh_type == SHT_NULL))
930 shdr = xelf_getshdr (scninfo->scn, scninfo->shdr);
932 xelf_getshdr_copy (scninfo->scn, shdr, scninfo->shdr);
943 struct scninfo *ignore;
944 mark_section_used (&scninfo->fileinfo->scninfo[shdr->sh_link],
951 struct scninfo *ignore;
952 mark_section_used (&scninfo->fileinfo->scninfo[shdr->sh_info],
958 mark_section_group (scninfo->fileinfo, shndx, grpscnp);
967 add_section (struct usedfiles *fileinfo, struct scninfo *scninfo)
972 XElf_Shdr *shdr = &SCNINFO_SHDR (scninfo->shdr);
973 struct scninfo *grpscn = NULL;
984 if (!scninfo->used
994 mark_section_used (scninfo, elf_ndxscn (scninfo->scn), &grpscn);
999 grpscn = find_section_group (fileinfo, elf_ndxscn (scninfo->scn),
1038 struct scninfo *runp = queued->last;
1043 struct scninfo *grpscn2
1051 scninfo->unused_comdat = is_comdat = true;
1065 scninfo->next = queued->last->next;
1066 queued->last = queued->last->next = scninfo;
1086 queued->last = scninfo->next = scninfo;
1125 fileinfo->scninfo = (struct scninfo *)
1126 obstack_calloc (&ld_state.smem, scncnt * sizeof (struct scninfo));
1136 fileinfo->scninfo[cnt].scn = elf_getscn (fileinfo->elf, cnt);
1141 if (fileinfo->scninfo[cnt].shdr == NULL)
1143 if (fileinfo->scninfo[cnt].shdr.sh_type == SHT_NULL)
1147 shdr = xelf_getshdr (fileinfo->scninfo[cnt].scn,
1148 fileinfo->scninfo[cnt].shdr);
1150 xelf_getshdr_copy (fileinfo->scninfo[cnt].scn, shdr,
1151 fileinfo->scninfo[cnt].shdr);
1162 shdr = &SCNINFO_SHDR (fileinfo->scninfo[cnt].shdr);
1164 Elf_Data *data = elf_getdata (fileinfo->scninfo[cnt].scn, NULL);
1172 fileinfo->scninfo[cnt].fileinfo = fileinfo;
1241 fileinfo->dynscn = fileinfo->scninfo[cnt].scn;
1254 fileinfo->scninfo[cnt].next = fileinfo->groups;
1255 fileinfo->scninfo[cnt].grpid = cnt;
1256 fileinfo->groups = &fileinfo->scninfo[cnt];
1260 fileinfo->scninfo[cnt].symbols = (struct symbol *)
1276 struct symbol *symbol = fileinfo->scninfo[cnt].symbols;
1301 if (fileinfo->scninfo[cnt].symbols->name == NULL)
1305 elf_ndxscn (fileinfo->scninfo[cnt].scn),
1316 fileinfo->fname, elf_ndxscn (fileinfo->scninfo[cnt].scn),
1323 fileinfo->scninfo[cnt].comdat_group = true;
1331 inner, elf_ndxscn (fileinfo->scninfo[cnt].scn),
1336 fileinfo->scninfo[grpdata[inner]].grpid = cnt;
1342 assert (fileinfo->scninfo[cnt].used == false);
1378 add_section (fileinfo, &fileinfo->scninfo[cnt]);
1429 && ((SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_flags
1446 if (fileinfo->scninfo[shndx].symbols == NULL)
1447 fileinfo->scninfo[shndx].symbols = newp->next_in_scn
1452 = fileinfo->scninfo[shndx].symbols->next_in_scn;
1453 fileinfo->scninfo[shndx].symbols
1454 = fileinfo->scninfo[shndx].symbols->next_in_scn = newp;
1501 && fileinfo->scninfo[shndx].unused_comdat)
1618 struct scninfo *ignore;
1627 mark_section_used (&fileinfo->scninfo[shndx], shndx, &ignore);
1631 if (SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_flags
1634 if (fileinfo->scninfo[shndx].symbols == NULL)
1635 fileinfo->scninfo[shndx].symbols = newp->next_in_scn
1640 = fileinfo->scninfo[shndx].symbols->next_in_scn;
1641 fileinfo->scninfo[shndx].symbols
1642 = fileinfo->scninfo[shndx].symbols->next_in_scn = newp;
2770 XElf_Off symalign = MAX (SCNINFO_SHDR (runp->file->scninfo[runp->scndx].shdr).sh_addralign, 1);
2833 struct scninfo *prevp;
2834 struct scninfo *runp;
2835 struct scninfo *notused;
2891 struct scninfo *found = runp;
3053 struct scninfo *si = (struct scninfo *)
3057 struct scninfo *si = (struct scninfo *) obstack_calloc (&ld_state.smem,
3083 struct scninfo *si = (struct scninfo *)
3087 struct scninfo *si = (struct scninfo *) obstack_calloc (&ld_state.smem,
3139 struct scninfo *list = NULL;
3152 struct scninfo *first = list->next;
3199 struct scninfo *runp;
3211 here_groupidx = runp->fileinfo->scninfo[runp->grpid].outscnndx;
3246 = runp->fileinfo->scninfo[runp->grpid].symbols;
3273 if (runp->fileinfo->scninfo[runp->grpid].outscnndx == 0)
3274 runp->fileinfo->scninfo[runp->grpid].outscnndx = here_groupidx;
3276 assert (runp->fileinfo->scninfo[runp->grpid].outscnndx
4309 struct scninfo *scninfo;
4441 struct scninfo *runp;
4755 newp->scninfo = head->last->next;
4862 locdata = elf_rawdata (file->scninfo[symrunp->scndx].scn,
4870 file->scninfo[symrunp->scndx].outscnndx = head->scnidx;
4933 locdata = elf_rawdata (file->scninfo[symrunp->scndx].scn,
4942 file->scninfo[symrunp->scndx].outscnndx = head->scnidx;
5012 locdata = elf_rawdata (file->scninfo[symrunp->scndx].scn,
5021 file->scninfo[symrunp->scndx].outscnndx = head->scnidx;
5244 assert (file->scninfo[xndx].allsectionsidx
5246 file->symindirect[cnt] = ld_state.allsections[file->scninfo[xndx].allsectionsidx]->scnsymidx;
5291 sym->st_value += file->scninfo[xndx].offset;
5293 assert (file->scninfo[xndx].outscnndx < SHN_LORESERVE
5294 || file->scninfo[xndx].outscnndx > SHN_HIRESERVE);
5295 if (unlikely (file->scninfo[xndx].outscnndx > SHN_LORESERVE))
5305 xndx = file->scninfo[xndx].outscnndx;
5312 sym->st_shndx = file->scninfo[xndx].outscnndx;
6325 struct scninfo *isect;
6326 struct scninfo *first;
6886 rellist->scninfo->fileinfo->scninfo[SCNINFO_SHDR (rellist->scninfo->shdr).sh_info].outscnndx;
6891 RELOCATE_SECTION (statep, outscn, rellist->scninfo, dblindirect);
6969 struct scninfo *firstp,
7124 ld_generic_count_relocations (struct ld_state *statep, struct scninfo *scninfo)