Lines Matching refs:sec

338 #define mmo_section_data(sec) \
339 ((struct mmo_section_data_struct *) (sec)->used_by_bfd)
354 asection *sec;
447 asection *sec = bfd_get_section_by_name (abfd, secname);
449 if (sec == NULL)
461 sec = bfd_make_section (abfd, newsecname);
464 return sec;
604 mmo_find_sec_w_addr (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *p)
607 bfd_vma vma = bfd_get_section_vma (abfd, sec);
610 if ((bfd_get_section_flags (abfd, sec) & (SEC_LOAD | SEC_ALLOC))
614 if (infop->addr >= vma && infop->addr < vma + sec->size)
615 infop->sec = sec;
619 mmo_find_sec_w_addr_grow (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *p)
622 bfd_vma vma = bfd_get_section_vma (abfd, sec);
625 if ((bfd_get_section_flags (abfd, sec) & (SEC_LOAD | SEC_ALLOC))
630 infop->sec = sec;
635 can't deduce a section, make one up as ".MMIX.sec.N", where N is an
641 asection *sec = NULL;
642 char sec_name[sizeof (".MMIX.sec.") + 20];
646 info.sec = NULL;
651 if (info.sec != NULL)
652 return info.sec;
660 sec = bfd_make_section_old_way (abfd, MMO_TEXT_SECTION_NAME);
662 if (sec == NULL)
665 if (! sec->user_set_vma)
666 bfd_set_section_vma (abfd, sec, vma);
667 if (! bfd_set_section_flags (abfd, sec,
668 bfd_get_section_flags (abfd, sec)
674 sec = bfd_make_section_old_way (abfd, MMO_DATA_SECTION_NAME);
676 if (sec == NULL)
679 if (! sec->user_set_vma)
680 bfd_set_section_vma (abfd, sec, vma);
681 if (! bfd_set_section_flags (abfd, sec,
682 bfd_get_section_flags (abfd, sec)
689 if (info.sec != NULL)
690 return info.sec;
693 sprintf (sec_name, ".MMIX.sec.%d", abfd->tdata.mmo_data->sec_no++);
694 sec = mmo_make_section (abfd, sec_name);
695 if (! sec->user_set_vma)
696 bfd_set_section_vma (abfd, sec, vma);
698 if (! bfd_set_section_flags (abfd, sec,
699 bfd_get_section_flags (abfd, sec)
702 return sec;
708 mmo_xore_64 (asection *sec, bfd_vma vma, bfd_vma value)
710 bfd_byte *loc = mmo_get_loc (sec, vma, 8);
711 bfd_vma prev = bfd_get_64 (sec->owner, loc);
714 bfd_put_64 (sec->owner, value, loc);
720 mmo_xore_32 (asection *sec, bfd_vma vma, unsigned int value)
722 bfd_byte *loc = mmo_get_loc (sec, vma, 4);
723 unsigned int prev = bfd_get_32 (sec->owner, loc);
726 bfd_put_32 (sec->owner, value, loc);
732 mmo_xore_16 (asection *sec, bfd_vma vma, unsigned int value)
734 bfd_byte *loc = mmo_get_loc (sec, vma, 2);
735 unsigned int prev = bfd_get_16 (sec->owner, loc);
738 bfd_put_16 (sec->owner, value, loc);
932 asection *sec;
939 sec = mmo_make_section (abfd, secname);
941 return sec;
951 asection *sec;
1057 sec = mmo_make_section (abfd, secname);
1059 if (sec == NULL)
1075 if (! bfd_set_section_flags (abfd, sec,
1077 | bfd_get_section_flags (abfd, sec)
1079 || ! bfd_set_section_size (abfd, sec, sec->size + section_length)
1081 || (! sec->user_set_vma
1082 && ! bfd_set_section_vma (abfd, sec, section_vma)))
1090 if (mmo_section_data (sec)->tail != NULL)
1091 mmo_section_data (sec)->tail->next = loc;
1093 mmo_section_data (sec)->head = loc;
1094 mmo_section_data (sec)->tail = loc;
1097 return sec;
1415 mmo_get_loc (asection *sec, bfd_vma vma, int size)
1418 struct mmo_section_data_struct *sdatap = mmo_section_data (sec);
1444 if (vma + size > sec->vma + sec->size)
1445 sec->size += (vma + size) - (sec->vma + sec->size);
1466 bfd_zalloc (sec->owner, sizeof (mmo_data_list_type) + allocated_size);
1498 if (! bfd_set_section_flags (sec->owner, sec,
1499 bfd_get_section_flags (sec->owner, sec)
1507 if (vma + size > sec->vma + sec->size)
1508 sec->size += (vma + size) - (sec->vma + sec->size);
1515 mmo_map_set_sizes (bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
1518 sec->lma = sec->vma;
1530 asection *sec = bfd_make_section_old_way (abfd, MMO_TEXT_SECTION_NAME);
1557 sec = non_spec_sec;
1584 mmo_xore_32 (sec, vma, bfd_get_32 (abfd, buf));
1618 sec = mmo_decide_section (abfd, vma);
1619 if (sec == NULL)
1627 sec = mmo_decide_section (abfd, vma);
1628 if (sec == NULL)
1807 non_spec_sec = sec;
1809 sec = mmo_get_spec_section (abfd, y * 256 + z);
1810 if (sec == NULL)
1813 vma = sec->vma;
1958 mmo_xore_32 (sec, vma & ~3, bfd_get_32 (abfd, buf));
1983 sec = bfd_get_section_by_name (abfd, MMO_TEXT_SECTION_NAME);
1984 if (sec != NULL
1985 && (bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS)
1986 && ! bfd_set_section_flags (abfd, sec,
1987 bfd_get_section_flags (abfd, sec)
1991 sec = bfd_get_section_by_name (abfd, MMO_DATA_SECTION_NAME);
1992 if (sec != NULL
1993 && (bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS)
1994 && ! bfd_set_section_flags (abfd, sec,
1995 bfd_get_section_flags (abfd, sec)
2030 asection *sec,
2047 loc = mmo_get_loc (sec, sec->vma + offset, chunk_size);
2260 mmo_internal_write_post (bfd *abfd, int z, asection *sec)
2268 bfd_byte *data = mmo_get_loc (sec, i * 8, 8);
2343 mmo_has_leading_or_trailing_zero_tetra_p (bfd *abfd, asection *sec)
2345 bfd_vma secaddr = bfd_get_section_vma (abfd, sec);
2347 if (sec->size < 4)
2350 if (bfd_get_32 (abfd, mmo_get_loc (sec, secaddr, 4)) == 0
2352 mmo_get_loc (sec, secaddr + sec->size - 4, 4)) == 0)
2361 mmo_internal_write_section (bfd *abfd, asection *sec)
2375 if (strcmp (sec->name, MMO_TEXT_SECTION_NAME) == 0)
2377 bfd_vma secaddr = bfd_get_section_vma (abfd, sec);
2383 if (sec->size != 0
2384 && (secaddr + sec->size >= (bfd_vma) 1 << 56
2386 || (sec->size & 3) != 0
2387 || mmo_has_leading_or_trailing_zero_tetra_p (abfd, sec)))
2389 if (!mmo_write_section_description (abfd, sec))
2394 return mmo_write_loc_chunk_list (abfd, mmo_section_data (sec)->head);
2396 else if (strcmp (sec->name, MMO_DATA_SECTION_NAME) == 0)
2398 bfd_vma secaddr = bfd_get_section_vma (abfd, sec);
2401 if (sec->size != 0
2403 || secaddr + sec->size >= (bfd_vma) 0x21 << 56
2405 || (sec->size & 3) != 0
2406 || mmo_has_leading_or_trailing_zero_tetra_p (abfd, sec)))
2408 if (!mmo_write_section_description (abfd, sec))
2412 return mmo_write_loc_chunk_list (abfd, mmo_section_data (sec)->head);
2414 else if (strcmp (sec->name, MMIX_REG_CONTENTS_SECTION_NAME) == 0)
2422 else if (strncmp (sec->name, MMIX_OTHER_SPEC_SECTION_PREFIX,
2425 int n = atoi (sec->name + strlen (MMIX_OTHER_SPEC_SECTION_PREFIX));
2428 && mmo_write_chunk_list (abfd, mmo_section_data (sec)->head));
2432 else if ((bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS) != 0
2433 && sec->size != 0)
2435 if (!mmo_write_section_description (abfd, sec))
2440 if (bfd_get_section_flags (abfd, sec) & SEC_LOAD)
2443 mmo_section_data (sec)->head));
2445 && mmo_write_chunk_list (abfd, mmo_section_data (sec)->head));
2455 mmo_write_section_description (bfd *abfd, asection *sec)
2489 a new section is formed, named <<.MMIX.sec.@var{n}>>. Here,
2551 mmo_write_tetra (abfd, (strlen (sec->name) + 3) / 4);
2552 mmo_write_chunk (abfd, (bfd_byte *) sec->name, strlen (sec->name));
2560 (bfd_get_section_flags (abfd, sec)));
2561 mmo_write_octa (abfd, sec->size);
2562 mmo_write_octa (abfd, bfd_get_section_vma (abfd, sec));
2569 mmo_set_section_contents (bfd *abfd ATTRIBUTE_UNUSED, sec_ptr sec,
2584 loc = mmo_get_loc (sec, sec->vma + offset, chunk_size);
3059 mmo_write_section_unless_reg_contents (bfd *abfd, asection *sec, void *p)
3066 if (strcmp (sec->name, MMIX_REG_CONTENTS_SECTION_NAME) == 0)
3068 infop->reg_section = sec;
3073 if (strcmp (sec->name, MMIX_REG_SECTION_NAME) == 0)
3075 if (bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS)
3083 bfd_get_filename (abfd), sec->name);
3092 infop->retval = mmo_internal_write_section (abfd, sec);
3118 asection *sec = wsecinfo.reg_section;
3119 unsigned int z = (unsigned int) (sec->vma / 8);
3124 if (z < 32 || z >= 255 || (sec->vma & 7) != 0
3125 || sec->vma != 256 * 8 - sec->size - 8)
3129 if (sec->size == 0)
3134 else if (sec->vma > (256 - 32) * 8)
3140 (long) sec->size);
3146 (long) sec->size,
3147 (unsigned long) (sec->vma >> 32), (unsigned long) (sec->vma));
3152 if (! mmo_internal_write_post (abfd, z, sec))
3167 asection *sec ATTRIBUTE_UNUSED)