]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
dwarf.h: Add DW_LANG_C11, DW_LANG_C_plus_plus_11 and DW_LANG_C_plus_plus_14.
authorMark Wielaard <mjw@redhat.com>
Mon, 24 Nov 2014 21:17:51 +0000 (22:17 +0100)
committerMark Wielaard <mjw@redhat.com>
Wed, 26 Nov 2014 17:00:52 +0000 (18:00 +0100)
The following patch is needed to recognize the new DW_LANG constants
that GCC 5 might emit as implemented by this GCC patch:
https://gcc.gnu.org/ml/gcc-patches/2014-11/msg02852.html

Also added to https://fedorahosted.org/elfutils/wiki/DwarfExtensions

GCC 5 can emit these new DWARFv5 draft language constants. Handle them in
dwarf_aggregate_size and dwarf_getfuncs. Also handle DW_LANG_Go in
dwarf_aggregate_size (lower bound for array is zero for Go).

Signed-off-by: Mark Wielaard <mjw@redhat.com>
libdw/ChangeLog
libdw/dwarf.h
libdw/dwarf_aggregate_size.c
libdw/dwarf_getfuncs.c

index 7e46e1a88ed524689c6df1018ea1b6b1071052de..9ceb52725be0c2ce3aba35aae3c2d0839cef7881 100644 (file)
@@ -1,3 +1,14 @@
+2014-11-24  Mark Wielaard  <mjw@redhat.com>
+
+       * dwarf.h (DW_LANG_C_plus_plus_11): Added.
+       (DW_LANG_C11): Likewise.
+       (DW_LANG_C_plus_plus_14): Likewise.
+       * dwarf_aggregate_size.c (array_size): Handle DW_LANG_C11,
+       DW_LANG_C_plus_plus_11, DW_LANG_C_plus_plus_14 and DW_LANG_Go
+       lower bound.
+       * dwarf_getfuncs.c (dwarf_getfuncs): Set c_cu to true for
+       DW_LANG_C11.
+
 2014-11-26  Mark Wielaard  <mjw@redhat.com>
 
        * dwarf.h (DW_AT_noreturn): Added.
index d47260e4620a7c24791dc0066e458beb49abfa1f..da8cf3a6b6e4e559a2e78bb6c00109ac8f0cea2b 100644 (file)
@@ -586,6 +586,10 @@ enum
     DW_LANG_D = 0x0013,                     /* D */
     DW_LANG_Python = 0x0014,        /* Python */
     DW_LANG_Go = 0x0016,            /* Go */
+    DW_LANG_C_plus_plus_11 = 0x001a, /* ISO C++:2011 */
+    DW_LANG_C11 = 0x001d,           /* ISO C:2011 */
+    DW_LANG_C_plus_plus_14 = 0x0021, /* ISO C++:2014 */
+
 
     DW_LANG_lo_user = 0x8000,
     DW_LANG_Mips_Assembler = 0x8001, /* Assembler */
index 1666e2402fc35a61306acfc95aa46bfe305d2e96..667c2743482a52843174bd22e7e91e2f59f84b13 100644 (file)
@@ -103,12 +103,16 @@ array_size (Dwarf_Die *die, Dwarf_Word *size,
                    case DW_LANG_C:
                    case DW_LANG_C89:
                    case DW_LANG_C99:
+                   case DW_LANG_C11:
                    case DW_LANG_C_plus_plus:
+                   case DW_LANG_C_plus_plus_11:
+                   case DW_LANG_C_plus_plus_14:
                    case DW_LANG_ObjC:
                    case DW_LANG_ObjC_plus_plus:
                    case DW_LANG_Java:
                    case DW_LANG_D:
                    case DW_LANG_UPC:
+                   case DW_LANG_Go:
                      lower = 0;
                      break;
 
index 82894c980c5c342bf37383ec5bec52ff1e903b6d..f79b0a79ab63f1f4e7d0b2ee04cc48ba92f68431 100644 (file)
@@ -103,7 +103,8 @@ dwarf_getfuncs (Dwarf_Die *cudie, int (*callback) (Dwarf_Die *, void *),
   int lang = INTUSE(dwarf_srclang) (cudie);
   bool c_cu = (lang == DW_LANG_C89
               || lang == DW_LANG_C
-              || lang == DW_LANG_C99);
+              || lang == DW_LANG_C99
+              || lang == DW_LANG_C11);
 
   struct visitor_info v = { callback, arg, (void *) offset, NULL, c_cu };
   struct Dwarf_Die_Chain chain = { .die = CUDIE (cudie->cu),