]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/testsuite] Fix gdb.base/condbreak-multi-context.exp on native-gdbserver
authorTom de Vries <tdevries@suse.de>
Thu, 14 Aug 2025 16:43:22 +0000 (18:43 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 14 Aug 2025 16:43:22 +0000 (18:43 +0200)
With test-case gdb.base/condbreak-multi-context.exp on target board
native-gdbserver, I run into:
...
(gdb) continue
Continuing.
gdb/ax-gdb.c:542: internal-error: gen_var_ref: \
  LOC_CONST_BYTES symbols are not supported
A problem internal to GDB has been detected,
further debugging may prove unreliable.
----- Backtrace -----
FAIL: $exp: start_before=true: scenario_1: run until A::func (GDB internal error)
Resyncing due to internal error.
0x64cfa9 gdb_internal_backtrace_1
gdb/bt-utils.c:122
0x64d047 _Z22gdb_internal_backtracev
gdb/bt-utils.c:175
0x10cfdf1 internal_vproblem
gdb/utils.c:423
0x10d020b _Z15internal_verrorPKciS0_P13__va_list_tag
gdb/utils.c:503
0x19a6b4e _Z18internal_error_locPKciS0_z
gdbsupport/errors.cc:57
0x5b76f9 gen_var_ref
gdb/ax-gdb.c:541
0x5b9565 gen_static_field
gdb/ax-gdb.c:1460
0x5b91c9 gen_struct_ref_recursive
gdb/ax-gdb.c:1357
0x5b93f8 gen_struct_ref
gdb/ax-gdb.c:1427
0x5bba0d _Z17gen_expr_structopP10expression10exp_opcodePN4expr9operationEPKcP10agent_exprP9axs_value
gdb/ax-gdb.c:2253
0x678d94 _ZN4expr22structop_ptr_operation14do_generate_axEP10expressionP10agent_exprP9axs_valueP4type
gdb/expop.h:1089
0x5b9ab6 _ZN4expr9operation11generate_axEP10expressionP10agent_exprP9axs_valueP4type
gdb/ax-gdb.c:1602
0x5bb905 _Z14gen_expr_binopP10expression10exp_opcodePN4expr9operationES4_P10agent_exprP9axs_value
gdb/ax-gdb.c:2233
0x69815c _ZN4expr24usual_ax_binop_operationIL10exp_opcode14EXadL_Z13eval_op_equalP4typeP10expression6nosideS1_P5valueS8_EEE14do_generate_axES5_P10agent_exprP9axs_valueS3_
gdb/expop.h:1291
0x5b9ab6 _ZN4expr9operation11generate_axEP10expressionP10agent_exprP9axs_valueP4type
gdb/ax-gdb.c:1602
0x5bc034 _Z17gen_eval_for_exprmP10expression
gdb/ax-gdb.c:2396
0x5f16b6 parse_cond_to_aexpr
gdb/breakpoint.c:2582
0x5f18a5 build_target_condition_list
gdb/breakpoint.c:2640
0x5f2698 insert_bp_location
gdb/breakpoint.c:2970
0x5f3916 insert_breakpoint_locations
gdb/breakpoint.c:3400
0x60c1dd update_global_location_list
gdb/breakpoint.c:11771
0x5f3421 _Z18insert_breakpointsv
gdb/breakpoint.c:3293
0xaa0972 keep_going_pass_signal
gdb/infrun.c:9131
0xa91b23 proceed_resume_thread_checked
gdb/infrun.c:3579
0xa92490 _Z7proceedm10gdb_signal
gdb/infrun.c:3780
0xa72b9b _Z10continue_1i
gdb/infcmd.c:639
0xa72e4b continue_command
gdb/infcmd.c:730
0x6c01d1 do_simple_func
gdb/cli/cli-decode.c:95
0x6c683a _Z8cmd_funcP16cmd_list_elementPKci
gdb/cli/cli-decode.c:2827
0xff11a9 _Z15execute_commandPKci
gdb/top.c:565
0x959e0a _Z15command_handlerPKc
gdb/event-top.c:613
0x95a3e7 _Z20command_line_handlerOSt10unique_ptrIcN3gdb13xfree_deleterIcEEE
gdb/event-top.c:849
0x102b645 tui_command_line_handler
gdb/tui/tui-interp.c:101
0x959548 gdb_rl_callback_handler
gdb/event-top.c:288
0x1186dfd rl_callback_read_char
readline/readline/callback.c:302
0x95925a gdb_rl_callback_read_char_wrapper_sjlj
gdb/event-top.c:197
0x95934a gdb_rl_callback_read_char_wrapper_noexcept
gdb/event-top.c:240
0x9593c9 gdb_rl_callback_read_char_wrapper
gdb/event-top.c:252
0x1071253 stdin_event_handler
gdb/ui.c:154
0x19a7c80 handle_file_event
gdbsupport/event-loop.cc:551
0x19a825b gdb_wait_for_event
gdbsupport/event-loop.cc:672
0x19a711c _Z16gdb_do_one_eventi
gdbsupport/event-loop.cc:263
0x6ce4e3 _ZN6interp12do_one_eventEi
gdb/interps.h:87
0xb74717 start_event_loop
gdb/main.c:402
0xb748b6 captured_command_loop
gdb/main.c:467
0xb7638f captured_main
gdb/main.c:1345
0xb76438 _Z8gdb_mainP18captured_main_args
gdb/main.c:1364
0x41a411 main
gdb/gdb.c:38
...

This reproduces with gcc 7, not with gcc 8 or later.

Fix this by throwing an error instead of asserting, getting us instead:
...
(gdb) continue^M
Continuing.^M
^M
Breakpoint 2.2, A::func (this=$hex) at condbreak-multi-context.cc:31^M
31        void func () {}^M
(gdb) PASS: $exp: start_before=true: scenario_1: run until A::func
...

Tested on x86_64-linux.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
PR gdb/32012
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32012

gdb/ax-gdb.c

index 08f542c756e46f4faf00ffe9ce395e6b2865cc56..57626ab210e9abe0b2de51d44555b539b5e99331 100644 (file)
@@ -538,8 +538,7 @@ gen_var_ref (struct agent_expr *ax, struct axs_value *value, struct symbol *var)
       break;
 
     case LOC_CONST_BYTES:
-      internal_error (_("gen_var_ref: LOC_CONST_BYTES "
-                       "symbols are not supported"));
+      error (_("gen_var_ref: LOC_CONST_BYTES symbols are not supported"));
 
       /* Variable at a fixed location in memory.  Easy.  */
     case LOC_STATIC: