-bash-3.00$ cat foo.c foo.s typedef struct { int a; int b; int c; int d; int e; int f; int g; int h; int i; } foo; foo blah() { foo my; my.a = 1; my.b = 5; my.c = 6; my.d = 8; my.e = 100; my.f = 1000; my.g = 11; my.h =88; my.i = -11; return my; } int main() { foo blarg = blah(); return 0; } .section .text,"ax" .align 4 .globl blah .type blah,@function .align 16 blah: pushl %ebp movl %esp,%ebp subl $44,%esp .L13: .L14: .L16: / File foo.c: / Line 16 movl $1, -40(%ebp) .L17: / Line 17 movl $5, -36(%ebp) .L18: / Line 18 movl $6, -32(%ebp) .L19: / Line 19 movl $8, -28(%ebp) .L20: / Line 20 movl $100, -24(%ebp) .L21: / Line 21 movl $1000, -20(%ebp) .L22: / Line 22 movl $11, -16(%ebp) .L23: / Line 23 movl $88, -12(%ebp) .L24: / Line 24 movl $-11, -8(%ebp) .L25: / Line 26 lea -40(%ebp), %eax movl %eax, -4(%ebp) movl -4(%ebp), %eax movl 0(%eax), %eax movl %eax, -44(%ebp) jmp .L12 .align 4 jmp .L12 .align 4 .L26: .L27: .L12: movl 8(%ebp), %ecx movl -4(%ebp), %edx movl 0(%edx), %eax movl %eax, 0(%ecx) movl 4(%edx), %eax movl %eax, 4(%ecx) movl 8(%edx), %eax movl %eax, 8(%ecx) movl 12(%edx), %eax movl %eax, 12(%ecx) movl 16(%edx), %eax movl %eax, 16(%ecx) movl 20(%edx), %eax movl %eax, 20(%ecx) movl 24(%edx), %eax movl %eax, 24(%ecx) movl 28(%edx), %eax movl %eax, 28(%ecx) movl 32(%edx), %eax movl %eax, 32(%ecx) movl %ecx, %eax leave ret $4 .size blah,.-blah .align 4 .globl main .type main,@function .align 16 main: pushl %ebp movl %esp,%ebp subl $88,%esp movl %ebx,-88(%ebp) .L30: .L31: .L33: / File foo.c: / Line 31 lea -40(%ebp), %eax movl %eax, -44(%ebp) lea -80(%ebp), %ebx pushl %ebx call blah movl -44(%ebp), %edx movl 0(%ebx), %eax movl %eax, 0(%edx) movl 4(%ebx), %eax movl %eax, 4(%edx) movl 8(%ebx), %eax movl %eax, 8(%edx) movl 12(%ebx), %eax movl %eax, 12(%edx) movl 16(%ebx), %eax movl %eax, 16(%edx) movl 20(%ebx), %eax movl %eax, 20(%edx) movl 24(%ebx), %eax movl %eax, 24(%edx) movl 28(%ebx), %eax movl %eax, 28(%edx) movl 32(%ebx), %eax movl %eax, 32(%edx) movl -44(%ebp), %eax movl 0(%eax), %eax movl %eax, -84(%ebp) .L34: / Line 32 movl $0, -4(%ebp) jmp .L29 .align 4 jmp .L29 .align 4 .L35: .L36: .L29: movl -4(%ebp), %eax movl -88(%ebp),%ebx leave ret .size main,.-main .section .bss,"aw" Bbss.bss: .zero 0 .size Bbss.bss,0 .section .data,"aw" Ddata.data: .zero 0 .size Ddata.data,0 .section .rodata,"a" Drodata.rodata: .zero 0 .size Drodata.rodata,0 .globl .XBAjaAlYD0BG10J.blah.__func__ .XBAjaAlYD0BG10J.blah.__func__: .byte 0x62,0x6c,0x61,0x68 .set .,.+1 .type .XBAjaAlYD0BG10J.blah.__func__,@object .size .XBAjaAlYD0BG10J.blah.__func__,5 .globl .XBAjaAlYD0BG10J.main.__func__ .XBAjaAlYD0BG10J.main.__func__: .byte 0x6d,0x61,0x69,0x6e .set .,.+1 .type .XBAjaAlYD0BG10J.main.__func__,@object .size .XBAjaAlYD0BG10J.main.__func__,5 .file "foo.c" .ident "acomp: Sun C 5.8 Patch 121016-05 2007/01/10" .globl __fsr_init_value __fsr_init_value = 0x0 / Begin sdCreateSection : .debug_info / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: / reloc[0]: knd=2, off=6, siz=4, lab1=.debug_abbrev, lab2=, loff=0 / reloc[1]: knd=2, off=208, siz=4, lab1=.debug_line, lab2=, loff=0 / reloc[2]: knd=0, off=222, siz=4, lab1=blah, lab2=, loff=0 / reloc[3]: knd=0, off=226, siz=4, lab1=.L27, lab2=, loff=0 / reloc[4]: knd=0, off=305, siz=4, lab1=.XBAjaAlYD0BG10J.blah.__func__, lab2=, loff=0 / reloc[5]: knd=0, off=472, siz=4, lab1=main, lab2=, loff=0 / reloc[6]: knd=0, off=476, siz=4, lab1=.L36, lab2=, loff=0 / reloc[7]: knd=0, off=558, siz=4, lab1=.XBAjaAlYD0BG10J.main.__func__, lab2=, loff=0 .section .debug_info .byte 0x44,0x02,0x00,0x00,0x02,0x00 .4byte .debug_abbrev .byte 0x04,0x01,0x00,0x00,0x00,0x00,0x04,0x00 .byte 0x00,0x00,0x66,0x6f,0x6f,0x2e,0x63,0x00 .byte 0x0c,0x2f,0x65,0x78,0x70,0x6f,0x72,0x74 .byte 0x2f,0x68,0x6f,0x6d,0x65,0x2f,0x65,0x72 .byte 0x72,0x6f,0x72,0x34,0x30,0x34,0x00,0x20 .byte 0x2f,0x6f,0x70,0x74,0x2f,0x53,0x55,0x4e .byte 0x57,0x73,0x70,0x72,0x6f,0x2f,0x70,0x72 .byte 0x6f,0x64,0x2f,0x62,0x69,0x6e,0x2f,0x63 .byte 0x63,0x20,0x2d,0x53,0x20,0x2d,0x67,0x20 .byte 0x20,0x66,0x6f,0x6f,0x2e,0x63,0x20,0x2d .byte 0x57,0x30,0x2c,0x2d,0x78,0x70,0x2e,0x58 .byte 0x41,0x41,0x6a,0x61,0x41,0x6c,0x59,0x44 .byte 0x30,0x42,0x47,0x31,0x30,0x4a,0x2e,0x00 .byte 0x58,0x61,0x3b,0x67,0x3b,0x52,0x3d,0x53 .byte 0x75,0x6e,0x20,0x43,0x20,0x35,0x2e,0x38 .byte 0x20,0x50,0x61,0x74,0x63,0x68,0x20,0x31 .byte 0x32,0x31,0x30,0x31,0x36,0x2d,0x30,0x35 .byte 0x20,0x32,0x30,0x30,0x37,0x2f,0x30,0x31 .byte 0x2f,0x31,0x30,0x3b,0x47,0x3d,0x2e,0x58 .byte 0x41,0x41,0x6a,0x61,0x41,0x6c,0x59,0x44 .byte 0x30,0x42,0x47,0x31,0x30,0x4a,0x2e,0x3b .byte 0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x3b .byte 0x72,0x61,0x77,0x3b,0x63,0x64,0x3b,0x00 .byte 0x44,0x42,0x47,0x5f,0x47,0x45,0x4e,0x20 .byte 0x35,0x2e,0x30,0x2e,0x38,0x00 .4byte .debug_line .byte 0x02,0x62,0x6c,0x61,0x68,0x00,0x01,0x02 .byte 0x01,0x0e .4byte blah .4byte .L27 .byte 0x01,0x55,0x9e,0x01,0x00,0x00,0x01,0x36 .byte 0x01,0x00,0x00,0x03,0x6d,0x79,0x00,0x9e .byte 0x01,0x00,0x00,0x01,0x01,0x0f,0x02,0x91 .byte 0x58,0x04,0x5f,0x5f,0x66,0x75,0x6e,0x63 .byte 0x5f,0x5f,0x00,0xbc,0x01,0x00,0x00,0x03 .byte 0x01,0x0e,0x2e,0x58,0x42,0x41,0x6a,0x61 .byte 0x41,0x6c,0x59,0x44,0x30,0x42,0x47,0x31 .byte 0x30,0x4a,0x2e,0x62,0x6c,0x61,0x68,0x2e .byte 0x5f,0x5f,0x66,0x75,0x6e,0x63,0x5f,0x5f .byte 0x00,0x05,0x03 .4byte .XBAjaAlYD0BG10J.blah.__func__ .byte 0x00,0x05,0x69,0x6e,0x74,0x00,0x05,0x04 .byte 0x06,0x24,0x9e,0x01,0x00,0x00,0x07,0x61 .byte 0x00,0x36,0x01,0x00,0x00,0x02,0x23,0x00 .byte 0x07,0x62,0x00,0x36,0x01,0x00,0x00,0x02 .byte 0x23,0x04,0x07,0x63,0x00,0x36,0x01,0x00 .byte 0x00,0x02,0x23,0x08,0x07,0x64,0x00,0x36 .byte 0x01,0x00,0x00,0x02,0x23,0x0c,0x07,0x65 .byte 0x00,0x36,0x01,0x00,0x00,0x02,0x23,0x10 .byte 0x07,0x66,0x00,0x36,0x01,0x00,0x00,0x02 .byte 0x23,0x14,0x07,0x67,0x00,0x36,0x01,0x00 .byte 0x00,0x02,0x23,0x18,0x07,0x68,0x00,0x36 .byte 0x01,0x00,0x00,0x02,0x23,0x1c,0x07,0x69 .byte 0x00,0x36,0x01,0x00,0x00,0x02,0x23,0x20 .byte 0x00,0x08,0x3d,0x01,0x00,0x00,0x66,0x6f .byte 0x6f,0x00,0x05,0x63,0x68,0x61,0x72,0x00 .byte 0x06,0x01,0x09,0xa7,0x01,0x00,0x00,0x05 .byte 0x6c,0x6f,0x6e,0x67,0x00,0x05,0x04,0x0a .byte 0xaf,0x01,0x00,0x00,0x05,0xcd,0x01,0x00 .byte 0x00,0x0b,0xb4,0x01,0x00,0x00,0x04,0x00 .byte 0x0c,0x6d,0x61,0x69,0x6e,0x00,0x01,0x02 .byte 0x02,0x01,0x1e .4byte main .4byte .L36 .byte 0x01,0x55,0x36,0x01,0x00,0x00,0x01,0x33 .byte 0x02,0x00,0x00,0x03,0x62,0x6c,0x61,0x72 .byte 0x67,0x00,0x9e,0x01,0x00,0x00,0x01,0x01 .byte 0x1f,0x02,0x91,0x58,0x04,0x5f,0x5f,0x66 .byte 0x75,0x6e,0x63,0x5f,0x5f,0x00,0x38,0x02 .byte 0x00,0x00,0x03,0x01,0x1e,0x2e,0x58,0x42 .byte 0x41,0x6a,0x61,0x41,0x6c,0x59,0x44,0x30 .byte 0x42,0x47,0x31,0x30,0x4a,0x2e,0x6d,0x61 .byte 0x69,0x6e,0x2e,0x5f,0x5f,0x66,0x75,0x6e .byte 0x63,0x5f,0x5f,0x00,0x05,0x03 .4byte .XBAjaAlYD0BG10J.main.__func__ .byte 0x00,0x09,0xa7,0x01,0x00,0x00,0x0d,0x33 .byte 0x02,0x00,0x00,0x05,0x0b,0xb4,0x01,0x00 .byte 0x00,0x04,0x00,0x00,0x00,0x00 / End sdCreateSection / Begin sdCreateSection : .debug_line / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: / reloc[0]: knd=0, off=60, siz=4, lab1=blah, lab2=, loff=0 / reloc[1]: knd=0, off=67, siz=4, lab1=.L16, lab2=, loff=0 / reloc[2]: knd=0, off=78, siz=4, lab1=.L17, lab2=, loff=0 / reloc[3]: knd=0, off=86, siz=4, lab1=.L18, lab2=, loff=0 / reloc[4]: knd=0, off=94, siz=4, lab1=.L19, lab2=, loff=0 / reloc[5]: knd=0, off=102, siz=4, lab1=.L20, lab2=, loff=0 / reloc[6]: knd=0, off=110, siz=4, lab1=.L21, lab2=, loff=0 / reloc[7]: knd=0, off=118, siz=4, lab1=.L22, lab2=, loff=0 / reloc[8]: knd=0, off=126, siz=4, lab1=.L23, lab2=, loff=0 / reloc[9]: knd=0, off=134, siz=4, lab1=.L24, lab2=, loff=0 / reloc[10]: knd=0, off=142, siz=4, lab1=.L25, lab2=, loff=0 / reloc[11]: knd=0, off=150, siz=4, lab1=.L26, lab2=, loff=0 / reloc[12]: knd=0, off=158, siz=4, lab1=main, lab2=, loff=0 / reloc[13]: knd=0, off=165, siz=4, lab1=.L33, lab2=, loff=0 / reloc[14]: knd=0, off=175, siz=4, lab1=.L34, lab2=, loff=0 / reloc[15]: knd=0, off=183, siz=4, lab1=.L35, lab2=, loff=0 .section .debug_line .byte 0xb8,0x00,0x00,0x00,0x02,0x00,0x2f,0x00 .byte 0x00,0x00,0x01,0x00,0xff,0x04,0x0a,0x00 .byte 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01 .byte 0x2f,0x65,0x78,0x70,0x6f,0x72,0x74,0x2f .byte 0x68,0x6f,0x6d,0x65,0x2f,0x65,0x72,0x72 .byte 0x6f,0x72,0x34,0x30,0x34,0x00,0x00,0x66 .byte 0x6f,0x6f,0x2e,0x63,0x00,0x01,0x00,0x00 .byte 0x00,0x00,0x05,0x02 .4byte blah .byte 0x00,0x05,0x02 .4byte .L16 .byte 0x06,0x03,0x0f,0x01,0x00,0x05,0x02 .4byte .L17 .byte 0x0c,0x00,0x05,0x02 .4byte .L18 .byte 0x0c,0x00,0x05,0x02 .4byte .L19 .byte 0x0c,0x00,0x05,0x02 .4byte .L20 .byte 0x0c,0x00,0x05,0x02 .4byte .L21 .byte 0x0c,0x00,0x05,0x02 .4byte .L22 .byte 0x0c,0x00,0x05,0x02 .4byte .L23 .byte 0x0c,0x00,0x05,0x02 .4byte .L24 .byte 0x0c,0x00,0x05,0x02 .4byte .L25 .byte 0x0d,0x00,0x05,0x02 .4byte .L26 .byte 0x0c,0x00,0x05,0x02 .4byte main .byte 0x00,0x05,0x02 .4byte .L33 .byte 0x03,0x04,0x01,0x00,0x05,0x02 .4byte .L34 .byte 0x0c,0x00,0x05,0x02 .4byte .L35 .byte 0x0c / End sdCreateSection / Begin sdCreateSection : .debug_abbrev / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: .section .debug_abbrev .byte 0x01,0x11,0x01,0x11,0x01,0x12,0x01,0x03 .byte 0x08,0x13,0x0b,0x1b,0x08,0x85,0x44,0x08 .byte 0x87,0x44,0x08,0x25,0x08,0x10,0x06,0x00 .byte 0x00,0x02,0x2e,0x01,0x03,0x08,0x3f,0x0c .byte 0x17,0x0b,0x3a,0x0b,0x3b,0x0b,0x11,0x01 .byte 0x12,0x01,0x40,0x0a,0x49,0x13,0x88,0x44 .byte 0x0b,0x01,0x13,0x00,0x00,0x03,0x34,0x00 .byte 0x03,0x08,0x49,0x13,0x17,0x0b,0x3a,0x0b .byte 0x3b,0x0b,0x02,0x0a,0x00,0x00,0x04,0x34 .byte 0x00,0x03,0x08,0x49,0x13,0x17,0x0b,0x3a .byte 0x0b,0x3b,0x0b,0xa6,0x44,0x08,0x02,0x0a .byte 0x00,0x00,0x05,0x24,0x00,0x03,0x08,0x3e .byte 0x0b,0x0b,0x0b,0x00,0x00,0x06,0x13,0x01 .byte 0x0b,0x0b,0x01,0x13,0x00,0x00,0x07,0x0d .byte 0x00,0x03,0x08,0x49,0x13,0x38,0x0a,0x00 .byte 0x00,0x08,0x16,0x00,0x49,0x13,0x03,0x08 .byte 0x00,0x00,0x09,0x26,0x00,0x49,0x13,0x00 .byte 0x00,0x0a,0x01,0x01,0x49,0x13,0x0b,0x0b .byte 0x01,0x13,0x00,0x00,0x0b,0x21,0x00,0x49 .byte 0x13,0x2f,0x0b,0x00,0x00,0x0c,0x2e,0x01 .byte 0x03,0x08,0x3f,0x0c,0x17,0x0b,0x36,0x0b .byte 0x3a,0x0b,0x3b,0x0b,0x11,0x01,0x12,0x01 .byte 0x40,0x0a,0x49,0x13,0x88,0x44,0x0b,0x01 .byte 0x13,0x00,0x00,0x0d,0x01,0x01,0x49,0x13 .byte 0x0b,0x0b,0x00,0x00,0x00 / End sdCreateSection / Begin sdCreateSection : .debug_pubnames / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: / reloc[0]: knd=2, off=6, siz=4, lab1=.debug_info, lab2=, loff=0 .section .debug_pubnames .byte 0x20,0x00,0x00,0x00,0x02,0x00 .4byte .debug_info .byte 0x48,0x02,0x00,0x00,0xd4,0x00,0x00,0x00 .byte 0x62,0x6c,0x61,0x68,0x00,0xcd,0x01,0x00 .byte 0x00,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00 .byte 0x00,0x00 / End sdCreateSection / Begin sdCreateSection : .debug_typenames / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: / reloc[0]: knd=2, off=6, siz=4, lab1=.debug_info, lab2=, loff=0 .section .debug_typenames .byte 0x1c,0x00,0x00,0x00,0x02,0x00 .4byte .debug_info .byte 0x48,0x02,0x00,0x00,0x3d,0x01,0x00,0x00 .byte 0x00,0x9e,0x01,0x00,0x00,0x66,0x6f,0x6f .byte 0x00,0x00,0x00,0x00,0x00,0x00 / End sdCreateSection / Begin sdCreateSection : .debug_varnames / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: / reloc[0]: knd=2, off=6, siz=4, lab1=.debug_info, lab2=, loff=0 .section .debug_varnames .byte 0x28,0x00,0x00,0x00,0x02,0x00 .4byte .debug_info .byte 0x48,0x02,0x00,0x00,0xff,0x00,0x00,0x00 .byte 0x5f,0x5f,0x66,0x75,0x6e,0x63,0x5f,0x5f .byte 0x00,0xfc,0x01,0x00,0x00,0x5f,0x5f,0x66 .byte 0x75,0x6e,0x63,0x5f,0x5f,0x00,0x00,0x00 .byte 0x00,0x00 / End sdCreateSection