Handling language trampoline

Dmitry Antipov dantipov@nvidia.com
Thu Dec 7 14:21:00 GMT 2017


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



More information about the Gdb mailing list