------- Additional Comments From pluto at agmk dot net 2005-09-18 14:30 -------
reduced testcase:
with ada.text_io;
use ada.text_io;
procedure xsinfo is
done : exception;
begin
raise done;
exception
when done =>
put("ex. catched.");
end xsinfo;
[EMAIL PROTECTED] ~]$ gcc -S -fverbose-asm xsinfo.adb -fdump-tree-all
[EMAIL PROTECTED] ~]$ gnatmake xsinfo.adb
gcc -c xsinfo.adb
gnatbind -x xsinfo.ali
gnatlink xsinfo.ali
[EMAIL PROTECTED] ~]$ ./xsinfo
raised XSINFO.DONE : xsinfo.adb:6
i can't see an my custom ex. handler in code.
.file "xsinfo.adb"
.data
.type doneE.711, @object
.size doneE.711, 12
doneE.711:
.string "XSINFO.DONE"
.type doneF.715, @object
.size doneF.715, 1
doneF.715:
.byte 1
.align 32
.type done.716, @object
.size done.716, 40
done.716:
# not_handled_by_others:
.byte 0
# lang:
.byte 65
# name_length:
.zero 2
.long 12
# full_name:
.quad doneE.711
# htable_ptr:
.quad 0
# import_code:
.long 0
# raise_hook:
.zero 4
.quad 0
.section .rodata
.align 4
.type C.0.746, @object
.size C.0.746, 8
C.0.746:
# LB0:
.long 1
# UB0:
.long 12
.LC0:
.ascii "xsinfo.adb:6"
.text
.globl _ada_xsinfo
.type _ada_xsinfo, @function
_ada_xsinfo:
.LFB3:
pushq %rbp #
.LCFI0:
movq %rsp, %rbp #,
.LCFI1:
subq $32, %rsp #,
.LCFI2:
movl $doneE.711, %eax #, doneE.1
movq %rax, -8(%rbp) # doneE.2, R2b
movzbl doneF.715(%rip), %eax # doneF, doneF.3
testb %al, %al # doneF.3
je .L2 #,
movl $done.716, %edi #, done.4
call system__exception_table__register_exception #
movb $0, doneF.715(%rip) #, doneF
.L2:
movl $.LC0, %eax #, D.752
movq %rax, -32(%rbp) # D.752, D.751.P_ARRAY
movq $C.0.746, -24(%rbp) #, D.751.P_BOUNDS
movl $done.716, %edi #, done.5
movq -32(%rbp), %rsi # D.751, D.751
movq -24(%rbp), %rdx # D.751, D.751
call __gnat_raise_exception #
.LFE3:
.size _ada_xsinfo, .-_ada_xsinfo
.section .eh_frame,"a",@progbits
.Lframe1:
.long .LECIE1-.LSCIE1
.LSCIE1:
.long 0x0
.byte 0x1
.string "zR"
.uleb128 0x1
.sleb128 -8
.byte 0x10
.uleb128 0x1
.byte 0x3
.byte 0xc
.uleb128 0x7
.uleb128 0x8
.byte 0x90
.uleb128 0x1
.align 8
.LECIE1:
.LSFDE1:
.long .LEFDE1-.LASFDE1
.LASFDE1:
.long .LASFDE1-.Lframe1
.long .LFB3
.long .LFE3-.LFB3
.uleb128 0x0
.byte 0x4
.long .LCFI0-.LFB3
.byte 0xe
.uleb128 0x10
.byte 0x86
.uleb128 0x2
.byte 0x4
.long .LCFI1-.LCFI0
.byte 0xd
.uleb128 0x6
.align 8
.LEFDE1:
.ident "GCC: (GNU) 4.1.0 20050904 (experimental)"
.section .note.GNU-stack,"",@progbits
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23894