b0ae557 class regcache_read and Pass regcache_read to gdbarch methods

Authored and Committed by Yao Qi 6 years ago
    class regcache_read and Pass regcache_read to gdbarch methods
    
    pseudo registers are either from raw registers or memory, so
    gdbarch methods pseudo_register_read and pseudo_register_read_value
    should have regcache object which only have read methods.  In other
    words, we should disallow writing to regcache in these two gdbarch
    methods.  In order to apply this restriction, this patch adds a new
    class regcache_read, derived from reg_buffer, and it only has
    raw_read and cooked_read methods.  regcache is derived from
    regcache_read.  This patch also passes regcache_read instead of
    regcache to gdbarch methods pseudo_register_read and
    pseudo_register_read_value.
    
    This patch moves raw_read* and cooked_read* methods to regcache_read,
    which is straightforward.  One thing not straightforward is that I split
    regcache::xfer_part to regcache_read::read_part and regcache::write_part,
    because regcache_read can only have methods to read.
    
    regcache_read is an abstract base class, and it has a pure virtual
    function raw_update, because I don't want regcache_read know where these
    raw registers are from.  They can be from either the target (readwrite
    regcache) or the regcache itself (readonly regcache).
    
    gdb:
    
    2017-11-29  Yao Qi  <yao.qi@linaro.org>
    
    	* aarch64-tdep.c (aarch64_pseudo_register_read_value): Change
    	parameter type to 'regcache_read *'.
    	* amd64-tdep.c (amd64_pseudo_register_read_value): Likewise.
    	* arm-tdep.c (arm_neon_quad_read): Likewise.
    	(arm_pseudo_read): Likewise.
    	* avr-tdep.c (avr_pseudo_register_read): Likewise.
    	* bfin-tdep.c (bfin_pseudo_register_read): Likewise.
    	* frv-tdep.c (frv_pseudo_register_read): Likewise.
    	* gdbarch.c: Re-generated.
    	* gdbarch.h: Re-generated.
    	* gdbarch.sh (pseudo_register_read): Change parameter type to
    	'regcache_read *'.
    	(pseudo_register_read_value): Likewise.
    	* h8300-tdep.c (pseudo_from_raw_register): Likewise.
    	(h8300_pseudo_register_read): Likewise.
    	* hppa-tdep.c (hppa_pseudo_register_read): Likewise.
    	* i386-tdep.c (i386_mmx_regnum_to_fp_regnum): Likewise.
    	(i386_pseudo_register_read_into_value): Likewise.
    	(i386_pseudo_register_read_value): Likewise.
    	* i386-tdep.h (i386_pseudo_register_read_into_value): Update
    	declaration.
    	* ia64-tdep.c (ia64_pseudo_register_read): Likewise.
    	* m32c-tdep.c (m32c_raw_read): Likewise.
    	(m32c_read_flg): Likewise.
    	(m32c_banked_register): Likewise.
    	(m32c_banked_read): Likewise.
    	(m32c_sb_read): Likewise.
    	(m32c_part_read): Likewise.
    	(m32c_cat_read): Likewise.
    	(m32c_r3r2r1r0_read): Likewise.
    	(m32c_pseudo_register_read): Likewise.
    	* m68hc11-tdep.c (m68hc11_pseudo_register_read): Likewise.
    	* mep-tdep.c (mep_pseudo_cr32_read): Likewise.
    	(mep_pseudo_cr64_read): Likewise.
    	(mep_pseudo_register_read): Likewise.
    	* mips-tdep.c (mips_pseudo_register_read): Likewise.
    	* msp430-tdep.c (msp430_pseudo_register_read): Likewise.
    	* nds32-tdep.c (nds32_pseudo_register_read): Likewise.
    	* regcache.c (regcache::raw_read): Move it to regcache_read.
    	(regcache::cooked_read): Likewise.
    	(regcache::cooked_read_value): Likewise.
    	(regcache_cooked_read_signed):
    	(regcache::cooked_read): Likewise.
    	* regcache.h (regcache_read): New class.
    	(regcache): Inherit regcache_read.  Move some methods to
    	regcache_read.
    	* rl78-tdep.c (rl78_pseudo_register_read): Change
    	parameter type to 'regcache_read *'.
    	* rs6000-tdep.c (do_regcache_raw_read): Remove.
    	(e500_pseudo_register_read): Change parameter type to
    	'regcache_read *'.
    	(dfp_pseudo_register_read): Likewise.
    	(vsx_pseudo_register_read): Likewise.
    	(efpr_pseudo_register_read): Likewise.
    	* s390-linux-tdep.c (s390_pseudo_register_read): Likewise.
    	* sh-tdep.c (sh_pseudo_register_read): Likewise.
    	* sh64-tdep.c (pseudo_register_read_portions): Likewise.
    	(sh64_pseudo_register_read): Likewise.
    	* sparc-tdep.c (sparc32_pseudo_register_read): Likewise.
    	* sparc64-tdep.c (sparc64_pseudo_register_read): Likewise.
    	* spu-tdep.c (spu_pseudo_register_read_spu): Likewise.
    	(spu_pseudo_register_read): Likewise.
    	* xtensa-tdep.c	(xtensa_register_read_masked): Likewise.
    	(xtensa_pseudo_register_read): Likewise.
    
        
file modified
+1 -1
file modified
+1 -1
file modified
+3 -3
file modified
+1 -1
file modified
+1 -1
file modified
+1 -1
file modified
+2 -2
file modified
+4 -4
file modified
+2 -2
file modified
+2 -2
file modified
+1 -1
file modified
+3 -3
file modified
+1 -1
file modified
+1 -1
file modified
+10 -10
file modified
+1 -1
file modified
+3 -3
file modified
+1 -1
file modified
+1 -1
file modified
+1 -1
file modified
+53 -31
file modified
+36 -22
file modified
+1 -1
file modified
+36 -16
file modified
+1 -1
file modified
+2 -2
file modified
+2 -2
file modified
+1 -1
file modified
+1 -1
file modified
+2 -2
file modified
+2 -2