¿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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta