| 191 | } |
| 192 | |
| 193 | int |
| 194 | db_fetch_ksymtab(vm_offset_t ksym_start, vm_offset_t ksym_end, |
| 195 | vm_offset_t relbase) |
| 196 | { |
| 197 | Elf_Size strsz; |
| 198 | |
| 199 | if (ksym_end > ksym_start && ksym_start != 0) { |
| 200 | ksymtab = ksym_start; |
| 201 | ksymtab_size = *(Elf_Size*)ksymtab; |
| 202 | ksymtab += sizeof(Elf_Size); |
| 203 | kstrtab = ksymtab + ksymtab_size; |
| 204 | strsz = *(Elf_Size*)kstrtab; |
| 205 | kstrtab += sizeof(Elf_Size); |
| 206 | ksymtab_relbase = relbase; |
| 207 | if (kstrtab + strsz > ksym_end) { |
| 208 | /* Sizes doesn't match, unset everything. */ |
| 209 | ksymtab = ksymtab_size = kstrtab = ksymtab_relbase |
| 210 | = 0; |
| 211 | } |
| 212 | } |
| 213 | |
| 214 | if (ksymtab == 0 || ksymtab_size == 0 || kstrtab == 0) |
| 215 | return (-1); |
| 216 | |
| 217 | return (0); |
| 218 | } |
| 219 | |
| 220 | static int |
| 221 | db_init(void) |
no outgoing calls
no test coverage detected