[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2012-11-28 Thread jakub at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



--- Comment #14 from Jakub Jelinek jakub at gcc dot gnu.org 2012-11-28 
23:01:14 UTC ---

Author: jakub

Date: Wed Nov 28 23:01:03 2012

New Revision: 193911



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=193911

Log:

PR debug/36728

PR debug/55467

PR middle-end/55507

PR bootstrap/55511

* cselib.c (cselib_process_insn): If cselib_preserve_constants,

don't reset table and exit early on volatile insns and setjmp.

Reset table afterwards on setjmp.



* gcc.dg/guality/pr36728-1.c: Include ../nop.h, make sure the asm

are non-empty and add dependency between the first and second asm.

* gcc.dg/guality/pr36728-2.c: Likewise.

* gcc.dg/guality/pr36728-3.c: New test.

* gcc.dg/guality/pr36728-4.c: New test.



Added:

trunk/gcc/testsuite/gcc.dg/guality/pr36728-3.c

trunk/gcc/testsuite/gcc.dg/guality/pr36728-4.c

Modified:

trunk/gcc/ChangeLog

trunk/gcc/cselib.c

trunk/gcc/testsuite/ChangeLog

trunk/gcc/testsuite/gcc.dg/guality/pr36728-1.c

trunk/gcc/testsuite/gcc.dg/guality/pr36728-2.c


[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2010-03-10 Thread jakub at gcc dot gnu dot org


--- Comment #13 from jakub at gcc dot gnu dot org  2010-03-10 18:17 ---
Subject: Bug 36728

Author: jakub
Date: Wed Mar 10 18:17:10 2010
New Revision: 157363

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=157363
Log:
PR debug/43290
* reg-notes.def (REG_CFA_SET_VDRAP): New note.
* dwarf2out.c (dwarf2out_frame_debug_expr): Remove rule 20 - setting
of fde-vdrap_reg.
(dwarf2out_frame_debug): Handle REG_CFA_SET_VDRAP note.
(based_loc_descr): Only express drap or vdrap regno based expressions
using DW_OP_fbreg when not optimizing.
* config/i386/i386.c (ix86_get_drap_rtx): When not optimizing,
make the vDRAP = DRAP assignment RTX_FRAME_RELATED_P and add
REG_CFA_SET_VDRAP note.

PR debug/36728
* gcc.dg/guality/pr36728-1.c: New test.
* gcc.dg/guality/pr36728-2.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/guality/pr36728-1.c
trunk/gcc/testsuite/gcc.dg/guality/pr36728-2.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/dwarf2out.c
trunk/gcc/reg-notes.def
trunk/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-05 Thread hjl at gcc dot gnu dot org


--- Comment #11 from hjl at gcc dot gnu dot org  2008-07-06 01:19 ---
Subject: Bug 36728

Author: hjl
Date: Sun Jul  6 01:18:49 2008
New Revision: 137517

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=137517
Log:
2008-07-05  H.J. Lu  [EMAIL PROTECTED]
Xuepeng Guo  [EMAIL PROTECTED]

PR debug/36728
* dwarf2out.c (dw_fde_node): Add drap_reg and vdrap_reg.  Remove
cfa_uses_expression.
(add_cfi): Check drap_reg instead of cfa_uses_expression.
(dwarf2out_frame_debug_expr): Add rule 20 to handle virtual
drap.  Update rule 19 to set drap_reg instead of
cfa_uses_expression.
(dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
to INVALID_REGNUM.
(based_loc_descr): Use cfa+offset to represent the location of
arguments passed on stack when drap is used to align stack.

* config/i386/i386.c (ix86_get_drap_rtx): Set RTX_FRAME_RELATED_P
bit on virtual drap insn.

Modified:
branches/stack/gcc/ChangeLog.stackalign
branches/stack/gcc/config/i386/i386.c
branches/stack/gcc/dwarf2out.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-05 Thread hjl dot tools at gmail dot com


--- Comment #12 from hjl dot tools at gmail dot com  2008-07-06 01:21 
---
Fixed.


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread hjl dot tools at gmail dot com


--- Comment #1 from hjl dot tools at gmail dot com  2008-07-04 13:17 ---
Created an attachment (id=15852)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15852action=view)
A testcase with drap 

[EMAIL PROTECTED] stack-10]$
/export/build/gnu/gcc-stack-internal/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-stack-internal/build-x86_64-linux/gcc/ -m32 foo.c -g
[EMAIL PROTECTED] stack-10]$ gdb a.out 
GNU gdb 6.8.50.20080605-cvs
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type show copying
and show warranty for details.
This GDB was configured as x86_64-unknown-linux-gnu...
(gdb) b foo
Breakpoint 1 at 0x80483a8: file foo.c, line 7.
(gdb) r
Starting program: /export/home/hjl/bugs/gcc/stack-10/a.out 

Breakpoint 1, foo (dummy1=-5725018, dummy2=0, dummy3=-5724977, 
dummy4=-5724952, dummy5=-5724933, dummy6=-5724905, size=-5724890)
at foo.c:7
7   {
(gdb) next
8 volatile char * ptr=__builtin_alloca(size);
(gdb) 
11xxx = 2;
(gdb) 
12ptr [1]= 30;
(gdb) 
13printf (%d: %d\n, xxx, ptr [1]);
(gdb) p xxx
$1 = 0
(gdb) p ptr [1]
$2 = 0 '\0'
(gdb)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread hjl dot tools at gmail dot com


--- Comment #2 from hjl dot tools at gmail dot com  2008-07-04 13:19 ---
Created an attachment (id=15853)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15853action=view)
A testcase without drap 

[EMAIL PROTECTED] stack-10]$
/export/build/gnu/gcc-stack-internal/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-stack-internal/build-x86_64-linux/gcc/ -m32 bar.c -g
[EMAIL PROTECTED] stack-10]$ gdb a.out 
GNU gdb 6.8.50.20080605-cvs
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type show copying
and show warranty for details.
This GDB was configured as x86_64-unknown-linux-gnu...
(gdb) b foo
Breakpoint 1 at 0x80483b1: file bar.c, line 11.
(gdb) r
Starting program: /export/home/hjl/bugs/gcc/stack-10/a.out 

Breakpoint 1, foo (dummy1=1, dummy2=2, dummy3=3, dummy4=4, dummy5=5, dummy6=6, 
size=30) at bar.c:11
11xxx = 2;
(gdb) next
12ptr [1]= 30;
(gdb) 
13printf (%d: %d\n, xxx, ptr [1]);
(gdb) p xxx
$1 = 3
(gdb) p  ptr [1]
$2 = 0 '\0'
(gdb) 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2008-07-04 13:46 ---
Great.  That IMHO blocks the merge of the stack-branch.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread hjl at gcc dot gnu dot org


--- Comment #4 from hjl at gcc dot gnu dot org  2008-07-04 14:18 ---
Subject: Bug 36728

Author: hjl
Date: Fri Jul  4 14:17:18 2008
New Revision: 137460

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=137460
Log:
2008-07-04  Xuepeng Guo  [EMAIL PROTECTED]

PR debug/36728
* dwarf2out.c (based_loc_descr): For local variables, use
sp+offset when stack is aligned without drap and fp+offset
when stack is aligned with drap.

Modified:
branches/stack/gcc/ChangeLog.stackalign
branches/stack/gcc/dwarf2out.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread hjl dot tools at gmail dot com


--- Comment #5 from hjl dot tools at gmail dot com  2008-07-04 14:40 ---
Xuepeng, revision 137460 fixes both local variables
and incoming arguments on 32bit.  But it still fails
incoming arguments on 64bit:

bash-3.2$ ./xgcc -B./  -g /tmp/foo.c
bash-3.2$ gdb foo
GNU gdb Fedora (6.8-10.fc9)
...
(gdb) b foo
Breakpoint 1 at 0x4004ac: file /tmp/foo.c, line 7.
(gdb) r
Starting program: /export/build/gnu/gcc-stack/build-x86_64-linux/gcc/a.out 

Breakpoint 1, foo (dummy1=0, dummy2=4195829, dummy3=750006345, dummy4=1, 
dummy5=0, dummy6=4195211, size=702562328) at /tmp/foo.c:7
7   {
Missing separate debuginfos, use: debuginfo-install glibc.x86_64
(gdb) next
8 volatile char * ptr=__builtin_alloca(size);
(gdb) 
11xxx = 2;
(gdb) 
12ptr [1]= 30;
(gdb) p xxx
$1 = 2
(gdb) p ptr [1]
$2 = 63 '?'
(gdb) next
13printf (%d: %d\n, xxx, ptr [1]);
(gdb) p ptr [1]
$3 = 30 '\036'
(gdb) p size
$4 = -14032866
(gdb)

The difference on 64bit is the first 6 integer parameters
are passed in register and the rest on stack. Can you look into
it? Thanks.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread hjl dot tools at gmail dot com


--- Comment #6 from hjl dot tools at gmail dot com  2008-07-04 15:04 ---
The code in question is

movq%r10, %rax  #, tmp73
movl%edi, -52(%rbp) # dummy1, dummy1
movl%esi, -56(%rbp) # dummy2, dummy2
movl%edx, -60(%rbp) # dummy3, dummy3
movl%ecx, -64(%rbp) # dummy4, dummy4
movl%r8d, -68(%rbp) # dummy5, dummy5
movl%r9d, -72(%rbp) # dummy6, dummy6
.loc 1 5 0 
movl16(%rax), %eax  # size, tmp63

r10 is used for DRAP. But size accessed by rax, not by DRAP.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread hjl dot tools at gmail dot com


--- Comment #7 from hjl dot tools at gmail dot com  2008-07-04 15:16 ---
Joey, this is caused by ix86_get_drap_rtx:

  /* Assign DRAP to vDRAP and returns vDRAP */
  unsigned int regno = find_drap_reg ();
  rtx drap_vreg;
  rtx arg_ptr;
  rtx seq;

  arg_ptr = gen_rtx_REG (Pmode, regno);
  crtl-drap_reg = arg_ptr;

  start_sequence ();
  drap_vreg = copy_to_reg (arg_ptr);
  seq = get_insns ();
  end_sequence ();

  emit_insn_before (seq, NEXT_INSN (entry_of_function ()));
  return drap_vreg;

Do we really need vDRAP?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread hjl dot tools at gmail dot com


--- Comment #8 from hjl dot tools at gmail dot com  2008-07-04 15:21 ---
(In reply to comment #7)
 Joey, this is caused by ix86_get_drap_rtx:
 
 Do we really need vDRAP?
 

Yes, it is needed. Xuepeng, we need to update dwarf2out.c to track
vDRAP.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread hjl dot tools at gmail dot com


--- Comment #9 from hjl dot tools at gmail dot com  2008-07-04 16:04 ---
We can start with

Index: config/i386/i386.c
===
--- config/i386/i386.c  (revision 137474)
+++ config/i386/i386.c  (working copy)
@@ -6628,7 +6628,7 @@ ix86_get_drap_rtx (void)
   unsigned int regno = find_drap_reg ();
   rtx drap_vreg;
   rtx arg_ptr;
-  rtx seq;
+  rtx seq, insn;

   arg_ptr = gen_rtx_REG (Pmode, regno);
   crtl-drap_reg = arg_ptr;
@@ -6638,7 +6638,9 @@ ix86_get_drap_rtx (void)
   seq = get_insns ();
   end_sequence ();

-  emit_insn_before (seq, NEXT_INSN (entry_of_function ()));
+  insn = emit_insn_before (seq, NEXT_INSN (entry_of_function ()));
+  RTX_FRAME_RELATED_P (insn) = 1;
+
   return drap_vreg;
 }
   else


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728



[Bug debug/36728] [stack]: gdb doesn't work with stack alignment

2008-07-04 Thread hjl dot tools at gmail dot com


--- Comment #10 from hjl dot tools at gmail dot com  2008-07-04 20:35 
---
A patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2008-07/msg00347.html


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

URL||http://gcc.gnu.org/ml/gcc-
   ||patches/2008-
   ||07/msg00347.html


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36728