Exponer tags goto a la tabla de símbolos

Quiero saber si es posible exponer goto label dentro de una función a la tabla de símbolos de C / C ++

Por ejemplo, quiero hacer que aparezca la etiqueta ret del siguiente fragmento de código de la tabla de símbolos y se puede hacer referencia utilizando API estándar como dlsym ()

Gracias por su ayuda por adelantado!

#include  int main () { void *ret_p = &&ret; printf("ret: %p\n", ret_p); goto *ret_p; return 1; ret: return 0; } 

Gracias al comentario de Marc Glisse , que trata sobre el uso de inline asm que especifica la etiqueta, podría encontrar una solución para la pregunta. El siguiente fragmento de código de ejemplo muestra cómo resolví el problema.

 #include  int main () { void *ret_p = &&ret; printf("ret: %p\n", ret_p); goto *ret_p; return 1; ret: asm("RET:") return 0; } 

Esto agregará una entrada de tabla de símbolos de la siguiente manera.

 jikk@sos15-32:~$ gcc -Wl,--export-dynamic tc -ldl jikk@sos15-32:~$ readelf -s a.out 39: 08048620 0 FUNC LOCAL DEFAULT 13 __do_global_ctors_aux 40: 00000000 0 FILE LOCAL DEFAULT ABS tc 41: 0804858a 0 NOTYPE LOCAL DEFAULT 13 RET 42: 08048612 0 FUNC LOCAL DEFAULT 13 __i686.get_pc_thunk.bx 43: 08049f20 0 OBJECT LOCAL DEFAULT 19 __DTOR_END__ jikk@sos15-32:~$ ./a.out ret: 0x804858a 

Haré una prueba adicional para verificar si esto produce efectos secundarios inesperados.

Gracias