Changeset View
Changeset View
Standalone View
Standalone View
sys/boot/common/load_elf.c
Show First 20 Lines • Show All 880 Lines • ▼ Show 20 Lines | #elif defined(__amd64__) && __ELF_WORD_SIZE == 32 | ||||
md.md_type = md32.md_type; | md.md_type = md32.md_type; | ||||
md.md_cval = (const char *)(uintptr_t)md32.md_cval; | md.md_cval = (const char *)(uintptr_t)md32.md_cval; | ||||
md.md_data = (void *)(uintptr_t)md32.md_data; | md.md_data = (void *)(uintptr_t)md32.md_data; | ||||
#else | #else | ||||
COPYOUT(v, &md, sizeof(md)); | COPYOUT(v, &md, sizeof(md)); | ||||
error = __elfN(reloc_ptr)(fp, ef, v, &md, sizeof(md)); | error = __elfN(reloc_ptr)(fp, ef, v, &md, sizeof(md)); | ||||
if (error == EOPNOTSUPP) { | if (error == EOPNOTSUPP) { | ||||
md.md_cval += ef->off; | md.md_cval += ef->off; | ||||
md.md_data += ef->off; | md.md_data = (void *)((uintptr_t)md.md_data + ef->off); | ||||
} else if (error != 0) | } else if (error != 0) | ||||
return (error); | return (error); | ||||
#endif | #endif | ||||
p += sizeof(Elf_Addr); | p += sizeof(Elf_Addr); | ||||
switch(md.md_type) { | switch(md.md_type) { | ||||
case MDT_DEPEND: | case MDT_DEPEND: | ||||
if (ef->kernel) /* kernel must not depend on anything */ | if (ef->kernel) /* kernel must not depend on anything */ | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 136 Lines • Show Last 20 Lines |