binutils-gdb/gdb/python
Tom de Vries 93bb1ebf7f [gdb/cli] Use debug info language to pick pygments lexer
Consider the following scenario:
...
$ cat hello

int
main (void)
{
  printf ("hello\n");
  return 0;
}
$ gcc -x c hello -g
$ gdb -q -iex "maint set gnu-source-highlight enabled off" a.out
Reading symbols from a.out...
(gdb) start
Temporary breakpoint 1 at 0x4005db: file hello, line 6.
Starting program: /data/vries/gdb/a.out
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Temporary breakpoint 1, main () at hello:6
6	  printf ("hello\n");
...

This doesn't produce highlighting for line 6, because:
- pygments is used for highlighting instead of source-highlight, and
- pygments guesses the language for highlighting only based on the filename,
  which in this case doesn't give a clue.

Fix this by:
- adding a language parameter to the extension_language_ops.colorize interface,
- passing the language as found in the debug info, and
- using it in gdb.styling.colorize to pick the pygments lexer.

The new test-case gdb.python/py-source-styling-2.exp excercises a slightly
different scenario: it compiles a c++ file with a .c extension, and checks
that c++ highlighting is done instead of c highlighting.

Tested on x86_64-linux.

Approved-By: Tom Tromey <tom@tromey.com>

PR cli/30966
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30966
2025-04-07 22:40:04 +02:00
..
lib/gdb [gdb/cli] Use debug info language to pick pygments lexer 2025-04-07 22:40:04 +02:00
py-all-events.def Add gdb.events.tui_enabled 2024-11-01 11:06:47 -06:00
py-arch.c gdb/python: add void_type () method to gdb.Architecture object 2025-02-04 13:56:49 +00:00
py-auto-load.c [gdb/contrib] Add two rules in common-misspellings.txt 2024-11-23 12:20:34 +01:00
py-block.c gdb/python: add subblocks property to gdb.Block 2025-02-04 13:56:49 +00:00
py-bpevent.c
py-breakpoint.c Bploc should try to return full path 2025-03-03 18:53:12 +01:00
py-cmd.c [gdb/python] Eliminate GDB_PY_SET_HANDLE_EXCEPTION 2024-09-24 13:06:32 +02:00
py-color.c Add an option with a color type. 2025-01-12 13:30:43 -07:00
py-color.h Fix check-include-guards.py 2025-03-10 09:18:40 -06:00
py-connection.c Use gdb map in py-connection.c 2025-03-11 08:40:06 -06:00
py-continueevent.c
py-dap.c
py-disasm.c gdb/python: remove unused argument from builtin_disassemble 2025-03-15 17:12:12 +00:00
py-event-types.def Add gdb.events.tui_enabled 2024-11-01 11:06:47 -06:00
py-event.c Automatically add types to Python modules 2024-09-23 13:44:59 -06:00
py-event.h Run check-include-guards.py 2024-12-18 10:00:44 -07:00
py-events.h Run check-include-guards.py 2024-12-18 10:00:44 -07:00
py-evtregistry.c Automatically add types to Python modules 2024-09-23 13:44:59 -06:00
py-evts.c
py-exitedevent.c
py-finishbreakpoint.c [gdb/python] Eliminate GDB_PY_SET_HANDLE_EXCEPTION 2024-09-24 13:06:32 +02:00
py-frame.c [gdb/python] Eliminate GDB_PY_HANDLE_EXCEPTION 2024-09-24 13:06:32 +02:00
py-framefilter.c [gdb/python] Fix typos 2025-03-06 23:21:54 +01:00
py-function.c Call gdbpy_fix_doc_string_indentation for function help 2024-11-11 07:44:27 -07:00
py-gdb-readline.c [gdb/python] Eliminate GDB_PY_HANDLE_EXCEPTION 2024-09-24 13:06:32 +02:00
py-inferior.c gdb: split up construct_inferior_arguments 2025-03-18 13:03:07 +00:00
py-infevents.c
py-infthread.c [gdb/python] Eliminate GDB_PY_HANDLE_EXCEPTION 2024-09-24 13:06:32 +02:00
py-instruction.c Automatically add types to Python modules 2024-09-23 13:44:59 -06:00
py-instruction.h Run check-include-guards.py 2024-12-18 10:00:44 -07:00
py-lazy-string.c [gdb/python] Fix typos 2025-03-06 23:21:54 +01:00
py-linetable.c [gdb/python] Eliminate GDB_PY_HANDLE_EXCEPTION 2024-09-24 13:06:32 +02:00
py-membuf.c Automatically add types to Python modules 2024-09-23 13:44:59 -06:00
py-mi.c Require a command argument in gdb.execute_mi 2024-10-18 11:50:27 -06:00
py-micmd.c gdb/python: missing PyObject_IsTrue error check in micmdpy_set_installed 2024-11-14 19:34:44 +00:00
py-newobjfileevent.c
py-objfile.c [gdb/python] Eliminate GDB_PY_HANDLE_EXCEPTION 2024-09-24 13:06:32 +02:00
py-param.c Add an option with a color type. 2025-01-12 13:30:43 -07:00
py-prettyprint.c Automatically add types to Python modules 2024-09-23 13:44:59 -06:00
py-progspace.c [gdb/python] Fix typos 2025-03-06 23:21:54 +01:00
py-record-btrace.c btrace: Add support for interrupt events. 2024-09-24 14:22:28 +02:00
py-record-btrace.h Run check-include-guards.py 2024-12-18 10:00:44 -07:00
py-record-full.c
py-record-full.h Run check-include-guards.py 2024-12-18 10:00:44 -07:00
py-record.c [gdb/python] Eliminate GDB_PY_HANDLE_EXCEPTION 2024-09-24 13:06:32 +02:00
py-record.h Run check-include-guards.py 2024-12-18 10:00:44 -07:00
py-ref.h Run check-include-guards.py 2024-12-18 10:00:44 -07:00
py-registers.c Use gdb unordered set and map in Python layer 2025-03-18 05:32:04 -06:00
py-signalevent.c
py-stopevent.c [gdb/python] Eliminate GDB_PY_HANDLE_EXCEPTION 2024-09-24 13:06:32 +02:00
py-stopevent.h Run check-include-guards.py 2024-12-18 10:00:44 -07:00
py-symbol.c gdb/python: convert gdb.Symbol to use gdbpy_registry 2025-03-19 21:12:53 +00:00
py-symtab.c gdb/python: convert gdb.Symtab_and_line to use gdbpy_registry 2025-03-19 21:12:53 +00:00
py-threadevent.c
py-tui.c Add gdb.events.tui_enabled 2024-11-01 11:06:47 -06:00
py-type.c gdb/python: convert gdb.Type to use gdbpy_registry 2025-03-19 21:12:53 +00:00
py-uiout.h Add line-number styling 2024-09-30 13:23:35 -06:00
py-unwind.c gdb: Migrate frame unwinders to use C++ classes 2025-01-17 11:49:16 -03:00
py-utils.c [gdb/python] Make sure python sys.exit makes gdb exit 2024-09-25 19:29:57 +02:00
py-value.c gdb/python: do not hold on gdb.Type object from gdb.Value 2025-03-19 21:12:53 +00:00
py-varobj.c
py-xmethods.c
python-config.py
python-internal.h [gdb/build] Fix build with gcc 9 2025-03-20 11:16:59 +01:00
python.c [gdb/cli] Use debug info language to pick pygments lexer 2025-04-07 22:40:04 +02:00
python.h Run check-include-guards.py 2024-12-18 10:00:44 -07:00