packages: gdb/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch (NEW), gdb...

arekm arekm at pld-linux.org
Sun Nov 6 11:53:22 CET 2011


Author: arekm                        Date: Sun Nov  6 10:53:22 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- up to 7.3.1

---- Files affected:
packages/gdb:
   gdb-6.6-buildid-locate-rpm-librpm-workaround.patch (NONE -> 1.1)  (NEW), gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch (NONE -> 1.1)  (NEW), gdb-bz562763-pretty-print-2d-vectors-libstdcxx.patch (NONE -> 1.1)  (NEW), gdb-bz634108-solib_address.patch (NONE -> 1.1)  (NEW), gdb-bz645773-case-insensitive-1of5.patch (NONE -> 1.1)  (NEW), gdb-bz645773-case-insensitive-2of5.patch (NONE -> 1.1)  (NEW), gdb-bz645773-case-insensitive-3of5.patch (NONE -> 1.1)  (NEW), gdb-bz645773-case-insensitive-4of5.patch (NONE -> 1.1)  (NEW), gdb-bz701131-readline62-1of3.patch (NONE -> 1.1)  (NEW), gdb-bz701131-readline62-2of3.patch (NONE -> 1.1)  (NEW), gdb-bz701131-readline62-3of3.patch (NONE -> 1.1)  (NEW), gdb-core-thread-internalerr-1of3.patch (NONE -> 1.1)  (NEW), gdb-core-thread-internalerr-2of3.patch (NONE -> 1.1)  (NEW), gdb-core-thread-internalerr-3of3.patch (NONE -> 1.1)  (NEW), gdb-gcc46-stdarg-prologue.patch (NONE -> 1.1)  (NEW), gdb-gcc46-typedef.patch (NONE -> 1.1)  (NEW), gdb-implptr-64bit-1of2.patch (NONE -> 1.1)  (NEW), gdb-implptr-64bit-2of2.patch (NONE -> 1.1)  (NEW), gdb-prelink-rela.patch (NONE -> 1.1)  (NEW), gdb-rhel5-compat.patch (NONE -> 1.1)  (NEW), gdb-rhel5-gcc44.patch (NONE -> 1.1)  (NEW), gdb-stap-double-free.patch (NONE -> 1.1)  (NEW), gdb-test-bt-cfi-without-die.patch (NONE -> 1.1)  (NEW), gdb-test-dw2-aranges.patch (NONE -> 1.1)  (NEW), gdb-test-expr-cumulative-archer.patch (NONE -> 1.1)  (NEW), gdb-test-pid0-core.patch (NONE -> 1.1)  (NEW), gdb-test-pp-hint-error.patch (NONE -> 1.1)  (NEW), gdb-vla-frame-set.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/gdb/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
diff -u /dev/null packages/gdb/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch:1.1
--- /dev/null	Sun Nov  6 11:53:22 2011
+++ packages/gdb/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch	Sun Nov  6 11:53:15 2011
@@ -0,0 +1,31 @@
+--- ./gdb/elfread.c	2010-10-14 17:07:45.000000000 +0200
++++ ./gdb/elfread.c	2010-10-14 17:06:30.000000000 +0200
+@@ -1382,6 +1382,18 @@ build_id_to_filename (struct build_id *b
+ #include <dlfcn.h>
+ #endif
+ 
++/* Workarodun https://bugzilla.redhat.com/show_bug.cgi?id=643031
++   librpm must not exit() an application on SIGINT
++
++   Enable or disable a signal handler.  SIGNUM: signal to enable (or disable
++   if negative).  HANDLER: sa_sigaction handler (or NULL to use
++   rpmsqHandler()).  Returns: no. of refs, -1 on error.  */
++int
++rpmsqEnable (int signum, /* rpmsqAction_t handler */ void *handler)
++{
++  return 0;
++}
++
+ /* This MISSING_RPM_HASH tracker is used to collect all the missing rpm files
+    and avoid their duplicities during a single inferior run.  */
+ 
+--- ./gdb/proc-service.list	2010-05-28 20:50:30.000000000 +0200
++++ ./gdb/proc-service.list	2010-10-14 17:06:30.000000000 +0200
+@@ -37,4 +37,7 @@
+   ps_pstop;
+   ps_ptread;
+   ps_ptwrite;
++
++  /* gdb-6.6-buildid-locate-rpm.patch */
++  rpmsqEnable;
+ };

================================================================
Index: packages/gdb/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
diff -u /dev/null packages/gdb/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch:1.1
--- /dev/null	Sun Nov  6 11:53:22 2011
+++ packages/gdb/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch	Sun Nov  6 11:53:15 2011
@@ -0,0 +1,49 @@
+--- gdb-7.2.50.20110328.orig/gdb/dwarf2read.c	2011-03-30 12:52:20.395450001 +0200
++++ gdb-7.2.50.20110328/gdb/dwarf2read.c	2011-03-30 13:41:55.485450006 +0200
+@@ -66,12 +66,14 @@
+ #ifdef HAVE_ZLIB_H
+ #include <zlib.h>
+ #endif
++#ifndef __sparc__
+ #ifdef HAVE_MMAP
+ #include <sys/mman.h>
+ #ifndef MAP_FAILED
+ #define MAP_FAILED ((void *) -1)
+ #endif
+ #endif
++#endif
+ 
+ typedef struct symbol *symbolp;
+ DEF_VEC_P (symbolp);
+@@ -1563,6 +1565,7 @@
+         }
+     }
+ 
++#ifndef __sparc__
+ #ifdef HAVE_MMAP
+   if (pagesize == 0)
+     pagesize = getpagesize ();
+@@ -1589,6 +1592,7 @@
+ 	}
+     }
+ #endif
++#endif
+ 
+   /* If we get here, we are a normal, not-compressed section.  */
+   info->buffer = buf
+@@ -15439,6 +15443,7 @@
+ {
+   if (info->was_mmapped)
+     {
++#ifndef __sparc__
+ #ifdef HAVE_MMAP
+       intptr_t begin = (intptr_t) info->buffer;
+       intptr_t map_begin = begin & ~(pagesize - 1);
+@@ -15449,6 +15454,7 @@
+       /* Without HAVE_MMAP, we should never be here to begin with.  */
+       gdb_assert_not_reached ("no mmap support");
+ #endif
++#endif
+     }
+ }
+ 

================================================================
Index: packages/gdb/gdb-bz562763-pretty-print-2d-vectors-libstdcxx.patch
diff -u /dev/null packages/gdb/gdb-bz562763-pretty-print-2d-vectors-libstdcxx.patch:1.1
--- /dev/null	Sun Nov  6 11:53:22 2011
+++ packages/gdb/gdb-bz562763-pretty-print-2d-vectors-libstdcxx.patch	Sun Nov  6 11:53:15 2011
@@ -0,0 +1,43 @@
+2010-06-01  Chris Moller  <cmoller at redhat.com>
+
+	* python/libstdcxx/v6/printers.py (StdVectorPrinter): Add
+	detection for matrices as nested vectors.
+
+Index: libstdc++-v3/python/libstdcxx/v6/printers.py
+===================================================================
+--- ./libstdc++-v3-python-r155978/libstdcxx/v6/printers.py	(revision 159937)
++++ ./libstdc++-v3-python-r155978/libstdcxx/v6/printers.py	(working copy)
+@@ -19,6 +19,9 @@
+ import itertools
+ import re
+ 
++vector_sig = 'std::vector'
++vector_regex = re.compile('^' + vector_sig + '<.*>$')
++
+ class StdPointerPrinter:
+     "Print a smart pointer of some kind"
+ 
+@@ -186,7 +189,13 @@
+                 % (self.typename, int (finish - start), int (end - start)))
+ 
+     def display_hint(self):
+-        return 'array'
++        itype0  = self.val.type.template_argument(0)
++        itag = itype0.tag
++        if itag and re.match(vector_regex, itag):
++            rc = 'matrix'
++        else:
++            rc = 'array'
++        return rc 
+ 
+ class StdVectorIteratorPrinter:
+     "Print std::vector::iterator"
+@@ -692,7 +701,7 @@
+     pretty_printers_dict[re.compile('^std::set<.*>$')] = lambda val: StdSetPrinter("std::set", val)
+     pretty_printers_dict[re.compile('^std::stack<.*>$')] = lambda val: StdStackOrQueuePrinter("std::stack", val)
+     pretty_printers_dict[re.compile('^std::unique_ptr<.*>$')] = UniquePointerPrinter
+-    pretty_printers_dict[re.compile('^std::vector<.*>$')] = lambda val: StdVectorPrinter("std::vector", val)
++    pretty_printers_dict[vector_regex] = lambda val: StdVectorPrinter(vector_sig, val)
+     # vector<bool>
+ 
+     # Printer registrations for classes compiled with -D_GLIBCXX_DEBUG.

================================================================
Index: packages/gdb/gdb-bz634108-solib_address.patch
diff -u /dev/null packages/gdb/gdb-bz634108-solib_address.patch:1.1
--- /dev/null	Sun Nov  6 11:53:22 2011
+++ packages/gdb/gdb-bz634108-solib_address.patch	Sun Nov  6 11:53:15 2011
@@ -0,0 +1,29 @@
+Fix gdb.solib_address (fix by Phil Muldoon).
+
+--- /dev/null
++++ b/gdb/testsuite/gdb.python/rh634108-solib_address.exp
+@@ -0,0 +1,24 @@
++# Copyright (C) 2008, 2009, 2010 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/>.
++
++# https://bugzilla.redhat.com/show_bug.cgi?id=634108
++
++gdb_exit
++gdb_start
++
++# Skip all tests if Python scripting is not enabled.
++if { [skip_python_tests] } { continue }
++
++gdb_test "python print gdb.solib_address(-1)" "None" "gdb.solib_address exists"

================================================================
Index: packages/gdb/gdb-bz645773-case-insensitive-1of5.patch
diff -u /dev/null packages/gdb/gdb-bz645773-case-insensitive-1of5.patch:1.1
--- /dev/null	Sun Nov  6 11:53:22 2011
+++ packages/gdb/gdb-bz645773-case-insensitive-1of5.patch	Sun Nov  6 11:53:15 2011
@@ -0,0 +1,84 @@
+[patch] Code cleanup: New SYMBOL_HASH_NEXT
+http://sourceware.org/ml/gdb-patches/2011-04/msg00022.html
+http://sourceware.org/ml/gdb-cvs/2011-04/msg00043.html
+
+### src/gdb/ChangeLog	2011/04/06 03:24:22	1.12908
+### src/gdb/ChangeLog	2011/04/06 19:50:03	1.12909
+## -1,3 +1,12 @@
++2011-04-06  Jan Kratochvil  <jan.kratochvil at redhat.com>
++
++	Code cleanup.
++	* dictionary.c (dict_hash): Use SYMBOL_HASH_NEXT.
++	* dwarf2read.c (mapped_index_string_hash): Refer to SYMBOL_HASH_NEXT
++	in the function comment, a new note on values compatibility.
++	* minsyms.c (msymbol_hash_iw, msymbol_hash): Use SYMBOL_HASH_NEXT.
++	* symtab.h (SYMBOL_HASH_NEXT): New.
++
+ 2011-04-06  Thiago Jung Bauermann  <bauerman at br.ibm.com>
+ 
+ 	* ppc-linux-nat.c (check_condition): Add len output parameter.
+--- src/gdb/dictionary.c	2011/01/07 19:36:15	1.21
++++ src/gdb/dictionary.c	2011/04/06 19:50:04	1.22
+@@ -826,7 +826,7 @@
+ 	    }
+ 	  /* FALL THROUGH */
+ 	default:
+-	  hash = hash * 67 + *string - 113;
++	  hash = SYMBOL_HASH_NEXT (hash, *string);
+ 	  string += 1;
+ 	  break;
+ 	}
+--- src/gdb/dwarf2read.c	2011/04/04 14:10:12	1.520
++++ src/gdb/dwarf2read.c	2011/04/06 19:50:04	1.521
+@@ -1962,11 +1962,11 @@
+   do_cleanups (cleanup);
+ }
+ 
+-/* The hash function for strings in the mapped index.  This is the
+-   same as the hashtab.c hash function, but we keep a separate copy to
+-   maintain control over the implementation.  This is necessary
+-   because the hash function is tied to the format of the mapped index
+-   file.  */
++/* The hash function for strings in the mapped index.  This is the same as
++   SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
++   implementation.  This is necessary because the hash function is tied to the
++   format of the mapped index file.  The hash values do not have to match with
++   SYMBOL_HASH_NEXT.  */
+ 
+ static hashval_t
+ mapped_index_string_hash (const void *p)
+--- src/gdb/minsyms.c	2011/03/28 20:29:51	1.81
++++ src/gdb/minsyms.c	2011/04/06 19:50:05	1.82
+@@ -91,7 +91,7 @@
+ 	++string;
+       if (*string && *string != '(')
+ 	{
+-	  hash = hash * 67 + *string - 113;
++	  hash = SYMBOL_HASH_NEXT (hash, *string);
+ 	  ++string;
+ 	}
+     }
+@@ -106,7 +106,7 @@
+   unsigned int hash = 0;
+ 
+   for (; *string; ++string)
+-    hash = hash * 67 + *string - 113;
++    hash = SYMBOL_HASH_NEXT (hash, *string);
+   return hash;
+ }
+ 
+--- src/gdb/symtab.h	2011/04/04 15:19:59	1.177
++++ src/gdb/symtab.h	2011/04/06 19:50:05	1.178
+@@ -1004,6 +1004,12 @@
+ 
+ extern unsigned int msymbol_hash (const char *);
+ 
++/* Compute the next hash value from previous HASH and the character C.  This
++   is only a GDB in-memory computed value with no external files compatibility
++   requirements.  */
++
++#define SYMBOL_HASH_NEXT(hash, c) ((hash) * 67 + (c) - 113)
++
+ extern struct objfile * msymbol_objfile (struct minimal_symbol *sym);
+ 
+ extern void

================================================================
Index: packages/gdb/gdb-bz645773-case-insensitive-2of5.patch
diff -u /dev/null packages/gdb/gdb-bz645773-case-insensitive-2of5.patch:1.1
--- /dev/null	Sun Nov  6 11:53:22 2011
+++ packages/gdb/gdb-bz645773-case-insensitive-2of5.patch	Sun Nov  6 11:53:15 2011
@@ -0,0 +1,139 @@
+http://sourceware.org/ml/gdb-patches/2011-04/msg00124.html
+Subject: [patch 1/3] case insensitive: Reformat code
+
+Hi,
+
+just some reformatting to make the later patch more clear.  There should be no
+functionality difference by this patch.  c1+c2 are a bit ugly but I found any
+other solution a bit ugly.
+
+
+Thanks,
+Jan
+
+
+gdb/
+2011-04-08  Jan Kratochvil  <jan.kratochvil at redhat.com>
+
+	Format the code for the next patch.
+	* dwarf2read.c (struct mapped_index): Include delimiting newlines.
+	* utils.c (strcmp_iw_ordered): Reformat the code for the next patch.
+	New variables c1 and c2.
+
+--- a/gdb/dwarf2read.c
++++ b/gdb/dwarf2read.c
+@@ -150,14 +150,19 @@ struct mapped_index
+ {
+   /* The total length of the buffer.  */
+   off_t total_size;
++
+   /* A pointer to the address table data.  */
+   const gdb_byte *address_table;
++
+   /* Size of the address table data in bytes.  */
+   offset_type address_table_size;
++
+   /* The symbol table, implemented as a hash table.  */
+   const offset_type *symbol_table;
++
+   /* Size in slots, each slot is 2 offset_types.  */
+   offset_type symbol_table_slots;
++
+   /* A pointer to the constant pool.  */
+   const char *constant_pool;
+ };
+--- a/gdb/utils.c
++++ b/gdb/utils.c
+@@ -3023,48 +3023,55 @@ strcmp_iw (const char *string1, const char *string2)
+ int
+ strcmp_iw_ordered (const char *string1, const char *string2)
+ {
+-  while ((*string1 != '\0') && (*string2 != '\0'))
++  /* Formatting stub.  */
++  if (1)
+     {
+-      while (isspace (*string1))
+-	{
+-	  string1++;
+-	}
+-      while (isspace (*string2))
+-	{
+-	  string2++;
+-	}
+-      if (*string1 != *string2)
++      /* C1 and C2 are valid only if *string1 != '\0' && *string2 != '\0'.
++	 Provide stub characters if we are already at the end of one of the
++	 strings.  */
++      char c1 = 'X', c2 = 'X';
++
++      while (*string1 != '\0' && *string2 != '\0')
+ 	{
+-	  break;
++	  while (isspace (*string1))
++	    string1++;
++	  while (isspace (*string2))
++	    string2++;
++
++	      c1 = *string1;
++	      c2 = *string2;
++	  if (c1 != c2)
++	    break;
++
++	  if (*string1 != '\0')
++	    {
++	      string1++;
++	      string2++;
++	    }
+ 	}
+-      if (*string1 != '\0')
++
++      switch (*string1)
+ 	{
+-	  string1++;
+-	  string2++;
++	  /* Characters are non-equal unless they're both '\0'; we want to
++	     make sure we get the comparison right according to our
++	     comparison in the cases where one of them is '\0' or '('.  */
++	case '\0':
++	  if (*string2 == '\0')
++	    return 0;
++	  else
++	    return -1;
++	case '(':
++	  if (*string2 == '\0')
++	    return 1;
++	  else
++	    return -1;
++	default:
++	  if (*string2 == '\0' || *string2 == '(')
++	    return 1;
++	  else
++	    return c1 - c2;
+ 	}
+     }
+-
+-  switch (*string1)
+-    {
+-      /* Characters are non-equal unless they're both '\0'; we want to
+-	 make sure we get the comparison right according to our
+-	 comparison in the cases where one of them is '\0' or '('.  */
+-    case '\0':
+-      if (*string2 == '\0')
+-	return 0;
+-      else
+-	return -1;
+-    case '(':
+-      if (*string2 == '\0')
+-	return 1;
+-      else
+-	return -1;
+-    default:
+-      if (*string2 == '(')
+-	return 1;
+-      else
+-	return *string1 - *string2;
+-    }
+ }
+ 
+ /* A simple comparison function with opposite semantics to strcmp.  */
+

================================================================
Index: packages/gdb/gdb-bz645773-case-insensitive-3of5.patch
diff -u /dev/null packages/gdb/gdb-bz645773-case-insensitive-3of5.patch:1.1
--- /dev/null	Sun Nov  6 11:53:22 2011
+++ packages/gdb/gdb-bz645773-case-insensitive-3of5.patch	Sun Nov  6 11:53:15 2011
@@ -0,0 +1,188 @@
+http://sourceware.org/ml/gdb-patches/2011-04/msg00125.html
+Subject: [patch 2/3] case insensitive: re_comp->regcomp
+
+Hi,
+
+re_comp cannot be passed REG_ICASE.  Therefore change the code.  The should
+have no functionality impact.
+
+The new boolean field `preg_p' could be maybe replaced by a conditional
+`preg.buffer != NULL' which would work with libiberty regcomp implementation
+but I do not see it guaranteed anywhere.  GDB is always using static libiberty
+implementation which I do not see why in the case it is running on glibc.
+But if it gets fixed one day and it starts to use externally linked
+regcomp/regexec I would find the `preg.buffer != NULL' conditional dangerous.
+
+
+Thanks,
+Jan
+
+
+gdb/
+2011-04-08  Jan Kratochvil  <jan.kratochvil at redhat.com>
+
+	Replace re_comp/re_exec by regcomp/regexec.
+	* symtab.c (struct search_symbols_data): New fields preg, preg_p.
+	(search_symbols_name_matches): Use them, use regexec.
+	(search_symbols): New variable retval_chain, adjust the use of
+	old_chain against it.  Replace re_comp by regcomp.  Use the new struct
+	search_symbols_data fields, use regexec instead of re_exec.
+
+Index: gdb-7.2.90.20110429/gdb/symtab.c
+===================================================================
+--- gdb-7.2.90.20110429.orig/gdb/symtab.c	2011-04-29 09:43:33.000000000 +0200
++++ gdb-7.2.90.20110429/gdb/symtab.c	2011-04-29 09:43:55.000000000 +0200
+@@ -2958,7 +2958,10 @@ struct search_symbols_data
+ {
+   int nfiles;
+   char **files;
+-  char *regexp;
++
++  /* It is true if PREG contains valid data, false otherwise.  */
++  unsigned preg_p : 1;
++  regex_t preg;
+ };
+ 
+ /* A callback for expand_symtabs_matching.  */
+@@ -2976,7 +2979,7 @@ search_symbols_name_matches (const char 
+ {
+   struct search_symbols_data *data = user_data;
+ 
+-  return data->regexp == NULL || re_exec (symname);
++  return !data->preg_p || regexec (&data->preg, symname, 0, NULL, 0) == 0;
+ }
+ 
+ /* Search the symbol table for matches to the regular expression REGEXP,
+@@ -3023,9 +3026,13 @@ search_symbols (char *regexp, domain_enu
+   struct symbol_search *sr;
+   struct symbol_search *psr;
+   struct symbol_search *tail;
+-  struct cleanup *old_chain = NULL;
+   struct search_symbols_data datum;
+ 
++  /* OLD_CHAIN .. RETVAL_CHAIN is always freed, RETVAL_CHAIN .. current
++     CLEANUP_CHAIN is freed only in the case of an error.  */
++  struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
++  struct cleanup *retval_chain;
++
+   if (kind < VARIABLES_DOMAIN || kind >= ALL_DOMAIN)
+     error (_("must search on specific domain"));
+ 
+@@ -3036,6 +3043,7 @@ search_symbols (char *regexp, domain_enu
+ 
+   sr = *matches = NULL;
+   tail = NULL;
++  datum.preg_p = 0;
+ 
+   if (regexp != NULL)
+     {
+@@ -3045,6 +3053,7 @@ search_symbols (char *regexp, domain_enu
+          and <TYPENAME> or <OPERATOR>.  */
+       char *opend;
+       char *opname = operator_chars (regexp, &opend);
++      int errcode;
+ 
+       if (*opname)
+ 	{
+@@ -3073,8 +3082,16 @@ search_symbols (char *regexp, domain_enu
+ 	    }
+ 	}
+ 
+-      if (0 != (val = re_comp (regexp)))
+-	error (_("Invalid regexp (%s): %s"), val, regexp);
++      errcode = regcomp (&datum.preg, regexp, REG_NOSUB);
++      if (errcode != 0)
++	{
++	  char *err = get_regcomp_error (errcode, &datum.preg);
++
++	  make_cleanup (xfree, err);
++	  error (_("Invalid regexp (%s): %s"), err, regexp);
++	}
++      datum.preg_p = 1;
++      make_regfree_cleanup (&datum.preg);
+     }
+ 
+   /* Search through the partial symtabs *first* for all symbols
+@@ -3083,7 +3100,6 @@ search_symbols (char *regexp, domain_enu
+ 
+   datum.nfiles = nfiles;
+   datum.files = files;
+-  datum.regexp = regexp;
+   ALL_OBJFILES (objfile)
+   {
+     if (objfile->sf)
+@@ -3094,6 +3110,8 @@ search_symbols (char *regexp, domain_enu
+ 						&datum);
+   }
+ 
++  retval_chain = old_chain;
++
+   /* Here, we search through the minimal symbol tables for functions
+      and variables that match, and force their symbols to be read.
+      This is in particular necessary for demangled variable names,
+@@ -3117,8 +3135,9 @@ search_symbols (char *regexp, domain_enu
+ 	    MSYMBOL_TYPE (msymbol) == ourtype3 ||
+ 	    MSYMBOL_TYPE (msymbol) == ourtype4)
+ 	  {
+-	    if (regexp == NULL
+-		|| re_exec (SYMBOL_NATURAL_NAME (msymbol)) != 0)
++	    if (!datum.preg_p
++		|| regexec (&datum.preg, SYMBOL_NATURAL_NAME (msymbol), 0,
++			    NULL, 0) == 0)
+ 	      {
+ 		if (0 == find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol)))
+ 		  {
+@@ -3156,8 +3175,9 @@ search_symbols (char *regexp, domain_enu
+ 	      QUIT;
+ 
+ 	      if (file_matches (real_symtab->filename, files, nfiles)
+-		  && ((regexp == NULL
+-		       || re_exec (SYMBOL_NATURAL_NAME (sym)) != 0)
++		  && ((!datum.preg_p
++		       || regexec (&datum.preg, SYMBOL_NATURAL_NAME (sym), 0,
++				   NULL, 0) == 0)
+ 		      && ((kind == VARIABLES_DOMAIN
+ 			   && SYMBOL_CLASS (sym) != LOC_TYPEDEF
+ 			   && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
+@@ -3199,7 +3219,7 @@ search_symbols (char *regexp, domain_enu
+ 		  tail = sort_search_symbols (&dummy, nfound);
+ 		  sr = dummy.next;
+ 
+-		  old_chain = make_cleanup_free_search_symbols (sr);
++		  make_cleanup_free_search_symbols (sr);
+ 		}
+ 	      else
+ 		tail = sort_search_symbols (prevtail, nfound);
+@@ -3221,8 +3241,9 @@ search_symbols (char *regexp, domain_enu
+ 	    MSYMBOL_TYPE (msymbol) == ourtype3 ||
+ 	    MSYMBOL_TYPE (msymbol) == ourtype4)
+ 	  {
+-	    if (regexp == NULL
+-		|| re_exec (SYMBOL_NATURAL_NAME (msymbol)) != 0)
++	    if (!datum.preg_p
++		|| regexec (&datum.preg, SYMBOL_NATURAL_NAME (msymbol), 0,
++			    NULL, 0) == 0)
+ 	      {
+ 		/* Functions:  Look up by address.  */
+ 		if (kind != FUNCTIONS_DOMAIN ||
+@@ -3244,7 +3265,7 @@ search_symbols (char *regexp, domain_enu
+ 			if (tail == NULL)
+ 			  {
+ 			    sr = psr;
+-			    old_chain = make_cleanup_free_search_symbols (sr);
++			    make_cleanup_free_search_symbols (sr);
+ 			  }
+ 			else
+ 			  tail->next = psr;
+@@ -3256,9 +3277,9 @@ search_symbols (char *regexp, domain_enu
+       }
+     }
+ 
<<Diff was trimmed, longer than 597 lines>>


More information about the pld-cvs-commit mailing list