diff options
Diffstat (limited to 'backends/platform/dc/dcloader.cpp')
-rw-r--r-- | backends/platform/dc/dcloader.cpp | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/backends/platform/dc/dcloader.cpp b/backends/platform/dc/dcloader.cpp index 7254d48415..7e5a068780 100644 --- a/backends/platform/dc/dcloader.cpp +++ b/backends/platform/dc/dcloader.cpp @@ -116,14 +116,14 @@ extern "C" void flush_instruction_cache(); static void purge_copyback() { int i; - for(i=0; i!=(1<<14); i+=(1<<5)) + for (i=0; i!=(1<<14); i+=(1<<5)) *(volatile unsigned int *)(0xf4000000+i) &= ~3; } void DLObject::seterror(const char *fmt, ...) { - if(errbuf) { + if (errbuf) { va_list va; va_start(va, fmt); vsnprintf(errbuf, MAXDLERRLEN, fmt, va); @@ -151,12 +151,12 @@ bool DLObject::relocate(int fd, unsigned long offset, unsigned long size) { Elf32_Rela *rela; - if(!(rela = (Elf32_Rela *)malloc(size))) { + if (!(rela = (Elf32_Rela *)malloc(size))) { seterror("Out of memory."); return false; } - if(lseek(fd, offset, SEEK_SET)<0 || + if (lseek(fd, offset, SEEK_SET)<0 || read(fd, rela, size) != size) { seterror("Relocation table load failed."); free(rela); @@ -164,7 +164,7 @@ bool DLObject::relocate(int fd, unsigned long offset, unsigned long size) } int cnt = size / sizeof(*rela); - for(int i=0; i<cnt; i++) { + for (int i=0; i<cnt; i++) { Elf32_Sym *sym = (Elf32_Sym *)(((char *)symtab)+(rela[i].r_info>>4)); @@ -172,7 +172,7 @@ bool DLObject::relocate(int fd, unsigned long offset, unsigned long size) switch(rela[i].r_info & 0xf) { case 1: /* DIR32 */ - if(sym->st_shndx < 0xff00) + if (sym->st_shndx < 0xff00) *(unsigned long *)target += (unsigned long)segment; break; default: @@ -195,7 +195,7 @@ bool DLObject::load(int fd) Elf32_Shdr *shdr; int symtab_sect = -1; - if(read(fd, &ehdr, sizeof(ehdr)) != sizeof(ehdr) || + if (read(fd, &ehdr, sizeof(ehdr)) != sizeof(ehdr) || memcmp(ehdr.e_ident, ELFMAG, SELFMAG) || ehdr.e_type != 2 || ehdr.e_machine != 42 || ehdr.e_phentsize < sizeof(phdr) || ehdr.e_shentsize != sizeof(*shdr) || @@ -207,13 +207,13 @@ bool DLObject::load(int fd) DBG("phoff = %d, phentsz = %d, phnum = %d\n", ehdr.e_phoff, ehdr.e_phentsize, ehdr.e_phnum); - if(lseek(fd, ehdr.e_phoff, SEEK_SET)<0 || + if (lseek(fd, ehdr.e_phoff, SEEK_SET)<0 || read(fd, &phdr, sizeof(phdr)) != sizeof(phdr)) { seterror("Program header load failed."); return false; } - if(phdr.p_type != 1 || phdr.p_vaddr != 0 || phdr.p_paddr != 0 || + if (phdr.p_type != 1 || phdr.p_vaddr != 0 || phdr.p_paddr != 0 || phdr.p_filesz > phdr.p_memsz) { seterror("Invalid program header."); return false; @@ -222,17 +222,17 @@ bool DLObject::load(int fd) DBG("offs = %d, filesz = %d, memsz = %d, align = %d\n", phdr.p_offset, phdr.p_filesz, phdr.p_memsz, phdr.p_align); - if(!(segment = memalign(phdr.p_align, phdr.p_memsz))) { + if (!(segment = memalign(phdr.p_align, phdr.p_memsz))) { seterror("Out of memory."); return false; } DBG("segment @ %p\n", segment); - if(phdr.p_memsz > phdr.p_filesz) + if (phdr.p_memsz > phdr.p_filesz) memset(((char *)segment) + phdr.p_filesz, 0, phdr.p_memsz - phdr.p_filesz); - if(lseek(fd, phdr.p_offset, SEEK_SET)<0 || + if (lseek(fd, phdr.p_offset, SEEK_SET)<0 || read(fd, segment, phdr.p_filesz) != phdr.p_filesz) { seterror("Segment load failed."); return false; @@ -241,12 +241,12 @@ bool DLObject::load(int fd) DBG("shoff = %d, shentsz = %d, shnum = %d\n", ehdr.e_shoff, ehdr.e_shentsize, ehdr.e_shnum); - if(!(shdr = (Elf32_Shdr *)malloc(ehdr.e_shnum * sizeof(*shdr)))) { + if (!(shdr = (Elf32_Shdr *)malloc(ehdr.e_shnum * sizeof(*shdr)))) { seterror("Out of memory."); return false; } - if(lseek(fd, ehdr.e_shoff, SEEK_SET)<0 || + if (lseek(fd, ehdr.e_shoff, SEEK_SET)<0 || read(fd, shdr, ehdr.e_shnum * sizeof(*shdr)) != ehdr.e_shnum * sizeof(*shdr)) { seterror("Section headers load failed."); @@ -254,41 +254,41 @@ bool DLObject::load(int fd) return false; } - for(int i=0; i<ehdr.e_shnum; i++) { + for (int i=0; i<ehdr.e_shnum; i++) { DBG("Section %d: type = %d, size = %d, entsize = %d, link = %d\n", i, shdr[i].sh_type, shdr[i].sh_size, shdr[i].sh_entsize, shdr[i].sh_link); - if(shdr[i].sh_type == 2 && shdr[i].sh_entsize == sizeof(Elf32_Sym) && + if (shdr[i].sh_type == 2 && shdr[i].sh_entsize == sizeof(Elf32_Sym) && shdr[i].sh_link < ehdr.e_shnum && shdr[shdr[i].sh_link].sh_type == 3 && symtab_sect < 0) symtab_sect = i; } - if(symtab_sect < 0) { + if (symtab_sect < 0) { seterror("No symbol table."); free(shdr); return false; } - if(!(symtab = malloc(shdr[symtab_sect].sh_size))) { + if (!(symtab = malloc(shdr[symtab_sect].sh_size))) { seterror("Out of memory."); free(shdr); return false; } - if(lseek(fd, shdr[symtab_sect].sh_offset, SEEK_SET)<0 || + if (lseek(fd, shdr[symtab_sect].sh_offset, SEEK_SET)<0 || read(fd, symtab, shdr[symtab_sect].sh_size) != shdr[symtab_sect].sh_size){ seterror("Symbol table load failed."); free(shdr); return false; } - if(!(strtab = (char *)malloc(shdr[shdr[symtab_sect].sh_link].sh_size))) { + if (!(strtab = (char *)malloc(shdr[shdr[symtab_sect].sh_link].sh_size))) { seterror("Out of memory."); free(shdr); return false; } - if(lseek(fd, shdr[shdr[symtab_sect].sh_link].sh_offset, SEEK_SET)<0 || + if (lseek(fd, shdr[shdr[symtab_sect].sh_link].sh_offset, SEEK_SET)<0 || read(fd, strtab, shdr[shdr[symtab_sect].sh_link].sh_size) != shdr[shdr[symtab_sect].sh_link].sh_size){ seterror("Symbol table strings load failed."); @@ -300,15 +300,15 @@ bool DLObject::load(int fd) DBG("Loaded %d symbols.\n", symbol_cnt); Elf32_Sym *s = (Elf32_Sym *)symtab; - for(int c = symbol_cnt; c--; s++) - if(s->st_shndx < 0xff00) + for (int c = symbol_cnt; c--; s++) + if (s->st_shndx < 0xff00) s->st_value += (Elf32_Addr)segment; - for(int i=0; i<ehdr.e_shnum; i++) - if(shdr[i].sh_type == 4 && shdr[i].sh_entsize == sizeof(Elf32_Rela) && + for (int i=0; i<ehdr.e_shnum; i++) + if (shdr[i].sh_type == 4 && shdr[i].sh_entsize == sizeof(Elf32_Rela) && shdr[i].sh_link == symtab_sect && shdr[i].sh_info < ehdr.e_shnum && (shdr[shdr[i].sh_info].sh_flags & 2)) - if(!relocate(fd, shdr[i].sh_offset, shdr[i].sh_size)) { + if (!relocate(fd, shdr[i].sh_offset, shdr[i].sh_size)) { free(shdr); return false; } @@ -325,12 +325,12 @@ bool DLObject::open(const char *path) DBG("open(\"%s\")\n", path); - if((fd = ::open(path, O_RDONLY))<0) { + if ((fd = ::open(path, O_RDONLY))<0) { seterror("%s not found.", path); return false; } - if(!load(fd)) { + if (!load(fd)) { ::close(fd); unload(); return false; @@ -349,7 +349,7 @@ bool DLObject::open(const char *path) dtors_start = symbol("__plugin_dtors"); dtors_end = symbol("__plugin_dtors_end"); - if(ctors_start == NULL || ctors_end == NULL || dtors_start == NULL || + if (ctors_start == NULL || ctors_end == NULL || dtors_start == NULL || dtors_end == NULL) { seterror("Missing ctors/dtors."); dtors_start = dtors_end = NULL; @@ -358,7 +358,7 @@ bool DLObject::open(const char *path) } DBG("Calling constructors.\n"); - for(void (**f)(void) = (void (**)(void))ctors_start; f != ctors_end; f++) + for (void (**f)(void) = (void (**)(void))ctors_start; f != ctors_end; f++) (**f)(); DBG("%s opened ok.\n", path); @@ -367,8 +367,8 @@ bool DLObject::open(const char *path) bool DLObject::close() { - if(dtors_start != NULL && dtors_end != NULL) - for(void (**f)(void) = (void (**)(void))dtors_start; f != dtors_end; f++) + if (dtors_start != NULL && dtors_end != NULL) + for (void (**f)(void) = (void (**)(void))dtors_start; f != dtors_end; f++) (**f)(); dtors_start = dtors_end = NULL; unload(); @@ -379,14 +379,14 @@ void *DLObject::symbol(const char *name) { DBG("symbol(\"%s\")\n", name); - if(symtab == NULL || strtab == NULL || symbol_cnt < 1) { + if (symtab == NULL || strtab == NULL || symbol_cnt < 1) { seterror("No symbol table loaded."); return NULL; } Elf32_Sym *s = (Elf32_Sym *)symtab; - for(int c = symbol_cnt; c--; s++) - if((s->st_info>>4 == 1 || s->st_info>>4 == 2) && + for (int c = symbol_cnt; c--; s++) + if ((s->st_info>>4 == 1 || s->st_info>>4 == 2) && strtab[s->st_name] == '_' && !strcmp(name, strtab+s->st_name+1)) { DBG("=> %p\n", (void*)s->st_value); return (void*)s->st_value; @@ -402,7 +402,7 @@ static char dlerr[MAXDLERRLEN]; void *dlopen(const char *filename, int flags) { DLObject *obj = new DLObject(dlerr); - if(obj->open(filename)) + if (obj->open(filename)) return (void *)obj; delete obj; return NULL; @@ -411,11 +411,11 @@ void *dlopen(const char *filename, int flags) int dlclose(void *handle) { DLObject *obj = (DLObject *)handle; - if(obj == NULL) { + if (obj == NULL) { strcpy(dlerr, "Handle is NULL."); return -1; } - if(obj->close()) { + if (obj->close()) { delete obj; return 0; } @@ -424,7 +424,7 @@ int dlclose(void *handle) void *dlsym(void *handle, const char *symbol) { - if(handle == NULL) { + if (handle == NULL) { strcpy(dlerr, "Handle is NULL."); return NULL; } @@ -438,6 +438,6 @@ const char *dlerror() void dlforgetsyms(void *handle) { - if(handle != NULL) + if (handle != NULL) ((DLObject *)handle)->discard_symtab(); } |