Changeset View
Changeset View
Standalone View
Standalone View
head/devel/gdb/files/kgdb/fbsd-kvm.c
Show All 16 Lines | |||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
* | |||||
* $FreeBSD$ | |||||
*/ | */ | ||||
#include <sys/cdefs.h> | |||||
__FBSDID("$FreeBSD$"); | |||||
#include "defs.h" | #include "defs.h" | ||||
#include "command.h" | #include "command.h" | ||||
#include "elf-bfd.h" | #include "elf-bfd.h" | ||||
#include "filenames.h" | #include "filenames.h" | ||||
#include "gdbcore.h" | #include "gdbcore.h" | ||||
#include "gdbthread.h" | #include "gdbthread.h" | ||||
#include "gdb_obstack.h" | #include "gdb_obstack.h" | ||||
#include "inferior.h" | #include "inferior.h" | ||||
▲ Show 20 Lines • Show All 296 Lines • ▼ Show 20 Lines | #endif | ||||
/* Don't free the filename now and close any previous vmcore. */ | /* Don't free the filename now and close any previous vmcore. */ | ||||
unpush_target(&fbsd_kvm_ops); | unpush_target(&fbsd_kvm_ops); | ||||
#ifdef HAVE_KVM_DISP | #ifdef HAVE_KVM_DISP | ||||
/* Relocate kernel objfile if needed. */ | /* Relocate kernel objfile if needed. */ | ||||
if (symfile_objfile && | if (symfile_objfile && | ||||
(bfd_get_file_flags(symfile_objfile->obfd) & | (bfd_get_file_flags(symfile_objfile->obfd) & | ||||
(EXEC_P | DYNAMIC)) != 0) { | (EXEC_P | DYNAMIC)) != 0) { | ||||
struct section_offsets *new_offsets; | CORE_ADDR displacement = kvm_kerndisp(nkvm); | ||||
int i; | |||||
CORE_ADDR displacement; | |||||
displacement = kvm_kerndisp(nkvm); | |||||
if (displacement != 0) { | if (displacement != 0) { | ||||
new_offsets = XALLOCAVEC (struct section_offsets, | section_offsets new_offsets (symfile_objfile->section_offsets.size (), | ||||
symfile_objfile->num_sections); | displacement); | ||||
for (i = 0; i < symfile_objfile->num_sections; i++) | |||||
new_offsets->offsets[i] = displacement; | |||||
objfile_relocate(symfile_objfile, new_offsets); | objfile_relocate(symfile_objfile, new_offsets); | ||||
} | } | ||||
} | } | ||||
#endif | #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 | ||||
▲ Show 20 Lines • Show All 313 Lines • Show Last 20 Lines |