aboutsummaryrefslogtreecommitdiffstats
path: root/libs/minisat
ModeNameSize
-rw-r--r--00_PATCH_mkLit_default_arg.patch808logstatsplain
-rw-r--r--00_PATCH_no_fpu_control.patch1688logstatsplain
-rw-r--r--00_PATCH_remove_zlib.patch1638logstatsplain
-rw-r--r--00_PATCH_typofixes.patch672logstatsplain
-rw-r--r--00_PATCH_wasm.patch1263logstatsplain
-rwxr-xr-x00_UPDATE.sh797logstatsplain
-rw-r--r--Alg.h2839logstatsplain
-rw-r--r--Alloc.h4379logstatsplain
-rw-r--r--Dimacs.h3232logstatsplain
-rw-r--r--Heap.h5344logstatsplain
-rw-r--r--IntMap.h4204logstatsplain
-rw-r--r--IntTypes.h1763logstatsplain
-rw-r--r--LICENSE1142logstatsplain
-rw-r--r--Map.h6682logstatsplain
-rw-r--r--Options.cc3937logstatsplain
-rw-r--r--Options.h12141logstatsplain
-rw-r--r--ParseUtils.h3867logstatsplain
-rw-r--r--Queue.h3001logstatsplain
-rw-r--r--Rnd.h2415logstatsplain
-rw-r--r--SimpSolver.cc22356logstatsplain
-rw-r--r--SimpSolver.h10801logstatsplain
-rw-r--r--Solver.cc35113logstatsplain
-rw-r--r--Solver.h23987logstatsplain
-rw-r--r--SolverTypes.h17238logstatsplain
-rw-r--r--Sort.h3276logstatsplain
-rw-r--r--System.cc5082logstatsplain
-rw-r--r--System.h2862logstatsplain
-rw-r--r--Vec.h5588logstatsplain
-rw-r--r--XAlloc.h1924logstatsplain
sc">'\0'; /* return to offset to the next symbol */ return off; } /* find the offset on the compressed stream given and index in the * symbols array */ static unsigned int get_symbol_offset(unsigned long pos) { u8 *name; int i; /* use the closest marker we have. We have markers every 256 positions, * so that should be close enough */ name = &symbols_names[ symbols_markers[pos>>8] ]; /* sequentially scan all the symbols up to the point we're searching for. * Every symbol is stored in a [<len>][<len> bytes of data] format, so we * just need to add the len to the current pointer for every symbol we * wish to skip */ for(i = 0; i < (pos&0xFF); i++) name = name + (*name) + 1; return name - symbols_names; } const char *symbols_lookup(unsigned long addr, unsigned long *symbolsize, unsigned long *offset, char *namebuf) { unsigned long i, low, high, mid; unsigned long symbol_end = 0; namebuf[KSYM_NAME_LEN] = 0; namebuf[0] = 0; if (!is_kernel_text(addr) && !is_kernel_inittext(addr)) return NULL; /* do a binary search on the sorted symbols_addresses array */ low = 0; high = symbols_num_syms; while (high-low > 1) { mid = (low + high) / 2; if (symbols_addresses[mid] <= addr) low = mid; else high = mid; } /* search for the first aliased symbol. Aliased symbols are symbols with the same address */ while (low && symbols_addresses[low - 1] == symbols_addresses[low]) --low; /* Grab name */ symbols_expand_symbol(get_symbol_offset(low), namebuf); /* Search for next non-aliased symbol */ for (i = low + 1; i < symbols_num_syms; i++) { if (symbols_addresses[i] > symbols_addresses[low]) { symbol_end = symbols_addresses[i]; break; } } /* if we found no next symbol, we use the end of the section */ if (!symbol_end) symbol_end = is_kernel_inittext(addr) ? (unsigned long)_einittext : (unsigned long)_etext; *symbolsize = symbol_end - symbols_addresses[low]; *offset = addr - symbols_addresses[low]; return namebuf; } /* Replace "%s" in format with address, or returns -errno. */ void __print_symbol(const char *fmt, unsigned long address) { const char *name; unsigned long offset, size, flags; static DEFINE_SPINLOCK(lock); static char namebuf[KSYM_NAME_LEN+1]; #define BUFFER_SIZE sizeof("%s+%#lx/%#lx [%s]") + KSYM_NAME_LEN + \ 2*(BITS_PER_LONG*3/10) + 1 static char buffer[BUFFER_SIZE]; spin_lock_irqsave(&lock, flags); name = symbols_lookup(address, &size, &offset, namebuf); if (!name) snprintf(buffer, BUFFER_SIZE, "???"); else snprintf(buffer, BUFFER_SIZE, "%s+%#lx/%#lx", name, offset, size); printk(fmt, buffer); spin_unlock_irqrestore(&lock, flags); }