[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-12-20 Thread ebotcazou at gcc dot gnu dot org


--- Comment #13 from ebotcazou at gcc dot gnu dot org  2008-12-20 22:33 
---
Subject: Bug 37610

Author: ebotcazou
Date: Sat Dec 20 22:32:30 2008
New Revision: 142850

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=142850
Log:
PR target/37610
* configure.ac (gcc_cv_as_cfi_advance_working): Fall back to 'no'
if readelf is nowhere to be found.
* configure: Regenerate.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/configure
trunk/gcc/configure.ac


-- 


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-12-03 Thread jakub at gcc dot gnu dot org


--- Comment #11 from jakub at gcc dot gnu dot org  2008-12-03 09:11 ---
Subject: Bug 37610

Author: jakub
Date: Wed Dec  3 09:09:43 2008
New Revision: 142389

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=142389
Log:
PR target/37610
* configure.ac (gcc_cv_readelf): Look for readelf.
(gcc_cv_as_cfi_advance_working): Check for working
cfi advances with code alignment factor  1.
(HAVE_GAS_CFI_DIRECTIVE): Don't define if cfi advances
don't work properly.
* configure: Regenerated.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/configure
trunk/gcc/configure.ac


-- 


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-12-03 Thread jakub at gcc dot gnu dot org


--- Comment #12 from jakub at gcc dot gnu dot org  2008-12-03 09:11 ---
Fixed in gas, configury check added for gcc.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-12-02 Thread jakub at gcc dot gnu dot org


--- Comment #10 from jakub at gcc dot gnu dot org  2008-12-02 15:48 ---
Created an attachment (id=16811)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16811action=view)
gcc44-pr37610.patch

Patch I've briefly tested on ppc-linux with broken as well as fixed gas and on
x86_64-linux am bootstrapping it ATM.


-- 


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-11-29 Thread jakub at gcc dot gnu dot org


--- Comment #9 from jakub at gcc dot gnu dot org  2008-11-29 21:05 ---
The binutils fix has been checked in, I'll work on configury on Monday.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jakub at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2008-11-18 18:51:34 |2008-11-29 21:05:42
   date||


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-11-18 Thread jakub at gcc dot gnu dot org


--- Comment #3 from jakub at gcc dot gnu dot org  2008-11-18 09:03 ---
libunwind also scales all of DW_CFA_advance_loc{,1,2,4} by code alignment
factor and IMHO it matches the standard wording too:
DW_CFA_advance_loc
  The DW_CFA_advance instruction takes a single operand (encoded with the
opcode) that represents a constant delta. The required action is to create a
new table row with a location value that is computed by taking the current
entry's location value and adding the value of delta * code_alignment_factor.
All other values in the new row are initially identical to the current row.
DW_CFA_advance_loc1
  The DW_CFA_advance_loc1 instruction takes a single ubyte operand that
represents a constant delta. This instruction is identical to
DW_CFA_advance_loc except for the encoding and size of the delta operand.

Can you submit the trivial fix (replace 3 times (delta) with (scaled) in
dw2gencfi.c to binutils?  On the GCC side we'll need to write a configury test
which will fail if this bug is detected and the target has code alignment
factor bigger than 1.


-- 


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-11-18 Thread jakub at gcc dot gnu dot org


--- Comment #4 from jakub at gcc dot gnu dot org  2008-11-18 09:19 ---
On the GCC configury side (and in gas testsuite too) it is just a matter of:
cat  conftest.s EOF
.cfi_startproc
.cfi_adjust_cfa_offset 64
.skip 512, 0
.cfi_adjust_cfa_offset 128
.cfi_endproc
EOF
$gcc_cv_as -o conftest.o conftest.s
if $gcc_cv_readelf -wf conftest.o 2/dev/null | egrep -q
'DW_CFA_advance_loc2:[[:blank:]]*512[[:blank:]]*'; then
  gcc_cv_as_cfi_advance_working=yes;
else
  gcc_gc_as_cfi_advance_working=no;
fi


-- 


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-11-18 Thread dave at hiauly1 dot hia dot nrc dot ca


--- Comment #5 from dave at hiauly1 dot hia dot nrc dot ca  2008-11-18 
14:06 ---
Subject: Re:  [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

 Can you submit the trivial fix (replace 3 times (delta) with (scaled) in
 dw2gencfi.c to binutils?  On the GCC side we'll need to write a configury test
 which will fail if this bug is detected and the target has code alignment
 factor bigger than 1.

Will submit the dw2gencfi.c fix.   Tested last night.

Dave


-- 


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-11-18 Thread danglin at gcc dot gnu dot org


--- Comment #6 from danglin at gcc dot gnu dot org  2008-11-18 14:56 ---
The binutils patch is here:
http://sourceware.org/ml/binutils/2008-11/msg00200.html


-- 


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-11-18 Thread ebotcazou at gcc dot gnu dot org


--- Comment #7 from ebotcazou at gcc dot gnu dot org  2008-11-18 18:48 
---
*** Bug 38131 has been marked as a duplicate of this bug. ***


-- 

ebotcazou at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||laurent at guerby dot net


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-11-18 Thread ebotcazou at gcc dot gnu dot org


--- Comment #8 from ebotcazou at gcc dot gnu dot org  2008-11-18 18:51 
---
Likewise on SPARC.


-- 

ebotcazou at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||ebotcazou at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2008-11-18 18:51:34
   date||


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-11-17 Thread danglin at gcc dot gnu dot org


--- Comment #1 from danglin at gcc dot gnu dot org  2008-11-18 01:22 ---
*** Bug 38129 has been marked as a duplicate of this bug. ***


-- 


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-11-17 Thread danglin at gcc dot gnu dot org


--- Comment #2 from danglin at gcc dot gnu dot org  2008-11-18 02:31 ---
The hppa gas target currently defines DWARF2_LINE_MIN_INSN_LENGTH to 4 in
tc-hppa.h.  I can fix this failure by changing DWARF2_LINE_MIN_INSN_LENGTH
to 1.  However, the failure appears to be caused by an inconsistency in
the handling of DW_CFA_advance_loc1, DW_CFA_advance_loc2 and
DW_CFA_advance_loc4
in dw2gencfi.c and unwind-dw2.c.

In dw2gencfi.c, we have:

addressT delta = S_GET_VALUE (to) - S_GET_VALUE (from);
addressT scaled = delta / DWARF2_LINE_MIN_INSN_LENGTH;

if (scaled = 0x3F)
  out_one (DW_CFA_advance_loc + scaled);
else if (delta = 0xFF)
  {
out_one (DW_CFA_advance_loc1);
out_one (delta);
  }
else if (delta = 0x)
  {
out_one (DW_CFA_advance_loc2);
out_two (delta);
  }
else
  {
out_one (DW_CFA_advance_loc4);
out_four (delta);
  }

In unwind-dw2.c, we have:

case DW_CFA_advance_loc1:
  fs-pc += read_1u (insn_ptr) * fs-code_align;
  insn_ptr += 1;
  break;
case DW_CFA_advance_loc2:
  fs-pc += read_2u (insn_ptr) * fs-code_align;
  insn_ptr += 2;
  break;
case DW_CFA_advance_loc4:
  fs-pc += read_4u (insn_ptr) * fs-code_align;
  insn_ptr += 4;
  break;

The code in binutils/dwarf.c also scales the file values by the code
alignment factor.  So two against one says the dw2gencfi.c code is wrong.


-- 

danglin at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||rth at gcc dot gnu dot org


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-10-21 Thread mmitchel at gcc dot gnu dot org


-- 

mmitchel at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P1


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



[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test

2008-09-28 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
   Target Milestone|--- |4.4.0


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