This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Handling language trampoline
- From: Dmitry Antipov <dantipov at nvidia dot com>
- To: <gdb at sourceware dot org>
- Date: Thu, 7 Dec 2017 17:21:23 +0300
- Subject: Handling language trampoline
- Authentication-results: sourceware.org; auth=none
- References: <CAGDihekNnrW=JnVGuXHaPE6G3KPqxYBqwfCYhqSje_tFvCZztg@mail.gmail.com>
When debugging a program which is definitely in C++:
(gdb) info source
[...skipped...]
Contains 66 lines.
Source language is c++.
Producer is clang version 6.0.0 (trunk 319884).
Compiled with DWARF 2 debugging format.
Does not include preprocessor macro info.
I've noticed that 'step' command causes GDB to perform some ObjC-specific work:
#0 lookup_minimal_symbol (name=0x8459a1 "_objc_msgSend", sfile=sfile@entry=0x0, objf=objf@entry=0x0) at ../../gdb/minsyms.c:313
#1 0x00000000005bd0f9 in lookup_bound_minimal_symbol (name=<optimized out>) at ../../gdb/minsyms.c:432
#2 0x00000000005c1666 in find_objc_msgsend () at ../../gdb/objc-lang.c:1282
#3 find_objc_msgcall (pc=pc@entry=139646390853344, new_pc=0x7ffe10329598) at ../../gdb/objc-lang.c:1340
#4 0x00000000005c1820 in objc_skip_trampoline (frame=0x16a0eb0, stop_pc=139646390853344) at ../../gdb/objc-lang.c:313
#5 0x000000000059f1dc in skip_language_trampoline (frame=frame@entry=0x16a0eb0, pc=139646390853344) at ../../gdb/language.c:605
#6 0x0000000000597129 in process_event_stop_test (ecs=ecs@entry=0x7ffe10329d10) at ../../gdb/infrun.c:6706
#7 0x0000000000598a10 in handle_signal_stop (ecs=ecs@entry=0x7ffe10329d10) at ../../gdb/infrun.c:6163
#8 0x000000000059a178 in handle_inferior_event_1 (ecs=0x7ffe10329d10) at ../../gdb/infrun.c:5352
#9 handle_inferior_event (ecs=ecs@entry=0x7ffe10329d10) at ../../gdb/infrun.c:5387
#10 0x000000000059af78 in fetch_inferior_event (client_data=<optimized out>) at ../../gdb/infrun.c:3903
#11 0x000000000055c89d in gdb_wait_for_event (block=block@entry=0) at ../../gdb/event-loop.c:859
#12 0x000000000055ca6f in gdb_do_one_event () at ../../gdb/event-loop.c:322
#13 0x000000000055cb5e in gdb_do_one_event () at ../../gdb/event-loop.c:304
#14 start_event_loop () at ../../gdb/event-loop.c:371
#15 0x00000000005af348 in captured_command_loop () at ../../gdb/main.c:329
#16 0x00000000005b019d in captured_main (data=0x7ffe10329e30) at ../../gdb/main.c:1155
#17 gdb_main (args=args@entry=0x7ffe10329f60) at ../../gdb/main.c:1171
#18 0x0000000000408e15 in main (argc=<optimized out>, argv=<optimized out>) at ../../gdb/gdb.c:32
Why it is so if source language was recognized as C++?
Dmitry