Edit: Thanks to @NateEldredge, I better defined my question in How to 'tag' a location in a C source file for a later breakpoint definition?
I use those labels to setup breakpoints in gdb. So no matter if I add/remove lines of code after/before the label, the breakpoint is still correct.
If I add -Wno-error=unused-label
to the compilation options, the compiler does not yell at me, but the label disappears from the assembly.
If instead, I use __attribute__((unused))
in the code, the result is the same: no complain, but the label is gone.
Is there a correct way of getting this done (instead of just a hack)?
Here is my toy example:
int main(void){
int a = 15;
label: __attribute__((unused))
a = a + 23;
return a;
}
After compilation, it results in:
main:
push ebp
mov ebp, esp
sub esp, 16
mov DWORD PTR [ebp-4], 15
add DWORD PTR [ebp-4], 23
mov eax, DWORD PTR [ebp-4]
leave
ret
Here an interactive version of the same example: https://godbolt.org/z/zTqd9bM6q
$ gcc --version
gcc (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…