Lines Matching refs:secinfo

54   struct sec_merge_sec_info *secinfo;  member
127 ret->secinfo = NULL; in sec_merge_hash_newfunc()
265 unsigned int alignment, struct sec_merge_sec_info *secinfo) in sec_merge_add() argument
273 if (entry->secinfo == NULL) in sec_merge_add()
276 entry->secinfo = secinfo; in sec_merge_add()
291 struct sec_merge_sec_info *secinfo = entry->secinfo; in sec_merge_emit() local
292 asection *sec = secinfo->sec; in sec_merge_emit()
307 for (; entry != NULL && entry->secinfo == secinfo; entry = entry->next) in sec_merge_emit()
367 struct sec_merge_sec_info *secinfo; in _bfd_add_merge_section() local
416 if ((secinfo = sinfo->chain) in _bfd_add_merge_section()
417 && ! ((secinfo->sec->flags ^ sec->flags) & (SEC_MERGE | SEC_STRINGS)) in _bfd_add_merge_section()
418 && secinfo->sec->entsize == sec->entsize in _bfd_add_merge_section()
419 && secinfo->sec->alignment_power == sec->alignment_power in _bfd_add_merge_section()
420 && secinfo->sec->output_section == sec->output_section) in _bfd_add_merge_section()
450 secinfo = (struct sec_merge_sec_info *) *psecinfo; in _bfd_add_merge_section()
453 secinfo->next = sinfo->chain->next; in _bfd_add_merge_section()
454 sinfo->chain->next = secinfo; in _bfd_add_merge_section()
457 secinfo->next = secinfo; in _bfd_add_merge_section()
458 sinfo->chain = secinfo; in _bfd_add_merge_section()
459 secinfo->sec = sec; in _bfd_add_merge_section()
460 secinfo->psecinfo = psecinfo; in _bfd_add_merge_section()
461 secinfo->htab = sinfo->htab; in _bfd_add_merge_section()
462 secinfo->first_str = NULL; in _bfd_add_merge_section()
466 memset (secinfo->contents + sec->size, 0, sec->entsize); in _bfd_add_merge_section()
467 contents = secinfo->contents; in _bfd_add_merge_section()
481 struct sec_merge_sec_info *secinfo) in record_section() argument
483 asection *sec = secinfo->sec; in record_section()
491 end = secinfo->contents + sec->size; in record_section()
496 for (p = secinfo->contents; p < end; ) in record_section()
498 eltalign = p - secinfo->contents; in record_section()
503 secinfo); in record_section()
511 if (!nul && !((p - secinfo->contents) & mask)) in record_section()
515 (unsigned) mask + 1, secinfo); in record_section()
531 if (!nul && !((p - secinfo->contents) & mask)) in record_section()
535 (unsigned) mask + 1, secinfo); in record_section()
546 for (p = secinfo->contents; p < end; p += sec->entsize) in record_section()
548 entry = sec_merge_add (sinfo->htab, (char *) p, 1, secinfo); in record_section()
557 for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next) in record_section()
558 *secinfo->psecinfo = NULL; in record_section()
635 struct sec_merge_sec_info *secinfo; in merge_strings() local
692 secinfo = sinfo->htab->first->secinfo; in merge_strings()
695 if (e->secinfo != secinfo) in merge_strings()
697 secinfo->sec->size = size; in merge_strings()
698 secinfo = e->secinfo; in merge_strings()
702 if (e->secinfo->first_str == NULL) in merge_strings()
704 e->secinfo->first_str = e; in merge_strings()
712 secinfo->sec->size = size; in merge_strings()
724 e->secinfo = e->u.suffix->secinfo; in merge_strings()
729 return secinfo; in merge_strings()
745 struct sec_merge_sec_info *secinfo; in _bfd_merge_sections() local
752 secinfo = sinfo->chain; in _bfd_merge_sections()
753 sinfo->chain = secinfo->next; in _bfd_merge_sections()
754 secinfo->next = NULL; in _bfd_merge_sections()
758 for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next) in _bfd_merge_sections()
759 if (secinfo->sec->flags & SEC_EXCLUDE) in _bfd_merge_sections()
761 *secinfo->psecinfo = NULL; in _bfd_merge_sections()
763 (*remove_hook) (abfd, secinfo->sec); in _bfd_merge_sections()
767 if (!record_section (sinfo, secinfo)) in _bfd_merge_sections()
771 unsigned int opb = bfd_octets_per_byte (abfd, secinfo->sec); in _bfd_merge_sections()
773 align = (bfd_size_type) 1 << secinfo->sec->alignment_power; in _bfd_merge_sections()
774 if (((secinfo->sec->size / opb) & (align - 1)) != 0) in _bfd_merge_sections()
784 secinfo = merge_strings (sinfo); in _bfd_merge_sections()
785 if (!secinfo) in _bfd_merge_sections()
795 secinfo = NULL; in _bfd_merge_sections()
798 if (e->secinfo->first_str == NULL) in _bfd_merge_sections()
800 if (secinfo) in _bfd_merge_sections()
801 secinfo->sec->size = size; in _bfd_merge_sections()
802 e->secinfo->first_str = e; in _bfd_merge_sections()
808 secinfo = e->secinfo; in _bfd_merge_sections()
810 secinfo->sec->size = size; in _bfd_merge_sections()
816 secinfo->sec->size = (secinfo->sec->size + align - 1) & -align; in _bfd_merge_sections()
820 for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next) in _bfd_merge_sections()
821 if (secinfo->first_str == NULL) in _bfd_merge_sections()
822 secinfo->sec->flags |= SEC_EXCLUDE | SEC_KEEP; in _bfd_merge_sections()
833 struct sec_merge_sec_info *secinfo; in _bfd_write_merged_section() local
838 secinfo = (struct sec_merge_sec_info *) psecinfo; in _bfd_write_merged_section()
840 if (!secinfo) in _bfd_write_merged_section()
843 if (secinfo->first_str == NULL) in _bfd_write_merged_section()
865 if (! sec_merge_emit (output_bfd, secinfo->first_str, contents, in _bfd_write_merged_section()
880 struct sec_merge_sec_info *secinfo; in _bfd_merged_section_offset() local
885 secinfo = (struct sec_merge_sec_info *) psecinfo; in _bfd_merged_section_offset()
887 if (!secinfo) in _bfd_merged_section_offset()
897 return secinfo->first_str ? sec->size : 0; in _bfd_merged_section_offset()
900 if (secinfo->htab->strings) in _bfd_merged_section_offset()
904 p = secinfo->contents + offset - 1; in _bfd_merged_section_offset()
905 while (p >= secinfo->contents && *p) in _bfd_merged_section_offset()
911 p = secinfo->contents + (offset / sec->entsize) * sec->entsize; in _bfd_merged_section_offset()
913 while (p >= secinfo->contents) in _bfd_merged_section_offset()
929 p = secinfo->contents + (offset / sec->entsize) * sec->entsize; in _bfd_merged_section_offset()
931 entry = sec_merge_hash_lookup (secinfo->htab, (char *) p, 0, false); in _bfd_merged_section_offset()
934 if (! secinfo->htab->strings) in _bfd_merged_section_offset()
940 if (! secinfo->htab->first) in _bfd_merged_section_offset()
942 entry = secinfo->htab->first; in _bfd_merged_section_offset()
943 p = (secinfo->contents + (offset / sec->entsize + 1) * sec->entsize in _bfd_merged_section_offset()
947 *psec = entry->secinfo->sec; in _bfd_merged_section_offset()
948 return entry->u.index + (secinfo->contents + offset - p); in _bfd_merged_section_offset()