binutils-gdb modified for the FreeChainXenon project
Find a file
Joel Brobecker 6908c50982 Handle variable-sized fields in the interior of structure type
In Ada, variable-sized field can be located at any position of
a structure. Consider for instance the following declarations:

   Dyn_Size : Integer := 1;

   type Table is array (Positive range <>) of Integer;

   type Inner is record
      T1 : Table (1 .. Dyn_Size) := (others => 1);
      T2 : Table (1 .. Dyn_Size) := (others => 2);
   end record;

   type Inner_Array is array (1 .. 2) of Inner;

   type Outer is
      record
         I0 : Integer := 0;
         A1 : Inner_Array;
         Marker : Integer := 16#01020304#;
      end record;

   Rt : Outer;

What this does is declare a variable "Rt" of type Outer, which
contains 3 fields where the second (A1) is of type Inner_Array.
type Inner_Array is an array with 2 elements of type Inner.
Because type Inner contains two arrays whose upper bound depend
on a variable, the size of the array, and therefore the size of
type Inner is dynamic, thus making field A1 a dynamically-size
field.

When trying to print the value of Rt, we hit the following limitation:

    (gdb) print rt
    Attempt to resolve a variably-sized type which appears in the interior of
    a structure type

The limitation was somewhat making sense in C, but needs to be lifted
for Ada. This patch mostly lifts that limitation. As a result of this
patch, the type length computation had to be reworked a little bit.

gdb/ChangeLog:

        * gdbtypes.c (resolve_dynamic_struct): Do not generate an error
        if detecting a variable-sized field that is not the last field.
        Fix struct type length computation.

gdb/testsuite/ChangeLog:

        * gdb.base/vla-datatypes.c (vla_factory): Add new variable
        inner_vla_struct_object_size.
        * gdb.base/vla-datatypes.exp: Adjust last test, and mark it
        as xfail.
2014-08-01 07:44:27 -07:00
bfd Fix PR10373 which is SH relax bug. 2014-08-01 19:17:47 +09:00
binutils [MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions 2014-07-29 11:27:59 +01:00
config Sync nios2 configure changes from GCC mainline. 2014-05-14 16:27:14 -07:00
cpu or1k: add missing l.msync, l.psync and l.psync instructions. 2014-07-20 20:26:09 +03:00
elfcpp [MIPS] Implement O32 FPXX, FP64 and FP64A ABI extensions 2014-07-29 11:27:59 +01:00
etc PR external/{16327,16328}: Remove etc/configure.texi and etc/standards.texi. 2014-06-27 11:33:25 +02:00
gas Fix PR10378 which is SH relax bug. 2014-08-01 19:13:39 +09:00
gdb Handle variable-sized fields in the interior of structure type 2014-08-01 07:44:27 -07:00
gold Fix ChangeLog entry: 2014-07-21 11:15:38 -07:00
gprof Rename configure.in to configure.ac 2014-07-04 13:40:28 +09:30
include [MIPS] Rename COPROC related macros 2014-07-29 13:58:54 +01:00
intl merge from gcc 2010-09-27 21:01:18 +00:00
ld Fix PR10373 which is SH relax bug. 2014-08-01 19:17:47 +09:00
libdecnumber PR c/59871 c/ * c-typeck.c (build_compound_expr): Warn even for right-hand operand of a comma expression. (emit_side_effect_warnings): Likewise. libdecnumber/ * decNumberLocal.h (UBFROMUS, UBFROMUI): Remove last argument. testsuite/ * gcc.dg/20020220-2.c: Adjust dg-warning message. * gcc.dg/pr59871.c: New test. 2014-05-08 10:18:28 -06:00
libiberty Delete temporary string within demangler even in failure cases. 2014-06-11 11:41:51 +01:00
opcodes [MIPS] Rename COPROC related macros 2014-07-29 13:58:54 +01:00
readline * readline.c (bind_arrow_keys_internal): 2013-09-24 14:49:48 +00:00
sim Sim - Use long int format instead of int to avoid compiling warning 2014-06-30 17:40:02 -07:00
texinfo * texinfo/texinfo.tex: Update to version 2009-03-28.05. 2009-04-21 12:36:46 +00:00
.cvsignore
.gitattributes Add a .gitattributes file for use with git-merge-changelog 2014-07-25 18:07:23 -04:00
.gitignore Sync the root .gitignore file with GCC's. 2013-01-11 15:17:35 +00:00
ChangeLog or1k: GDB not supported for or1k*-*-rtems* 2014-07-27 18:43:52 +02:00
compile Update automake-provided files in the toplevel. 2009-08-22 11:48:33 +00:00
config-ml.in * config-ml.in: Don't handle arc-*-elf*. 2011-03-22 20:01:13 +00:00
config.guess * config.sub, config.guess: Import from upstream. 2014-05-01 21:49:01 +01:00
config.rpath Remove freebsd1 from libtool.m4 macros and config.rpath. 2011-02-13 21:00:14 +00:00
config.sub Import config.sub from upstream config repo 2014-07-29 07:04:52 -04:00
configure or1k: GDB not supported for or1k*-*-rtems* 2014-07-27 18:43:52 +02:00
configure.ac or1k: GDB not supported for or1k*-*-rtems* 2014-07-27 18:43:52 +02:00
COPYING
COPYING.LIB
COPYING.LIBGLOSS 2013-01-07 Jeff Johnston <jjohnstn@redhat.com> 2013-01-07 21:39:26 +00:00
COPYING.NEWLIB 2013-10-01 Jeff Johnston <jjohnstn@redhat.com> 2013-10-01 18:14:04 +00:00
COPYING3
COPYING3.LIB
depcomp Update automake-provided files in the toplevel. 2009-08-22 11:48:33 +00: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 automake-provided files in the toplevel. 2009-08-22 11:48:33 +00:00
libtool.m4 * libtool.m4 (_LT_ENABLE_LOCK <ld -m flags>): Remove non-canonical 2013-09-20 09:51:25 +00:00
ltgcc.m4 * libtool.m4: Update to libtool 2.2.6. 2008-09-29 15:28:14 +00:00
ltmain.sh PR target/59788 2014-02-06 11:01:57 +01:00
ltoptions.m4 Sync Libtool from GCC. 2010-01-09 21:11:44 +00:00
ltsugar.m4 * libtool.m4: Update to libtool 2.2.6. 2008-09-29 15:28:14 +00:00
ltversion.m4 Sync Libtool from GCC. 2010-01-09 21:11:44 +00:00
lt~obsolete.m4 Sync Libtool from GCC. 2010-01-09 21:11:44 +00:00
MAINTAINERS MAINTAINERS: clarify policy with config/ (and other top level files) 2012-05-12 03:10:17 +00:00
Makefile.def PR sanitizer/56781 * Makefile.def: Set bootstrap=true; for host fixincludes. * configure.ac: Don't bootstrap host fixincludes unless --with-build-config=bootstrap-{a,ub}san. * Makefile.in: Regenerated. * configure: Regenerated. 2014-05-08 10:18:30 -06:00
Makefile.in PR sanitizer/56781 * Makefile.def: Set bootstrap=true; for host fixincludes. * configure.ac: Don't bootstrap host fixincludes unless --with-build-config=bootstrap-{a,ub}san. * Makefile.in: Regenerated. * configure: Regenerated. 2014-05-08 10:18:30 -06:00
Makefile.tpl PR bootstrap/58572 * Makefile.tpl (POSTSTAGE1_CXX_EXPORT): Use -isystem instead of -I for libstdc++-v3 includes if $(LEAN). * Makefile.in: Regenerated. 2014-05-08 10:18:29 -06:00
makefile.vms
missing Update automake-provided files in the toplevel. 2009-08-22 11:48:33 +00:00
mkdep
mkinstalldirs Update automake-provided files in the toplevel. 2009-08-22 11:48:33 +00:00
move-if-change Import move-if-change script from gnulib. 2011-02-12 15:47:02 +00:00
README
README-maintainer-mode Cleanups after the update to Autoconf 2.64, Automake 1.11. 2009-08-22 17:08:11 +00:00
setup.com 2009-09-01 Tristan Gingold <gingold@adacore.com> 2009-09-01 13:38:26 +00:00
src-release * src-release (do-proto-toplevel): Support subdir-path-prefixed 2013-10-15 20:45:52 +00:00
symlink-tree
ylwrap Update automake-provided files in the toplevel. 2009-08-22 11:48:33 +00: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.