diff options
-rw-r--r-- | rts/Linker.c | 8 | ||||
-rw-r--r-- | rts/linker/Elf.c | 42 | ||||
-rw-r--r-- | rts/linker/MachO.c | 13 | ||||
-rw-r--r-- | rts/linker/PEi386.c | 4 | ||||
-rw-r--r-- | rts/linker/elf_got.c | 6 |
5 files changed, 35 insertions, 38 deletions
diff --git a/rts/Linker.c b/rts/Linker.c index 96d25fb741..9defb1efa0 100644 --- a/rts/Linker.c +++ b/rts/Linker.c @@ -49,7 +49,6 @@ #include <stdlib.h> #include <string.h> #include <stdio.h> -#include <assert.h> #include <fs_rts.h> #if defined(HAVE_SYS_STAT_H) @@ -885,12 +884,11 @@ SymbolAddr* lookupDependentSymbol (SymbolName* lbl, ObjectCode *dependent) */ IF_DEBUG(linker, debugBelch("lookupSymbol: looking up %s with dlsym\n", lbl)); - ASSERT(lbl[0] == '_'); + CHECK(lbl[0] == '_'); return internal_dlsym(lbl + 1); # else - ASSERT(false); - return NULL; +# error No OBJFORMAT_* macro set # endif } else { if (dependent) { @@ -2112,7 +2110,7 @@ HsInt unloadNativeObj (void *handle) n_unloaded_objects += 1; // dynamic objects have no symbols - ASSERT(nc->symbols == NULL); + CHECK(nc->symbols == NULL); freeOcStablePtrs(nc); // Remove object code from root set diff --git a/rts/linker/Elf.c b/rts/linker/Elf.c index a839ab68af..8a8480018c 100644 --- a/rts/linker/Elf.c +++ b/rts/linker/Elf.c @@ -416,7 +416,7 @@ ocVerifyImage_ELF ( ObjectCode* oc ) "\nSection header table: start %ld, n_entries %d, ent_size %d\n", (long)ehdr->e_shoff, shnum, ehdr->e_shentsize )); - ASSERT(ehdr->e_shentsize == sizeof(Elf_Shdr)); + CHECK(ehdr->e_shentsize == sizeof(Elf_Shdr)); shdr = (Elf_Shdr*) (ehdrC + ehdr->e_shoff); @@ -537,7 +537,7 @@ ocVerifyImage_ELF ( ObjectCode* oc ) #if defined(SHN_XINDEX) /* See Note [Many ELF Sections] */ if (secno == SHN_XINDEX) { - ASSERT(shndxTable); + CHECK(shndxTable); secno = shndxTable[j]; } #endif @@ -864,7 +864,7 @@ ocGetNames_ELF ( ObjectCode* oc ) PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); - ASSERT(common_mem != NULL); + CHECK(common_mem != NULL); } //TODO: we ignore local symbols anyway right? So we can use the @@ -893,7 +893,7 @@ ocGetNames_ELF ( ObjectCode* oc ) secno = shndx; #if defined(SHN_XINDEX) if (shndx == SHN_XINDEX) { - ASSERT(shndxTable); + CHECK(shndxTable); secno = shndxTable[j]; } #endif @@ -902,11 +902,11 @@ ocGetNames_ELF ( ObjectCode* oc ) if (shndx == SHN_COMMON) { isLocal = false; - ASSERT(common_used < common_size); - ASSERT(common_mem); + CHECK(common_used < common_size); + CHECK(common_mem); symbol->addr = (void*)((uintptr_t)common_mem + common_used); common_used += symbol->elf_sym->st_size; - ASSERT(common_used <= common_size); + CHECK(common_used <= common_size); IF_DEBUG(linker, debugBelch("COMMON symbol, size %ld name %s allocated at %p\n", @@ -935,7 +935,7 @@ ocGetNames_ELF ( ObjectCode* oc ) ) ) { /* Section 0 is the undefined section, hence > and not >=. */ - ASSERT(secno > 0 && secno < shnum); + CHECK(secno > 0 && secno < shnum); /* if (shdr[secno].sh_type == SHT_NOBITS) { debugBelch(" BSS symbol, size %d off %d name %s\n", @@ -945,7 +945,7 @@ ocGetNames_ELF ( ObjectCode* oc ) symbol->addr = (SymbolAddr*)( (intptr_t) oc->sections[secno].start + (intptr_t) symbol->elf_sym->st_value); - ASSERT(symbol->addr != 0x0); + CHECK(symbol->addr != 0x0); if (ELF_ST_BIND(symbol->elf_sym->st_info) == STB_LOCAL) { isLocal = true; isWeak = false; @@ -962,7 +962,7 @@ ocGetNames_ELF ( ObjectCode* oc ) /* And the decision is ... */ if (symbol->addr != NULL) { - ASSERT(nm != NULL); + CHECK(nm != NULL); /* Acquire! */ if (!isLocal) { @@ -1045,7 +1045,7 @@ do_Elf_Rel_relocations ( ObjectCode* oc, char* ehdrC, break; } } - ASSERT(stab != NULL); + CHECK(stab != NULL); targ = (Elf_Word*)oc->sections[target_shndx].start; IF_DEBUG(linker,debugBelch( @@ -1251,7 +1251,7 @@ do_Elf_Rel_relocations ( ObjectCode* oc, char* ehdrC, result = ((S + A) | T) - P; result &= ~1; // Clear thumb indicator bit - ASSERT(isInt(26, result)); /* X in range */ + CHECK(isInt(26, result)); /* X in range */ } // Update the branch target @@ -1426,7 +1426,7 @@ do_Elf_Rel_relocations ( ObjectCode* oc, char* ehdrC, case COMPAT_R_ARM_GOT_PREL: { int32_t A = *pP; void* GOT_S = symbol->got_addr; - ASSERT(GOT_S); + CHECK(GOT_S); *(uint32_t *)P = (uint32_t) GOT_S + A - P; break; } @@ -1552,21 +1552,21 @@ do_Elf_Rela_relocations ( ObjectCode* oc, char* ehdrC, case R_SPARC_WDISP30: w1 = *pP & 0xC0000000; w2 = (Elf_Word)((value - P) >> 2); - ASSERT((w2 & 0xC0000000) == 0); + CHECK((w2 & 0xC0000000) == 0); w1 |= w2; *pP = w1; break; case R_SPARC_HI22: w1 = *pP & 0xFFC00000; w2 = (Elf_Word)(value >> 10); - ASSERT((w2 & 0xFFC00000) == 0); + CHECK((w2 & 0xFFC00000) == 0); w1 |= w2; *pP = w1; break; case R_SPARC_LO10: w1 = *pP & ~0x3FF; w2 = (Elf_Word)(value & 0x3FF); - ASSERT((w2 & ~0x3FF) == 0); + CHECK((w2 & ~0x3FF) == 0); w1 |= w2; *pP = w1; break; @@ -1866,13 +1866,13 @@ ocResolve_ELF ( ObjectCode* oc ) Elf_Word secno = symbol->elf_sym->st_shndx; #if defined(SHN_XINDEX) if (secno == SHN_XINDEX) { - ASSERT(shndxTable); + CHECK(shndxTable); secno = shndxTable[i]; } #endif - ASSERT(symbol->elf_sym->st_name == 0); - ASSERT(symbol->elf_sym->st_value == 0); - ASSERT(0x0 != oc->sections[ secno ].start); + CHECK(symbol->elf_sym->st_name == 0); + CHECK(symbol->elf_sym->st_value == 0); + CHECK(0x0 != oc->sections[ secno ].start); symbol->addr = oc->sections[ secno ].start; } } @@ -1946,7 +1946,7 @@ int ocRunInit_ELF( ObjectCode *oc ) init_start = (init_t*)init_startC; init_end = (init_t*)(init_startC + shdr[i].sh_size); for (init = init_start; init < init_end; init++) { - ASSERT(0x0 != *init); + CHECK(0x0 != *init); (*init)(argc, argv, envv); } } diff --git a/rts/linker/MachO.c b/rts/linker/MachO.c index b513c461db..d3da3ebdcf 100644 --- a/rts/linker/MachO.c +++ b/rts/linker/MachO.c @@ -252,7 +252,6 @@ resolveImports( "%s: unknown symbol `%s'", oc->fileName, symbol->name); return 0; } - ASSERT(addr); checkProddableBlock(oc, ((void**)(oc->image + sect->offset)) + i, @@ -847,7 +846,7 @@ relocateSection(ObjectCode* oc, int curSection) IF_DEBUG(linker, debugBelch(" : value = %p\n", (void *)symbol->nlist->n_value)); if ((symbol->nlist->n_type & N_TYPE) == N_SECT) { - ASSERT(symbol->addr != NULL); + CHECK(symbol->addr != NULL); value = (uint64_t) symbol->addr; IF_DEBUG(linker, debugBelch("relocateSection, defined external symbol %s, relocated address %p\n", nm, (void *)value)); @@ -949,29 +948,29 @@ relocateSection(ObjectCode* oc, int curSection) { if((int32_t)(value - baseValue) != (int64_t)(value - baseValue)) { - ASSERT(reloc->r_extern); + CHECK(reloc->r_extern); value = (uint64_t) &makeSymbolExtra(oc, reloc->r_symbolnum, value) -> jumpIsland; } - ASSERT((int32_t)(value - baseValue) == (int64_t)(value - baseValue)); + CHECK((int32_t)(value - baseValue) == (int64_t)(value - baseValue)); type = X86_64_RELOC_SIGNED; } switch(type) { case X86_64_RELOC_UNSIGNED: - ASSERT(!reloc->r_pcrel); + CHECK(!reloc->r_pcrel); thing += value; break; case X86_64_RELOC_SIGNED: case X86_64_RELOC_SIGNED_1: case X86_64_RELOC_SIGNED_2: case X86_64_RELOC_SIGNED_4: - ASSERT(reloc->r_pcrel); + CHECK(reloc->r_pcrel); thing += value - baseValue; break; case X86_64_RELOC_SUBTRACTOR: - ASSERT(!reloc->r_pcrel); + CHECK(!reloc->r_pcrel); thing -= value; break; default: diff --git a/rts/linker/PEi386.c b/rts/linker/PEi386.c index aa841c070e..b660ceba1f 100644 --- a/rts/linker/PEi386.c +++ b/rts/linker/PEi386.c @@ -1594,7 +1594,7 @@ ocGetNames_PEi386 ( ObjectCode* oc ) barf ("Could not allocate any heap memory from private heap."); } - ASSERT(section.size == 0 || section.info->virtualSize == 0); + CHECK(section.size == 0 || section.info->virtualSize == 0); sz = section.size; if (sz < section.info->virtualSize) sz = section.info->virtualSize; @@ -2032,7 +2032,7 @@ ocRunInit_PEi386 ( ObjectCode *oc ) getProgEnvv(&envc, &envv); Section section = *oc->info->init; - ASSERT(SECTIONKIND_INIT_ARRAY == section.kind); + CHECK(SECTIONKIND_INIT_ARRAY == section.kind); uint8_t *init_startC = section.start; init_t *init_start = (init_t*)init_startC; diff --git a/rts/linker/elf_got.c b/rts/linker/elf_got.c index bdb436ad21..1aca219f9b 100644 --- a/rts/linker/elf_got.c +++ b/rts/linker/elf_got.c @@ -136,10 +136,10 @@ verifyGot(ObjectCode * oc) { for(size_t i=0; i < symTab->n_symbols; i++) { ElfSymbol * symbol = &symTab->symbols[i]; if(symbol->got_addr) { - ASSERT((void*)(*(void**)symbol->got_addr) - == (void*)symbol->addr); + CHECK((void*)(*(void**)symbol->got_addr) + == (void*)symbol->addr); } - ASSERT(0 == ((uintptr_t)symbol->addr & 0xffff000000000000)); + CHECK(0 == ((uintptr_t)symbol->addr & 0xffff000000000000)); } } return EXIT_SUCCESS; |