Changeset View
Changeset View
Standalone View
Standalone View
head/devel/gdb/files/kgdb/fbsd-kvm.c
Show First 20 Lines • Show All 325 Lines • ▼ Show 20 Lines | |||||
#endif | #endif | ||||
if (nkvm == NULL) | if (nkvm == NULL) | ||||
error ("Failed to open vmcore: %s", kvm_err); | error ("Failed to open vmcore: %s", kvm_err); | ||||
/* Don't free the filename now and close any previous vmcore. */ | /* Don't free the filename now and close any previous vmcore. */ | ||||
discard_cleanups(old_chain); | discard_cleanups(old_chain); | ||||
unpush_target(&fbsd_kvm_ops); | unpush_target(&fbsd_kvm_ops); | ||||
#ifdef HAVE_KVM_DISP | |||||
/* Relocate kernel objfile if needed. */ | |||||
if (symfile_objfile && | |||||
(bfd_get_file_flags(symfile_objfile->obfd) & | |||||
(EXEC_P | DYNAMIC)) != 0) { | |||||
struct section_offsets *new_offsets; | |||||
int i; | |||||
CORE_ADDR displacement; | |||||
displacement = kvm_kerndisp(nkvm); | |||||
if (displacement != 0) { | |||||
new_offsets = XALLOCAVEC (struct section_offsets, | |||||
symfile_objfile->num_sections); | |||||
for (i = 0; i < symfile_objfile->num_sections; i++) | |||||
new_offsets->offsets[i] = displacement; | |||||
objfile_relocate(symfile_objfile, new_offsets); | |||||
} | |||||
} | |||||
#endif | |||||
/* | /* | ||||
* Determine the first address in KVA. Newer kernels export | * Determine the first address in KVA. Newer kernels export | ||||
* VM_MAXUSER_ADDRESS and the first kernel address can be | * VM_MAXUSER_ADDRESS and the first kernel address can be | ||||
* determined by adding one. Older kernels do not provide a | * determined by adding one. Older kernels do not provide a | ||||
* symbol that is valid on all platforms, but kernbase is close | * symbol that is valid on all platforms, but kernbase is close | ||||
* for most platforms. | * for most platforms. | ||||
*/ | */ | ||||
TRY { | TRY { | ||||
▲ Show 20 Lines • Show All 306 Lines • Show Last 20 Lines |