Я не уверен, что это соответствует вашим потребностям, но вы можете сделать это (для двоичного файла без PIE, так что ссылка с -no-pie
):
.text
.global _start
_start:
/* exit */
mov $60, %rax
.Lmylabel:
mov $0, %rdi
syscall
.section .rodata
mylabel:
.long .Lmylabel
Затем вы можете установитьточка останова с использованием break *mylabel
(обратите внимание на *
):
(gdb) break *mylabel
Breakpoint 2 at 0x401007: file t.S, line 7.
Поскольку mylabel
является более или менее указателем на функцию, GDB ничего об этом не знает и игнорирует:
Breakpoint 1, _start () at t.S:5
5 mov $60, %rax
(gdb) si
7 mov $0, %rdi
С помощью скрипта компоновщика должна быть возможность поместить символ mylabel
в раздел, который не загружен, чтобы уменьшить накладные расходы времени выполнения.