Go to file
Pedro Alves d5b495b40b Rework value_of_register in terms of value_of_register_lazy.
I noticed that value_of_register (used for getting values _of_
registers ($pc, $rax, etc.), rather than variables _in_ registers),
kind of builds a franken-value, by propagating the lval and address of
the frame register value, but not the entire location, like necessary
for lval_computed (if some unwinder ever returns that, the resulting
value will misbehave).  This gets in the way of printing optimized out
(not saved) lval_registers differently from other optimized out
values, as it doesn't make sure the resulting value is lval_register.

I started out by just doing something like:

-  VALUE_LVAL (reg_val) = lval;
-  set_value_address (reg_val, addr);
+  VALUE_LVAL (reg_val) = lval_register;

... just like value_of_register_lazy below.  That's sufficient to fix
the issue.

Then I noticed this is using frame_register, which we should avoid
nowadays, for it returns elements of a value, but not all that's
sometimes necessary (unavailable-ness is all or nothing with it, for
instance), and considered using get_frame_register_value instead
(which returns a struct value), and value_contents_copy, just like
value_fetch_lazy's handling of lval_register.  But at that point, I
realized we might as well just defer all that work to
value_of_register_lazy/value_fetch_lazy...

Doing it this way adds a frame_find_by_id lookup (from within
value_fetch_lazy), while we already have a frame pointer handy in
value_of_register.  I considered factoring out the lazy register
fetching out of value_fetch_lazy, into a function that takes a frame
pointer and call that instead, avoiding the lookup, but then it looked
like too much complication for an early optimization, and went back to
keeping it simple.

Tested on x86_64 Fedora 17.

gdb/
2013-09-05  Pedro Alves  <palves@redhat.com>

	* findvar.c (value_of_register): Rework in terms of
	value_of_register_lazy.
2013-09-05 14:02:16 +00:00
bfd daily update 2013-09-05 00:00:05 +00:00
binutils PR binutils/15796 2013-08-27 16:22:48 +00:00
config 2013-04-30 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-04-30 12:40:42 +00:00
cpu PR binutils/15241 2013-03-08 17:25:12 +00:00
elfcpp elfcpp/ 2013-03-01 22:45:56 +00:00
etc
gas gas/ 2013-09-04 12:28:11 +00:00
gdb Rework value_of_register in terms of value_of_register_lazy. 2013-09-05 14:02:16 +00:00
gold Use relative relocation for R_X86_64_32 on x32 2013-09-03 17:38:57 +00:00
gprof bfd/ 2013-08-05 21:58:23 +00:00
include PR binutils/15834 2013-08-23 07:54:19 +00:00
intl
ld ld/testsuite/ 2013-09-04 14:35:13 +00:00
libdecnumber merge from gcc 2013-07-09 16:04:44 +00:00
libiberty merge from gcc 2013-08-20 06:02:53 +00:00
opcodes PR gas/15914 2013-09-04 07:59:33 +00:00
readline readline/ 2013-05-22 09:51:49 +00:00
sim sim: mark complete_option_list args const to fix build warnings 2013-09-03 20:45:08 +00:00
texinfo
.cvsignore
.gitignore Sync the root .gitignore file with GCC's. 2013-01-11 15:17:35 +00:00
ChangeLog src-release: Strip "-cvs" from GDB source dir and tarball. 2013-08-17 01:07:52 +00:00
compile
config-ml.in
config.guess * config.guess: Update from config repo. 2013-04-29 15:13:53 +00:00
config.rpath
config.sub * config.guess: Update from config repo. 2013-04-29 15:13:53 +00:00
configure 2013-08-12 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-08-12 11:36:35 +00:00
configure.ac 2013-08-12 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-08-12 11:36:35 +00:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS 2013-01-07 Jeff Johnston <jjohnstn@redhat.com> 2013-01-07 21:39:26 +00:00
COPYING.NEWLIB 2013-05-06 Sandra Loosemore <sandra@codesourcery.com> 2013-05-06 18:31:56 +00:00
depcomp
djunpack.bat
install-sh
libtool.m4 PR target/38607 2012-09-14 23:55:22 +00:00
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS MAINTAINERS: clarify policy with config/ (and other top level files) 2012-05-12 03:10:17 +00:00
Makefile.def 2013-08-12 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-08-12 11:36:35 +00:00
Makefile.in 2013-08-12 Jan-Benedict Glaw <jbglaw@lug-owl.de> 2013-08-12 11:36:35 +00:00
Makefile.tpl * Makefile.tpl (BOOT_ADAFLAGS): Remove -gnata. 2013-01-11 11:48:54 +00:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
README
README-maintainer-mode
setup.com
src-release src-release: Strip "-cvs" from GDB source dir and tarball. 2013-08-17 01:07:52 +00:00
symlink-tree
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.