Go to file
Pierre-Marie de Rodat f76f096ec7 DWARF: add DW_AT_encoding attributes for DW_TAG_enumeration_type DIEs
Currently, the DWARF description does not specify the signedness of the
representation of enumeration types.  This is a problem in some
contexts where DWARF consumers need to determine if value X is greater
than value Y.

For instance in Ada:

    type Enum_Type is ( A, B, C, D);
    for Enum_Type use (-1, 0, 1, 2);

    type Rec_Type (E : Enum_Type) is record
       when A .. B => null;
       when others => B : Booleann;
    end record;

The above can be described in DWARF the following way:

    DW_TAG_enumeration_type(Enum_Type)
    | DW_AT_byte_size: 1
      DW_TAG_enumerator(A)
      | DW_AT_const_value: -1
      DW_TAG_enumerator(B)
      | DW_AT_const_value: 0
      DW_TAG_enumerator(C)
      | DW_AT_const_value: 1
      DW_TAG_enumerator(D)
      | DW_AT_const_value: 2

    DW_TAG_structure_type(Rec_Type)
      DW_TAG_member(E)
      | DW_AT_type: <Enum_Type>
      DW_TAG_variant_part
      | DW_AT_discr: <E>
        DW_TAG_variant
        | DW_AT_discr_list: DW_DSC_range 0x7f 0
        DW_TAG_variant
        | DW_TAG_member(b)

DWARF consumers need to know that enumerators (A, B, C and D) are signed
in order to determine the set of E values for which Rec_Type has a B
field.  In practice, they need to know how to interpret the 0x7f LEB128
number above (-1, not 127).

When in non-strict DWARF mode, this patch adds a DW_AT_encoding
attribute to generated DW_TAG_enumeration_type DIEs to make this
signedness explicit.

gcc/

	* dwarf2out.c (gen_enumeration_type_die): When
	-gno-strict-dwarf, add a DW_AT_encoding attribute.

From-SVN: r244015
2017-01-03 08:54:57 +00:00
INSTALL
config Disable hwcaps on libgfortran 2016-12-12 13:40:21 +00:00
contrib update-copyright.py (TestsuiteFilter): Skip params/README. 2017-01-01 12:50:10 +01:00
fixincludes Don't define libstdc++-internal macros in Solaris 10+ <math.h> 2016-11-21 16:09:47 +00:00
gcc DWARF: add DW_AT_encoding attributes for DW_TAG_enumeration_type DIEs 2017-01-03 08:54:57 +00:00
gnattools configure.ac: Add ACX_NONCANONICAL_HOST. 2016-05-16 08:55:12 +00:00
gotools Update copyright dates 2016-06-07 08:54:22 +00:00
include dwarf2.def (DW_FORM_ref_sup): Renamed to ... 2016-12-21 23:48:51 +01:00
intl config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libada Update copyright years. 2017-01-01 13:07:43 +01:00
libatomic Update copyright years. 2017-01-01 13:07:43 +01:00
libbacktrace Update copyright years. 2017-01-01 13:07:43 +01:00
libcc1 Add SET_DECL_MODE 2016-11-18 10:03:12 +00:00
libcilkrts Import libcilkrts Build 4467 (PR target/68945) 2016-12-01 14:48:49 +00:00
libcpp Update copyright years. 2017-01-01 13:07:43 +01:00
libdecnumber Update copyright years. 2017-01-01 13:07:43 +01:00
libffi config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libgcc Update copyright years. 2017-01-01 13:07:43 +01:00
libgfortran PR 78534 Change character length from int to size_t 2017-01-03 09:04:01 +02:00
libgo runtime: copy cgo support from Go 1.7 runtime 2016-12-19 18:00:35 +00:00
libgomp Update copyright years. 2017-01-01 13:07:43 +01:00
libiberty re PR c++/78761 (C++14, compiler generate mangled name that can not be demangled) 2016-12-13 07:16:05 +01:00
libitm Update copyright years. 2017-01-01 13:07:43 +01:00
libmpx libtool-version: New version. 2016-12-27 15:35:19 +00:00
libobjc Update copyright years. 2017-01-01 13:07:43 +01:00
liboffloadmic config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libquadmath gcc.c (process_command): Update copyright notice dates. 2017-01-01 12:31:28 +01:00
libsanitizer Add PR sanitizer/78532 patch to libsanitizer/LOCAL_PATCHES. 2016-11-30 14:32:55 +02:00
libssp config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
libstdc++-v3 faq.xml: Update address of C++ ABI link. 2017-01-02 00:33:17 +00:00
libvtv config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
lto-plugin config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
maintainer-scripts re PR web/50642 (onlinedocs formated text too small to read) 2016-09-04 19:38:05 +00:00
zlib config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
.dir-locals.el
.gitattributes add basic .gitattributes files to notice whitespace issues 2016-04-23 02:37:43 +00:00
.gitignore .gitignore: Ignore in-tree prerequisites. 2016-09-09 17:20:55 -04:00
ABOUT-NLS
COPYING
COPYING.LIB
COPYING.RUNTIME
COPYING3
COPYING3.LIB
ChangeLog * config.sub: Import latest version. 2016-12-29 22:04:53 +11:00
ChangeLog.jit Merger of dmalcolm/jit branch from git 2014-11-11 21:55:52 +00:00
ChangeLog.tree-ssa
MAINTAINERS MAINTAINERS (Write After Approval): Add myself. 2016-12-26 10:28:02 +00:00
Makefile.def Makefile.def: Remove reference to boehm-gc target module. 2016-11-30 00:12:45 +00:00
Makefile.in Makefile.def: Remove reference to boehm-gc target module. 2016-11-30 00:12:45 +00:00
Makefile.tpl Makefile.def: Remove references to GCJ. 2016-11-15 17:29:12 +00:00
README
compile Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
config-ml.in config-ml.in: Remove references to GCJ. 2016-11-15 16:34:02 +00:00
config.guess config.guess: Import latest version. 2016-11-25 08:38:27 +11:00
config.rpath
config.sub * config.sub: Import latest version. 2016-12-29 22:04:53 +11:00
configure configure.ac: Don't bootstrap libmpx unless --with-build-config includes bootstrap-mpx. 2016-12-21 12:28:40 +01:00
configure.ac configure.ac: Don't bootstrap libmpx unless --with-build-config includes bootstrap-mpx. 2016-12-21 12:28:40 +01:00
depcomp Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
install-sh Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
libtool-ldflags
libtool.m4 * libtool.m4 (export_symbols_cmds) [AIX]: Add global TLS "L" symbols. 2015-11-26 08:20:59 -05:00
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
missing Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
mkdep
mkinstalldirs Update from upstream Automake files. 2014-11-16 14:07:13 +00:00
move-if-change Update move-if-change from gnulib 2014-11-16 16:12:44 +00:00
symlink-tree
ylwrap Update from upstream Automake files. 2014-11-16 14:07:13 +00:00

README

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.