Home | History | Annotate | Download | only in src

Lines Matching full: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;
532 scninfo[shndx].grpid;
533 size_t oldgrpid = oldp->file->scninfo[oldp->scndx].grpid;
537 assert (SCNINFO_SHDR (fileinfo->scninfo[newgrpid].shdr).sh_type
539 assert (SCNINFO_SHDR (oldp->file->scninfo[oldgrpid].shdr).sh_type
542 if (! fileinfo->scninfo[newgrpid].comdat_group
543 || ! oldp->file->scninfo[oldgrpid].comdat_group)
546 if (strcmp (fileinfo->scninfo[newgrpid].symbols->name,
547 oldp->file->scninfo[oldgrpid].symbols->name) != 0)
666 SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_name);
691 SCNINFO_SHDR (oldfile->scninfo[shndx].shdr).sh_name);
768 struct scninfo *ignore;
769 mark_section_used (&fileinfo->scninfo[shndx], shndx, &ignore);
801 static struct scninfo *
805 struct scninfo *runp;
842 SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_name));
851 struct scninfo **grpscnp)
858 struct scninfo *grpscn = find_section_group (fileinfo, shndx, &data);
880 XElf_Shdr *shdr = &SCNINFO_SHDR (fileinfo->scninfo[idx].shdr);
882 if (fileinfo->scninfo[idx].grpid != grpscn->grpid)
898 SCNINFO_SHDR (fileinfo->scninfo[shdr->sh_info].shdr).sh_name)))))
900 struct scninfo *ignore;
902 mark_section_used (&fileinfo->scninfo[idx], idx, &ignore);
909 mark_section_used (struct scninfo *scninfo, Elf32_Word shndx,
910 struct scninfo **grpscnp)
912 if (likely (scninfo->used))
917 scninfo->used = true;
920 XElf_Shdr *shdr = &SCNINFO_SHDR (scninfo->shdr);
922 if (unlikely (scninfo->shdr == NULL))
924 if (unlikely (scninfo->shdr.sh_type == SHT_NULL))
928 shdr = xelf_getshdr (scninfo->scn, scninfo->shdr);
930 xelf_getshdr_copy (scninfo->scn, shdr, scninfo->shdr);
941 struct scninfo *ignore;
942 mark_section_used (&scninfo->fileinfo->scninfo[shdr->sh_link],
949 struct scninfo *ignore;
950 mark_section_used (&scninfo->fileinfo->scninfo[shdr->sh_info],
956 mark_section_group (scninfo->fileinfo, shndx, grpscnp);
965 add_section (struct usedfiles *fileinfo, struct scninfo *scninfo)
970 XElf_Shdr *shdr = &SCNINFO_SHDR (scninfo->shdr);
971 struct scninfo *grpscn = NULL;
982 if (!scninfo->used
992 mark_section_used (scninfo, elf_ndxscn (scninfo->scn), &grpscn);
997 grpscn = find_section_group (fileinfo, elf_ndxscn (scninfo->scn),
1036 struct scninfo *runp = queued->last;
1041 struct scninfo *grpscn2
1049 scninfo->unused_comdat = is_comdat = true;
1063 scninfo->next = queued->last->next;
1064 queued->last = queued->last->next = scninfo;
1084 queued->last = scninfo->next = scninfo;
1123 fileinfo->scninfo = (struct scninfo *)
1124 obstack_calloc (&ld_state.smem, scncnt * sizeof (struct scninfo));
1134 fileinfo->scninfo[cnt].scn = elf_getscn (fileinfo->elf, cnt);
1139 if (fileinfo->scninfo[cnt].shdr == NULL)
1141 if (fileinfo->scninfo[cnt].shdr.sh_type == SHT_NULL)
1145 shdr = xelf_getshdr (fileinfo->scninfo[cnt].scn,
1146 fileinfo->scninfo[cnt].shdr);
1148 xelf_getshdr_copy (fileinfo->scninfo[cnt].scn, shdr,
1149 fileinfo->scninfo[cnt].shdr);
1160 shdr = &SCNINFO_SHDR (fileinfo->scninfo[cnt].shdr);
1162 Elf_Data *data = elf_getdata (fileinfo->scninfo[cnt].scn, NULL);
1170 fileinfo->scninfo[cnt].fileinfo = fileinfo;
1239 fileinfo->dynscn = fileinfo->scninfo[cnt].scn;
1252 fileinfo->scninfo[cnt].next = fileinfo->groups;
1253 fileinfo->scninfo[cnt].grpid = cnt;
1254 fileinfo->groups = &fileinfo->scninfo[cnt];
1258 fileinfo->scninfo[cnt].symbols = (struct symbol *)
1274 struct symbol *symbol = fileinfo->scninfo[cnt].symbols;
1299 if (fileinfo->scninfo[cnt].symbols->name == NULL)
1303 elf_ndxscn (fileinfo->scninfo[cnt].scn),
1314 fileinfo->fname, elf_ndxscn (fileinfo->scninfo[cnt].scn),
1321 fileinfo->scninfo[cnt].comdat_group = true;
1329 inner, elf_ndxscn (fileinfo->scninfo[cnt].scn),
1334 fileinfo->scninfo[grpdata[inner]].grpid = cnt;
1340 assert (fileinfo->scninfo[cnt].used == false);
1376 add_section (fileinfo, &fileinfo->scninfo[cnt]);
1427 && ((SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_flags
1444 if (fileinfo->scninfo[shndx].symbols == NULL)
1445 fileinfo->scninfo[shndx].symbols = newp->next_in_scn
1450 = fileinfo->scninfo[shndx].symbols->next_in_scn;
1451 fileinfo->scninfo[shndx].symbols
1452 = fileinfo->scninfo[shndx].symbols->next_in_scn = newp;
1499 && fileinfo->scninfo[shndx].unused_comdat)
1616 struct scninfo *ignore;
1625 mark_section_used (&fileinfo->scninfo[shndx], shndx, &ignore);
1629 if (SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_flags
1632 if (fileinfo->scninfo[shndx].symbols == NULL)
1633 fileinfo->scninfo[shndx].symbols = newp->next_in_scn
1638 = fileinfo->scninfo[shndx].symbols->next_in_scn;
1639 fileinfo->scninfo[shndx].symbols
1640 = fileinfo->scninfo[shndx].symbols->next_in_scn = newp;
2768 XElf_Off symalign = MAX (SCNINFO_SHDR (runp->file->scninfo[runp->scndx].shdr).sh_addralign, 1);
2831 struct scninfo *prevp;
2832 struct scninfo *runp;
2833 struct scninfo *notused;
2889 struct scninfo *found = runp;
3051 struct scninfo *si = (struct scninfo *)
3055 struct scninfo *si = (struct scninfo *) obstack_calloc (&ld_state.smem,
3081 struct scninfo *si = (struct scninfo *)
3085 struct scninfo *si = (struct scninfo *) obstack_calloc (&ld_state.smem,
3137 struct scninfo *list = NULL;
3150 struct scninfo *first = list->next;
3197 struct scninfo *runp;
3209 here_groupidx = runp->fileinfo->scninfo[runp->grpid].outscnndx;
3244 = runp->fileinfo->scninfo[runp->grpid].symbols;
3271 if (runp->fileinfo->scninfo[runp->grpid].outscnndx == 0)
3272 runp->fileinfo->scninfo[runp->grpid].outscnndx = here_groupidx;
3274 assert (runp->fileinfo->scninfo[runp->grpid].outscnndx
4307 struct scninfo *scninfo;
4439 struct scninfo *runp;
4753 newp->scninfo = head->last->next;
4860 locdata = elf_rawdata (file->scninfo[symrunp->scndx].scn,
4868 file->scninfo[symrunp->scndx].outscnndx = head->scnidx;
4931 locdata = elf_rawdata (file->scninfo[symrunp->scndx].scn,
4940 file->scninfo[symrunp->scndx].outscnndx = head->scnidx;
5010 locdata = elf_rawdata (file->scninfo[symrunp->scndx].scn,
5019 file->scninfo[symrunp->scndx].outscnndx = head->scnidx;
5242 assert (file->scninfo[xndx].allsectionsidx
5244 file->symindirect[cnt] = ld_state.allsections[file->scninfo[xndx].allsectionsidx]->scnsymidx;
5289 sym->st_value += file->scninfo[xndx].offset;
5291 assert (file->scninfo[xndx].outscnndx < SHN_LORESERVE
5292 || file->scninfo[xndx].outscnndx > SHN_HIRESERVE);
5293 if (unlikely (file->scninfo[xndx].outscnndx > SHN_LORESERVE))
5303 xndx = file->scninfo[xndx].outscnndx;
5310 sym->st_shndx = file->scninfo[xndx].outscnndx;
6322 struct scninfo *isect;
6323 struct scninfo *first;
6883 rellist->scninfo->fileinfo->scninfo[SCNINFO_SHDR (rellist->scninfo->shdr).sh_info].outscnndx;
6888 scninfo, dblindirect);
6966 struct scninfo *firstp,
7121 ld_generic_count_relocations (struct ld_state *statep, struct scninfo *scninfo)