------- Comment #3 from ludovic at ludovic-brenta dot org 2009-11-17 19:56 ------- Even an empty project file triggers the bug:
$ cat > p.gpr <<EOF project p is end p; EOF $ gdb gnatmake (gdb) run -vP2 -Pp Starting program: /usr/bin/gnatmake -vP2 -Pp GPR_PROJECT_PATH=".:/usr/share/ada/adainclude/" Project_Path_Name_Of ("p", "/home/lbrenta/"); Trying /home/lbrenta//p.gpr Project_Name_From ("/home/lbrenta/p.gpr") ^C Program received signal SIGINT, Interrupt. 0x000002000086f344 in prj__tree__tree_private_part__projects_htable__get_next () from /usr/lib/libgnatprj.so.4.4 (gdb) bt #0 0x000002000086f344 in prj__tree__tree_private_part__projects_htable__get_next () from /usr/lib/libgnatprj.so.4.4 #1 0x0000020000853dd8 in ?? () from /usr/lib/libgnatprj.so.4.4 #2 0x0000020000856abc in prj__part__parse () from /usr/lib/libgnatprj.so.4.4 #3 0x000002000084df7c in prj__pars__parse () from /usr/lib/libgnatprj.so.4.4 #4 0x00000001200635d4 in ?? () #5 0x00000001200450c4 in ?? () #6 0x000000012000cf60 in ?? () #7 0x00000001200ad114 in ?? () #8 0x0000020000bd650c in __libc_start_main (main=<value optimized out>, argc=<value optimized out>, ubp_av=<value optimized out>, init=0x1200ad190, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x11fcbd730) at libc-start.c:222 #9 0x000000012000b958 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) Note: this gnatmake is built with -O2 and without -g. (gdb) disassemble Dump of assembler code for function prj__tree__tree_private_part__projects_htable__tab__get_next: 0x000002000086f290 <prj__tree__tree_private_part__projects_htable__tab__get_next+0>: ldah gp,6(t12) 0x000002000086f294 <prj__tree__tree_private_part__projects_htable__tab__get_next+4>: lda gp,-12016(gp) 0x000002000086f298 <prj__tree__tree_private_part__projects_htable__tab__get_next+8>: lda sp,-32(sp) 0x000002000086f29c <prj__tree__tree_private_part__projects_htable__tab__get_next+12>: stq s0,8(sp) 0x000002000086f2a0 <prj__tree__tree_private_part__projects_htable__tab__get_next+16>: mov a0,s0 0x000002000086f2a4 <prj__tree__tree_private_part__projects_htable__tab__get_next+20>: stq ra,0(sp) 0x000002000086f2a8 <prj__tree__tree_private_part__projects_htable__tab__get_next+24>: stq s1,16(sp) 0x000002000086f2ac <prj__tree__tree_private_part__projects_htable__tab__get_next+28>: bne a0,0x2000086f2d0 <prj__tree__tree_private_part__projects_htable__tab__get_next+64> 0x000002000086f2b0 <prj__tree__tree_private_part__projects_htable__tab__get_next+32>: clr v0 0x000002000086f2b4 <prj__tree__tree_private_part__projects_htable__tab__get_next+36>: ldq ra,0(sp) 0x000002000086f2b8 <prj__tree__tree_private_part__projects_htable__tab__get_next+40>: ldq s0,8(sp) 0x000002000086f2bc <prj__tree__tree_private_part__projects_htable__tab__get_next+44>: ldq s1,16(sp) 0x000002000086f2c0 <prj__tree__tree_private_part__projects_htable__tab__get_next+48>: lda sp,32(sp) 0x000002000086f2c4 <prj__tree__tree_private_part__projects_htable__tab__get_next+52>: ret 0x000002000086f2c8 <prj__tree__tree_private_part__projects_htable__tab__get_next+56>: nop 0x000002000086f2cc <prj__tree__tree_private_part__projects_htable__tab__get_next+60>: unop 0x000002000086f2d0 <prj__tree__tree_private_part__projects_htable__tab__get_next+64>: ldah s1,1(a0) 0x000002000086f2d4 <prj__tree__tree_private_part__projects_htable__tab__get_next+68>: ldl t0,-16312(s1) 0x000002000086f2d8 <prj__tree__tree_private_part__projects_htable__tab__get_next+72>: and t0,0xff,t0 0x000002000086f2dc <prj__tree__tree_private_part__projects_htable__tab__get_next+76>: beq t0,0x2000086f2b0 <prj__tree__tree_private_part__projects_htable__tab__get_next+32> 0x000002000086f2e0 <prj__tree__tree_private_part__projects_htable__tab__get_next+80>: ldq a0,-16320(s1) 0x000002000086f2e4 <prj__tree__tree_private_part__projects_htable__tab__get_next+84>: ldq t12,-32248(gp) 0x000002000086f2e8 <prj__tree__tree_private_part__projects_htable__tab__get_next+88>: jsr ra,(t12),0x2000086f2ec <prj__tree__tree_private_part__projects_htable__tab__get_next+92> 0x000002000086f2ec <prj__tree__tree_private_part__projects_htable__tab__get_next+92>: ldah gp,6(ra) 0x000002000086f2f0 <prj__tree__tree_private_part__projects_htable__tab__get_next+96>: mov s0,a0 0x000002000086f2f4 <prj__tree__tree_private_part__projects_htable__tab__get_next+100>: lda gp,-12108(gp) 0x000002000086f2f8 <prj__tree__tree_private_part__projects_htable__tab__get_next+104>: stq v0,-16320(s1) 0x000002000086f2fc <prj__tree__tree_private_part__projects_htable__tab__get_next+108>: ldq t12,-28536(gp) 0x000002000086f300 <prj__tree__tree_private_part__projects_htable__tab__get_next+112>: jsr ra,(t12),0x2000086f304 <prj__tree__tree_private_part__projects_htable__tab__get_next+116> 0x000002000086f304 <prj__tree__tree_private_part__projects_htable__tab__get_next+116>: ldah gp,6(ra) 0x000002000086f308 <prj__tree__tree_private_part__projects_htable__tab__get_next+120>: lda gp,-12132(gp) 0x000002000086f30c <prj__tree__tree_private_part__projects_htable__tab__get_next+124>: ldq ra,0(sp) 0x000002000086f310 <prj__tree__tree_private_part__projects_htable__tab__get_next+128>: ldq s0,8(sp) 0x000002000086f314 <prj__tree__tree_private_part__projects_htable__tab__get_next+132>: ldq s1,16(sp) 0x000002000086f318 <prj__tree__tree_private_part__projects_htable__tab__get_next+136>: lda sp,32(sp) 0x000002000086f31c <prj__tree__tree_private_part__projects_htable__tab__get_next+140>: ret End of assembler dump. The sources corresponding to this procedure is: function Get_Next (T : Instance) return Element is Tmp : constant Elmt_Ptr := Tab.Get_Next (Tab.Instance (T)); begin if Tmp = null then return No_Element; else return Tmp.E; end if; end Get_Next; Is this sufficient for debugging? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073