Lines Matching refs:hdr

243 	struct ksyms_hdr *hdr;
248 hdr = malloc(sizeof (*hdr), M_KSYMS, M_WAITOK|M_ZERO);
253 hdr->kh_ehdr.e_ident[EI_PAD] = 0;
254 hdr->kh_ehdr.e_ident[EI_MAG0] = ELFMAG0;
255 hdr->kh_ehdr.e_ident[EI_MAG1] = ELFMAG1;
256 hdr->kh_ehdr.e_ident[EI_MAG2] = ELFMAG2;
257 hdr->kh_ehdr.e_ident[EI_MAG3] = ELFMAG3;
258 hdr->kh_ehdr.e_ident[EI_DATA] = ELF_DATA;
259 hdr->kh_ehdr.e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
260 hdr->kh_ehdr.e_ident[EI_CLASS] = ELF_CLASS;
261 hdr->kh_ehdr.e_ident[EI_VERSION] = EV_CURRENT;
262 hdr->kh_ehdr.e_ident[EI_ABIVERSION] = 0;
263 hdr->kh_ehdr.e_type = ET_EXEC;
264 hdr->kh_ehdr.e_machine = ELF_ARCH;
265 hdr->kh_ehdr.e_version = EV_CURRENT;
266 hdr->kh_ehdr.e_entry = 0;
267 hdr->kh_ehdr.e_phoff = offsetof(struct ksyms_hdr, kh_txtphdr);
268 hdr->kh_ehdr.e_shoff = offsetof(struct ksyms_hdr, kh_shdr);
269 hdr->kh_ehdr.e_flags = 0;
270 hdr->kh_ehdr.e_ehsize = sizeof(Elf_Ehdr);
271 hdr->kh_ehdr.e_phentsize = sizeof(Elf_Phdr);
272 hdr->kh_ehdr.e_phnum = 2; /* Text and Data */
273 hdr->kh_ehdr.e_shentsize = sizeof(Elf_Shdr);
274 hdr->kh_ehdr.e_shnum = SHDR_NUM;
275 hdr->kh_ehdr.e_shstrndx = SHDR_SHSTRTAB;
280 hdr->kh_txtphdr.p_type = PT_LOAD;
282 hdr->kh_txtphdr.p_vaddr = 0;
283 hdr->kh_txtphdr.p_memsz = 0;
284 hdr->kh_txtphdr.p_flags = PF_R | PF_X;
286 hdr->kh_datphdr.p_type = PT_LOAD;
288 hdr->kh_datphdr.p_vaddr = 0;
289 hdr->kh_datphdr.p_memsz = 0;
290 hdr->kh_datphdr.p_flags = PF_R | PF_W | PF_X;
299 hdr->kh_shdr[SHDR_SYMTAB].sh_name = 1; /* String offset (skip null) */
300 hdr->kh_shdr[SHDR_SYMTAB].sh_type = SHT_SYMTAB;
301 hdr->kh_shdr[SHDR_SYMTAB].sh_flags = 0;
302 hdr->kh_shdr[SHDR_SYMTAB].sh_addr = 0;
303 hdr->kh_shdr[SHDR_SYMTAB].sh_offset = sizeof(*hdr);
304 hdr->kh_shdr[SHDR_SYMTAB].sh_size = ts->ts_symsz;
305 hdr->kh_shdr[SHDR_SYMTAB].sh_link = SHDR_STRTAB;
306 hdr->kh_shdr[SHDR_SYMTAB].sh_info = ts->ts_symsz / sizeof(Elf_Sym);
307 hdr->kh_shdr[SHDR_SYMTAB].sh_addralign = sizeof(long);
308 hdr->kh_shdr[SHDR_SYMTAB].sh_entsize = sizeof(Elf_Sym);
311 hdr->kh_shdr[SHDR_STRTAB].sh_name = 1 + sizeof(STR_SYMTAB);
312 hdr->kh_shdr[SHDR_STRTAB].sh_type = SHT_STRTAB;
313 hdr->kh_shdr[SHDR_STRTAB].sh_flags = 0;
314 hdr->kh_shdr[SHDR_STRTAB].sh_addr = 0;
315 hdr->kh_shdr[SHDR_STRTAB].sh_offset =
316 hdr->kh_shdr[SHDR_SYMTAB].sh_offset + ts->ts_symsz;
317 hdr->kh_shdr[SHDR_STRTAB].sh_size = ts->ts_strsz;
318 hdr->kh_shdr[SHDR_STRTAB].sh_link = 0;
319 hdr->kh_shdr[SHDR_STRTAB].sh_info = 0;
320 hdr->kh_shdr[SHDR_STRTAB].sh_addralign = sizeof(char);
321 hdr->kh_shdr[SHDR_STRTAB].sh_entsize = 0;
324 hdr->kh_shdr[SHDR_SHSTRTAB].sh_name = 1 + sizeof(STR_SYMTAB) +
326 hdr->kh_shdr[SHDR_SHSTRTAB].sh_type = SHT_STRTAB;
327 hdr->kh_shdr[SHDR_SHSTRTAB].sh_flags = 0;
328 hdr->kh_shdr[SHDR_SHSTRTAB].sh_addr = 0;
329 hdr->kh_shdr[SHDR_SHSTRTAB].sh_offset =
331 hdr->kh_shdr[SHDR_SHSTRTAB].sh_size = sizeof(ksyms_shstrtab);
332 hdr->kh_shdr[SHDR_SHSTRTAB].sh_link = 0;
333 hdr->kh_shdr[SHDR_SHSTRTAB].sh_info = 0;
334 hdr->kh_shdr[SHDR_SHSTRTAB].sh_addralign = 0 /* sizeof(char) */;
335 hdr->kh_shdr[SHDR_SHSTRTAB].sh_entsize = 0;
338 bcopy(ksyms_shstrtab, hdr->kh_shstrtab, sizeof(ksyms_shstrtab));
340 to.to_symoff = uaddr + hdr->kh_shdr[SHDR_SYMTAB].sh_offset;
341 to.to_stroff = uaddr + hdr->kh_shdr[SHDR_STRTAB].sh_offset;
344 free(hdr, M_KSYMS);
350 copyout(hdr, (void *)uaddr, sizeof(struct ksyms_hdr));
352 free(hdr, M_KSYMS);