Lines Matching refs:shdr

347 	Elf_Shdr *shdr;  in link_elf_link_preload()  local
366 shdr = (Elf_Shdr *)preload_search_info(modptr, MODINFO_METADATA | in link_elf_link_preload()
371 shdr == NULL) in link_elf_link_preload()
393 ef->e_shdr = shdr; in link_elf_link_preload()
399 switch (shdr[i].sh_type) { in link_elf_link_preload()
408 if (shdr[i].sh_addr == 0) in link_elf_link_preload()
414 symstrindex = shdr[i].sh_link; in link_elf_link_preload()
421 if (shdr[shdr[i].sh_info].sh_addr == 0) in link_elf_link_preload()
426 if (shdr[shdr[i].sh_info].sh_addr == 0) in link_elf_link_preload()
436 shdr[symstrindex].sh_type != SHT_STRTAB || shstrindex == 0 || in link_elf_link_preload()
438 shdr[shstrindex].sh_type != SHT_STRTAB) { in link_elf_link_preload()
464 if (shdr[i].sh_addr != 0 && (off == 0 || shdr[i].sh_addr < off)) in link_elf_link_preload()
465 off = shdr[i].sh_addr; in link_elf_link_preload()
468 if (shdr[i].sh_addr != 0) in link_elf_link_preload()
469 shdr[i].sh_addr = shdr[i].sh_addr - off + in link_elf_link_preload()
473 ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym); in link_elf_link_preload()
474 ef->ddbsymtab = (Elf_Sym *)shdr[symtabindex].sh_addr; in link_elf_link_preload()
475 ef->ddbstrcnt = shdr[symstrindex].sh_size; in link_elf_link_preload()
476 ef->ddbstrtab = (char *)shdr[symstrindex].sh_addr; in link_elf_link_preload()
477 ef->shstrcnt = shdr[shstrindex].sh_size; in link_elf_link_preload()
478 ef->shstrtab = (char *)shdr[shstrindex].sh_addr; in link_elf_link_preload()
485 switch (shdr[i].sh_type) { in link_elf_link_preload()
493 if (shdr[i].sh_addr == 0) in link_elf_link_preload()
495 ef->progtab[pb].addr = (void *)shdr[i].sh_addr; in link_elf_link_preload()
496 if (shdr[i].sh_type == SHT_PROGBITS) in link_elf_link_preload()
499 else if (shdr[i].sh_type == SHT_X86_64_UNWIND) in link_elf_link_preload()
502 else if (shdr[i].sh_type == SHT_INIT_ARRAY) in link_elf_link_preload()
504 else if (shdr[i].sh_type == SHT_FINI_ARRAY) in link_elf_link_preload()
508 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_link_preload()
509 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_link_preload()
511 if (ef->shstrtab && shdr[i].sh_name != 0) in link_elf_link_preload()
513 ef->shstrtab + shdr[i].sh_name; in link_elf_link_preload()
518 dpcpu = dpcpu_alloc(shdr[i].sh_size); in link_elf_link_preload()
523 (uintmax_t)shdr[i].sh_size, in link_elf_link_preload()
530 dpcpu_copy(dpcpu, shdr[i].sh_size); in link_elf_link_preload()
537 vnet_data = vnet_data_alloc(shdr[i].sh_size); in link_elf_link_preload()
542 (uintmax_t)shdr[i].sh_size, in link_elf_link_preload()
555 shdr[i].sh_type == SHT_INIT_ARRAY) { in link_elf_link_preload()
562 lf->ctors_size = shdr[i].sh_size; in link_elf_link_preload()
566 shdr[i].sh_type == SHT_FINI_ARRAY) { in link_elf_link_preload()
573 lf->dtors_size = shdr[i].sh_size; in link_elf_link_preload()
587 if (shdr[shdr[i].sh_info].sh_addr == 0) in link_elf_link_preload()
589 ef->reltab[rl].rel = (Elf_Rel *)shdr[i].sh_addr; in link_elf_link_preload()
590 ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); in link_elf_link_preload()
591 ef->reltab[rl].sec = shdr[i].sh_info; in link_elf_link_preload()
595 if (shdr[shdr[i].sh_info].sh_addr == 0) in link_elf_link_preload()
597 ef->relatab[ra].rela = (Elf_Rela *)shdr[i].sh_addr; in link_elf_link_preload()
599 shdr[i].sh_size / sizeof(Elf_Rela); in link_elf_link_preload()
600 ef->relatab[ra].sec = shdr[i].sh_info; in link_elf_link_preload()
719 Elf_Shdr *shdr; in link_elf_load_file() local
736 shdr = NULL; in link_elf_load_file()
818 shdr = malloc(nbytes, M_LINKER, M_WAITOK); in link_elf_load_file()
819 ef->e_shdr = shdr; in link_elf_load_file()
820 error = vn_rdwr(UIO_READ, nd->ni_vp, (caddr_t)shdr, nbytes, in link_elf_load_file()
835 if (shdr[i].sh_size == 0) in link_elf_load_file()
837 switch (shdr[i].sh_type) { in link_elf_load_file()
845 if ((shdr[i].sh_flags & SHF_ALLOC) == 0) in link_elf_load_file()
852 symstrindex = shdr[i].sh_link; in link_elf_load_file()
859 if ((shdr[shdr[i].sh_info].sh_flags & SHF_ALLOC) == 0) in link_elf_load_file()
864 if ((shdr[shdr[i].sh_info].sh_flags & SHF_ALLOC) == 0) in link_elf_load_file()
885 shdr[symstrindex].sh_type != SHT_STRTAB) { in link_elf_load_file()
908 ef->ddbsymcnt = shdr[symtabindex].sh_size / sizeof(Elf_Sym); in link_elf_load_file()
909 ef->ddbsymtab = malloc(shdr[symtabindex].sh_size, M_LINKER, M_WAITOK); in link_elf_load_file()
911 shdr[symtabindex].sh_size, shdr[symtabindex].sh_offset, in link_elf_load_file()
922 ef->ddbstrcnt = shdr[symstrindex].sh_size; in link_elf_load_file()
923 ef->ddbstrtab = malloc(shdr[symstrindex].sh_size, M_LINKER, M_WAITOK); in link_elf_load_file()
925 shdr[symstrindex].sh_size, shdr[symstrindex].sh_offset, in link_elf_load_file()
938 shdr[hdr->e_shstrndx].sh_type == SHT_STRTAB) { in link_elf_load_file()
940 ef->shstrcnt = shdr[shstrindex].sh_size; in link_elf_load_file()
941 ef->shstrtab = malloc(shdr[shstrindex].sh_size, M_LINKER, in link_elf_load_file()
944 shdr[shstrindex].sh_size, shdr[shstrindex].sh_offset, in link_elf_load_file()
958 if (shdr[i].sh_size == 0) in link_elf_load_file()
960 switch (shdr[i].sh_type) { in link_elf_load_file()
968 if ((shdr[i].sh_flags & SHF_ALLOC) == 0) in link_elf_load_file()
970 alignmask = shdr[i].sh_addralign - 1; in link_elf_load_file()
973 mapsize += shdr[i].sh_size; in link_elf_load_file()
1037 if (shdr[i].sh_size == 0) in link_elf_load_file()
1039 switch (shdr[i].sh_type) { in link_elf_load_file()
1047 if ((shdr[i].sh_flags & SHF_ALLOC) == 0) in link_elf_load_file()
1049 alignmask = shdr[i].sh_addralign - 1; in link_elf_load_file()
1052 if (ef->shstrtab != NULL && shdr[i].sh_name != 0) { in link_elf_load_file()
1054 ef->shstrtab + shdr[i].sh_name; in link_elf_load_file()
1056 shdr[i].sh_type == SHT_INIT_ARRAY) { in link_elf_load_file()
1065 shdr[i].sh_size; in link_elf_load_file()
1069 shdr[i].sh_type == SHT_FINI_ARRAY) { in link_elf_load_file()
1078 shdr[i].sh_size; in link_elf_load_file()
1081 } else if (shdr[i].sh_type == SHT_PROGBITS) in link_elf_load_file()
1084 else if (shdr[i].sh_type == SHT_X86_64_UNWIND) in link_elf_load_file()
1092 dpcpu_alloc(shdr[i].sh_size); in link_elf_load_file()
1097 (uintmax_t)shdr[i].sh_size, in link_elf_load_file()
1105 vnet_data_alloc(shdr[i].sh_size); in link_elf_load_file()
1110 (uintmax_t)shdr[i].sh_size, in link_elf_load_file()
1122 ef->progtab[pb].size = shdr[i].sh_size; in link_elf_load_file()
1123 ef->progtab[pb].flags = shdr[i].sh_flags; in link_elf_load_file()
1125 if (shdr[i].sh_type == SHT_PROGBITS in link_elf_load_file()
1127 || shdr[i].sh_type == SHT_X86_64_UNWIND in link_elf_load_file()
1132 shdr[i].sh_size, shdr[i].sh_offset, in link_elf_load_file()
1145 shdr[i].sh_size); in link_elf_load_file()
1147 bzero(ef->progtab[pb].addr, shdr[i].sh_size); in link_elf_load_file()
1162 mapbase += shdr[i].sh_size; in link_elf_load_file()
1166 if ((shdr[shdr[i].sh_info].sh_flags & SHF_ALLOC) == 0) in link_elf_load_file()
1168 ef->reltab[rl].rel = malloc(shdr[i].sh_size, M_LINKER, in link_elf_load_file()
1170 ef->reltab[rl].nrel = shdr[i].sh_size / sizeof(Elf_Rel); in link_elf_load_file()
1171 ef->reltab[rl].sec = shdr[i].sh_info; in link_elf_load_file()
1174 shdr[i].sh_size, shdr[i].sh_offset, in link_elf_load_file()
1186 if ((shdr[shdr[i].sh_info].sh_flags & SHF_ALLOC) == 0) in link_elf_load_file()
1188 ef->relatab[ra].rela = malloc(shdr[i].sh_size, M_LINKER, in link_elf_load_file()
1191 shdr[i].sh_size / sizeof(Elf_Rela); in link_elf_load_file()
1192 ef->relatab[ra].sec = shdr[i].sh_info; in link_elf_load_file()
1195 shdr[i].sh_size, shdr[i].sh_offset, in link_elf_load_file()