I want to add a custom label in my compiled C code which I will be using later. For example, the C code might look like:
#include <stdio.h>
#include <stdbool.h>
int main()
{
volatile bool x = false;
volatile int y = 0;
asm(".MyLabel");
if(x)
{
y = 1;
}
return 0;
}
I want to add a label before the if(x)
statement. As shown above, I tried to do this by inserting a label via inline assembly. I am compile my code using:
$ gcc -O3 -g -march=native -pedantic
However, when I look at the assembly generated using objdump
, I get:
Disassembly of section .text:
0000000000001020 <main>:
1020: c6 44 24 fb 00 movb $0x0,-0x5(%rsp)
1025: 31 c0 xor %eax,%eax
1027: c7 44 24 fc 00 00 00 movl $0x0,-0x4(%rsp)
102e: 00
102f: c3 ret
0000000000001030 <_start>:
1030: f3 0f 1e fa endbr64
1034: 31 ed xor %ebp,%ebp
1036: 49 89 d1 mov %rdx,%r9
1039: 5e pop %rsi
103a: 48 89 e2 mov %rsp,%rdx
103d: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
1041: 50 push %rax
1042: 54 push %rsp
...
As you can see, in the main
section of the assembly, there is no label called MyLabel
. How can I force gcc
to insert the label before the if
condition?