¿Cómo obtener el tamaño de una función C desde dentro de un programa C o con ensamblaje en línea?
Supongamos que tengo una función como la siguiente:
# cat 003.c
int foo(int a, int b)
{
return a+b;
}
Y compilarlo así:
gcc -S 003.c
El obtiene el siguiente resultado de montaje:
.file "003.c"
.text
.globl foo
.type foo, @function
foo:
.LFB2:
pushq %rbp
.LCFI0:
movq %rsp, %rbp
.LCFI1:
movl %edi, -4(%rbp)
movl %esi, -8(%rbp)
movl -8(%rbp), %edx
movl -4(%rbp), %eax
addl %edx, %eax
leave
ret
.LFE2:
.size foo, .-foo /* size of the function foo, how to get it?*/
La última línea de arriba obtiene el tamaño de la función. ¿Dónde almacena el compilador el tamaño? ¿Puedo obtener el tamaño de la función de alguna manera en mi programa de origen C usandoC o en línea asm?