Lines Matching refs:elf
53 Elf *elf;
56 elf = allocate_elf (fildes, map_address, offset, maxsize, cmd, parent,
58 if (elf != NULL)
62 elf->state.ar.offset = offset + SARMAG;
64 elf->state.ar.elf_ar_hdr.ar_rawname = elf->state.ar.raw_name;
67 return elf;
296 if the file handle or elf file is invalid. Returns zero if there
322 Elf *elf = allocate_elf (fildes, map_address, offset, maxsize, cmd, parent,
324 if (elf == NULL)
331 elf->state.elf32.scns.cnt = scncnt;
332 elf->state.elf32.scns.max = scnmax;
335 elf->state.elf.scnincr = 10;
338 elf->class = e_ident[EI_CLASS];
352 elf->state.elf32.ehdr = ehdr;
357 elf->state.elf32.ehdr = memcpy (&elf->state.elf32.ehdr_mem, e_ident,
362 CONVERT (elf->state.elf32.ehdr_mem.e_type);
363 CONVERT (elf->state.elf32.ehdr_mem.e_machine);
364 CONVERT (elf->state.elf32.ehdr_mem.e_version);
365 CONVERT (elf->state.elf32.ehdr_mem.e_entry);
366 CONVERT (elf->state.elf32.ehdr_mem.e_phoff);
367 CONVERT (elf->state.elf32.ehdr_mem.e_shoff);
368 CONVERT (elf->state.elf32.ehdr_mem.e_flags);
369 CONVERT (elf->state.elf32.ehdr_mem.e_ehsize);
370 CONVERT (elf->state.elf32.ehdr_mem.e_phentsize);
371 CONVERT (elf->state.elf32.ehdr_mem.e_phnum);
372 CONVERT (elf->state.elf32.ehdr_mem.e_shentsize);
373 CONVERT (elf->state.elf32.ehdr_mem.e_shnum);
374 CONVERT (elf->state.elf32.ehdr_mem.e_shstrndx);
381 Elf32_Off e_shoff = elf->state.elf32.ehdr->e_shoff;
393 free (elf);
399 elf->state.elf32.shdr
404 elf->state.elf32.scns.data[cnt].index = cnt;
405 elf->state.elf32.scns.data[cnt].elf = elf;
406 elf->state.elf32.scns.data[cnt].shdr.e32 =
407 &elf->state.elf32.shdr[cnt];
408 if (likely (elf->state.elf32.shdr[cnt].sh_offset < maxsize)
409 && likely (elf->state.elf32.shdr[cnt].sh_size
410 <= maxsize - elf->state.elf32.shdr[cnt].sh_offset))
411 elf->state.elf32.scns.data[cnt].rawdata_base =
412 elf->state.elf32.scns.data[cnt].data_base =
414 + elf->state.elf32.shdr[cnt].sh_offset);
415 elf->state.elf32.scns.data[cnt].list = &elf->state.elf32.scns;
420 if (elf->state.elf32.shdr[cnt].sh_type == SHT_SYMTAB_SHNDX
421 && elf->state.elf32.shdr[cnt].sh_link < scncnt)
422 elf->state.elf32.scns.data[elf->state.elf32.shdr[cnt].sh_link].shndx_index
427 if (elf->state.elf32.scns.data[cnt].shndx_index == 0)
428 elf->state.elf32.scns.data[cnt].shndx_index = -1;
435 elf->state.elf32.scns.data[cnt].index = cnt;
436 elf->state.elf32.scns.data[cnt].elf = elf;
437 elf->state.elf32.scns.data[cnt].list = &elf->state.elf32.scns;
442 elf->state.elf32.scns_last = &elf->state.elf32.scns;
456 elf->state.elf64.ehdr = ehdr;
461 elf->state.elf64.ehdr = memcpy (&elf->state.elf64.ehdr_mem, e_ident,
466 CONVERT (elf->state.elf64.ehdr_mem.e_type);
467 CONVERT (elf->state.elf64.ehdr_mem.e_machine);
468 CONVERT (elf->state.elf64.ehdr_mem.e_version);
469 CONVERT (elf->state.elf64.ehdr_mem.e_entry);
470 CONVERT (elf->state.elf64.ehdr_mem.e_phoff);
471 CONVERT (elf->state.elf64.ehdr_mem.e_shoff);
472 CONVERT (elf->state.elf64.ehdr_mem.e_flags);
473 CONVERT (elf->state.elf64.ehdr_mem.e_ehsize);
474 CONVERT (elf->state.elf64.ehdr_mem.e_phentsize);
475 CONVERT (elf->state.elf64.ehdr_mem.e_phnum);
476 CONVERT (elf->state.elf64.ehdr_mem.e_shentsize);
477 CONVERT (elf->state.elf64.ehdr_mem.e_shnum);
478 CONVERT (elf->state.elf64.ehdr_mem.e_shstrndx);
485 Elf64_Off e_shoff = elf->state.elf64.ehdr->e_shoff;
498 elf->state.elf64.shdr
503 elf->state.elf64.scns.data[cnt].index = cnt;
504 elf->state.elf64.scns.data[cnt].elf = elf;
505 elf->state.elf64.scns.data[cnt].shdr.e64 =
506 &elf->state.elf64.shdr[cnt];
507 if (likely (elf->state.elf64.shdr[cnt].sh_offset < maxsize)
508 && likely (elf->state.elf64.shdr[cnt].sh_size
509 <= maxsize - elf->state.elf64.shdr[cnt].sh_offset))
510 elf->state.elf64.scns.data[cnt].rawdata_base =
511 elf->state.elf64.scns.data[cnt].data_base =
513 + elf->state.elf64.shdr[cnt].sh_offset);
514 elf->state.elf64.scns.data[cnt].list = &elf->state.elf64.scns;
519 if (elf->state.elf64.shdr[cnt].sh_type == SHT_SYMTAB_SHNDX
520 && elf->state.elf64.shdr[cnt].sh_link < scncnt)
521 elf->state.elf64.scns.data[elf->state.elf64.shdr[cnt].sh_link].shndx_index
526 if (elf->state.elf64.scns.data[cnt].shndx_index == 0)
527 elf->state.elf64.scns.data[cnt].shndx_index = -1;
534 elf->state.elf64.scns.data[cnt].index = cnt;
535 elf->state.elf64.scns.data[cnt].elf = elf;
536 elf->state.elf64.scns.data[cnt].list = &elf->state.elf64.scns;
541 elf->state.elf64.scns_last = &elf->state.elf64.scns;
544 return elf;
725 read_long_names (Elf *elf)
735 if (elf->map_address != NULL)
737 if ((size_t) offset > elf->maximum_size
738 || elf->maximum_size - offset < sizeof (struct ar_hdr))
742 hdr = (struct ar_hdr *) (elf->map_address + offset);
747 if (unlikely (pread_retry (elf->fildes, &hdrm, sizeof (hdrm),
748 elf->start_offset + offset)
779 if (elf->map_address != NULL)
781 if (len > elf->maximum_size - offset - sizeof (struct ar_hdr))
793 if (elf->map_address != NULL)
796 elf->state.ar.long_names = (char *) memcpy (newp,
797 elf->map_address + offset
803 if (unlikely ((size_t) pread_retry (elf->fildes, newp, len,
804 elf->start_offset + offset
810 elf->state.ar.long_names = NULL;
813 elf->state.ar.long_names = newp;
816 elf->state.ar.long_names_len = len;
848 __libelf_next_arhdr_wrlock (Elf *elf)
853 if (elf->map_address != NULL)
856 if (unlikely ((size_t) elf->state.ar.offset
857 > elf->start_offset + elf->maximum_size
858 || (elf->start_offset + elf->maximum_size
859 - elf->state.ar.offset) < sizeof (struct ar_hdr)))
865 ar_hdr = (struct ar_hdr *) (elf->map_address + elf->state.ar.offset);
869 ar_hdr = &elf->state.ar.ar_hdr;
871 if (unlikely (pread_retry (elf->fildes, ar_hdr, sizeof (struct ar_hdr),
872 elf->state.ar.offset)
890 *((char *) mempcpy (elf->state.ar.raw_name, ar_hdr->ar_name, 16)) = '\0';
892 elf_ar_hdr = &elf->state.ar.elf_ar_hdr;
901 elf_ar_hdr->ar_name = memcpy (elf->state.ar.ar_name, "/", 2);
905 elf_ar_hdr->ar_name = memcpy (elf->state.ar.ar_name, "/SYM64/", 8);
909 elf_ar_hdr->ar_name = memcpy (elf->state.ar.ar_name, "//", 3);
916 if (unlikely (elf->state.ar.long_names == NULL
917 && read_long_names (elf) == NULL))
926 if (unlikely (offset >= elf->state.ar.long_names_len))
932 elf_ar_hdr->ar_name = elf->state.ar.long_names + offset;
946 endp = (char *) memccpy (elf->state.ar.ar_name, ar_hdr->ar_name,
956 elf->state.ar.ar_name[i] = '\0';
957 while (i > 0 && elf->state.ar.ar_name[--i] == ' ');
960 elf_ar_hdr->ar_name = elf->state.ar.ar_name;
1032 maxsize = (elf->start_offset + elf->maximum_size
1033 - elf->state.ar.offset - sizeof (struct ar_hdr));
1121 result->state.elf.scnincr = NSCNSALLOC;
1126 result->state.elf.scns_last = &result->state.elf32.scns;