Go to file
Simon Marchi 32ef30002c dwarf: Read register number as unsigned in DW_CFA_def_cfa*
When displaying the .debug_frame section, the register numbers in the
DW_CFA_def_cfa* statements are read as signed numbers.  I have come
across a target that has register 121, encoded as 0x79 in unsigned LEB128.
Interpreting this as signed results in -7, which makes readelf display
"r-7".

The DWARF5 standard (6.4.2.2) states that the register numbers should be
treated as unsigned LEB128.

Simply replacing READ_SLEB with READ_ULEB resulted in warnings like
these:

/home/emaisin/src/binutils-gdb/binutils/dwarf.c: In function ‘display_debug_frames’:
/home/emaisin/src/binutils-gdb/binutils/dwarf.c:355:17: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
       if ((var) != _val)     \
                 ^
/home/emaisin/src/binutils-gdb/binutils/dwarf.c:7866:8: note: in expansion of macro ‘READ_ULEB’
        READ_ULEB (fc->cfa_reg);
        ^
... so I also changed Frame_Chunk::cfa_reg to an unsigned int.

binutils/ChangeLog:

	* dwarf.c (struct Frame_Chunk) <cfa_reg>: Change type to
	unsigned int.
	(display_debug_frames): Read CFA reg as an unsigned number.
2017-10-27 09:01:36 -04:00
bfd Automatic date update in version.in 2017-10-27 00:00:28 +00:00
binutils dwarf: Read register number as unsigned in DW_CFA_def_cfa* 2017-10-27 09:01:36 -04:00
config picflag.m4 high bit set in comment 2017-01-05 00:02:57 +10:30
cpu Update the openrisc previous program counter (ppc) when running code in the cgen based simulator. 2017-03-20 15:33:51 +00:00
elfcpp oops - changelog entry omitted from previous delta 2017-09-21 09:07:11 +01:00
etc update-copyright.py for binutils 2017-01-05 00:03:07 +10:30
gas x86: Check invalid XMM register in AVX512 gathers 2017-10-26 11:18:25 -07:00
gdb Add PR mention to previous commit 2017-10-27 08:58:43 -04:00
gold Allow for __gnu_lto_slim prefixed with extra "_" 2017-10-25 15:32:52 +10:30
gprof Update the Hungarian translation in the gprof directory. 2017-10-05 14:10:27 +01:00
include PR22348, conflicting global vars in crx and cr16 2017-10-25 22:14:58 +10:30
intl Regen intl/configure 2015-08-31 12:53:36 +09:30
ld [PR21703]Adjust pr21703 tests on various targets. 2017-10-26 15:43:44 +01:00
libdecnumber Remove leading/trailing white spaces in ChangeLog 2015-07-24 04:16:47 -07:00
libiberty Sync libiberty/ & include/ with GCC 2017-09-15 17:40:33 +01:00
opcodes PR22348, conflicting global vars in crx and cr16 2017-10-25 22:14:58 +10:30
readline Avoid MinGW compilation warning in readline/input.c 2017-05-19 11:05:59 +03:00
sim FT32: support for FT32B processor - part 1 2017-10-12 18:41:29 -07:00
texinfo
zlib Sync ZLIB with FSF GCC sources, bringing in version 1.2.11. 2017-02-20 12:52:22 +00:00
.cvsignore
.gitattributes
.gitignore Add archives and make stamps to the .gitignore file. 2016-09-27 15:10:42 +01:00
ChangeLog Add -l option to src-release script. 2017-09-15 16:18:20 +01:00
compile Update from upstream Automake 2014-11-16 13:43:48 +01:00
config-ml.in Sync toplevel files with GCC 2015-07-27 07:49:05 -07:00
config.guess Sync top level config files with master versions in the FSF config project. 2017-03-22 14:01:03 +00:00
config.rpath Remove freebsd1 from libtool.m4 macros and config.rpath. 2011-02-13 21:00:14 +00:00
config.sub * config.sub: Sync with master version in config project. 2017-04-13 02:34:19 -07:00
configure Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
configure.ac Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB 2005-07-16 Kelley Cook <kcook@gcc.gnu.org> 2005-07-16 02:41:34 +00:00
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp Update from upstream Automake 2014-11-16 13:43:48 +01:00
djunpack.bat * djunpack.bat: Use ".." quoting in Sed command, for the sake of 2009-03-27 13:37:09 +00:00
install-sh Update from upstream Automake 2014-11-16 13:43:48 +01:00
libtool.m4 Sync top-level btool.m4 with GCC 2016-01-12 08:44:52 -08:00
lt~obsolete.m4
ltgcc.m4
ltmain.sh PR target/59788 2014-02-06 11:01:57 +01:00
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS
Makefile.def Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
Makefile.in Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
Makefile.tpl Sync top-level make and configure files with FSF GCC mainline versions. 2017-01-23 11:55:48 +00:00
makefile.vms 19990502 sourceware import 1999-05-03 07:29:11 +00:00
missing Update from upstream Automake 2014-11-16 13:43:48 +01:00
mkdep
mkinstalldirs Update from upstream Automake 2014-11-16 13:43:48 +01:00
move-if-change Update `move-if-change' from gnulib 2014-11-16 17:04:02 +01:00
README 19990502 sourceware import 1999-05-03 07:29:11 +00:00
README-maintainer-mode
setup.com 2009-09-01 Tristan Gingold <gingold@adacore.com> 2009-09-01 13:38:26 +00:00
src-release.sh Add -l option to src-release script. 2017-09-15 16:18:20 +01:00
symlink-tree
ylwrap Update from upstream Automake 2014-11-16 13:43:48 +01:00

		   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.