[Bug target/37610] [4.4 Regression] FAIL: g++.dg/eh/pr29166.C execution test
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
-- 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
-- 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