Hello community,

here is the log from the commit of package gdb for openSUSE:Factory checked in 
at 2019-01-26 22:21:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gdb (Old)
 and      /work/SRC/openSUSE:Factory/.gdb.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gdb"

Sat Jan 26 22:21:13 2019 rev:124 rq:668405 version:8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/gdb/gdb.changes  2018-11-13 16:24:57.058731388 
+0100
+++ /work/SRC/openSUSE:Factory/.gdb.new.28833/gdb.changes       2019-01-26 
22:21:16.622910966 +0100
@@ -1,0 +2,27 @@
+Thu Jan 24 10:13:33 UTC 2019 - tdevr...@suse.com
+
+- Backport upstream fix for assertion failure
+  `SYMBOL_LANGUAGE (sym) == DICT_LANGUAGE (dict)->la_language'
+  [swo#23712, rh#1560010]
+  patches:
+  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-1of5.patch
+  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-2of5.patch
+  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-3of5.patch
+  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-4of5.patch
+  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-5of5.patch
+ * Add patches from fedora 29 @ 4513f72
+ * Add gdb-fix-multidictionary.exp-for-gdb-8.2.patch to fix
+   multidictionary.exp test-case
+
+-------------------------------------------------------------------
+Thu Dec  6 14:49:34 UTC 2018 - m...@suse.com
+
+- Add power8-registers.diff for implementing access to
+  more POWER8 registers.  [fate#326120, fate#325178]
+
+-------------------------------------------------------------------
+Mon Nov 12 13:26:01 UTC 2018 - tdevr...@suse.com
+
+- Run tests with -fno-PIE/-no-pie and -fPIE/-pie.
+
+-------------------------------------------------------------------

New:
----
  gdb-fix-multidictionary.exp-for-gdb-8.2.patch
  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-1of5.patch
  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-2of5.patch
  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-3of5.patch
  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-4of5.patch
  gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-5of5.patch
  power8-registers.diff

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gdb.spec ++++++
--- /var/tmp/diff_new_pack.hxpPOu/_old  2019-01-26 22:21:19.602908553 +0100
+++ /var/tmp/diff_new_pack.hxpPOu/_new  2019-01-26 22:21:19.602908553 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package gdb
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 # Copyright (c) 2012 RedHat
 #
 # All modifications and additions to the file contributed by third parties
@@ -232,6 +232,11 @@
 Patch132:       gdb-rhbz1491128-batch-mode-exit-status-1of2.patch
 Patch133:       gdb-rhbz1491128-batch-mode-exit-status-2of2.patch
 Patch134:       gdb-use-pulongest-aarch64-linux-tdep.patch
+Patch137:       
gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-1of5.patch
+Patch138:       
gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-2of5.patch
+Patch139:       
gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-3of5.patch
+Patch140:       
gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-4of5.patch
+Patch141:       
gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-5of5.patch
 #Fedora Packages end
 
 # Upstream patch to fix gcc -Werror
@@ -242,10 +247,14 @@
 
 # Backports from master
 Patch2000:      gdb-fix-crash-when-reading-core.patch
+Patch2001:      power8-registers.diff
 
 # libipt support
 Patch3000:      v1.5-libipt-static.patch
 
+# Testsuite fixes
+Patch4000:      gdb-fix-multidictionary.exp-for-gdb-8.2.patch
+
 BuildRequires:  bison
 BuildRequires:  flex
 %if 0%{suse_version} > 1110
@@ -550,6 +559,11 @@
 %patch132 -p1
 %patch133 -p1
 %patch134 -p1
+%patch137 -p1
+%patch138 -p1
+%patch139 -p1
+%patch140 -p1
+%patch141 -p1
 #Fedora patching end
 
 %patch1002 -p1
@@ -558,6 +572,7 @@
 %patch1007 -p1
 
 %patch2000 -p1
+%patch2001 -p1
 
 #unpack libipt
 %if 0%{have_libipt}
@@ -568,6 +583,8 @@
 )
 %endif
 
+%patch4000 -p1
+
 find -name "*.orig" | xargs rm -f
 ! find -name "*.rej" # Should not happen.
 
@@ -885,7 +902,11 @@
 
   # Run all the scheduled testsuite runs also in the PIE mode.
   # See also: gdb-runtest-pie-override.exp
-  CHECK="$(echo $CHECK|sed 's#check//unix/[^ ]*#& &/-fPIC/-pie#g')"
+  if rpm -q gcc-PIE; then
+      CHECK="$(echo $CHECK | sed 's#check//unix/[^ ]*#& &/-fno-PIE/-no-pie#g')"
+  else
+      CHECK="$(echo $CHECK | sed 's#check//unix/[^ ]*#& &/-fPIE/-pie#g')"
+  fi
 
   ./orphanripper make %{?_smp_mflags} -k $CHECK || :
 )

++++++ gdb-fix-multidictionary.exp-for-gdb-8.2.patch ++++++
[gdb] Fix multidictionary.exp for gdb 8.2

---
 gdb/testsuite/gdb.dwarf2/multidictionary.exp |  2 +-
 gdb/testsuite/lib/gdb.exp                    | 25 ++++++++++++++++++++-----
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/gdb/testsuite/gdb.dwarf2/multidictionary.exp 
b/gdb/testsuite/gdb.dwarf2/multidictionary.exp
index 5588ef2144..9b44035aeb 100644
--- a/gdb/testsuite/gdb.dwarf2/multidictionary.exp
+++ b/gdb/testsuite/gdb.dwarf2/multidictionary.exp
@@ -148,7 +148,7 @@ if {[build_executable $testfile.exp $testfile [list 
$asm_file $srcfile] {}] \
 
 # We force the DIEs above to be read in via "-readnow".
 gdb_spawn_with_cmdline_opts "-readnow"
-gdb_load $binfile
+gdb_load_no_done $binfile
 
 # All we need to do is check whether GDB is alive.  Without
 # multidictionaries, it will either crash, assert, or throw an
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index aef580b04d..f061af3b6c 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1485,7 +1485,7 @@ proc default_gdb_exit {} {
 # TODO: gdb.base/sepdebug.exp and gdb.stabs/weird.exp might be able to use
 # this if they can get more information set.
 
-proc gdb_file_cmd { arg } {
+proc gdb_file_cmd_1 { arg done } {
     global gdb_prompt
     global verbose
     global GDB
@@ -1523,17 +1523,17 @@ proc gdb_file_cmd { arg } {
 
     send_gdb "file $arg\n"
     gdb_expect 120 {
-       -re "Reading symbols from.*LZMA support was disabled.*done.*$gdb_prompt 
$" {
+       -re "Reading symbols from.*LZMA support was 
disabled.*$done.*$gdb_prompt $" {
            verbose "\t\tLoaded $arg into $GDB; .gnu_debugdata found but no 
LZMA available"
            set gdb_file_cmd_debug_info "lzma"
            return 0
        }
-       -re "Reading symbols from.*no debugging symbols 
found.*done.*$gdb_prompt $" {
+       -re "Reading symbols from.*no debugging symbols 
found.*$done.*$gdb_prompt $" {
            verbose "\t\tLoaded $arg into $GDB with no debugging symbols"
            set gdb_file_cmd_debug_info "nodebug"
            return 0
        }
-        -re "Reading symbols from.*done.*$gdb_prompt $" {
+        -re "Reading symbols from.*$done.*$gdb_prompt $" {
             verbose "\t\tLoaded $arg into $GDB"
            set gdb_file_cmd_debug_info "debug"
            return 0
@@ -1541,7 +1541,7 @@ proc gdb_file_cmd { arg } {
         -re "Load new symbol table from \".*\".*y or n. $" {
             send_gdb "y\n"
             gdb_expect 120 {
-                -re "Reading symbols from.*done.*$gdb_prompt $" {
+                -re "Reading symbols from.*$done.*$gdb_prompt $" {
                     verbose "\t\tLoaded $arg with new symbol table into $GDB"
                    set gdb_file_cmd_debug_info "debug"
                    return 0
@@ -1583,6 +1583,14 @@ proc gdb_file_cmd { arg } {
     }
 }
 
+proc gdb_file_cmd { arg } {
+    gdb_file_cmd_1 $arg "done"
+}
+
+proc gdb_file_cmd_no_done { arg } {
+    gdb_file_cmd_1 $arg ""
+}
+
 # Default gdb_spawn procedure.
 
 proc default_gdb_spawn { } {
@@ -4511,6 +4519,13 @@ proc gdb_load { arg } {
     return 0
 }
 
+proc gdb_load_no_done { arg } {
+    if { $arg != "" } {
+       return [gdb_file_cmd_no_done $arg]
+    }
+    return 0
+}
+
 # gdb_reload -- load a file into the target.  Called before "running",
 # either the first time or after already starting the program once,
 # for remote targets.  Most files that override gdb_load should now
++++++ gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-1of5.patch 
++++++
++++ 746 lines (skipped)

++++++ gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-2of5.patch 
++++++
++++ 644 lines (skipped)

++++++ gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-3of5.patch 
++++++
>From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Sergio Durigan Junior <sergi...@redhat.com>
Date: Fri, 11 Jan 2019 11:26:59 -0500
Subject: 
 gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-3of5.patch

;; Fix 'Assertion `SYMBOL_LANGUAGE (sym) == DICT_LANGUAGE (dict)->la_language' 
failed.'
;; Keith Seitz, RHBZ#1560010.

gdb/23712: Cleanup/Remove temporary dictionary functions

Now that multidictionary's are being used, there is no longer any need
to retain the four temporary functions introduced in the beginning of
this series.

This patch removes them.

As an additional cleanup, since the single-language dictionaries are
no longer used outside dictionary.c, make all of those functions
static.

gdb/ChangeLog:

        PR gdb/23712
        PR symtab/23010
        * dictionary.c (pending_to_vector): Remove.
        (dict_create_hashed_1, dict_create_linear_1, dict_add_pending_1):
        Remove _1 suffix, replacing functions of the same name.  Update
        all callers.
        (dict_create_hashed, dict_create_hashed_expandable)
        (dict_create_linear, dict_create_linear_expandable, dict_free)
        (dict_add_symbol, dict_add_pending, dict_size, dict_empty):
        Make functions static.

diff --git a/gdb/dictionary.c b/gdb/dictionary.c
--- a/gdb/dictionary.c
+++ b/gdb/dictionary.c
@@ -342,31 +342,14 @@ static void insert_symbol_hashed (struct dictionary *dict,
 
 static void expand_hashtable (struct dictionary *dict);
 
-/* A function to convert a linked list into a vector.  */
-
-static std::vector<symbol *>
-pending_to_vector (const struct pending *symbol_list)
-{
-  std::vector<symbol *> symlist;
-
-  for (const struct pending *list_counter = symbol_list;
-       list_counter != nullptr; list_counter = list_counter->next)
-    {
-      for (int i = list_counter->nsyms - 1; i >= 0; --i)
-       symlist.push_back (list_counter->symbol[i]);
-    }
-
-  return symlist;
-}
-
 /* The creation functions.  */
 
-/* A function to transition dict_create_hashed to new API.  */
+/* Create a hashed dictionary of a given language.  */
 
 static struct dictionary *
-dict_create_hashed_1 (struct obstack *obstack,
-                     enum language language,
-                     const std::vector<symbol *> &symbol_list)
+dict_create_hashed (struct obstack *obstack,
+                   enum language language,
+                   const std::vector<symbol *> &symbol_list)
 {
   /* Allocate the dictionary.  */
   struct dictionary *retval = XOBNEW (obstack, struct dictionary);
@@ -388,21 +371,9 @@ dict_create_hashed_1 (struct obstack *obstack,
   return retval;
 }
 
-/* See dictionary.h.  */
-
-struct dictionary *
-dict_create_hashed (struct obstack *obstack,
-                   enum language language,
-                   const struct pending *symbol_list)
-{
-  std::vector<symbol *> symlist = pending_to_vector (symbol_list);
-
-  return dict_create_hashed_1 (obstack, language, symlist);
-}
+/* Create an expandable hashed dictionary of a given language.  */
 
-/* See dictionary.h.  */
-
-extern struct dictionary *
+static struct dictionary *
 dict_create_hashed_expandable (enum language language)
 {
   struct dictionary *retval = XNEW (struct dictionary);
@@ -417,12 +388,12 @@ dict_create_hashed_expandable (enum language language)
   return retval;
 }
 
-/* A function to transition dict_create_linear to new API.  */
+/* Create a linear dictionary of a given language.  */
 
 static struct dictionary *
-dict_create_linear_1 (struct obstack *obstack,
-                     enum language language,
-                     const std::vector<symbol *> &symbol_list)
+dict_create_linear (struct obstack *obstack,
+                   enum language language,
+                   const std::vector<symbol *> &symbol_list)
 {
   struct dictionary *retval = XOBNEW (obstack, struct dictionary);
   DICT_VECTOR (retval) = &dict_linear_vector;
@@ -442,21 +413,9 @@ dict_create_linear_1 (struct obstack *obstack,
   return retval;
 }
 
-/* See dictionary.h.  */
-
-struct dictionary *
-dict_create_linear (struct obstack *obstack,
-                   enum language language,
-                   const struct pending *symbol_list)
-{
-  std::vector<symbol *> symlist = pending_to_vector (symbol_list);
-
-  return dict_create_linear_1 (obstack, language, symlist);
-}
-
-/* See dictionary.h.  */
+/* Create an expandable linear dictionary of a given language.  */
 
-struct dictionary *
+static struct dictionary *
 dict_create_linear_expandable (enum language language)
 {
   struct dictionary *retval = XNEW (struct dictionary);
@@ -476,7 +435,7 @@ dict_create_linear_expandable (enum language language)
 /* Free the memory used by a dictionary that's not on an obstack.  (If
    any.)  */
 
-void
+static void
 dict_free (struct dictionary *dict)
 {
   (DICT_VECTOR (dict))->free (dict);
@@ -484,34 +443,24 @@ dict_free (struct dictionary *dict)
 
 /* Add SYM to DICT.  DICT had better be expandable.  */
 
-void
+static void
 dict_add_symbol (struct dictionary *dict, struct symbol *sym)
 {
   (DICT_VECTOR (dict))->add_symbol (dict, sym);
 }
 
-/* A function to transition dict_add_pending to new API.  */
+/* Utility to add a list of symbols to a dictionary.
+   DICT must be an expandable dictionary.  */
 
 static void
-dict_add_pending_1 (struct dictionary *dict,
-                   const std::vector<symbol *> &symbol_list)
+dict_add_pending (struct dictionary *dict,
+                 const std::vector<symbol *> &symbol_list)
 {
   /* Preserve ordering by reversing the list.  */
   for (auto sym = symbol_list.rbegin (); sym != symbol_list.rend (); ++sym)
     dict_add_symbol (dict, *sym);
 }
 
-/* Utility to add a list of symbols to a dictionary.
-   DICT must be an expandable dictionary.  */
-
-void
-dict_add_pending (struct dictionary *dict, const struct pending *symbol_list)
-{
-  std::vector<symbol *> symlist = pending_to_vector (symbol_list);
-
-  dict_add_pending_1 (dict, symlist);
-}
-
 /* Initialize ITERATOR to point at the first symbol in DICT, and
    return that first symbol, or NULL if DICT is empty.  */
 
@@ -548,7 +497,7 @@ dict_iter_match_next (const lookup_name_info &name,
     ->iter_match_next (name, iterator);
 }
 
-int
+static int
 dict_size (const struct dictionary *dict)
 {
   return (DICT_VECTOR (dict))->size (dict);
@@ -560,7 +509,7 @@ dict_size (const struct dictionary *dict)
 
 /* Test to see if DICT is empty.  */
 
-int
+static int
 dict_empty (struct dictionary *dict)
 {
   struct dict_iterator iter;
@@ -1019,7 +968,7 @@ mdict_create_hashed (struct obstack *obstack,
       std::vector<symbol *> symlist = pair.second;
 
       retval->dictionaries[idx++]
-       = dict_create_hashed_1 (obstack, language, symlist);
+       = dict_create_hashed (obstack, language, symlist);
     }
 
   return retval;
@@ -1064,7 +1013,7 @@ mdict_create_linear (struct obstack *obstack,
       std::vector<symbol *> symlist = pair.second;
 
       retval->dictionaries[idx++]
-       = dict_create_linear_1 (obstack, language, symlist);
+       = dict_create_linear (obstack, language, symlist);
     }
 
   return retval;
@@ -1210,7 +1159,7 @@ mdict_add_pending (struct multidictionary *mdict,
          dict = create_new_language_dictionary (mdict, language);
        }
 
-      dict_add_pending_1 (dict, symlist);
+      dict_add_pending (dict, symlist);
     }
 }
 
++++++ gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-4of5.patch 
++++++
>From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Sergio Durigan Junior <sergi...@redhat.com>
Date: Fri, 11 Jan 2019 11:29:25 -0500
Subject: 
 gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-4of5.patch

;; Fix 'Assertion `SYMBOL_LANGUAGE (sym) == DICT_LANGUAGE (dict)->la_language' 
failed.'
;; Keith Seitz, RHBZ#1560010.

gdb/23712: Remove dw2_add_symbol_to_list

Finally, we can remove dw2_add_symbol_to_list since the wrapper function
originally introduced to catch this multi-language scenario is no longer
needed.  With multi-language dictionaries, we can now support adding
symbols of multiple languages, negating the need for the assertion
entirely.

This patch should now fix gdb/23712 (and symtab/23010).  At least it will
if the NULL buildsym_compunit problem doesn't strike first (see gdb/23773).

gdb/ChangeLog:

        PR gdb/23712
        PR symtab/23010
        * dwarf2read.c (dw2_add_symbol_to_list): Remove.
        (fixup_go_packaging, new_symbol): Use add_symbol_to_list.

diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -9715,23 +9715,6 @@ compute_delayed_physnames (struct dwarf2_cu *cu)
   cu->method_list.clear ();
 }
 
-/* A wrapper for add_symbol_to_list to ensure that SYMBOL's language is
-   the same as all other symbols in LISTHEAD.  If a new symbol is added
-   with a different language, this function asserts.  */
-
-static inline void
-dw2_add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
-{
-  /* Only assert if LISTHEAD already contains symbols of a different
-     language (dict_create_hashed/insert_symbol_hashed requires that all
-     symbols in this list are of the same language).  */
-  gdb_assert ((*listhead) == NULL
-             || (SYMBOL_LANGUAGE ((*listhead)->symbol[0])
-                 == SYMBOL_LANGUAGE (symbol)));
-
-  add_symbol_to_list (symbol, listhead);
-}
-
 /* Go objects should be embedded in a DW_TAG_module DIE,
    and it's not clear if/how imported objects will appear.
    To keep Go support simple until that's worked out,
@@ -9803,7 +9786,7 @@ fixup_go_packaging (struct dwarf2_cu *cu)
       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
       SYMBOL_TYPE (sym) = type;
 
-      dw2_add_symbol_to_list (sym, &global_symbols);
+      add_symbol_to_list (sym, &global_symbols);
 
       xfree (package_name);
     }
@@ -21387,7 +21370,7 @@ new_symbol (struct die_info *die, struct type *type, 
struct dwarf2_cu *cu,
          SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
          SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
          SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
-         dw2_add_symbol_to_list (sym, cu->list_in_scope);
+         add_symbol_to_list (sym, cu->list_in_scope);
          break;
        case DW_TAG_subprogram:
          /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
@@ -21645,7 +21628,7 @@ new_symbol (struct die_info *die, struct type *type, 
struct dwarf2_cu *cu,
        case DW_TAG_common_block:
          SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
          SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
-         dw2_add_symbol_to_list (sym, cu->list_in_scope);
+         add_symbol_to_list (sym, cu->list_in_scope);
          break;
        default:
          /* Not a tag we recognize.  Hopefully we aren't processing
@@ -21665,7 +21648,7 @@ new_symbol (struct die_info *die, struct type *type, 
struct dwarf2_cu *cu,
        }
 
       if (list_to_add != NULL)
-       dw2_add_symbol_to_list (sym, list_to_add);
+       add_symbol_to_list (sym, list_to_add);
 
       /* For the benefit of old versions of GCC, check for anonymous
         namespaces based on the demangled name.  */
++++++ gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-5of5.patch 
++++++
>From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Sergio Durigan Junior <sergi...@redhat.com>
Date: Fri, 11 Jan 2019 11:31:59 -0500
Subject: 
 gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-5of5.patch

;; Fix 'Assertion `SYMBOL_LANGUAGE (sym) == DICT_LANGUAGE (dict)->la_language' 
failed.'
;; Keith Seitz, RHBZ#1560010.

gdb/23712: Test case for multidictionary

This is a test derived from one of the reproducers in symtab/23010.
The DIE tree used here is typical of compilations with LTO, where an
artificial parent DIE of language C99 imports DIEs of other languages.

gdb/testsuite/ChangeLog:

        PR gdb/23712
        PR symtab/23010
        * gdb.dwarf2/multidictionary.exp: New file.

diff --git a/gdb/testsuite/gdb.dwarf2/multidictionary.exp 
b/gdb/testsuite/gdb.dwarf2/multidictionary.exp
new file mode 100644
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/multidictionary.exp
@@ -0,0 +1,157 @@
+# Copyright 2019 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# A test of multi-language dictionaries, a solution to symtab/23010 et al.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF.
+if {![dwarf2_support]} {
+    return 0
+}
+
+standard_testfile main.c .S
+
+# Create the DWARF.  This is derived from the reproducer in the bug
+# mentioned above.  This DIE tree is typical of compilations wtih
+# LTO enabled.
+
+set asm_file [standard_output_file $srcfile2]
+Dwarf::assemble $asm_file {
+    declare_labels D45d9 D5079 D5080 D50a9 D50af D5ab2 D5ac2 D5ace D5acf
+    declare_labels D2135f D2216a D22171 D226c4 D226ca D244ca \
+       D245da D245e6
+    declare_labels D41c21 D42025 D42045 D42038 D42045 D420b5
+
+    cu {} {
+       D45d9: compile_unit {
+           {language @DW_LANG_C_plus_plus}
+           {name "SerialPortUtils.cpp"}
+       } {
+           D5079: base_type {
+               {byte_size 1 sdata}
+               {encoding @DW_ATE_unsigned}
+               {name "char"}
+           }
+
+           D5080: const_type {
+               {type :$D5079}
+           }
+
+           D50a9: pointer_type {
+               {byte_size 4 sdata}
+               {type :$D5080}
+           }
+
+           D50af: const_type {
+               {type :$D50a9}
+           }
+
+           D5ab2: subprogram {
+               {external 1 flag}
+               {linkage_name "_Z18SerialSyncWriteStrPKc"}
+           } {
+               D5ac2: formal_parameter {
+                   {name "msg"}
+                   {type :$D50af}
+               }
+               D5ace: lexical_block {} {
+                   D5acf: DW_TAG_variable {
+                       {name "p"}
+                       {type :$D50a9}
+                   }
+               }
+           }
+       }
+    }
+
+    cu {} {
+       D2135f: compile_unit {
+           {language @DW_LANG_C_plus_plus}
+           {name "Main.cpp"}
+       } {
+           D2216a: base_type {
+               {byte_size 1 sdata}
+               {encoding @DW_ATE_unsigned_char}
+               {name "char"}
+           }
+
+           D22171: const_type {
+               {type :$D2216a}
+           }
+
+           D226c4: pointer_type {
+               {byte_size 4 sdata}
+               {type :$D22171}
+           }
+
+           D226ca: const_type {
+               {type :$D226c4}
+           }
+
+           D245da: subprogram {
+               {name "PrintPanicMsg"}
+           } {
+               D245e6: formal_parameter {
+                   {name "msg"}
+                   {type :$D226ca}
+               }
+           }
+       }
+    }
+
+    cu {} {
+       D41c21: compile_unit {
+           {language @DW_LANG_C99}
+           {name "<artificial>"}
+       } {
+           D42025: subprogram {
+               {abstract_origin %$D245da}
+               {low_pc 0x80b60 addr}
+               {high_pc 0x6c data4}
+           } {
+              D42038: formal_parameter {
+                  {abstract_origin %$D245e6}
+              }
+
+              D42045: inlined_subroutine {
+                   {abstract_origin %$D5ab2}
+                   {low_pc 0x8060 addr}
+                   {high_pc 0xc data4}
+               } {
+                   D420b5: formal_parameter {
+                       {abstract_origin %$D5ac2}
+                   }
+               }
+           }
+       }
+    }
+}
+
+# Build the test executable.
+if {[build_executable $testfile.exp $testfile [list $asm_file $srcfile] {}] \
+       == -1} {
+    return -1
+}
+
+# We force the DIEs above to be read in via "-readnow".
+gdb_spawn_with_cmdline_opts "-readnow"
+gdb_load $binfile
+
+# All we need to do is check whether GDB is alive.  Without
+# multidictionaries, it will either crash, assert, or throw an
+# internal_error.
+gdb_test "p 1" "= 1" "GDB is alive"
+
++++++ power8-registers.diff ++++++
++++ 8168 lines (skipped)


Reply via email to