[Bug binutils/19801] New: c++filt cannot demangle _ZNSt17_Function_handlerIFSt4pairImjEjEZN5folly12addBenchmarkI3$_0EENSt9enable_ifIXeqsr5boost14function_types14function_arityIDTadsrT_onclEEE5valueLi2

2016-03-09 Thread twoh at fb dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=19801

Bug ID: 19801
   Summary: c++filt cannot demangle
_ZNSt17_Function_handlerIFSt4pairImjEjEZN5folly12addBe
nchmarkI3$_0EENSt9enable_ifIXeqsr5boost14function_type
s14function_arityIDTadsrT_onclEEE5valueLi2EEvE4typeEPK
cSC_OS7_EUljE_E9_M_invokeERKSt9_Any_dataj
   Product: binutils
   Version: 2.26
Status: NEW
  Severity: normal
  Priority: P2
 Component: binutils
  Assignee: unassigned at sourceware dot org
  Reporter: twoh at fb dot com
  Target Milestone: ---

c++filt cannot demangle
_ZNSt17_Function_handlerIFSt4pairImjEjEZN5folly12addBenchmarkI3$_0EENSt9enable_ifIXeqsr5boost14function_types14function_arityIDTadsrT_onclEEE5valueLi2EEvE4typeEPKcSC_OS7_EUljE_E9_M_invokeERKSt9_Any_dataj

The demangler fails when it encounters expression "srT_onclE". The reason is
that it applies a wrong rule to demangle expression. Comments in line 3095 of
libiberty/cp-demangle.c (2.26 release) says 

 ::= sr  

is the rule, and this is implemented in line 3110-3124. However, if you see
Itanium C++
ABI(http://mentorembedded.github.io/cxx-abi/abi.html#mangle.expression), the
actual rule is

 ::= sr  

and 'base-unresolved-name' has different rules with 'unqualified-name'.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug binutils/19801] c++filt cannot demangle _ZNSt17_Function_handlerIFSt4pairImjEjEZN5folly12addBenchmarkI3$_0EENSt9enable_ifIXeqsr5boost14function_types14function_arityIDTadsrT_onclEEE5valueLi2EEvE4

2016-03-10 Thread twoh at fb dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=19801

--- Comment #2 from Taewook Oh  ---
Nick, 

Thank you for your reply. I'll forward the report to the maintainers.

Best,
Taewook

On 3/10/16, 6:19 AM, "nickc at redhat dot com"
 wrote:

>https://urldefense.proofpoint.com/v2/url?u=https-3A__sourceware.org_bugzil
>la_show-5Fbug.cgi-3Fid-3D19801&d=CwIFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=kOsLCgQ
>zH7N8ptZ7diJD9g&m=X0O3GiY40h5WTSgIBZhkX1JAAJejZurAxUPw1J4kcNE&s=KbyLrgTjsH
>_fcUnB5bWZBw74ojTVVkYtQvyblf-r9pA&e=
>
>Nick Clifton  changed:
>
>   What|Removed |Added
>--
>--
> Status|NEW |RESOLVED
> CC||nickc at redhat dot com
> Resolution|--- |WONTFIX
>
>--- Comment #1 from Nick Clifton  ---
>(In reply to Taewook Oh from comment #0)
>> The demangler fails when it encounters expression
>
>Thanks for reporting this problem.  Unfortunately the libiberty library
>is a
>separate project from the binutils, so this is the wrong place to report
>this
>problem.
>
>Instead please send the bug report to the libiberty maintainers (see
>below) and
>maybe also CC the message to the gcc-patc...@gcc.gnu.org mailing list.
>
>Cheers
>  Nick
>
>(From gcc/MAINTAINERS):
>
>libiberty   DJ Delorie  
>libiberty   Ian Lance Taylor
>
>-- 
>You are receiving this mail because:
>You reported the bug.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug gold/23321] New: Gold Linker SIGSEGV During DWARF Decoding, because it doesn't support DW_LNS_set_epilogue_begin/end and DW_LNS_set_isa

2018-06-20 Thread twoh at fb dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=23321

Bug ID: 23321
   Summary: Gold Linker SIGSEGV During DWARF Decoding, because it
doesn't support DW_LNS_set_epilogue_begin/end and
DW_LNS_set_isa
   Product: binutils
   Version: 2.30
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: gold
  Assignee: ccoutant at gmail dot com
  Reporter: twoh at fb dot com
CC: ian at airs dot com
  Target Milestone: ---

As written in the summary, gold linker crashes with SIGSEGV because dwarf
reader doesn't support some opcodes. Below is my temporary patch for 2.26.1 and
2.29.1, and I confirmed that the issue is not addressed in 2.30 as well. 

It would be nice if someone has a better understanding about the codebase can
take a look. Thanks!

---

===
--- 2.26.1/src/binutils-2.26.1/gold/dwarf_reader.cc
+++ 2.26.1/src/binutils-2.26.1/gold/dwarf_reader.cc
@@ -1917,6 +1917,20 @@
   }
   break;

+case elfcpp::DW_LNS_set_epilogue_begin:
+case elfcpp::DW_LNS_set_prologue_end:
+  // Do nothing.
+  break;
+
+case elfcpp::DW_LNS_set_isa:
+  {
+size_t templen;
+read_unsigned_LEB_128(start, &templen);
+oplen += templen;
+  }
+  break;
+
 default:
   {
 // Ignore unknown opcode  silently
Index: 2.29.1/src/binutils-2.29.1/gold/dwarf_reader.cc
===
--- 2.29.1/src/binutils-2.29.1/gold/dwarf_reader.cc
+++ 2.29.1/src/binutils-2.29.1/gold/dwarf_reader.cc
@@ -1917,6 +1917,20 @@
   }
   break;

+case elfcpp::DW_LNS_set_epilogue_begin:
+case elfcpp::DW_LNS_set_prologue_end:
+  // Do nothing.
+  break;
+
+case elfcpp::DW_LNS_set_isa:
+  {
+size_t templen;
+read_unsigned_LEB_128(start, &templen);
+oplen += templen;
+  }
+  break;
+
 default:
   {
 // Ignore unknown opcode  silently

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug gold/23321] Gold Linker SIGSEGV During DWARF Decoding, because it doesn't support DW_LNS_set_epilogue_begin/end and DW_LNS_set_isa

2018-06-20 Thread twoh at fb dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=23321

--- Comment #2 from Taewook Oh  ---
It was clang, close to top of trunk. Maybe std_opcode_lengths has the wrong
value: As far as I remember, when it falls back to the default case, the array
value for DW_LNS_set_epilogue_end was 1, not 0. 

It is from internal source so wonder if I can share .o file, but let me try if
I can invent one.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils