NASM Forum > Programming with NASM

MachO and debug formats

(1/2) > >>

Ivan Ostres:
Hi all!

Are there any plans or current development to add stabs or dSYM debug format to MachO file format?

If not, maybe I could help with stabs if I'll get enough free time and knowledge.

Regards,
Ivan

Cyrill Gorcunov:
As far as I know at moment we have in plans to support debug format of MachO.

So don't hesitate to send patches to nasm-devel mailing list. You may need to subscribe to this list just to monitor what is going on here.

Cyrill

ad:
Hello,
Does anyone know the status of MachO debug support for NASM?  Is someone working on it? Will be happy to help test it out.
Thanks
Ajit

Keith Kanios:
Until someone implements debugging support for Mach-O, Agner Fog's objconv utility may be of assistance, since it does very good conversions from ELF to Mach-O.

ad:
Hello,
Thanks for your suggestion, tried objconv, but it seems to strip debug symbols...
Any other ideas are appreciated.
Thanks
Ajit



1. generate elf format with debug information

    bin/nasm -felf -Fstabs hello_asm_func.asm -l hello_asm_func.lst

2. use objconv to convert back to osx format

    bin/objconv -fmac32 -nu  hello_asm_func.o test.o

Input file: hello_asm_func.o, output file: test.o
Converting from ELF32 to Mach-O Little Endian32
Adding leading underscores to symbol names

 2 Debug sections removed
  0 Exception sections removed
  1 Changes in leading underscores on symbol names3. objconv message



3. asm sample code used

section     .text
global _hello_asm           ;must be declared for linker (ld)

_syscall:
     int     0x80            ;system call
     ret

_hello_asm:                  ;entry point for linker

     push    ebp             ;save callers stack
     mov     ebp, esp        ;establish new stack frame
     push    esi             ;save critical registers
     push    edi

     push    dword len       ;message length
     push    dword msg       ;message to write
     push    dword 1         ;file descriptor (stdout)
     mov     eax,0x4         ;system call number (sys_write)
     call    _syscall        ;call kernel

     pop    edi              ;restore registers
     pop    esi
     mov    esp, ebp
     pop    ebp              ;clean up stack
     ret

section .data

msg     db      "hello from asm!",0xa     ;message
len     equ     $ - msg                 ;length of message

4. c code to call asm

#include <stdio.h>

extern "C" {
extern void hello_asm();
}

int main( int argc, char *argv[])
{
    printf("start calling asm\n");

    hello_asm();

    printf("done calling asm\n");

    return 0;
}


Navigation

[0] Message Index

[#] Next page

Go to full version