rpms/gdb/devel gdb-archer.patch, 1.26, 1.27 gdb-bz515434-qsort_cmp.patch, 1.2, 1.3 gdb.spec, 1.380, 1.381

Jan Kratochvil jkratoch at fedoraproject.org
Tue Sep 1 13:19:03 UTC 2009


Author: jkratoch

Update of /cvs/pkgs/rpms/gdb/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv16655

Modified Files:
	gdb-archer.patch gdb-bz515434-qsort_cmp.patch gdb.spec 
Log Message:
* Tue Sep  1 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090818-7
- archer-jankratochvil-fedora12 commit: d25596676e8811b03f8c9aba6bbd04ebaa9ff5db
  - [call-frame-cfa] Fix parsing CFA-relative frames (BZ 516627, Tom Tromey).
  - [vla] variable length Fortran strings for -O -g code (part of BZ 508406, me).
  - [python] varobj + general fixes (Tom Tromey).


gdb-archer.patch:
 Makefile.in                                              |   95 
 NEWS                                                     |    7 
 ada-lang.c                                               |   43 
 amd64-linux-nat.c                                        |   45 
 block.c                                                  |   24 
 block.h                                                  |   12 
 breakpoint.c                                             |  137 -
 breakpoint.h                                             |    3 
 c-exp.y                                                  |  252 +-
 c-lang.c                                                 |    6 
 c-typeprint.c                                            |   47 
 cli/cli-cmds.c                                           |   72 
 coffread.c                                               |    3 
 config.in                                                |    8 
 config/i386/nm-i386.h                                    |  125 +
 config/i386/nm-linux64.h                                 |   54 
 config/mips/nm-irix5.h                                   |   44 
 configure                                                |   79 
 configure.ac                                             |   47 
 cp-name-parser.y                                         |    5 
 cp-namespace.c                                           |  245 +
 cp-support.c                                             |   88 
 cp-support.h                                             |   49 
 dbxread.c                                                |    1 
 doc/gdb.texinfo                                          |  504 +++-
 doc/gdbint.texinfo                                       |   62 
 doc/observer.texi                                        |    5 
 dwarf2-frame.c                                           |   30 
 dwarf2-frame.h                                           |    4 
 dwarf2expr.c                                             |   86 
 dwarf2expr.h                                             |   68 
 dwarf2loc.c                                              |  368 ++
 dwarf2loc.h                                              |    6 
 dwarf2read.c                                             | 1863 ++++++++++-----
 elfread.c                                                |   11 
 eval.c                                                   |  170 +
 expression.h                                             |   11 
 f-exp.y                                                  |    4 
 f-lang.c                                                 |  457 ---
 f-lang.h                                                 |   45 
 f-typeprint.c                                            |   36 
 f-valprint.c                                             |  267 --
 findcmd.c                                                |  111 
 findvar.c                                                |  126 -
 frame.c                                                  |   19 
 frame.h                                                  |    6 
 gdbinit.in                                               |   10 
 gdbserver/linux-i386-low.c                               |  210 +
 gdbserver/linux-x86-64-low.c                             |  184 +
 gdbthread.h                                              |    3 
 gdbtypes.c                                               |  596 ++++
 gdbtypes.h                                               |  146 +
 gnu-v3-abi.c                                             |   18 
 gnulib/Makefile.in                                       |    4 
 i386-linux-nat.c                                         |   47 
 i386-nat.c                                               |   49 
 i386-nat.h                                               |   17 
 infrun.c                                                 |    8 
 jv-lang.c                                                |    1 
 language.h                                               |    1 
 linespec.c                                               |   62 
 linux-nat.c                                              |   88 
 linux-nat.h                                              |    6 
 m2-lang.c                                                |    1 
 machoread.c                                              |    1 
 main.c                                                   |   80 
 maint.c                                                  |    8 
 mdebugread.c                                             |    2 
 mi/mi-cmd-var.c                                          |  170 -
 mi/mi-cmds.c                                             |    2 
 mi/mi-cmds.h                                             |    2 
 mi/mi-main.c                                             |    5 
 mipsread.c                                               |    1 
 objfiles.c                                               |   21 
 objfiles.h                                               |   21 
 parse.c                                                  |  154 +
 parser-defs.h                                            |   25 
 ppc-linux-nat.c                                          |   19 
 printcmd.c                                               |   90 
 python/lib/gdb/FrameIterator.py                          |   33 
 python/lib/gdb/FrameWrapper.py                           |  112 
 python/lib/gdb/__init__.py                               |   19 
 python/lib/gdb/backtrace.py                              |   42 
 python/lib/gdb/command/__init__.py                       |    1 
 python/lib/gdb/command/alias.py                          |   59 
 python/lib/gdb/command/backtrace.py                      |  106 
 python/lib/gdb/command/ignore_errors.py                  |   37 
 python/lib/gdb/command/pahole.py                         |   75 
 python/lib/gdb/command/require.py                        |   57 
 python/lib/gdb/command/save_breakpoints.py               |   65 
 python/lib/gdb/command/upto.py                           |  129 +
 python/lib/gdb/function/__init__.py                      |    1 
 python/lib/gdb/function/caller_is.py                     |   58 
 python/lib/gdb/function/in_scope.py                      |   47 
 python/python-block.c                                    |  265 ++
 python/python-breakpoint.c                               |  665 +++++
 python/python-cmd.c                                      |   17 
 python/python-frame.c                                    |  116 
 python/python-hooks.c                                    |   50 
 python/python-inferior.c                                 |  926 +++++++
 python/python-infthread.c                                |  285 ++
 python/python-internal.h                                 |   69 
 python/python-membuf.c                                   |  268 ++
 python/python-param.c                                    |  606 ++++
 python/python-prettyprint.c                              |   21 
 python/python-symbol.c                                   |  336 ++
 python/python-symtab.c                                   |  322 ++
 python/python-type.c                                     |  170 +
 python/python-utils.c                                    |   46 
 python/python-value.c                                    |   67 
 python/python.c                                          |  384 +++
 python/python.h                                          |    4 
 scm-lang.c                                               |    1 
 scm-valprint.c                                           |    4 
 solib-darwin.c                                           |    1 
 solib-spu.c                                              |    7 
 solib-svr4.c                                             |    4 
 solib.c                                                  |    3 
 solist.h                                                 |    2 
 somread.c                                                |    1 
 spu-tdep.c                                               |    2 
 stabsread.c                                              |    4 
 stack.c                                                  |   38 
 symfile.c                                                |   42 
 symfile.h                                                |   12 
 symmisc.c                                                |    4 
 symtab.c                                                 |  321 +-
 symtab.h                                                 |   20 
 target.c                                                 |   20 
 target.h                                                 |   32 
 testsuite/gdb.arch/powerpc-power7.exp                    |  175 +
 testsuite/gdb.arch/powerpc-power7.s                      |  107 
 testsuite/gdb.arch/x86_64-vla-typedef-foo.S              |  455 +++
 testsuite/gdb.arch/x86_64-vla-typedef.c                  |   43 
 testsuite/gdb.arch/x86_64-vla-typedef.exp                |   64 
 testsuite/gdb.base/arrayidx.c                            |    7 
 testsuite/gdb.base/arrayidx.exp                          |   10 
 testsuite/gdb.base/help.exp                              |    2 
 testsuite/gdb.base/lineno-makeup-func.c                  |   21 
 testsuite/gdb.base/lineno-makeup.c                       |   35 
 testsuite/gdb.base/lineno-makeup.exp                     |   78 
 testsuite/gdb.base/macscp.exp                            |    8 
 testsuite/gdb.base/radix.exp                             |    7 
 testsuite/gdb.base/solib-overlap-lib.c                   |   27 
 testsuite/gdb.base/solib-overlap-main.c                  |   25 
 testsuite/gdb.base/solib-overlap.exp                     |  139 +
 testsuite/gdb.base/valgrind-attach.c                     |   28 
 testsuite/gdb.base/valgrind-attach.exp                   |   94 
 testsuite/gdb.base/valgrind-attach.sh                    |   20 
 testsuite/gdb.base/vla-overflow.c                        |   30 
 testsuite/gdb.base/vla-overflow.exp                      |  108 
 testsuite/gdb.base/vla.c                                 |   55 
 testsuite/gdb.base/vla.exp                               |   62 
 testsuite/gdb.base/watchpoint-hw.c                       |    6 
 testsuite/gdb.base/watchpoint-hw.exp                     |   45 
 testsuite/gdb.cp/cp-relocate.exp                         |    6 
 testsuite/gdb.cp/cplusfuncs.cc                           |    6 
 testsuite/gdb.cp/cplusfuncs.exp                          |  195 +
 testsuite/gdb.cp/expand-sals.exp                         |    2 
 testsuite/gdb.cp/member-ptr.cc                           |   17 
 testsuite/gdb.cp/member-ptr.exp                          |   34 
 testsuite/gdb.cp/namespace-multiple-imports.cc           |   20 
 testsuite/gdb.cp/namespace-multiple-imports.exp          |   49 
 testsuite/gdb.cp/namespace-nested-imports.cc             |   36 
 testsuite/gdb.cp/namespace-nested-imports.exp            |   57 
 testsuite/gdb.cp/namespace-no-imports.cc                 |   37 
 testsuite/gdb.cp/namespace-no-imports.exp                |   76 
 testsuite/gdb.cp/namespace-recursive.cc                  |   30 
 testsuite/gdb.cp/namespace-recursive.exp                 |   66 
 testsuite/gdb.cp/namespace-using.cc                      |  128 -
 testsuite/gdb.cp/namespace-using.exp                     |  130 +
 testsuite/gdb.cp/namespace.exp                           |   23 
 testsuite/gdb.cp/overload.exp                            |    8 
 testsuite/gdb.cp/ovldbreak.exp                           |   46 
 testsuite/gdb.cp/shadowing.cc                            |   48 
 testsuite/gdb.cp/shadowing.exp                           |   91 
 testsuite/gdb.dwarf2/callframecfa.S                      |  309 ++
 testsuite/gdb.dwarf2/callframecfa.exp                    |   55 
 testsuite/gdb.dwarf2/dw2-aranges.S                       |  140 +
 testsuite/gdb.dwarf2/dw2-aranges.exp                     |   40 
 testsuite/gdb.dwarf2/dw2-stripped.c                      |   42 
 testsuite/gdb.dwarf2/dw2-stripped.exp                    |   79 
 testsuite/gdb.dwarf2/dw2-struct-member-data-location.S   |   83 
 testsuite/gdb.dwarf2/dw2-struct-member-data-location.exp |   37 
 testsuite/gdb.fortran/common-block.exp                   |  101 
 testsuite/gdb.fortran/common-block.f90                   |   67 
 testsuite/gdb.fortran/dwarf-stride.exp                   |   42 
 testsuite/gdb.fortran/dwarf-stride.f90                   |   40 
 testsuite/gdb.fortran/dynamic.exp                        |  145 +
 testsuite/gdb.fortran/dynamic.f90                        |   98 
 testsuite/gdb.fortran/library-module-lib.f90             |   28 
 testsuite/gdb.fortran/library-module-main.f90            |   23 
 testsuite/gdb.fortran/library-module.exp                 |   53 
 testsuite/gdb.fortran/logical.exp                        |   44 
 testsuite/gdb.fortran/logical.f90                        |   33 
 testsuite/gdb.fortran/module.exp                         |   28 
 testsuite/gdb.fortran/module.f90                         |   37 
 testsuite/gdb.fortran/string.exp                         |   59 
 testsuite/gdb.fortran/string.f90                         |   37 
 testsuite/gdb.gdb/selftest.exp                           |    4 
 testsuite/gdb.mi/gdb701.exp                              |    2 
 testsuite/gdb.mi/mi-break.exp                            |    2 
 testsuite/gdb.mi/mi-var-block.exp                        |    2 
 testsuite/gdb.mi/mi-var-child.exp                        |   30 
 testsuite/gdb.mi/mi-var-cmd.exp                          |   38 
 testsuite/gdb.mi/mi-var-display.exp                      |    4 
 testsuite/gdb.mi/mi2-var-block.exp                       |    2 
 testsuite/gdb.mi/mi2-var-child.exp                       |   30 
 testsuite/gdb.mi/mi2-var-cmd.exp                         |   28 
 testsuite/gdb.mi/mi2-var-display.exp                     |    4 
 testsuite/gdb.opt/array-from-register-func.c             |   22 
 testsuite/gdb.opt/array-from-register.c                  |   28 
 testsuite/gdb.opt/array-from-register.exp                |   33 
 testsuite/gdb.opt/fortran-string.exp                     |   41 
 testsuite/gdb.opt/fortran-string.f90                     |   28 
 testsuite/gdb.python/Makefile.in                         |    2 
 testsuite/gdb.python/python-cmd.exp                      |   27 
 testsuite/gdb.python/python-frame.exp                    |   48 
 testsuite/gdb.python/python-function.exp                 |   27 
 testsuite/gdb.python/python-inferior.c                   |   49 
 testsuite/gdb.python/python-inferior.exp                 |  201 +
 testsuite/gdb.python/python-infthread.c                  |   14 
 testsuite/gdb.python/python-infthread.exp                |   58 
 testsuite/gdb.python/python-mi.exp                       |  116 
 testsuite/gdb.python/python-prettyprint.c                |   16 
 testsuite/gdb.python/python-prettyprint.exp              |   11 
 testsuite/gdb.python/python-prettyprint.py               |   12 
 testsuite/gdb.python/python-template.exp                 |   25 
 testsuite/gdb.python/python-value.exp                    |   68 
 testsuite/gdb.python/python.exp                          |   27 
 testsuite/gdb.threads/watchpoint-fork-forkoff.c          |  175 +
 testsuite/gdb.threads/watchpoint-fork-mt.c               |  157 +
 testsuite/gdb.threads/watchpoint-fork.c                  |   57 
 testsuite/gdb.threads/watchpoint-fork.exp                |  130 +
 testsuite/gdb.threads/watchthreads-reorder.c             |  366 ++
 testsuite/gdb.threads/watchthreads-reorder.exp           |  101 
 testsuite/lib/cp-support.exp                             |    3 
 testsuite/lib/gdb.exp                                    |    1 
 testsuite/lib/mi-support.exp                             |  100 
 testsuite/lib/python-support.exp                         |   53 
 thread.c                                                 |   18 
 top.c                                                    |    1 
 typeprint.c                                              |   14 
 typeprint.h                                              |    3 
 ui-file.c                                                |   20 
 ui-file.h                                                |    6 
 utils.c                                                  |    7 
 valarith.c                                               |   45 
 valops.c                                                 |  254 +-
 valprint.c                                               |    4 
 value.c                                                  |  150 +
 value.h                                                  |    8 
 varobj.c                                                 |  735 ++++-
 varobj.h                                                 |   32 
 xcoffread.c                                              |    1 
 255 files changed, 18838 insertions(+), 2756 deletions(-)

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.26 -r 1.27 gdb-archer.patchIndex: gdb-archer.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-archer.patch,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -p -r1.26 -r1.27
--- gdb-archer.patch	19 Aug 2009 16:19:15 -0000	1.26
+++ gdb-archer.patch	1 Sep 2009 13:19:03 -0000	1.27
@@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectAr
 http://sourceware.org/gdb/wiki/ArcherBranchManagement
 
 GIT snapshot:
-commit 2ba2bc451eb832182ef84c3934115de7a329da7c
+commit d25596676e8811b03f8c9aba6bbd04ebaa9ff5db
 
 branch `archer' - the merge of branches:
 archer-tromey-call-frame-cfa
@@ -3458,7 +3458,7 @@ index 4984f31..fcf1b5d 100644
  This observer is used for internal testing.  Do not use.  
  See testsuite/gdb.gdb/observer.exp.
 diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c
-index 427f58f..fc70309 100644
+index 427f58f..392a1b4 100644
 --- a/gdb/dwarf2-frame.c
 +++ b/gdb/dwarf2-frame.c
 @@ -38,6 +38,7 @@
@@ -3501,7 +3501,7 @@ index 427f58f..fc70309 100644
  
    do_cleanups (old_chain);
  
-@@ -1250,6 +1260,14 @@ dwarf2_frame_base_sniffer (struct frame_info *this_frame)
+@@ -1250,6 +1260,16 @@ dwarf2_frame_base_sniffer (struct frame_info *this_frame)
  
    return NULL;
  }
@@ -3509,6 +3509,8 @@ index 427f58f..fc70309 100644
 +CORE_ADDR
 +dwarf2_frame_cfa (struct frame_info *this_frame)
 +{
++  while (get_frame_type (this_frame) == INLINE_FRAME)
++    this_frame = get_prev_frame (this_frame);
 +  if (! frame_unwinder_is (this_frame, &dwarf2_frame_unwind))
 +    error (_("can't compute CFA for this frame"));
 +  return get_frame_base (this_frame);
@@ -3516,7 +3518,7 @@ index 427f58f..fc70309 100644
  

  const struct objfile_data *dwarf2_frame_objfile_data;
  
-@@ -1539,6 +1557,14 @@ dwarf2_frame_find_fde (CORE_ADDR *pc)
+@@ -1539,6 +1559,14 @@ dwarf2_frame_find_fde (CORE_ADDR *pc)
        CORE_ADDR offset;
        CORE_ADDR seek_pc;
  
@@ -3834,7 +3836,7 @@ index 2306e49..597c2de 100644
    /* The length of the piece, in bytes.  */
    ULONGEST size;
 diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
-index 1df6a9f..c101371 100644
+index 1df6a9f..939f7a2 100644
 --- a/gdb/dwarf2loc.c
 +++ b/gdb/dwarf2loc.c
 @@ -36,6 +36,7 @@
@@ -3875,7 +3877,7 @@ index 1df6a9f..c101371 100644
 +      gdb_assert (symbaton != NULL);
 +      *start = symbaton->data;
 +      *length = symbaton->size;
-+    }
+     }
 +  else if (SYMBOL_COMPUTED_OPS (framefunc) == &dwarf2_missing_funcs)
 +    {
 +      struct dwarf2_locexpr_baton *symbaton;
@@ -3884,7 +3886,7 @@ index 1df6a9f..c101371 100644
 +      gdb_assert (symbaton == NULL);
 +      *start = NULL;
 +      *length = 0;	/* unused */
-     }
++    }
 +  else
 +    internal_error (__FILE__, __LINE__,
 +		    _("Unsupported SYMBOL_COMPUTED_OPS %p for \"%s\""),
@@ -3905,7 +3907,7 @@ index 1df6a9f..c101371 100644
  }
  
  /* Using the objfile specified in BATON, find the address for the
-@@ -204,6 +226,118 @@ dwarf_expr_tls_address (void *baton, CORE_ADDR offset)
+@@ -204,6 +226,129 @@ dwarf_expr_tls_address (void *baton, CORE_ADDR offset)
    return target_translate_tls_address (debaton->objfile, offset);
  }
  
@@ -4016,6 +4018,17 @@ index 1df6a9f..c101371 100644
 +
 +  retval = dwarf_expr_fetch (ctx, 0);
 +
++  if (ctx->location == DWARF_VALUE_REGISTER)
++    {
++      /* Inlined dwarf_expr_read_reg as we no longer have the baton. */
++
++      int gdb_regnum = gdbarch_dwarf2_reg_to_regnum (ctx->gdbarch, retval);
++      struct type *type = builtin_type (ctx->gdbarch)->builtin_data_ptr;
++      struct frame_info *frame = get_selected_frame (NULL);
++
++      retval = address_from_register (type, gdb_regnum, frame);
++    }
++
 +  do_cleanups (back_to);
 +
 +  return retval;
@@ -4024,7 +4037,7 @@ index 1df6a9f..c101371 100644
  /* Evaluate a location description, starting at DATA and with length
     SIZE, to find the current location of variable VAR in the context
     of FRAME.  */
-@@ -213,9 +347,8 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
+@@ -213,9 +358,8 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
  			  struct dwarf2_per_cu_data *per_cu)
  {
    struct value *retval;
@@ -4035,7 +4048,7 @@ index 1df6a9f..c101371 100644
  
    if (size == 0)
      {
-@@ -225,21 +358,8 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
+@@ -225,21 +369,8 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
        return retval;
      }
  
@@ -4044,7 +4057,8 @@ index 1df6a9f..c101371 100644
 -
 -  ctx = new_dwarf_expr_context ();
 -  old_chain = make_cleanup_free_dwarf_expr_context (ctx);
--
++  ctx = dwarf_expr_prep_ctx (frame, data, size, per_cu);
+ 
 -  ctx->gdbarch = get_objfile_arch (baton.objfile);
 -  ctx->addr_size = dwarf2_per_cu_addr_size (per_cu);
 -  ctx->baton = &baton;
@@ -4052,13 +4066,12 @@ index 1df6a9f..c101371 100644
 -  ctx->read_mem = dwarf_expr_read_mem;
 -  ctx->get_frame_base = dwarf_expr_frame_base;
 -  ctx->get_tls_address = dwarf_expr_tls_address;
-+  ctx = dwarf_expr_prep_ctx (frame, data, size, per_cu);
- 
+-
 -  dwarf_expr_eval (ctx, data, size);
    if (ctx->num_pieces > 0)
      {
        int i;
-@@ -251,36 +371,115 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
+@@ -251,36 +382,115 @@ dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
        for (i = 0; i < ctx->num_pieces; i++)
  	{
  	  struct dwarf_expr_piece *p = &ctx->pieces[i];
@@ -4197,7 +4210,7 @@ index 1df6a9f..c101371 100644
      }
  
    set_value_initialized (retval, ctx->initialized);
-@@ -330,6 +529,15 @@ needs_frame_frame_base (void *baton, gdb_byte **start, size_t * length)
+@@ -330,6 +540,15 @@ needs_frame_frame_base (void *baton, gdb_byte **start, size_t * length)
    nf_baton->needs_frame = 1;
  }
  
@@ -4213,7 +4226,7 @@ index 1df6a9f..c101371 100644
  /* Thread-local accesses do require a frame.  */
  static CORE_ADDR
  needs_frame_tls_address (void *baton, CORE_ADDR offset)
-@@ -362,11 +570,12 @@ dwarf2_loc_desc_needs_frame (gdb_byte *data, unsigned short size,
+@@ -362,11 +581,12 @@ dwarf2_loc_desc_needs_frame (gdb_byte *data, unsigned short size,
    ctx->read_reg = needs_frame_read_reg;
    ctx->read_mem = needs_frame_read_mem;
    ctx->get_frame_base = needs_frame_frame_base;
@@ -4227,7 +4240,7 @@ index 1df6a9f..c101371 100644
  
    if (ctx->num_pieces > 0)
      {
-@@ -375,7 +584,7 @@ dwarf2_loc_desc_needs_frame (gdb_byte *data, unsigned short size,
+@@ -375,7 +595,7 @@ dwarf2_loc_desc_needs_frame (gdb_byte *data, unsigned short size,
        /* If the location has several pieces, and any of them are in
           registers, then we will need a frame to fetch them from.  */
        for (i = 0; i < ctx->num_pieces; i++)
@@ -4236,7 +4249,7 @@ index 1df6a9f..c101371 100644
            in_reg = 1;
      }
  
-@@ -607,7 +816,7 @@ static int
+@@ -607,7 +827,7 @@ static int
  loclist_describe_location (struct symbol *symbol, struct ui_file *stream)
  {
    /* FIXME: Could print the entire list of locations.  */
@@ -4245,7 +4258,7 @@ index 1df6a9f..c101371 100644
    return 1;
  }
  
-@@ -623,16 +832,56 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
+@@ -623,16 +843,56 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
  
    data = find_location_expression (dlbaton, &size, ax->scope);
    if (data == NULL)
@@ -4322,7 +4335,7 @@ index 0bfcfca..01018d6 100644
  
  #endif /* dwarf2loc.h */
 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
[...2061 lines suppressed...]
- 	 UI, so we need not bother getting it.  */
+@@ -1530,44 +1738,60 @@ VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit)
+ 
+       /* We probably should not get children of a varobj that has a
+ 	 pretty-printer, but for which -var-list-children was never
+-	 invoked.  Presumably, such varobj is not yet expanded in the
+-	 UI, so we need not bother getting it.  */
++	 invoked.    */
        if (v->pretty_printer)
  	{
 -	  VEC (varobj_p) *changed = 0, *new_and_unchanged = 0;
@@ -28807,8 +29902,32 @@ index fbe8ff8..1bfc5e4 100644
  	  int i, children_changed;
  	  varobj_p tmp;
  
-@@ -1546,28 +1729,28 @@ VEC(varobj_update_result) *varobj_update (struct varobj **varp, int explicit)
+-	  if (!v->children_requested)
+-	    continue;
+-
+ 	  if (v->frozen)
+ 	    continue;
  
++	  if (!v->children_requested)
++	    {
++	      int dummy;
++
++	      /* If we initially did not have potential children, but
++		 now we do, consider the varobj as changed.
++		 Otherwise, if children were never requested, consider
++		 it as unchanged -- presumably, such varobj is not yet
++		 expanded in the UI, so we need not bother getting
++		 it.  */
++	      if (varobj_has_more (v, 0))
++		continue;
++
++	      update_dynamic_varobj_children (v, NULL, NULL, &dummy, 0, 0);
++	      if (varobj_has_more (v, 0))
++		VEC_safe_push (varobj_update_result, result, &r);
++
++	      continue;
++	    }
++
  	  /* If update_dynamic_varobj_children returns 0, then we have
  	     a non-conforming pretty-printer, so we skip it.  */
 -	  if (update_dynamic_varobj_children (v, &changed, &new_and_unchanged,
@@ -28848,7 +29967,7 @@ index fbe8ff8..1bfc5e4 100644
  	      continue;
  	    }
  	}
-@@ -1855,7 +2038,12 @@ new_variable (void)
+@@ -1855,7 +2079,12 @@ new_variable (void)
    var->frozen = 0;
    var->not_fetched = 0;
    var->children_requested = 0;
@@ -28861,7 +29980,7 @@ index fbe8ff8..1bfc5e4 100644
  
    return var;
  }
-@@ -1885,7 +2073,10 @@ free_variable (struct varobj *var)
+@@ -1885,7 +2114,10 @@ free_variable (struct varobj *var)
    if (var->pretty_printer)
      {
        struct cleanup *cleanup = varobj_ensure_python_env (var);
@@ -28873,7 +29992,7 @@ index fbe8ff8..1bfc5e4 100644
        do_cleanups (cleanup);
      }
  #endif
-@@ -1918,6 +2109,18 @@ make_cleanup_free_variable (struct varobj *var)
+@@ -1918,6 +2150,18 @@ make_cleanup_free_variable (struct varobj *var)
    return make_cleanup (do_free_variable_cleanup, var);
  }
  
@@ -28892,7 +30011,7 @@ index fbe8ff8..1bfc5e4 100644
  /* This returns the type of the variable. It also skips past typedefs
     to return the real type of the variable.
  
-@@ -2132,6 +2335,8 @@ value_of_root (struct varobj **var_handle, int *type_changed)
+@@ -2132,6 +2376,8 @@ value_of_root (struct varobj **var_handle, int *type_changed)
        else
  	{
  	  tmp_var->obj_name = xstrdup (var->obj_name);
@@ -28901,7 +30020,7 @@ index fbe8ff8..1bfc5e4 100644
  	  varobj_delete (var, NULL, 0);
  
  	  install_variable (tmp_var);
-@@ -2166,7 +2371,11 @@ static char *
+@@ -2166,7 +2412,11 @@ static char *
  my_value_of_variable (struct varobj *var, enum varobj_display_formats format)
  {
    if (var->root->is_valid)
@@ -28914,7 +30033,90 @@ index fbe8ff8..1bfc5e4 100644
    else
      return NULL;
  }
-@@ -2954,10 +3163,7 @@ cplus_describe_child (struct varobj *parent, int index,
+@@ -2189,43 +2439,51 @@ value_get_print_value (struct value *value, enum varobj_display_formats format,
+     struct cleanup *back_to = varobj_ensure_python_env (var);
+     PyObject *value_formatter = var->pretty_printer;
+ 
+-    if (value_formatter && PyObject_HasAttr (value_formatter,
+-					     gdbpy_to_string_cst))
++    if (value_formatter)
+       {
+-	char *hint;
+-	struct value *replacement;
+-	int string_print = 0;
+-	PyObject *output = NULL;
++	/* First check to see if we have any children at all.  If so,
++	   we simply return {...}.  */
++	if (dynamic_varobj_has_child_method (var))
++	  return xstrdup ("{...}");
+ 
+-	hint = gdbpy_get_display_hint (value_formatter);
+-	if (hint)
++	if (PyObject_HasAttr (value_formatter, gdbpy_to_string_cst))
+ 	  {
+-	    if (!strcmp (hint, "string"))
+-	      string_print = 1;
+-	    xfree (hint);
+-	  }
++	    char *hint;
++	    struct value *replacement;
++	    int string_print = 0;
++	    PyObject *output = NULL;
++
++	    hint = gdbpy_get_display_hint (value_formatter);
++	    if (hint)
++	      {
++		if (!strcmp (hint, "string"))
++		  string_print = 1;
++		xfree (hint);
++	      }
+ 
+-	output = apply_varobj_pretty_printer (value_formatter,
+-					      &replacement);
+- 	if (output)
+-  	  {
+- 	    PyObject *py_str = python_string_to_target_python_string (output);
+- 	    if (py_str)
+- 	      {
+- 		char *s = PyString_AsString (py_str);
+- 		len = PyString_Size (py_str);
+-		thevalue = xmemdup (s, len + 1, len + 1);
+- 		Py_DECREF (py_str);
++	    output = apply_varobj_pretty_printer (value_formatter,
++						  &replacement);
++	    if (output)
++	      {
++		PyObject *py_str
++		  = python_string_to_target_python_string (output);
++		if (py_str)
++		  {
++		    char *s = PyString_AsString (py_str);
++		    len = PyString_Size (py_str);
++		    thevalue = xmemdup (s, len + 1, len + 1);
++		    Py_DECREF (py_str);
++		  }
++		Py_DECREF (output);
+ 	      }
+- 	    Py_DECREF (output);
+-	  }
+-	if (thevalue && !string_print)
+-	  {
+-	    do_cleanups (back_to);
+-	    return thevalue;
++	    if (thevalue && !string_print)
++	      {
++		do_cleanups (back_to);
++		return thevalue;
++	      }
++	    if (replacement)
++	      value = replacement;
+ 	  }
+-	if (replacement)
+-	  value = replacement;
+       }
+     do_cleanups (back_to);
+   }
+@@ -2954,10 +3212,7 @@ cplus_describe_child (struct varobj *parent, int index,
  	    *cname = xstrdup (TYPE_FIELD_NAME (type, index));
  
  	  if (cvalue && value)
@@ -28926,7 +30128,7 @@ index fbe8ff8..1bfc5e4 100644
  
  	  if (ctype)
  	    {
-@@ -3163,6 +3369,19 @@ java_value_of_variable (struct varobj *var, enum varobj_display_formats format)
+@@ -3163,6 +3418,19 @@ java_value_of_variable (struct varobj *var, enum varobj_display_formats format)
    return cplus_value_of_variable (var, format);
  }
  
@@ -28946,7 +30148,7 @@ index fbe8ff8..1bfc5e4 100644
  /* Iterate all the existing _root_ VAROBJs and call the FUNC callback for them
     with an arbitrary caller supplied DATA pointer.  */
  
-@@ -3180,6 +3399,43 @@ all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
+@@ -3180,6 +3448,43 @@ all_root_varobjs (void (*func) (struct varobj *var, void *data), void *data)
        (*func) (var_root->rootvar, data);
      }
  }

gdb-bz515434-qsort_cmp.patch:
 objfiles.c |  187 ++++++++++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 137 insertions(+), 50 deletions(-)

Index: gdb-bz515434-qsort_cmp.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb-bz515434-qsort_cmp.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- gdb-bz515434-qsort_cmp.patch	28 Aug 2009 18:24:06 -0000	1.2
+++ gdb-bz515434-qsort_cmp.patch	1 Sep 2009 13:19:03 -0000	1.3
@@ -227,205 +227,3 @@ diff -p -u -r1.93 objfiles.c
  
    *pmap = map;
    *pmap_size = map_size;
-
-2009-08-25  Jan Kratochvil  <jan.kratochvil at redhat.com>
-
-	* gdb.base/solib-overlap.exp, gdb.base/solib-overlap-lib.c,
-	gdb.base/solib-overlap-main.c: New.
-
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/solib-overlap-lib.c
-@@ -0,0 +1,27 @@
-+/* Copyright 2009 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/>.
-+
-+   Contributed by Jan Kratochvil <jan.kratochvil at redhat.com>.  */
-+
-+void
-+libsym (void)
-+{
-+}
-+
-+#ifdef SYMB
-+void
-+libsymb (void)
-+{
-+}
-+#endif
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/solib-overlap-main.c
-@@ -0,0 +1,25 @@
-+/* Copyright 2009 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/>.
-+
-+   Contributed by Jan Kratochvil <jan.kratochvil at redhat.com>.  */
-+
-+#include <unistd.h>
-+
-+int
-+main (void)
-+{
-+  sleep (60);
-+
-+  return 1;
-+}
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/solib-overlap.exp
-@@ -0,0 +1,135 @@
-+# Copyright 2009 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/>.
-+#
-+# Contributed by Jan Kratochvil <jan.kratochvil at redhat.com>.
-+
-+# Test GDB can cope with two libraries loaded with overlapping VMA ranges.
-+# Prelink libraries first so they can be loaded and their native address.
-+# In such case `struct linkmap'.l_addr will be zero.  Provide different
-+# unprelinked library files on the disk which have zero-based VMAs.  These
-+# different files should have their .dynamic section at a different offset in
-+# page size so that we get for
-+#   warning: .dynamic section for "..." is not at the expected address
-+# the reason
-+#   (wrong library or version mismatch?)
-+# and not:
-+#   difference appears to be caused by prelink, adjusting expectations
-+# In such case both disk libraries will be loaded at VMAs starting at zero.
-+
-+if [skip_shlib_tests] {
-+    return 0
-+}
-+
-+# Are we on a target board?  It is required for attaching to a process.
-+if [is_remote target] {
-+    return 0
-+}
-+
-+# Library file.
-+set libname "solib-overlap-lib"
-+set srcfile_lib ${srcdir}/${subdir}/${libname}.c
-+# Binary file.
-+set testfile "solib-overlap-main"
-+set srcfile ${srcdir}/${subdir}/${testfile}.c
-+
-+# Base addresses for `prelink -r' which should be compatible with both -m32 and
-+# -m64 targets.  If it clashes with system prelinked libraries it would give
-+# false PASS.
-+# Prelink first lib1 at 0x40000000 and lib2 at 0x41000000.
-+# During second pass try lib1 at 0x50000000 and lib2 at 0x51000000.
-+foreach prelink_lib1 {0x40000000 0x50000000} {
-+    set prelink_lib2 [format "0x%x" [expr $prelink_lib1 + 0x01000000]]
-+
-+    set old_prefix $pf_prefix
-+    lappend pf_prefix "$prelink_lib1:"
-+
-+    # Library file.
-+    set binfile_lib1 ${objdir}/${subdir}/${libname}1-${prelink_lib1}.so
-+    set binfile_lib2 ${objdir}/${subdir}/${libname}2-${prelink_lib1}.so
-+    set lib_flags {debug}
-+    # Binary file.
-+    set binfile_base ${testfile}-${prelink_lib1}
-+    set binfile ${objdir}/${subdir}/${binfile_base}
-+    set bin_flags [list debug shlib=${binfile_lib1} shlib=${binfile_lib2}]
-+    set escapedbinfile  [string_to_regexp ${binfile}]
-+
-+    if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib1} $lib_flags] != ""
-+	 || [gdb_compile_shlib ${srcfile_lib} ${binfile_lib2} $lib_flags] != ""
-+	 || [gdb_compile ${srcfile} ${binfile} executable $bin_flags] != "" } {
-+	untested "Could not compile ${binfile_lib1}, ${binfile_lib2} or ${binfile}."
-+	return -1
-+    }
-+
-+    if {[catch "system \"prelink -N -r ${prelink_lib1} ${binfile_lib1}\""] != 0
-+	|| [catch "system \"prelink -N -r ${prelink_lib2} ${binfile_lib2}\""] != 0} {
-+	# Maybe we don't have prelink.
-+	untested "Could not prelink ${binfile_lib1} or ${binfile_lib2}."
-+	return -1
-+    }
-+
-+    # Start the program running and then wait for a bit, to be sure
-+    # that it can be attached to.
-+
-+    set testpid [eval exec $binfile &]
-+    sleep 2
-+    if { [istarget "*-*-cygwin*"] } {
-+	# testpid is the Cygwin PID, GDB uses the Windows PID, which might be
-+	# different due to the way fork/exec works.
-+	set testpid [ exec ps -e | gawk "{ if (\$1 == $testpid) print \$4; }" ]
-+    }
-+
-+    remote_exec build "mv -f ${binfile_lib1} ${binfile_lib1}-running"
-+    remote_exec build "mv -f ${binfile_lib2} ${binfile_lib2}-running"
-+
-+    # Provide another exported function name to cause different sizes of sections.
-+    lappend lib_flags additional_flags=-DSYMB
-+
-+    if { [gdb_compile_shlib ${srcfile_lib} ${binfile_lib1} $lib_flags] != ""
-+	 || [gdb_compile_shlib ${srcfile_lib} ${binfile_lib2} $lib_flags] != ""} {
-+	untested "Could not recompile ${binfile_lib1} or ${binfile_lib2}."
-+	remote_exec build "kill -9 ${testpid}"
-+	return -1
-+    }
-+
-+    clean_restart ${binfile_base}
-+    # This testcase currently does not support remote targets.
-+    # gdb_load_shlibs ${binfile_lib1} ${binfile_lib2}
-+
-+    # Here we should get:
-+    # warning: .dynamic section for ".../solib-overlap-lib1.so" is not at the expected address (wrong library or version mismatch?)
-+    # warning: .dynamic section for ".../solib-overlap-lib2.so" is not at the expected address (wrong library or version mismatch?)
-+
-+    set test attach
-+    gdb_test_multiple "attach $testpid" $test {
-+	-re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $" {
-+	    pass $test
-+	}
-+	-re "Attaching to program.*`?$escapedbinfile\.exe'?, process $testpid.*\[Switching to thread $testpid\..*\].*$gdb_prompt $" {
-+	    # Response expected on Cygwin
-+	    pass $test
-+	}
-+    }
-+
-+    # Detach the process.
-+
-+    gdb_test "detach" "Detaching from program: .*$escapedbinfile, process $testpid"
-+
-+    # Wait a bit for gdb to finish detaching
-+
-+    sleep 5
-+
-+    remote_exec build "kill -9 ${testpid}"
-+
-+    set pf_prefix $old_prefix
-+}


Index: gdb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/devel/gdb.spec,v
retrieving revision 1.380
retrieving revision 1.381
diff -u -p -r1.380 -r1.381
--- gdb.spec	28 Aug 2009 18:24:06 -0000	1.380
+++ gdb.spec	1 Sep 2009 13:19:03 -0000	1.381
@@ -14,7 +14,7 @@ Version: 6.8.50.20090818
 
 # The release always contains a leading reserved number, start it at 1.
 # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 6%{?_with_upstream:.upstream}%{?dist}
+Release: 7%{?_with_upstream:.upstream}%{?dist}
 
 License: GPLv3+
 Group: Development/Debuggers
@@ -829,6 +829,12 @@ fi
 %endif
 
 %changelog
+* Tue Sep  1 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090818-7
+- archer-jankratochvil-fedora12 commit: d25596676e8811b03f8c9aba6bbd04ebaa9ff5db
+  - [call-frame-cfa] Fix parsing CFA-relative frames (BZ 516627, Tom Tromey).
+  - [vla] variable length Fortran strings for -O -g code (part of BZ 508406, me).
+  - [python] varobj + general fixes (Tom Tromey).
+
 * Fri Aug 28 2009 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.8.50.20090818-6
 - Real upstream fixup of qsort_cmp (BZ 515434).
 - Revert bitfields regression (BZ 520129).




More information about the fedora-extras-commits mailing list