This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH/RFA] arm-netbsdelf cross-debugging fixes


This fixes a bunch of cross-debugging issues for the arm-netbsdelf
target, and makes it more like the other NetBSD targets I've worked
on recently.

Unfortunately, the change disables "gdb_multi_arch=yes" for the
arm-*-netbsd* entry in configure.tgt.  The reason for this is that
the tm file needs to include "solib.h".  As far as I can tell, no
platforms with shared libraries can be fully multi-arch until all
the solib stuff is multi-arch'd.

I need approval for a change to the shared ARM target code.  I needed
to add a function to deconstruct/reconstruct the R15 register on the
26-bit ARM CPUs.  The new functions:

	* Split a 26-bit R15 into PC and a 32-bit-format PSR.

	* Take a PC and a 32-bit-format PSR and combine them back
	  into a 26-bit R15.

While there, I also fixed a problem with arm_addr_bits_remove -- No
26-bit systems can run in Thumb mode, and so doing an arm_pc_is_thumb
on them is unnecessary (and could return incorrect results if debugging
code which runs in FIQ mode, since (pc & 1) == FIQ mode on those CPUs).

	* Makefile.in (armnbsd_tdep_h): New header variable.
	(armnbsd-nat.o): Remove $(gdbcore_h) from and
	add $(armnbsd_tdep_h) to dependency list.
	(armnbsd-tdep.o): Add $(gdbcore_h), $(regcache_h), $(target_h),
	$(value_h), and $(armnbsd_tdep_h) to dependency list.
	* arm-tdep.c (arm_addr_bits_remove): Don't check for Thumb mode
	if arm_apcs_32 is false.
	(arm_extract_26bit_r15, arm_store_26bit_r15): New functions.
	* arm-tdep.h (arm_extract_26bit_r15, arm_store_26bit_r15): New
	prototypes.
	* armnbsd-nat.c: Rewrite.
	* armnbsd-tdep.c (armnbsd_supply_reg, armnbsd_fill_reg)
	(armnbsd_supply_fpreg, armnbsd_fill_fpreg)
	(fetch_core_registers, fetch_elfcore_registers): New functions.
	(_initialize_arm_netbsd_tdep): Register armnbsd_core_fns
	and armnbsd_elfcore_fns.
	* armnbsd-tdep.h: New file.
	* configure.tgt (arm*-*-netbsd*): Don't get gdb_multi_arch.  Add
	a comment to explain why we can't do this yet.
	* config/arm/nbsd.mt (TDEPFILES): Add corelow.o.
	(TM_FILE): Set to tm-nbsd.h.
	* config/arm/nbsdaout.mh (NATDEPFILES): Remove corelow.o.
	* config/arm/nbsdelf.mh (NATDEPFILES): Likewise.
	* config/arm/tm-nbsd.h: New file.

-- 
        -- Jason R. Thorpe <thorpej@wasabisystems.com>

Attachment: arm-gdb-patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]