public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
* [SCM]  archer-bauermann-python-patches: gdb
@ 2008-10-17  1:19 bauermann
  0 siblings, 0 replies; 2+ messages in thread
From: bauermann @ 2008-10-17  1:19 UTC (permalink / raw)
  To: archer-commits

The branch, archer-bauermann-python-patches has been updated
  discards  6269ec87240e9afcac220b6372f61836cdc3ff02 (commit)
  discards  ad76d5184f5a976f66db99d62a20512b696dafe1 (commit)
  discards  39be93153d22b79f7a470b0d433295b22deba16f (commit)
  discards  3f0cc9d65edae1604c1d6512d37afe7001c13996 (commit)
  discards  088d96d60d04a70da4374e3712ef2cee476b55ad (commit)
  discards  af912e7ea14a1bf748b41d6526df444a1ae53473 (commit)
  discards  64aa3a2ed1bd09a670cd3d6991d6e914b6f9b337 (commit)
  discards  6be292baa84b7da96e59203c1f84f353242c56e2 (commit)
  discards  b4e534a09f11ac1410f1439b3e3e5c77b1917a0e (commit)
  discards  d4a3947fc1df2f122b4ce6760102fc7826db70c9 (commit)
       via  4b1ae88963fead27fa5b65c393f1b5b3f4ca5de0 (commit)
       via  7daef81d11755333fcae6b66cd0463b3f369c52f (commit)
       via  8366a2c8314c4b05383b7a641e5583350b1cd9aa (commit)
       via  48b8664afa805fff52c3c3875ba23e3d2a235044 (commit)
       via  018da5ffe52da7ddc5ca3ac23535abf1d2748991 (commit)
       via  8869f2e5c270a9b523ee12a8115a633490e157a7 (commit)
       via  ba981a49c3fcbdd296ae8355ae7950f39b3cf30a (commit)
      from  6269ec87240e9afcac220b6372f61836cdc3ff02 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 4b1ae88963fead27fa5b65c393f1b5b3f4ca5de0
Author: Tom Tromey <tromey@redhat.com>
Date:   Sun Oct 12 13:32:45 2008 -0600

    gdb
    	* python/python.c (gdbpy_parameter_value): Rename.  No longer
    	static.  Change arguments.
    	(_initialize_python): Call gdbpy_initialize_parameters.
    	(get_parameter): Change 'variable' to 'parameter'.
    	* python/python-param.c: New file.
    	* Makefile.in (SUBDIR_PYTHON_OBS): Add python-param.o.
    	(SUBDIR_PYTHON_SRCS): Add python-param.c.
    	(python-param.o): New target.
    	* python/python-internal.h (gdbpy_parse_command_name): Declare.
    	(gdbpy_initialize_parameters): Declare.
    	* python/python-cmd.c (gdbpy_parse_command_name): Rename.  Add
    	'start_list' argument.  No longer static.
    	(cmdpy_init): Update.
    gdb/doc
    	* gdb.texinfo (Parameters In Python): New node.
    	(Python API): Update.

commit 7daef81d11755333fcae6b66cd0463b3f369c52f
Author: Tom Tromey <tromey@redhat.com>
Date:   Thu Oct 9 15:15:45 2008 -0600

    more pretty-printing
    
    gdb
    	* mi/mi-cmds.c (mi_cmds) <var-set-visualizer>: Remove.
    	<var-clear-type-visualizers>: Remove.
    	<var-set-type-visualizer>: Remove.
    	* mi/mi-cmds.h (mi_cmd_var_set_visualizer): Remove.
    	(mi_cmd_var_clear_type_visualizers): Remove.
    	(mi_cmd_var_set_visualizer): Remove.
    	* mi/mi-cmd-var.c (mi_cmd_var_set_visualizer): Remove.
    	(mi_cmd_var_clear_type_visualizers): Remove.
    	(mi_cmd_var_set_type_visualizer): Remove.
    	* varobj.h (varobj_clear_type_visualizers,
    	varobj_set_type_visualizer, varobj_set_visualizer): Remove.
    	* varobj.c (value_get_print_value): Use
    	apply_varobj_pretty_printer.
    	(varobj_clear_type_visualizers): Remove.
    	(type_visualizer): Remove.
    	(type_visualizers): Remove.
    	(varobj_set_type_visualizer): Remove.
    	(install_default_visualizer): Rewrote.
    	(varobj_set_visualizer): Remove.
    	* python/python-internal.h (apply_varobj_pretty_printer):
    	Declare.
    	(gdbpy_children_cst, gdbpy_to_string_cst): Declare.
    	* python/python.c (gdbpy_to_static_cst, gdbpy_children_cst):
    
    	* python/python.c (_initialize_python): Define _format_children.
    	(pretty_print_one_value): Add 'children' argument.  Call
    	_format_children.
    	(apply_pretty_printer): Update.
    	(apply_val_pretty_printer): Update.
    	(apply_varobj_pretty_printer): Update.
    
    	* varobj.c (install_visualizer): New function.
    	(install_default_visualizer): Use it.
    	(varobj_set_visualizer): New function.
    	* varobj.h (varobj_set_visualizer): Restore.
    	* python/python.c (gdbpy_get_default_visualizer): New function.
    	(GdbMethods) <get_default_visualizer>: New entry.
    	* mi/mi-cmds.h (mi_cmd_var_set_visualizer): Restore.
    	* mi/mi-cmds.c (mi_cmds) <var-set-visualizer>: Restore.
    	* mi/mi-cmd-var.c (mi_cmd_var_set_visualizer): Restore.
    	* varobj.c (value_get_print_value): Handle replacement value
    	return.  Don't pretty-print if printer fails or returns
    	replacement.
    	* python/python-internal.h (apply_varobj_pretty_printer): Update.
    	* python/python.c (apply_varobj_pretty_printer): Add 'replacement'
    	argument.  Don't print replacement value.
    	* valprint.h (raw_printing): Declare.
    	* valprint.c (raw_printing): No longer static.
    	* varobj.c (update_dynamic_varobj_children): Set num_children on
    	varobj.
    	(varobj_get_num_children): Move later.  Call
    	update_dynamic_varobj_children.

commit 8366a2c8314c4b05383b7a641e5583350b1cd9aa
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Mon Oct 13 22:43:44 2008 -0200

    Value conversion additions and fixes.

commit 48b8664afa805fff52c3c3875ba23e3d2a235044
Author: Tom Tromey <tromey@redhat.com>
Date:   Thu Sep 25 12:56:13 2008 -0600

    initial Type support

commit 018da5ffe52da7ddc5ca3ac23535abf1d2748991
Author: Tom Tromey <tromey@redhat.com>
Date:   Sat Sep 13 16:27:40 2008 -0600

    add auto-loading based on objfile name

commit 8869f2e5c270a9b523ee12a8115a633490e157a7
Author: Tom Tromey <tromey@redhat.com>
Date:   Fri Aug 1 08:57:27 2008 -0600

    initial python script support

commit ba981a49c3fcbdd296ae8355ae7950f39b3cf30a
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Tue Jul 15 03:43:38 2008 -0300

    Pretty-printing support.
    
    	* mi/mi-cmd-var.c (mi_cmd_var_set_type_visualizer)
    	(mi_cmd_var_clear_type_visualizers, mi_cmd_var_set_visualizer): New.
    	(varobj_update_one): List children, if they have changed.
    	* mi-cmds.c (mi_cmds): Register var-set-type-visualizer,
    	var-clear-type-visualizers and var-set-visualizer.
    	* mi-cmds.h (mi_cmd_var_set_type_visualizer)
    	(mi_cmd_var_clear_type_visualizers, mi_cmd_var_set_visualizer): New.
    	* python/python-internal.h (make_cleanup_py_decref): Declare.
    	* python/python.c (py_decref, make_cleanup_py_decref): New.
    	* varobj.c (struct varobj): New fields children_requested,
    	value_formatter and children_lister.
    	(struct type_visualizer): New.
    	(create_child_with_value, install_default_visualizer): New.
    	(value_get_print_value): New parameter value_formatter.
    	(varobj_add_child): New.
    	(type_visualizers): New variable.
    	(varobj_create): Call install_default_visualizer
    	(varobj_set_display_format): Adjust call to value_get_print_value.
    	(varobj_set_visualizer, varobj_set_type_visualizer)
    	(varobj_clear_type_visualizers, update_dynamic_varobj_children)
    	(varobj_list_children): Set children_requested.  Call
    	update_dynamic_varobj_children if necessary.  Call
    	install_default_visualizer on children.
    	(install_new_value): Always fetch dynamic varobjs.
    	(varobj_update): Rework not to try to get value of children for
    	which Python code has already computed the value.
    	(create_child): Use create_child_with_value.
    	(new_variable): Zero new fields.
    	(free_variable): Free Python objects.
    	(value_get_print_value): Call Python visualizer, is necessary.
    	(c_value_of_variable): Directly return Python-produced string
    	value.
    	* varobj.h (struct varobj_update_result_t): New field
    	value_installed.
    	(varobj_set_type_visualizer, varobj_clear_type_visualizers)
    	(varobj_set_visualizer): New.
    	* Makefile.in: Update dependencies.

-----------------------------------------------------------------------

Summary of changes:

First 500 lines of diff:


hooks/post-receive
--
Repository for Project Archer.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [SCM]  archer-bauermann-python-patches: gdb
@ 2008-10-16  3:56 bauermann
  0 siblings, 0 replies; 2+ messages in thread
From: bauermann @ 2008-10-16  3:56 UTC (permalink / raw)
  To: archer-commits

The branch, archer-bauermann-python-patches has been updated
  discards  83d0eb61b536657bc94733a021a0210dd712b534 (commit)
  discards  15cbff8911750ac4e16df921a3bc6f9321b4fa06 (commit)
  discards  9d1c927d4e89c43cc349e7c5302953dcd278b443 (commit)
  discards  dda8d658696a3c78e8464edcd9cf5a68b432ff97 (commit)
  discards  5bfaec17e39a9e631a6d2a60a595c55fe989804b (commit)
  discards  d4d50ac1b38d6c76f42d8ca99bee498d63e573b9 (commit)
  discards  f1234c817437aa38b0ce637998b0e0d8710722cf (commit)
  discards  4d8bc5ae9103b46d89dbf56865a7566b26a4b929 (commit)
  discards  d4895ded0acdb700e5ae3d2d699ed98ce46bc8ea (commit)
  discards  a3123a8e1f2851106c73aba5bc85680ebba3619f (commit)
  discards  1d09b87190c0537e36c63824afcc5fa94df67f2c (commit)
  discards  8fa31caa2156e7eb2ffb4b9ae0204b4f0a655104 (commit)
  discards  59139bcb7593a02c0221f2bec8ae2f9430e80994 (commit)
  discards  874448321f3f2acff6edb0a6d2b35e178237a3b8 (commit)
  discards  b1e67b395a388bb4b28aff17908dcee0bdec311b (commit)
  discards  473a90e44cf72a4d3250b5adec871a3814ccc13f (commit)
  discards  1fd6d18362668d7949894def09c854e501d5622b (commit)
  discards  a5c1364aa2611d55f492384aee44b0e92d39f5cc (commit)
  discards  0f350d79eb71696f276c97b681bfb330925815a7 (commit)
       via  6269ec87240e9afcac220b6372f61836cdc3ff02 (commit)
       via  ad76d5184f5a976f66db99d62a20512b696dafe1 (commit)
       via  39be93153d22b79f7a470b0d433295b22deba16f (commit)
       via  3f0cc9d65edae1604c1d6512d37afe7001c13996 (commit)
       via  088d96d60d04a70da4374e3712ef2cee476b55ad (commit)
       via  af912e7ea14a1bf748b41d6526df444a1ae53473 (commit)
       via  64aa3a2ed1bd09a670cd3d6991d6e914b6f9b337 (commit)
       via  6be292baa84b7da96e59203c1f84f353242c56e2 (commit)
       via  b4e534a09f11ac1410f1439b3e3e5c77b1917a0e (commit)
       via  d4a3947fc1df2f122b4ce6760102fc7826db70c9 (commit)
       via  e0add0bcedfb32911881ee8ade64f4f722f2ae41 (commit)
       via  3836c5ab21411695939a26a2bb3b23e6dca92a23 (commit)
       via  4e2c2b9d46335715b85d5aa4b441ff5b539ac6e8 (commit)
       via  00220d62f5c04ffeda6af90e753a0a93de060ca4 (commit)
       via  78007a7ca8a0d110603a4d6829114fa987bd89a6 (commit)
       via  0c8b691676ed2c293ce225459772c67ba318da9c (commit)
       via  1b769c3c3a07fed7c18699b6c782b9ac6e72d228 (commit)
       via  d3985fcb4a769f6db4714abc692ccc5193768a7d (commit)
       via  dfd2c2bca27df46376ac0ab67fa67c912df2c618 (commit)
      from  83d0eb61b536657bc94733a021a0210dd712b534 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 6269ec87240e9afcac220b6372f61836cdc3ff02
Author: Tom Tromey <tromey@redhat.com>
Date:   Sun Oct 12 13:32:45 2008 -0600

    gdb
    	* python/python.c (gdbpy_parameter_value): Rename.  No longer
    	static.  Change arguments.
    	(_initialize_python): Call gdbpy_initialize_parameters.
    	(get_parameter): Change 'variable' to 'parameter'.
    	* python/python-param.c: New file.
    	* Makefile.in (SUBDIR_PYTHON_OBS): Add python-param.o.
    	(SUBDIR_PYTHON_SRCS): Add python-param.c.
    	(python-param.o): New target.
    	* python/python-internal.h (gdbpy_parse_command_name): Declare.
    	(gdbpy_initialize_parameters): Declare.
    	* python/python-cmd.c (gdbpy_parse_command_name): Rename.  Add
    	'start_list' argument.  No longer static.
    	(cmdpy_init): Update.
    gdb/doc
    	* gdb.texinfo (Parameters In Python): New node.
    	(Python API): Update.

commit ad76d5184f5a976f66db99d62a20512b696dafe1
Author: Tom Tromey <tromey@redhat.com>
Date:   Fri Oct 10 17:31:51 2008 -0600

    	* varobj.c (install_visualizer): New function.
    	(install_default_visualizer): Use it.
    	(varobj_set_visualizer): New function.
    	* varobj.h (varobj_set_visualizer): Restore.
    	* python/python.c (gdbpy_get_default_visualizer): New function.
    	(GdbMethods) <get_default_visualizer>: New entry.
    	* mi/mi-cmds.h (mi_cmd_var_set_visualizer): Restore.
    	* mi/mi-cmds.c (mi_cmds) <var-set-visualizer>: Restore.
    	* mi/mi-cmd-var.c (mi_cmd_var_set_visualizer): Restore.
    	* varobj.c (value_get_print_value): Handle replacement value
    	return.  Don't pretty-print if printer fails or returns
    	replacement.
    	* python/python-internal.h (apply_varobj_pretty_printer): Update.
    	* python/python.c (apply_varobj_pretty_printer): Add 'replacement'
    	argument.  Don't print replacement value.
    	* valprint.h (raw_printing): Declare.
    	* valprint.c (raw_printing): No longer static.
    	* varobj.c (update_dynamic_varobj_children): Set num_children on
    	varobj.
    	(varobj_get_num_children): Move later.  Call
    	update_dynamic_varobj_children.

commit 39be93153d22b79f7a470b0d433295b22deba16f
Author: Tom Tromey <tromey@redhat.com>
Date:   Thu Oct 9 16:23:21 2008 -0600

    	* python/python.c (_initialize_python): Define _format_children.
    	(pretty_print_one_value): Add 'children' argument.  Call
    	_format_children.
    	(apply_pretty_printer): Update.
    	(apply_val_pretty_printer): Update.
    	(apply_varobj_pretty_printer): Update.

commit 3f0cc9d65edae1604c1d6512d37afe7001c13996
Author: Tom Tromey <tromey@redhat.com>
Date:   Thu Oct 9 15:15:45 2008 -0600

    gdb
    	* mi/mi-cmds.c (mi_cmds) <var-set-visualizer>: Remove.
    	<var-clear-type-visualizers>: Remove.
    	<var-set-type-visualizer>: Remove.
    	* mi/mi-cmds.h (mi_cmd_var_set_visualizer): Remove.
    	(mi_cmd_var_clear_type_visualizers): Remove.
    	(mi_cmd_var_set_visualizer): Remove.
    	* mi/mi-cmd-var.c (mi_cmd_var_set_visualizer): Remove.
    	(mi_cmd_var_clear_type_visualizers): Remove.
    	(mi_cmd_var_set_type_visualizer): Remove.
    	* varobj.h (varobj_clear_type_visualizers,
    	varobj_set_type_visualizer, varobj_set_visualizer): Remove.
    	* varobj.c (value_get_print_value): Use
    	apply_varobj_pretty_printer.
    	(varobj_clear_type_visualizers): Remove.
    	(type_visualizer): Remove.
    	(type_visualizers): Remove.
    	(varobj_set_type_visualizer): Remove.
    	(install_default_visualizer): Rewrote.
    	(varobj_set_visualizer): Remove.
    	* python/python-internal.h (apply_varobj_pretty_printer):
    	Declare.
    	(gdbpy_children_cst, gdbpy_to_string_cst): Declare.
    	* python/python.c (gdbpy_to_static_cst, gdbpy_children_cst):

commit 088d96d60d04a70da4374e3712ef2cee476b55ad
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Mon Oct 13 22:43:44 2008 -0200

    Value conversion additions and fixes.

commit af912e7ea14a1bf748b41d6526df444a1ae53473
Author: Tom Tromey <tromey@redhat.com>
Date:   Thu Sep 25 12:56:13 2008 -0600

    initial Type support

commit 64aa3a2ed1bd09a670cd3d6991d6e914b6f9b337
Author: Tom Tromey <tromey@redhat.com>
Date:   Tue Sep 23 12:11:40 2008 -0600

    initial pretty-printing support and add extra argument to value_print
    add /r format

commit 6be292baa84b7da96e59203c1f84f353242c56e2
Author: Tom Tromey <tromey@redhat.com>
Date:   Sat Sep 13 16:27:40 2008 -0600

    add auto-loading based on objfile name

commit b4e534a09f11ac1410f1439b3e3e5c77b1917a0e
Author: Tom Tromey <tromey@redhat.com>
Date:   Fri Aug 1 08:57:27 2008 -0600

    initial python script support

commit d4a3947fc1df2f122b4ce6760102fc7826db70c9
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Tue Jul 15 03:43:38 2008 -0300

    Implement Python-based computation of varobj children.
    
    	* mi/mi-cmd-var.c (mi_cmd_var_set_type_visualizer)
    	(mi_cmd_var_clear_type_visualizers, mi_cmd_var_set_visualizer): New.
    	(varobj_update_one): List children, if they have changed.
    	* mi-cmds.c (mi_cmds): Register var-set-type-visualizer,
    	var-clear-type-visualizers and var-set-visualizer.
    	* mi-cmds.h (mi_cmd_var_set_type_visualizer)
    	(mi_cmd_var_clear_type_visualizers, mi_cmd_var_set_visualizer): New.
    	* python/python-internal.h (make_cleanup_py_decref): Declare.
    	* python/python.c (py_decref, make_cleanup_py_decref): New.
    	* varobj.c (struct varobj): New fields children_requested,
    	value_formatter and children_lister.
    	(struct type_visualizer): New.
    	(create_child_with_value, install_default_visualizer): New.
    	(value_get_print_value): New parameter value_formatter.
    	(varobj_add_child): New.
    	(type_visualizers): New variable.
    	(varobj_create): Call install_default_visualizer
    	(varobj_set_display_format): Adjust call to value_get_print_value.
    	(varobj_set_visualizer, varobj_set_type_visualizer)
    	(varobj_clear_type_visualizers, update_dynamic_varobj_children)
    	(varobj_list_children): Set children_requested.  Call
    	update_dynamic_varobj_children if necessary.  Call
    	install_default_visualizer on children.
    	(install_new_value): Always fetch dynamic varobjs.
    	(varobj_update): Rework not to try to get value of children for
    	which Python code has already computed the value.
    	(create_child): Use create_child_with_value.
    	(new_variable): Zero new fields.
    	(free_variable): Free Python objects.
    	(value_get_print_value): Call Python visualizer, is necessary.
    	(c_value_of_variable): Directly return Python-produced string
    	value.
    	* varobj.h (struct varobj_update_result_t): New field
    	value_installed.
    	(varobj_set_type_visualizer, varobj_clear_type_visualizers)
    	(varobj_set_visualizer): New.
    	* Makefile.in: Update dependencies.

commit e0add0bcedfb32911881ee8ade64f4f722f2ae41
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Mon Apr 28 16:28:10 2008 -0300

    Expose threads to Python.

commit 3836c5ab21411695939a26a2bb3b23e6dca92a23
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Mon Apr 28 14:50:41 2008 -0300

    Expose symtab to Python.

commit 4e2c2b9d46335715b85d5aa4b441ff5b539ac6e8
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Sun Jun 8 18:38:30 2008 -0300

    Expose block and symbol to Python.

commit 00220d62f5c04ffeda6af90e753a0a93de060ca4
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Mon Apr 28 13:28:48 2008 -0300

    Expose frames to Python.

commit 78007a7ca8a0d110603a4d6829114fa987bd89a6
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Mon Apr 28 05:33:07 2008 -0300

    Add mechanism to define commands in Python.

commit 0c8b691676ed2c293ce225459772c67ba318da9c
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Mon Apr 28 05:16:05 2008 -0300

    Expose breakpoints to Python.

commit 1b769c3c3a07fed7c18699b6c782b9ac6e72d228
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Mon Jun 9 01:13:18 2008 -0300

    Implement Python function objects.

commit d3985fcb4a769f6db4714abc692ccc5193768a7d
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Mon Apr 28 05:05:34 2008 -0300

    Export hooks to Python.

commit dfd2c2bca27df46376ac0ab67fa67c912df2c618
Author: Thiago Jung Bauermann <bauerman@br.ibm.com>
Date:   Tue Jul 15 03:36:41 2008 -0300

    Export values to Python.

-----------------------------------------------------------------------

Summary of changes:
 gdb/doc/gdb.texinfo                       |    2 +-
 gdb/python/python-value.c                 |   89 +++++++++--------------------
 gdb/testsuite/gdb.python/python-value.exp |    8 +-
 3 files changed, 33 insertions(+), 66 deletions(-)

First 500 lines of diff:
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index f881b0a..d01f4e7 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -17815,7 +17815,7 @@ for its internal bookkeeping of the inferior's values, and for
 fetching values when necessary.
 
 Inferior values that are simple scalars can be used directly in
-Python expressions that are valid for the value's data type  Here's
+Python expressions that are valid for the value's data type.  Here's
 an example for an integer or floating-point value @code{some_val}:
 
 @smallexample
diff --git a/gdb/python/python-value.c b/gdb/python/python-value.c
index 02c3fec..e78a4b6 100644
--- a/gdb/python/python-value.c
+++ b/gdb/python/python-value.c
@@ -369,113 +369,80 @@ enum valpy_opcode
 #define STRIP_REFERENCE(TYPE) \
   ((TYPE_CODE (TYPE) == TYPE_CODE_REF) ? (TYPE_TARGET_TYPE (TYPE)) : (TYPE))
 
-/* Returns a value object which is the sum of this value with the given
-   integer argument.  */
+/* Returns a value object which is the result of applying the operation
+   specified by OPCODE to the given arguments.  */
 static PyObject *
 valpy_binop (enum valpy_opcode opcode, PyObject *self, PyObject *other)
 {
-  long l;
-  double d;
   struct value *res_val = NULL;	  /* Initialize to appease gcc warning.  */
-  struct value *other_val;
-  value_object *self_value;
   volatile struct gdb_exception except;
 
-  /* If the gdb.Value object is the second operand, then it will be passed
-     to us as the OTHER argument, and SELF will be an entirely different
-     kind of object, altogether.  Swap them to avoid surprises.  */
-  if (!PyObject_TypeCheck (self, &value_object_type))
-    {
-      PyObject *tmp;
-
-      tmp = self;
-      self = other;
-      other = tmp;
-    }
-
-  self_value = (value_object *) self;
-
-  if (PyObject_TypeCheck (other, &value_object_type))
-    other_val = ((value_object *) other)->value;
-  else if (PyInt_Check (other))
-    {
-      l = PyInt_AsLong (other);
-      if (PyErr_Occurred ())
-	return Py_NotImplemented;
-
-      other_val = value_from_longest (builtin_type_pyint, l);
-    }
-  else if (PyFloat_Check (other))
+  TRY_CATCH (except, RETURN_MASK_ALL)
     {
-      d = PyFloat_AsDouble (other);
-      if (PyErr_Occurred ())
-	return Py_NotImplemented;
+      struct value *arg1, *arg2;
 
-      other_val = value_from_double (builtin_type_pyfloat, d);
-    }
-  else
-    /* If the types cannot be added, Python documentation says to return
-       NotImplemented (http://docs.python.org/ref/numeric-types.html).  */
-    return Py_NotImplemented;
+      /* If the gdb.Value object is the second operand, then it will be passed
+	 to us as the OTHER argument, and SELF will be an entirely different
+	 kind of object, altogether.  Because of this, we can't assume self is
+	 a gdb.Value object and need to convert it from python as well.  */
+      arg1 = convert_value_from_python (self);
+      arg2 = convert_value_from_python (other);
 
-  TRY_CATCH (except, RETURN_MASK_ALL)
-    {
       switch (opcode)
 	{
 	case VALPY_ADD:
 	  {
-	    struct type *ltype = value_type (self_value->value);
-	    struct type *rtype = value_type (other_val);
+	    struct type *ltype = value_type (arg1);
+	    struct type *rtype = value_type (arg2);
+
 	    CHECK_TYPEDEF (ltype);
 	    ltype = STRIP_REFERENCE (ltype);
 	    CHECK_TYPEDEF (rtype);
 	    rtype = STRIP_REFERENCE (rtype);
 
 	    if (TYPE_CODE (ltype) == TYPE_CODE_PTR)
-	      res_val = value_ptradd (self_value->value, other_val);
+	      res_val = value_ptradd (arg1, arg2);
 	    else if (TYPE_CODE (rtype) == TYPE_CODE_PTR)
-	      res_val = value_ptradd (other_val, self_value->value);
+	      res_val = value_ptradd (arg2, arg1);
 	    else
-	      res_val = value_binop (self_value->value, other_val, BINOP_ADD);
+	      res_val = value_binop (arg1, arg2, BINOP_ADD);
 	  }
 	  break;
 	case VALPY_SUB:
 	  {
-	    struct type *ltype = value_type (self_value->value);
-	    struct type *rtype = value_type (other_val);
+	    struct type *ltype = value_type (arg1);
+	    struct type *rtype = value_type (arg2);
+
 	    CHECK_TYPEDEF (ltype);
 	    ltype = STRIP_REFERENCE (ltype);
 	    CHECK_TYPEDEF (rtype);
 	    rtype = STRIP_REFERENCE (rtype);
+
 	    if (TYPE_CODE (ltype) == TYPE_CODE_PTR)
 	      {
 		if (TYPE_CODE (rtype) == TYPE_CODE_PTR)
-		  {
 		    /* A ptrdiff_t for the target would be preferable
 		       here.  */
-		    res_val
-		      = value_from_longest (builtin_type_pyint,
-					    value_ptrdiff (self_value->value,
-							   other_val));
-		  }
+		    res_val = value_from_longest (builtin_type_pyint,
+						  value_ptrdiff (arg1, arg2));
 		else
-		  res_val = value_ptrsub (self_value->value, other_val);
+		  res_val = value_ptrsub (arg1, arg2);
 	      }
 	    else
-	      res_val = value_binop (self_value->value, other_val, BINOP_SUB);
+	      res_val = value_binop (arg1, arg2, BINOP_SUB);
 	  }
 	  break;
 	case VALPY_MUL:
-	  res_val = value_binop (self_value->value, other_val, BINOP_MUL);
+	  res_val = value_binop (arg1, arg2, BINOP_MUL);
 	  break;
 	case VALPY_DIV:
-	  res_val = value_binop (self_value->value, other_val, BINOP_DIV);
+	  res_val = value_binop (arg1, arg2, BINOP_DIV);
 	  break;
 	case VALPY_REM:
-	  res_val = value_binop (self_value->value, other_val, BINOP_REM);
+	  res_val = value_binop (arg1, arg2, BINOP_REM);
 	  break;
 	case VALPY_POW:
-	  res_val = value_binop (self_value->value, other_val, BINOP_EXP);
+	  res_val = value_binop (arg1, arg2, BINOP_EXP);
 	  break;
 	}
     }
diff --git a/gdb/testsuite/gdb.python/python-value.exp b/gdb/testsuite/gdb.python/python-value.exp
index b723b9d..7515ab7 100644
--- a/gdb/testsuite/gdb.python/python-value.exp
+++ b/gdb/testsuite/gdb.python/python-value.exp
@@ -104,11 +104,11 @@ proc test_value_numeric_ops {} {
 
   # Test gdb.Value mixed with Python types.
 
-  gdb_test "python print 'result = ' + str(i+1)" " = 6" "add integer value with python integer"
-  gdb_test "python print (i+1).__class__" "<type 'gdb.Value'>" "verify type of mixed integer add result"
+  gdb_test "python print 'result = ' + str(i-1)" " = 4" "subtract integer value from python integer"
+  gdb_test "python print (i-1).__class__" "<type 'gdb.Value'>" "verify type of mixed integer subtraction result"
   gdb_test "python print 'result = ' + str(f+1.5)" " = 2.75" "add double value with python float"
 
-  gdb_test "python print 'result = ' + str(1+i)" " = 6" "add python integer with integer value"
+  gdb_test "python print 'result = ' + str(1-i)" " = -4" "subtract python integer from integer value"
   gdb_test "python print 'result = ' + str(1.5+f)" " = 2.75" "add python float with double value"
 
   # Test pointer arithmethic
@@ -126,7 +126,7 @@ proc test_value_numeric_ops {} {
   # Test some invalid operations.
 
   gdb_test_multiple "python print 'result = ' + str(i+'foo')" "catch error in python type conversion" {
-      -re "unsupported operand type.*$gdb_prompt $"   {pass "catch error in python type conversion"}
+      -re "Argument to arithmetic operation not a number or boolean.*$gdb_prompt $"   {pass "catch error in python type conversion"}
       -re "result = .*$gdb_prompt $"		      {fail "catch error in python type conversion"}
       -re "$gdb_prompt $"			      {fail "catch error in python type conversion"}
   }


hooks/post-receive
--
Repository for Project Archer.


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-10-17  1:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-10-17  1:19 [SCM] archer-bauermann-python-patches: gdb bauermann
  -- strict thread matches above, loose matches on Subject: below --
2008-10-16  3:56 bauermann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).