Pregunta

Tengo un archivo de objeto compilado utilizando como (de código ensamblador).

Si vinculo que el uso de ld , cuando trato de (o NexTi ) GDB stepi se queja de acceso a la memoria en la dirección 0x0. Si vinculo que el uso de gcc , todo está bien.

Estoy adivinando el problema es causado por ld , que produce un menor número de secciones cuando se compara con el resultado de la vinculación de gcc .

¿Hay una manera de configurar gdb a ser más detallado, así que tal vez pueda averiguar lo que está mal con el ejecutable?

(gdb) b main
Breakpoint 1 at 0x100000f8e
(gdb) r
Breakpoint 1, 0x0000000100000f8e in main ()
(gdb) x/10i $pc
0x100000f8e <main>: fbld   0x6c(%rip)        # 0x100001000 <data1>
0x100000f94 <main+6>: fimul  0x7a(%rip)        # 0x100001014 <data2>
0x100000f9a <main+12>: fbstp  0x60(%rip)        # 0x100001000 <data1>
0x100000fa0 <main+18>: mov0x0    $0x2000001,%rax
0x100000fa7 <main+25>: mov    $,%rdi
0x100000fae <main+32>: syscall 
(gdb) si
Cannot access memory at address 0x0
0x0000000100000f94 in main ()

PS:. El ejecutable en sí funciona como se espera en ambas versiones

Más tarde editar: los comandos que he usado para compilar:

as -arch x86_64 src.s -o src.o
ld -e _main -arch x86_64 src.o -o src
gcc -o src src.o
¿Fue útil?

Solución

GDB tiene un comando "show de depuración", dando varias configuraciones de depuración internas. P.ej. "Objetivo conjunto de depuración 1" se encenderá el rastreo para la interacción del gdb con el proceso de destino. Es posible que desee experimentar con todas las banderas que tienen (no hay que muchos).

Otros consejos

GCC no hace realmente la vinculación, que sólo llama a ld en su nombre. Las opciones se ofrecen deben ser diferentes de los que usted está utilizando.

Por este tema:

Como llegar comando enlazador de GCC?

Debería ser capaz de ver la línea de comandos de la invocación ld -v gcc ejecutando. Eso debería decirle cómo modificar la línea de comandos ld así que las cosas funcionan para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top