This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patch committed: Fix demangler crash


On Tue, Jul 26, 2011 at 9:46 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Jul 26, 2011 at 7:30 AM, Ian Lance Taylor <iant@google.com> wrote:
>> binutils PR 13030 reports a demangler crash on the symbol
>> ? ?_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
>>
>> As far as I can tell, this symbol is invalid. ?The final T0_ refers to
>> template argument 1, but this zero-based index has no referent since the
>> template only has one parameter. ?This of course suggests a compiler
>> bug. ?CC'ing Jason because this involves template packs which I haven't
>> looked into very much.
>>
>> I committed this patch to avoid the crash in the demangler.
>>
>> Ian
>>
>>
>> 2011-07-26 ?Ian Lance Taylor ?<iant@google.com>
>>
>> ? ? ? ?* cp-demangle.c (d_print_init): Initialize pack_index field.
>> ? ? ? ?(d_print_comp): Check for NULL template argument.
>> ? ? ? ?* testsuite/demangle-expected: Add test case.
>>
>>
>>
>
> I think it caused:
>
> FAIL at line 4023: unknown demangling style
> _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
> FAIL at line 4027: unknown demangling style yz.qrs
> FAIL at line 4031: unknown demangling style oper."+"
> FAIL at line 4035: unknown demangling style yz.qrs
> FAIL at line 4039: unknown demangling style yz.qrs.tuv
> FAIL at line 4042: unknown demangling style yz.qrs.tuv
> FAIL at line 4045: unknown demangling style yz.qrs.tuv
> FAIL at line 4049: unknown demangling style yz.qrs.tuv
> FAIL at line 4053: unknown demangling style <x_E>
> FAIL at line 4056: unknown demangling style x.m1
> FAIL at line 4059: unknown demangling style x.m3
> FAIL at line 4062: unknown demangling style x.y.m2
> FAIL at line 4066: unknown demangling style x.y.z.r
> FAIL at line 4070: unknown demangling style x.y.j
> FAIL at line 4074: unknown demangling style x.m3
> FAIL at line 4078: unknown demangling style p'Elab_Body
> FAIL at line 4082: unknown demangling style p'Elab_Spec
> FAIL at line 4086: unknown demangling style p.taskobj
> FAIL at line 4090: unknown demangling style p.taskobj.f1
> FAIL at line 4093: unknown demangling style prot.lock.get
> FAIL at line 4096: unknown demangling style prot.lock.get
> FAIL at line 4099: unknown demangling style prot.lock.get.sub
> FAIL at line 4102: unknown demangling style prot.lock.set
> FAIL at line 4106: unknown demangling style prot.lock.set
> FAIL at line 4109: unknown demangling style prot.lock.update
> FAIL at line 4113: unknown demangling style prot.lock.update
> FAIL at line 4116: unknown demangling style
> gnat.sockets.sockets_library_controller.Finalize
> FAIL at line 4120: unknown demangling style
> system.partition_interface.racw_stub_type.Adjust
> FAIL at line 4123: unknown demangling style
> gnat.wide_wide_string_split.slice_set'Read
> FAIL at line 4126: unknown demangling style
> ada.real_time.timing_events.events.list'Write
> FAIL at line 4129: unknown demangling style
> system.finalization_root.root_controlled'Input
> FAIL at line 4133: unknown demangling style
> ada.finalization.limited_controlled'Output
> FAIL at line 4136: unknown demangling style ada.synchronous_task_control'Size
> FAIL at line 4139: unknown demangling style
> ada.real_time.timing_events.events'Alignment
> FAIL at line 4144: unknown demangling style system.finalization_root.":="
> FAIL at line 4149: unknown demangling style DFA
> FAIL at line 4152: unknown demangling style
> Psi::VariantDetail::SelectVisitorResult<VariantTest::TestVisit::test_method()::{lambda(char
> const*)#2}&, VariantTest::TestVisit::test_method()::{lambda(char)#3}&,
> VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&>::type
> Psi::Variant<char, char
> const*>::visit<VariantTest::TestVisit::test_method()::{lambda(char const*)#2}&,
> VariantTest::TestVisit::test_method()::{lambda(char)#3}&,
> VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&>((VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&)...)
>
> on Linux/ia32.
>

I checked in this as an obvious fix.

-- 
H.J.
---
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 1ceb0ee..2c5b761 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2011-07-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* testsuite/demangle-expected: Remove an extra line.
+
 2011-07-26  Ian Lance Taylor  <iant@google.com>

 	* cp-demangle.c (d_print_init): Initialize pack_index field.
diff --git a/libiberty/testsuite/demangle-expected
b/libiberty/testsuite/demangle-expected
index d3e7099..f9e8447 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -4014,7 +4014,6 @@ K<1, &S::m>::f()
 --format=gnu-v3
 _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
 _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
-_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
 #
 # Ada (GNAT) tests.
 #


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]