Changeset View
Changeset View
Standalone View
Standalone View
stand/common/load_elf.c
Show First 20 Lines • Show All 1,256 Lines • ▼ Show 20 Lines | while (symnum != STN_UNDEF) { | ||||
if (sym.st_name == 0) { | if (sym.st_name == 0) { | ||||
printf(__elfN(bad_symtable)); | printf(__elfN(bad_symtable)); | ||||
return ENOENT; | return ENOENT; | ||||
} | } | ||||
strp = strdupout((vm_offset_t)(ef->strtab + sym.st_name)); | strp = strdupout((vm_offset_t)(ef->strtab + sym.st_name)); | ||||
if (strcmp(name, strp) == 0) { | if (strcmp(name, strp) == 0) { | ||||
free(strp); | free(strp); | ||||
if (sym.st_shndx != SHN_UNDEF || | if (sym.st_shndx != SHN_UNDEF && sym.st_value != 0 && | ||||
(sym.st_value != 0 && | ELF_ST_TYPE(sym.st_info) == type) { | ||||
ELF_ST_TYPE(sym.st_info) == type)) { | |||||
*symp = sym; | *symp = sym; | ||||
return 0; | return 0; | ||||
} | } | ||||
return ENOENT; | return ENOENT; | ||||
} | } | ||||
free(strp); | free(strp); | ||||
COPYOUT(&ef->chains[symnum], &symnum, sizeof(symnum)); | COPYOUT(&ef->chains[symnum], &symnum, sizeof(symnum)); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 53 Lines • Show Last 20 Lines |