Lines Matching refs:oc
167 static void addProddableBlock ( ObjectCode* oc, void* start, int size ) in addProddableBlock() argument
172 fprintf(stderr, "aPB oc=%p %p %d (%p .. %p)\n", oc, start, size, in addProddableBlock()
177 pb->next = oc->proddables; in addProddableBlock()
178 oc->proddables = pb; in addProddableBlock()
181 static void checkProddableBlock ( ObjectCode* oc, void* addr ) in checkProddableBlock() argument
184 for (pb = oc->proddables; pb != NULL; pb = pb->next) { in checkProddableBlock()
353 char* alloc_fixup_bytes ( ObjectCode* oc, int nbytes ) in alloc_fixup_bytes() argument
358 res = &(oc->fixup[oc->fixup_used]); in alloc_fixup_bytes()
359 oc->fixup_used += nbytes; in alloc_fixup_bytes()
360 if (oc->fixup_used >= oc->fixup_size) { in alloc_fixup_bytes()
361 fprintf(stderr, "fixup area too small for %s\n", oc->fileName); in alloc_fixup_bytes()
419 do_Elf_Rel_relocations ( ObjectCode* oc, char* ehdrC, in do_Elf_Rel_relocations() argument
472 oc->fileName, symbol); in do_Elf_Rel_relocations()
482 checkProddableBlock ( oc, pP ); in do_Elf_Rel_relocations()
496 char* fixup = alloc_fixup_bytes(oc, 8); in do_Elf_Rel_relocations()
534 oc->fileName, ELF_R_TYPE(info)); in do_Elf_Rel_relocations()
545 do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC, in do_Elf_Rela_relocations() argument
612 belch("%s: function %s with addend %p", oc->fileName, symbol, (void *)A); in do_Elf_Rela_relocations()
616 fprintf(stderr,"%s: unknown symbol `%s'\n", oc->fileName, symbol); in do_Elf_Rela_relocations()
688 ia64_reloc_pcrel21(P, S, oc); in do_Elf_Rela_relocations()
698 oc->fileName, ELF_R_TYPE(info)); in do_Elf_Rela_relocations()
708 ocResolve_ELF ( ObjectCode* oc ) in ocResolve_ELF() argument
713 char* ehdrC = (char*)(oc->image); in ocResolve_ELF()
725 fprintf(stderr,"%s: can't find string or symbol table\n", oc->fileName); in ocResolve_ELF()
740 ok = do_Elf_Rel_relocations ( oc, ehdrC, shdr, in ocResolve_ELF()
746 ok = do_Elf_Rela_relocations ( oc, ehdrC, shdr, in ocResolve_ELF()
753 delete_StringMap(oc->lochash); in ocResolve_ELF()
754 oc->lochash = NULL; in ocResolve_ELF()
767 ocVerifyImage_ELF ( ObjectCode* oc ) in ocVerifyImage_ELF() argument
775 char* ehdrC = (char*)(oc->image); in ocVerifyImage_ELF()
782 fprintf(stderr,"%s: not an ELF object\n", oc->fileName); in ocVerifyImage_ELF()
787 fprintf(stderr,"%s: unsupported ELF format\n", oc->fileName); in ocVerifyImage_ELF()
799 fprintf(stderr,"%s: unknown endiannness\n", oc->fileName); in ocVerifyImage_ELF()
804 fprintf(stderr,"%s: not a relocatable object (.o) file\n", oc->fileName); in ocVerifyImage_ELF()
820 fprintf(stderr,"%s: unknown architecture\n", oc->fileName); in ocVerifyImage_ELF()
833 fprintf(stderr,"%s: no section header string table\n", oc->fileName); in ocVerifyImage_ELF()
882 fprintf(stderr,"%s: no string tables, or too many\n", oc->fileName); in ocVerifyImage_ELF()
901 oc->fileName); in ocVerifyImage_ELF()
936 fprintf(stderr,"%s: didn't find any symbol tables\n", oc->fileName); in ocVerifyImage_ELF()
951 ocGetNames_ELF ( ObjectCode* oc ) in ocGetNames_ELF() argument
956 char* ehdrC = (char*)(oc->image); in ocGetNames_ELF()
967 fprintf(stderr,"%s: no strtab\n", oc->fileName); in ocGetNames_ELF()
1033 addProddableBlock(oc, ehdrC + shdr[i].sh_offset, shdr[i].sh_size); in ocGetNames_ELF()
1044 oc->n_symbols = nent; in ocGetNames_ELF()
1045 oc->symbols = malloc(oc->n_symbols * sizeof(char*)); in ocGetNames_ELF()
1103 ad, oc->fileName, nm ); in ocGetNames_ELF()
1112 oc->symbols[j] = nm; in ocGetNames_ELF()
1133 oc->symbols[j] = NULL; in ocGetNames_ELF()
1158 ObjectCode* oc; in loadObj() local
1187 oc = malloc(sizeof(ObjectCode)); in loadObj()
1189 oc->formatName = "ELF"; in loadObj()
1195 oc->fileName = malloc( strlen(path)+1 ); in loadObj()
1196 strcpy(oc->fileName, path); in loadObj()
1198 oc->fileSize = st.st_size; in loadObj()
1199 oc->symbols = NULL; in loadObj()
1200 oc->sections = NULL; in loadObj()
1201 oc->lochash = new_StringMap(); in loadObj()
1202 oc->proddables = NULL; in loadObj()
1203 oc->fixup = NULL; in loadObj()
1204 oc->fixup_used = 0; in loadObj()
1205 oc->fixup_size = 0; in loadObj()
1208 oc->next = global_object_list; in loadObj()
1209 global_object_list = oc; in loadObj()
1223 + oc->fileSize); in loadObj()
1230 oc->fixup = p; in loadObj()
1231 oc->fixup_size = N_FIXUP_PAGES * pagesize; in loadObj()
1232 oc->fixup_used = 0; in loadObj()
1233 oc->image = &(p[ oc->fixup_size ]); in loadObj()
1235 r = read(fd, oc->image, oc->fileSize); in loadObj()
1236 if (r != oc->fileSize) { in loadObj()
1242 oc->fileName, oc->image, oc->fixup ); in loadObj()
1247 r = ocVerifyImage_ELF ( oc ); in loadObj()
1251 r = ocGetNames_ELF ( oc ); in loadObj()
1255 oc->status = OBJECT_LOADED; in loadObj()
1270 ObjectCode *oc; in resolveObjs() local
1275 for (oc = global_object_list; oc; oc = oc->next) { in resolveObjs()
1276 if (oc->status != OBJECT_RESOLVED) { in resolveObjs()
1277 r = ocResolve_ELF ( oc ); in resolveObjs()
1279 oc->status = OBJECT_RESOLVED; in resolveObjs()