aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdb-gdb.py.in
AgeCommit message (Collapse)AuthorFilesLines
2021-05-17gdb: add pyproject.tomlSimon Marchi1-77/+83
When running black to format Python files, files with extension .py.in are ignored, because they don't end in .py. Add a pyproject.toml file to instruct black to pick up these files too. gdb/ChangeLog: * py-project.toml: New. * gdb-gdb.py.in: Re-format. gdb/testsuite/ChangeLog: * gdb.python/py-framefilter-gdb.py.in: Re-format. * gdb.python/py-framefilter-invalidarg-gdb.py.in: Re-format. Change-Id: I9b88faec3360ea24788f44c8b89fe0b2a5f4eb97
2021-03-09gdb: fix field names of GDB's type main_type structureAndrew Burgess1-3/+3
In commit: commit 5b7d941b90d1a232dc144dc14850dd2fb63c35da Date: Fri Jan 22 12:21:09 2021 -0500 gdb: add owner-related methods to struct type two fields of struct maint_type were renamed. 'flag_objfile_owned' became 'm_flag_objfile_owned' and 'owner' became 'm_owner'. Update our python helper script to take this into account. I've added a basic test that uses the self-test framework to load the pretty printers, and print a type. The test relies on stopping in GDB's `value_print` function. gdb/ChangeLog: * gdb-gdb.py.in (StructMainTypePrettyPrinter) <owner_to_string>: Updated fields names flag_objfile_owned to m_flag_objfile_owned, and owner to m_owner. gdb/testsuite/ChangeLog: * gdb.gdb/python-helper.exp: New file.
2021-01-02Fix pretty printer of main_type.flds_bnds.boundsHannes Domani1-5/+6
In struct dynamic_prop the members kind and data were renamed to m_kind and m_data. And flag_upper_bound_is_count is actually in bounds directly, not in its high member. gdb/ChangeLog: 2021-01-02 Hannes Domani <ssbssa@yahoo.de> * gdb-gdb.py.in: Fix main_type.flds_bnds.bounds pretty printer.
2021-01-01Update copyright year range in all GDB filesJoel Brobecker1-1/+1
This commits the result of running gdb/copyright.py as per our Start of New Year procedure... gdb/ChangeLog Update copyright year range in copyright header of all GDB files.
2020-12-18Fix name of main_type field type in pretty printerHannes Domani1-1/+1
It was renamed from type to m_type. gdb/ChangeLog: 2020-12-18 Hannes Domani <ssbssa@yahoo.de> * gdb-gdb.py.in: Fix main_type field name.
2020-11-15Add support for printing value of DWARF-based fixed-point type objectsJoel Brobecker1-0/+5
This commit introduces a new kind of type, meant to describe fixed-point types, using a new code added specifically for this purpose (TYPE_CODE_FIXED_POINT). It then adds handling of fixed-point base types in the DWARF reader. And finally, as a first step, this commit adds support for printing the value of fixed-point type objects. Note that this commit has a known issue: Trying to print the value of a fixed-point object with a format letter (e.g. "print /x NAME") causes the wrong value to be printed because the scaling factor is not applied. Since the fix for this issue is isolated, and this is not a regression, the fix will be made in a pach of its own. This is meant to simplify review and archeology. Also, other functionalities related to fixed-point type handling (ptype, arithmetics, etc), will be added piecemeal as well, for the same reasons (faciliate reviews and archeology). Related to this, the testcase gdb.ada/fixed_cmp.exp is adjusted to compile the test program with -fgnat-encodings=all, so as to force the use of GNAT encodings, rather than rely on the compiler's default to use them. The intent is to enhance this testcase to also test the pure DWARF approach using -fgnat-encodings=minimal as soon as the corresponding suport gets added in. Thus, the modification to the testcase is made in a way that it prepares this testcase to be tested in both modes. gdb/ChangeLog: * ada-valprint.c (ada_value_print_1): Add fixed-point type handling. * dwarf2/read.c (get_dwarf2_rational_constant) (get_dwarf2_unsigned_rational_constant, finish_fixed_point_type) (has_zero_over_zero_small_attribute): New functions. read_base_type, set_die_type): Add fixed-point type handling. * gdb-gdb.py.in: Add fixed-point type handling. * gdbtypes.c: #include "gmp-utils.h". (create_range_type, set_type_code): Add fixed-point type handling. (init_fixed_point_type): New function. (is_integral_type, is_scalar_type): Add fixed-point type handling. (print_fixed_point_type_info): New function. (recursive_dump_type, copy_type_recursive): Add fixed-point type handling. (fixed_point_type_storage): New typedef. (fixed_point_objfile_key): New static global. (allocate_fixed_point_type_info, is_fixed_point_type): New functions. (fixed_point_type_base_type, fixed_point_scaling_factor): New functions. * gdbtypes.h: #include "gmp-utils.h". (enum type_code) <TYPE_SPECIFIC_FIXED_POINT>: New enum. (union type_specific) <fixed_point_info>: New field. (struct fixed_point_type_info): New struct. (INIT_FIXED_POINT_SPECIFIC, TYPE_FIXED_POINT_INFO): New macros. (init_fixed_point_type, is_fixed_point_type) (fixed_point_type_base_type, fixed_point_scaling_factor) (allocate_fixed_point_type_info): Add declarations. * valprint.c (generic_val_print_fixed_point): New function. (generic_value_print): Add fixed-point type handling. * value.c (value_as_address, unpack_long): Add fixed-point type handling. gdb/testsuite/ChangeLog: * gdb.ada/fixed_cmp.exp: Force compilation to use -fgnat-encodings=all. * gdb.ada/fixed_points.exp: Add fixed-point variables printing tests. * gdb.ada/fixed_points/pck.ads, gdb.ada/fixed_points/pck.adb: New files. * gdb.ada/fixed_points/fixed_points.adb: Add use of package Pck. * gdb.dwarf2/dw2-fixed-point.c, gdb.dwarf2/dw2-fixed-point.exp: New files.
2020-09-16gdb: update instance_flags field name in gdb-gdb.py.inSimon Marchi1-1/+1
Commit 314ad88df63c ("Use type_instance_flags more throughout") changed the name of field type::instance_flags to type::m_instance_flags. It however missed changing it in the gdb-gdb.py.in file, which results in this when trying to use the pretty-printer: (top-gdb) p *val.type Traceback (most recent call last): File "/home/smarchi/build/binutils-gdb/gdb/gdb-gdb.py", line 116, in to_string % TypeFlagsPrinter(self.val['instance_flags'])) File "/home/smarchi/build/binutils-gdb/gdb/gdb-gdb.py", line 76, in __str__ flag_list = [flag.short_name for flag in TYPE_FLAGS File "/home/smarchi/build/binutils-gdb/gdb/gdb-gdb.py", line 77, in <listcomp> if self.val & flag.value] gdb.error: Argument to arithmetic operation not a number or boolean. $7 = This patch fixes it. gdb/ChangeLog: * gdb-gdb.py.in (class StructTypePrettyPrinter) <to_string>: Change instance_flags to m_instance_flags. Change-Id: Ib5e03c08fe41ca11cd71998f2b1c58052879ce95
2020-01-01Update copyright year range in all GDB files.Joel Brobecker1-1/+1
gdb/ChangeLog: Update copyright year range in all GDB files.
2019-03-26gdb-gdb.py.in: Fix error when printing range typeJoel Brobecker1-7/+21
I noticed that trying to print the contents of a struct main_type would fail when the type was a TYPE_CODE_RANGE: (gdb) p *type.main_type $1 = Python Exception <class 'gdb.error'> There is no member named low_undefined.: And indeed, Python is right, fields "low_undefined" has been removed from struct range_bounds back in ... 2014! It was done when we introduced dynamic bounds handling. This patch fixes gdb-gdb.py.in according to the new structure. gdb/ChangeLog: * gdb-gdb.py.in (StructMainTypePrettyPrinter.bound_img): New method. (StructMainTypePrettyPrinter.bounds_img): Use new "bound_img" method to compute the bounds of range types. Also print "[evaluated]" if the bounds' values come from a dynamic evaluation.
2019-01-01Update copyright year range in all GDB files.Joel Brobecker1-1/+1
This commit applies all changes made after running the gdb/copyright.py script. Note that one file was flagged by the script, due to an invalid copyright header (gdb/unittests/basic_string_view/element_access/char/empty.cc). As the file was copied from GCC's libstdc++-v3 testsuite, this commit leaves this file untouched for the time being; a patch to fix the header was sent to gcc-patches first. gdb/ChangeLog: Update copyright year range in all GDB files.
2018-06-27Format gdb-gdb.py.in with autopep8Simon Marchi1-3/+21
Format using "autopep8 -i". gdb/ChangeLog: * gdb-gdb.py.in: Format using autopep8.
2018-06-27Add pretty-printer for CORE_ADDRSimon Marchi1-0/+13
Add a pretty-printer that prints CORE_ADDR values in hex. gdb/ChangeLog: * gdb-gdb.py.in (CoreAddrPrettyPrinter): New class. (type_lookup_function): Recognize CORE_ADDR values.
2018-06-27gdb-gdb.py.in: Don't print value's tag_nameSimon Marchi1-1/+0
This has been removed recently. gdb/ChangeLog: * gdb-gdb.py.in (StructMainTypePrettyPrinter) <to_string>: Don't print tag_name.
2018-06-27gdb-gdb.py.in: Fix ordering of TypeFlags objects with Python 3Simon Marchi1-2/+4
Python 3 doesn't use __cmp__ to order objects, it uses __lt__. Because of this, we get this exception when trying to pretty-print "type" objects: I tested it with Python 2.7 as well. gdb/ChangeLog: * gdb-gdb.py.in (TypeFlag) <__cmp__>: Remove. <__lt__>: Add.
2018-06-27Copy gdb-gdb.py to build dirSimon Marchi1-0/+252
I have thought for a long time how nice it would be to have cool pretty printers for GDB's internal types. Well, turns out there are few already in gdb-gdb.py! Unfortunately, if you build GDB outside of the source directory, that file never gets loaded. top-gdb will look for a file called ../path/to/build/gdb/gdb-gdb.py but that file is in the source directory at ../path/to/src/gdb/gdb-gdb.py This patch makes it so we copy it to the build directory, just like we do for gdb-gdb.gdb. With this, I can at least see the file getting automatically loaded: (top-gdb) info pretty-printer global pretty-printers: builtin mpx_bound128 objfile /home/emaisin/build/binutils-gdb/gdb/gdb pretty-printers: type_lookup_function I noticed that running "make" didn't re-generate gdb-gdb.py from gdb-gdb.py.in. That's because it's copied when running the configure script and that's it. I added a rule in the Makefile for that (and for gdb-gdb.gdb too) and added them as a dependency to the "all" target. gdb/ChangeLog: * gdb-gdb.py: Move to... * gdb-gdb.py.in: ... here. * configure.ac (AC_CONFIG_FILES): Add gdb-gdb.py. * Makefile.in (all): Add gdb-gdb.gdb and gdb-gdb.py as dependencies. (distclean): Remove gdb-gdb.py when cleaning. (gdb-gdb.py, gdb-gdb.gdb): New rules. * configure: Re-generate.