[Bug c++/56251] no DW_AT_const_value for static const member of a template class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56251 chihin ko changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED --- Comment #8 from chihin ko --- Verified on Solaris 11
[Bug debug/54773] no debug info generated for rvalue reference
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54773 chihin ko changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED --- Comment #4 from chihin ko --- g++ 5.4.0 on Solaris 11 does not have this problem.
[Bug c++/78761] New: C++14, compiler generate mangled name that can not be demangled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78761 Bug ID: 78761 Summary: C++14, compiler generate mangled name that can not be demangled Product: gcc Version: 6.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com Target Milestone: --- cat t.cc template decltype(auto) g_1(T t) { return t; } template auto g_2(T t) { return t; } int main() { decltype(auto) res = g_1(10); decltype(auto) res2 = g_2(10); return 0; } == g++ -g t.cc > nm a.out | grep g_2 [71]| 4198535| 12|FUNC |WEAK |0|20 |_Z3g_2IiEDaT_ > /pkg/gnu/bin/gnu-c++filt _Z3g_2IiEDaT_ auto g_2(int) <=== this is OK > nm a.out | grep g_1 [84]| 4198523| 12|FUNC |WEAK |0|19 |_Z3g_1IiEDcT_ > /pkg/gnu/bin/gnu-c++filt _Z3g_1IiEDcT_ _Z3g_1IiEDcT_ <=== can not be demangled
[Bug c++/78329] incorrect debug info for return type deduction C++14
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78329 --- Comment #1 from chihin ko --- The bug only happen in member functions, I tried multiple classes with deducted return type for multiple member functions, they all point to the same DW_TAG_unspecified_type.
[Bug c++/78329] New: incorrect debug info for return type deduction C++14
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78329 Bug ID: 78329 Summary: incorrect debug info for return type deduction C++14 Product: gcc Version: 6.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com Target Milestone: --- cat t.cc class AA { public: auto func(int arg) { int i = 0; for (; i < arg; i++); return i; } } a; auto func1(int arg) { int i = 0; for (; i < arg; i++); return i; } int main() { auto res = a.func(5); res = func1(5); return 0; } The return type of function "func" should resolved to type "int": < 2><0x0034> DW_TAG_subprogram DW_AT_external yes(1) DW_AT_name "func" DW_AT_decl_file 0x0001 /workspace/chko/ws/dinstall/dbx_test/bugid/2484659 6/g61/t.cc DW_AT_decl_line 0x0003 DW_AT_linkage_name "_ZN2AA4funcEi" DW_AT_type <0x0054> DW_AT_accessibility DW_ACCESS_public DW_AT_declaration yes(1) DW_AT_object_pointer<0x0048> < 3><0x0048>DW_TAG_formal_parameter DW_AT_type <0x0059> DW_AT_artificialyes(1) < 3><0x004d>DW_TAG_formal_parameter DW_AT_type <0x0064> < 1><0x0054>DW_TAG_unspecified_type DW_AT_name "auto" <== should resolve to type "int"
[Bug debug/68904] DWARF for class ios_base says it's a declaration
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68904 --- Comment #4 from chihin ko --- (In reply to Andrew Pinski from comment #1) > Can you try: > -fno-eliminate-unused-debug-types > > I bet the full type debug info is going to be emitted in a different TU > which is why GCC is not emitting it here. > > > Also look at the debug info inside libstdc++.so/libstdc++.a to see if the > full debug info is emitted there. The problem is for class "ios_base", the attribute DW_AT_declaration yes(1) should not be there, because the full definition of the class is here: < 2><0xb0f9> DW_TAG_class_type DW_AT_name "ios_base" DW_AT_declaration yes(1) <=== should not have this DW_AT_sibling <0xb4ab> < 3><0xb103>DW_TAG_enumeration_type DW_AT_name "event" DW_AT_byte_size0x0004 DW_AT_decl_file0x0025 /pkg/gnu/include/c++/4.9.3/bits/ios_base .h DW_AT_decl_line0x01a3 DW_AT_sibling <0xb123> < 4><0xb110> DW_TAG_enumerator DW_AT_name "erase_event" DW_AT_const_value 0x
[Bug debug/68904] New: DWARF for class ios_base says it's a declaration
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68904 Bug ID: 68904 Summary: DWARF for class ios_base says it's a declaration Product: gcc Version: 5.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com Target Milestone: --- We've build the appended program with all manner of g++'s (from 3.4.3 to 5.2.0) and in all cases the DWARF information for class ios_base is "weird": < 2><0x0601> DW_TAG_class_type DW_AT_name "ios_base" DW_AT_declaration yes(1) DW_AT_sibling <0x080d> BUT IT HAS THE USUAL MEMBER DEFINITIONS ETC FOLLOWING HERE! The test program has some other only-forward, empty and within-namespace definitions and for them the DWARF is as expected: class Fwd; < 1><0x18d2>DW_TAG_class_type DW_AT_name "Fwd" DW_AT_declaration yes(1) class Foo { public: int foo; }; < 1><0x14b6>DW_TAG_class_type DW_AT_name "Foo" DW_AT_byte_size 0x0004 DW_AT_decl_file 0x0001 /net/djomolungma/export/home/test/gnu/class/t.cc DW_AT_decl_line 0x0012 DW_AT_sibling <0x14e6> < 2><0x14c2> DW_TAG_member ADDITIONAL MEMBER INFO class Bar { }; < 1><0x14ec>DW_TAG_class_type DW_AT_name "Bar" DW_AT_byte_size 0x0001 DW_AT_decl_file 0x0001 /net/djomolungma/export/home/test/gnu/class/t.cc DW_AT_decl_line 0x0019 something gets the compiler confused about 'ios_base' such that it emits attributes that say it's a declaration but then the compiler also outputs full member information for 'ios_base'.
[Bug debug/68904] DWARF for class ios_base says it's a declaration
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68904 --- Comment #2 from chihin ko --- Created attachment 37032 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37032=edit test case
[Bug debug/68904] DWARF for class ios_base says it's a declaration
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68904 --- Comment #3 from chihin ko --- Created attachment 37033 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37033=edit dwarf dump of test case test.cc
[Bug c++/66116] New: no DW_TAG_template_type_parameter for template instantiation
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66116 Bug ID: 66116 Summary: no DW_TAG_template_type_parameter for template instantiation Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com Target Milestone: --- Created attachment 35520 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35520action=edit test case For attached std_list_iterators.cc, there is no DW_TAG_template_type_parameter for DW_TAG_class_type allocatorint : 20x3bd7 DW_TAG_class_type DW_AT_name allocatorint DW_AT_byte_size 0x0001 DW_AT_decl_file 0x0006 allocator.h DW_AT_decl_line 0x005c DW_AT_sibling 0x3cbc 30x3be3DW_TAG_inheritance DW_AT_type 0x80f8 DW_AT_data_member_location DW_OP_plus_uconst 0 DW_AT_accessibility DW_ACCESS_public 30x3becDW_TAG_typedef DW_AT_name reference DW_AT_decl_file 0x0006 allocator.h DW_AT_decl_line 0x0063 DW_AT_type 0x8ee9 ... ...
[Bug c++/66080] New: incorrect debug info for CTOR
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66080 Bug ID: 66080 Summary: incorrect debug info for CTOR Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com Target Milestone: --- Created attachment 35505 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35505action=edit test case for attach delegating_constructors.cc test case, due to incorrect debug info, gdb behave strange: can't stop at line bpt: (gdb) b 15 Breakpoint 1 at 0x4009d2: file delegating_constructors.cc, line 15. (gdb) b 16 Breakpoint 2 at 0x400a07: file delegating_constructors.cc, line 16. (gdb) b 20 Breakpoint 3 at 0x400a3a: file delegating_constructors.cc, line 20. (gdb) run Starting program: /workspace/chko/ws/dinstall/intel_S11_gcc482/delegating_constructors.dbx,gcc/intel-Linux/a.out Error in re-setting breakpoint 1: Function /workspace/chko/ws/dinstall/intel_S11_gcc482/delegating_constructors.dbx not defined. Error in re-setting breakpoint 2: Function /workspace/chko/ws/dinstall/intel_S11_gcc482/delegating_constructors.dbx not defined. Error in re-setting breakpoint 3: Function /workspace/chko/ws/dinstall/intel_S11_gcc482/delegating_constructors.dbx not defined. a: x=1 y=2.00 z=3 st=4 arr: x=1 y=2.00 z=3 st=4 x=1 y=2.00 z=3 st=4 a2: x=11 y=22.00 z=33 st=77 [Inferior 1 (process 7687) exited normally] (gdb) quit here is one example in dwarf dump: 20x0052 DW_TAG_subprogram DW_AT_external yes(1) DW_AT_name St DW_AT_decl_file 0x0001 delegating_constructors.cc DW_AT_decl_line 0x0006 DW_AT_declaration yes(1) ... ... 10x01c5DW_TAG_subprogram DW_AT_specification 0x0052 == shouldn't point to St DW_AT_inlineDW_INL_declared_not_inlined DW_AT_object_pointer0x01d3 DW_AT_sibling 0x01e6 ... ... 10x01ebDW_TAG_subprogram DW_AT_abstract_origin 0x01c5 DW_AT_linkage_name _ZN2StC2Ei DW_AT_low_pc0x004009a6 DW_AT_high_pc offset-from-lowpc22
[Bug debug/54773] no debug info generated for rvalue reference
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54773 --- Comment #3 from chihin ko chihin.ko at oracle dot com --- g++ 4.8.2 on intel-Linux regress again. DW_TAG_rvalue_reference_type did not get generated. g++ 4.8.2 on intel Solaris is broken too. g++ 4.9.0 works on intel-Linux but not on intel Solaris.
[Bug debug/65821] [4.8/4.9/5/6 regression] incorrect debug line # info for main
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65821 --- Comment #5 from chihin ko chihin.ko at oracle dot com --- Created attachment 35381 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35381action=edit test case 1/1
[Bug debug/65821] [4.8/4.9/5/6 regression] incorrect debug line # info for main
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65821 --- Comment #4 from chihin ko chihin.ko at oracle dot com --- (In reply to Richard Biener from comment #3) What version works correctly? (please provide the testcase as attachment as well) 00x000b DW_TAG_compile_unit DW_AT_producer GNU C++ 4.7.2 DW_AT_language DW_LANG_C_plus_plus ... ... 10x0547DW_TAG_subprogram DW_AT_external yes(1) DW_AT_name main DW_AT_decl_file 0x0001 /workspace/chko/ws/dinstall/dbx_test/intel_S11_gcc482/c++defargs3.dbx,gcc/g47/c++defargs3.cc DW_AT_decl_line 0x001d DW_AT_type 0x0371 DW_AT_low_pc0x00400b02 DW_AT_high_pc 0x00400b62 ... ... 0x00400b02 [ 30, 0] NS 0x00400b0a [ 31, 0] NS 0x00400b22 [ 32, 0] NS DI=0x1 0x00400b35 [ 33, 0] NS 0x00400b3f [ 34, 0] NS 0x00400b49 [ 35, 0] NS
[Bug debug/65821] New: [4.8.2 regression] incorrect debug line # info for main
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65821 Bug ID: 65821 Summary: [4.8.2 regression] incorrect debug line # info for main Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com this happen since 4.8.2, 4.9.0 also have same problem. cat t.cc == 1 #include stdio.h 2 3 int b = 12; 4 5 inline void foo(const int x = (b+3)) 6 { 7 printf(%d\n, x); 8 } 9 10 inline void baz(const int x = 200) 11 { 12 printf(%d\n, x); 13 } 14 15 inline void bar(int x = b) 16 { 17 printf(%d\n, x); 18 x = 100; 19 printf(%d\n, x); 20 } 21 22 23 void 24 bob(char *s = hello) 25 { 26 printf(%s\n, s); 27 } 28 29 int main() 30 { 31 foo(); 32 baz(); 33 bar(); 34 bob(); 35 return 0; 36 } The line table for main is incorrect: 10x067eDW_TAG_subprogram DW_AT_external yes(1) DW_AT_name main DW_AT_decl_file 0x0001 t.cc DW_AT_decl_line 0x001d DW_AT_type 0x0491 DW_AT_low_pc0x0040129f DW_AT_high_pc 0x004012ff .debug_line --- 0x0040129f [ 30, 0] NS 0x004012a7 [ 5, 0] NS extra line info 0x004012b0 [ 31, 0] NS 0x004012bf [ 32, 0] NS DI=0x1 0x004012d2 [ 33, 0] NS 0x004012dc [ 34, 0] NS This cause follwing problem: (gdb) b main Breakpoint 1 at 0x4006ea: file c++defargs3.cc, line 5. == should be line 31 (gdb) run Starting program: /workspace/chko/ws/dinstall/dbx_test/intel_S11_gcc482/c++defargs3.dbx,gcc/g47/a.out Breakpoint 1, main () at c++defargs3.cc:5 5 inline void foo(const int x = (b+3))
[Bug debug/65821] [4.8.2 regression] incorrect debug line # info for main
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65821 --- Comment #2 from chihin ko chihin.ko at oracle dot com --- (In reply to Andrew Pinski from comment #1) It is doing (b+3) first which is from :5 which seems correct to me. Default arguments should have a line information right? Then gdb should stop at line 30 first and when I step into foo(), it stop at line 5. line 5 should belongs to foo(). Current behavior is confusing to user.
[Bug debug/65822] New: [4.8.2 regression] Used variant fun names in dwarf info for CTORs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65822 Bug ID: 65822 Summary: [4.8.2 regression] Used variant fun names in dwarf info for CTORs Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com Created attachment 35372 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35372action=edit test case 1/1 for attached *.cc, there are 3 A CTORS and 3 variant A CTORS: nm a.out | grep _ZN1AC 00400a8c W _ZN1AC1Ei 00400ab2 W _ZN1AC1Eifci 00400a5a W _ZN1AC1Ev 00400a8c W _ZN1AC2Ei 00400ab2 W _ZN1AC2Eifci 00400a5a W _ZN1AC2Ev In dwarf dump, _ZN1AC2... was used : grep _ZN1AC a.out.dw DW_AT_MIPS_linkage_name _ZN1AC2Ev DW_AT_MIPS_linkage_name _ZN1AC2Ei DW_AT_MIPS_linkage_name _ZN1AC2Eifci name at offset 0x011a, length9 is '_ZN1AC2Ei' name at offset 0x0143, length 12 is '_ZN1AC2Eifci' name at offset 0x015a, length9 is '_ZN1AC2Ev' I don't see _ZN1AC1... were used in a.out.dw
[Bug c++/64912] New: no debug info for struct that pass by reference
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64912 Bug ID: 64912 Summary: no debug info for struct that pass by reference Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com For following t.cc: extern C int printf(const char*, ...); #include deque using namespace std; dequeint gl_li(5,100); int main () { dequeint tmp_deque(5,200); gl_li.assign(tmp_deque.cbegin(),tmp_deque.cend()); gl_li.assign(tmp_deque.begin(),tmp_deque.end()); for ( auto el: gl_li ) printf(el = %d\n, el); return 0; } /gcc/4.8.1/intel-Linux/bin/g++ -m64 -std=c++11 t.cc -Xlinker -R/gcc/4.8.1/intel-Linux/lib64 There is no debug info to indicate struct _Deque_iteratorint, int, int* is passed type reference: 20x09be DW_TAG_structure_type DW_AT_name _Deque_iteratorint, int, int* DW_AT_byte_size 0x0020 DW_AT_decl_file 0x0001 /net/dv104/export/tools/gcc/4.8.1/intel-Linux/include/c++/4.8.1/bits/stl_deque.h DW_AT_decl_line 0x006a DW_AT_sibling 0x0c55 30x09caDW_TAG_member DW_AT_name _M_cur === Oracle C++ compiler would generate something like this: 20x1bee DW_TAG_structure_type DW_AT_name _Deque_iteratorint, int, int* DW_AT_SUN_link_name _ZSt15_Deque_iteratorIiRiPiE DW_AT_decl_file 0x0002 /ws/cia/builds/dodona/latest/inte l-S2/lib/compilers/CC-gcc/include/c++/4.8.2/bits/stl_deque.h DW_AT_decl_line 0x0069 DW_AT_VMS_rtnbeg_pd_address 0x1b9f DW_AT_byte_size 0x0020 DW_AT_SUN_pass_with_const yes(1) === passed by reference DW_AT_SUN_return_with_const yes(1) === returned by reference
[Bug c++/63759] New: did not use DW_TAG_template_alias for template alias
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63759 Bug ID: 63759 Summary: did not use DW_TAG_template_alias for template alias Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com Created attachment 33905 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33905action=edit test case For attached test case t.cc, g++ did not generate appropriate debug info for template alias, instead it used DW_TAG_typedef : /net/dv104/export/tools/gcc/4.9.0/$VARIANT1/bin/g++ -m64 -std=c++11 -Xlinker -R/net/dv104/export/tools/gcc/4.9.0/$VARIANT1/lib/amd64 t.cc 00x000b DW_TAG_compile_unit DW_AT_producer GNU C++ 4.9.0 -m64 -mtune=generic -march=x86-64 -g -std=c++11 DW_AT_language DW_LANG_C_plus_plus DW_AT_name t.cc ... ... 10x4a55DW_TAG_typedef DW_AT_name PrintStr DW_AT_decl_file 0x0001 .../gnu/intel-Linux/t.cc DW_AT_decl_line 0x0010 DW_AT_type 0x44b8 Here is the DWARF4 doc for DW_TAG_template_alias http://www.dwarfstd.org/ShowIssue.php?issue=090112.1
[Bug debug/54773] no debug info generated for rvalue reference
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54773 --- Comment #2 from chihin ko chihin.ko at oracle dot com --- g++ 4.8.1 on Linux fixed the problem, but problem still exists in g++ 4.8.1 on solaris.
[Bug debug/57939] incorrect debug info of wchar_t
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57939 --- Comment #2 from chihin ko chihin.ko at oracle dot com --- Yeah, difference version of gdb resulting different behavior: On Red Hat Enterprise Linux Server release 5.4 (Tikanga) GNU gdb Fedora (6.8-37.el5) (gdb) p L $1 = 98 gcc version 4.7.2 (GCC) On Oracle Linux Server release 6.3 GNU gdb (GDB) Red Hat Enterprise Linux (7.2-56.el6) gcc version 4.7.2 (GCC) (gdb) p L $1 = 98 L'b' so newer gdb work around compiler's problem. OK you can close this IZ now.
[Bug c++/60948] New: incorrect debug info for reference type of function parameters
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60948 Bug ID: 60948 Summary: incorrect debug info for reference type of function parameters Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com cat t.cc #include stdio.h int f(int r) { r = r + 1; return r; } main(void) { int j = 99; int i = 99; printf(i = %d\n,i); printf(f(i) = %d\n,f(i)); printf(i = %d\n,i); return 0; } (dbx) stop at 11;run (2) stop at calls_with_refs.cc:11 Running: a.out (process id 14632) stopped in main at line 11 in file calls_with_refs.cc 11 int i = 99; (dbx) call f(33) == should have errmsg dbx: The ref () parameters to `f' cannot be literals - this is due to g++ generate wrong debug info for function f(int ), there is an extra const , f(const int ), if there is no const, then call f with constant e.g. f(33), is illegal, if there is const, then call f(33) is legal. There is an extra DW_TAG_const_type for parameter r of function f 20x0482 DW_TAG_formal_parameter DW_AT_name r DW_AT_decl_line 0x0003 DW_AT_type 0x048f ... ... 10x048fDW_TAG_const_type == should not have this TAG DW_AT_type 0x0494
[Bug c++/58178] variant function name was used for user defined constructor
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58178 --- Comment #9 from chihin ko chihin.ko at oracle dot com --- (In reply to Eric Botcazou from comment #8) The configure line for the compiler is needed on Solaris as well. Using built-in specs. COLLECT_GCC=/pkg/gnu/bin/g++-4.8.1-5.10 COLLECT_LTO_WRAPPER=/pkg/gnu/libexec/gcc/i386-pc-solaris2.10/4.8.1/lto-wrapper Target: i386-pc-solaris2.10 Configured with: ../gcc-4.8.1-src/configure --prefix=/pkg/gnu --with-as=/pkg/gnu/bin/gnu-as --with-gnu-as --enable-languages=c++,fortran,go,java --enable-shared --enable-shared --with-gmp=/pkg/gnu --with-mpc=/pkg/local --with-boot-ldflags=-R/pkg/local/lib:/pkg/gnu/lib --program-suffix=-4.8.1-5.10 Thread model: posix gcc version 4.8.1 (GCC)
[Bug c++/58198] duplicate codes generated for variant function and base function
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58198 --- Comment #2 from chihin ko chihin.ko at oracle dot com --- (In reply to Jakub Jelinek from comment #1) For book keeping of what? GCC before 4.7.0 are no longer supported. oracle solstudtio debugger dbx support gnu compiler v4.1 v4.5.2...etc, this is to show why dbx has problem with variant function.
[Bug c++/58178] variant function name was used for user defined constructor
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58178 --- Comment #3 from chihin ko chihin.ko at oracle dot com --- a.out execution does not have problem, it is the debugging support would have problem.
[Bug c++/58178] variant function name was used for user defined constructor
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58178 --- Comment #5 from chihin ko chihin.ko at oracle dot com --- Oracle Solaris 10 8/11 s10x_u10wos_17b X86 DW_AT_producer GNU C++ 4.8.1 -mtune=generic -march=pentium4 -g
[Bug c++/58178] variant function name was used for user defined constructor
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58178 --- Comment #6 from chihin ko chihin.ko at oracle dot com --- On Linux: pirandello 934 cat /etc/*release* Enterprise Linux Enterprise Linux Server release 5.4 (Carthage) cat: /etc/lsb-release.d: Is a directory Red Hat Enterprise Linux Server release 5.4 (Tikanga) /usr/bin/g++ -v Using built-in specs. Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=x86_64-redhat-linux Thread model: posix gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)
[Bug c++/58198] New: duplicate codes generated for variant function and base function
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58198 Bug ID: 58198 Summary: duplicate codes generated for variant function and base function Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com Created attachment 30675 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30675action=edit test case This problem was fixed after g++ 4.4, I file this bug is only for book keeping. test case was attached. pirandello 1017 nm a.out | grep mybase 00400528 T _ZN6mybase10mybasefuncEv 0040054e T _ZN6mybaseC1Ev === base function 0040053a T _ZN6mybaseC2Ev === variant function base function (_ZN6mybaseC1Ev) and variant function (_ZN6mybaseC2Ev) should have same addresses, but they're not. Use gdb to debug a.out, shows bpt stop in variant function instead of base function: (gdb) b mybase::mybase Breakpoint 1 at 0x400542: file base.cc, line 21. (2 locations) (gdb) run Starting program: /net/benjamin2.us.oracle.com/export/ws/jeanko/dinstall/maxirun/intel-Linux/pirandello-chko/results/Customlist_list.master.maxi/gplus_base.dbx,gcc/a.out Breakpoint 1, mybase (this=0x7fff1343ed50) at base.cc:21 21mybaseint = ; (gdb) disassemb $pc Dump of assembler code for function mybase: 0x0040053a mybase+0: push %rbp 0x0040053b mybase+1: mov%rsp,%rbp 0x0040053e mybase+4: mov%rdi,-0x8(%rbp) 0x00400542 mybase+8: mov-0x8(%rbp),%rax 0x00400546 mybase+12: movl $0x15b3,(%rax) 0x0040054c mybase+18: leaveq 0x0040054d mybase+19: retq End of assembler dump. (gdb) # disassemble base function address shows both functions has exact same codes (gdb) disassemb 0x40054e Dump of assembler code for function mybase: 0x0040054e mybase+0: push %rbp 0x0040054f mybase+1: mov%rsp,%rbp 0x00400552 mybase+4: mov%rdi,-0x8(%rbp) 0x00400556 mybase+8: mov-0x8(%rbp),%rax 0x0040055a mybase+12: movl $0x15b3,(%rax) 0x00400560 mybase+18: leaveq 0x00400561 mybase+19: retq End of assembler dump. (gdb)
[Bug c++/58178] New: variant function name was used for user defined constructor
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58178 Bug ID: 58178 Summary: variant function name was used for user defined constructor Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com test case: cat t.cc #include stdio.h struct base { int x; base() { x= 2;}; }; struct A { static int x; struct B :base{ void f() { x++; printf(x= %d\n,x); } }; }; int A::x = 12; main() { A::B z; z.f(); } /pkg/gnu/bin/g++ -R/pkg/gnu/lib -R/pkg/gnu/lib/amd64 -g t.cc mandelstam.us.oracle.com 2528 nm a.out | grep base [95]| 134548914|14|FUNC |WEAK |0|11 |_ZN4baseC2Ev base class has user defined constructor, I'm expecting _ZN4baseC1Ev from nm dump
[Bug debug/57939] New: incorrect debug info of wchar_t
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57939 Bug ID: 57939 Summary: incorrect debug info of wchar_t Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: chihin.ko at oracle dot com cat t.cc #include stdio.h void foo(wchar_t c) { printf(In foo(wchar_t) %d\n, c); } main() { wchar_t L = L'b'; } g++ -std=c++11 -g t.cc gdb a.out Breakpoint 1, main () at t.cc:7 7 wchar_t L = L'b'; (gdb) next 8 } (gdb) p L $2 = 98 == should be 'b' DW_TAG_base_type DW_AT_byte_size 0x0004 DW_AT_encoding DW_ATE_signed should be DW_ATE_unsigned_char DW_AT_name wchar_t
[Bug c++/56251] no DW_AT_const_value for static const member of a template class
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56251 --- Comment #2 from chihin ko chihin.ko at oracle dot com 2013-02-08 21:24:55 UTC --- How is it invalid ? it was compilable and runnable: benjamin2 906 /pkg/gnu/bin/g++ -v Using built-in specs. COLLECT_GCC=/pkg/gnu/bin/g++-4.7.1-5.10 COLLECT_LTO_WRAPPER=/pkg/gnu/libexec/gcc/i386-pc-solaris2.10/4.7.1/lto-wrapper Target: i386-pc-solaris2.10 Configured with: ../gcc-4.7.1-src/configure --prefix=/pkg/gnu --with-as=/pkg/gnu/bin/gas --with-gnu-as --enable-languages=c++,fortran --enable-shared --enable-shared --with-gmp=/pkg/gnu --with-mpc=/pkg/local --with-boot-ldflags=-R/pkg/local/lib:/pkg/gnu/lib --program-suffix=-4.7.1-5.10 Thread model: posix gcc version 4.7.1 (GCC) benjamin2 907 /pkg/gnu/bin/g++ -std=c++11 -R/pkg/gnu/lib t1.cc benjamin2 908 a.out tcc.value1 = 100 cc.value1 = 200
[Bug c++/56251] no DW_AT_const_value for static const member of a template class
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56251 --- Comment #4 from chihin ko chihin.ko at oracle dot com 2013-02-08 22:01:36 UTC --- Note, this is a const static member, the initialization is the definition, if I don't initialize it, I would get an Undefined symbol linking error. This code is valid.
[Bug c++/56251] New: no DW_AT_const_value for static const member of a template class
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56251 Bug #: 56251 Summary: no DW_AT_const_value for static const member of a template class Classification: Unclassified Product: gcc Version: 4.6.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: chihin...@oracle.com If a static const member is in template class, there is no DW_AT_const_value info, compare these tvalue/value 20x005a DW_TAG_member DW_AT_name value DW_AT_decl_file 0x0001 t.cc DW_AT_decl_line 0x0009 DW_AT_type 0x0069 DW_AT_external yes(1) DW_AT_declaration yes(1) DW_AT_const_value 200(as signed = -56) === const value 10x0069DW_TAG_const_type DW_AT_type 0x002c - 20x007a DW_TAG_member DW_AT_name tvalue DW_AT_decl_file 0x0001 t.cc DW_AT_decl_line 0x0005 DW_AT_type 0x0069 DW_AT_external yes(1) DW_AT_declaration yes(1) no const value 20x0087 DW_TAG_template_type_parameter DW_AT_name T0 cat t.cc #include stdio.h templateclass T0, class T1 struct TCC { static const T0 tvalue = 100; }; struct CC { static const int value = 200; }; int main() { CC cc; TCCint, int tcc; printf(tcc.value1 = %u \n, tcc.tvalue); printf(cc.value1 = %u \n, cc.value); }
[Bug debug/56236] New: incorrect debug info for decltype(nullptr)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56236 Bug #: 56236 Summary: incorrect debug info for decltype(nullptr) Classification: Unclassified Product: gcc Version: 4.6.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug AssignedTo: unassig...@gcc.gnu.org ReportedBy: chihin...@oracle.com g++ does not resolve decltype(nullptr) to base type nullptr_t, instead it generate following: 10x05d3DW_TAG_unspecified_type DW_AT_name decltype(nullptr) g++ should generate something like this: 10x05d3DW_TAG_base_type DW_AT_name nullptr_t DW_AT_encoding DW_ATE_boolean DW_AT_byte_size 0x0004 main() { int i; decltype(nullptr) np; np = 0; i = sizeof(np); }
[Bug c++/55785] New: gcc4.5.2 incorrect line # of caller for destructor
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55785 Bug #: 55785 Summary: gcc4.5.2 incorrect line # of caller for destructor Classification: Unclassified Product: gcc Version: 4.5.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: chihin...@oracle.com Created attachment 29024 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29024 c++ test case platform Solaris intel build command /net/gozo/sqe/tools/gcc/4.5.2/intel-S2/bin/g++ 002.cc -g (dbx) stop in stack::~stack (dbx) run Running: a.out (process id 13901) stopped in stack::~stack at line 73 in file 002.cc 73delete bottom; stack::~stack(this = 0x8044c90) called from function reverse_name (dbx) where =[1] stack::~stack(this = 0x8044c90), line 73 in 002.cc [2] reverse_name(name = 0x80511dc Honey), line 77 in 002.cc == should be line 87 [3] main(), line 96 in 002.cc gcc4.7 does not have this problem. This is due to gcc4.5.2 compiler generate extra line 77 in line table: a.out dwarfdump: 0x080510c8 [ 84, 0] NS 0x080510e3 [ 86, 0] NS 0x080510f4 [ 87, 0] NS 0x080510f7 [ 77, 0] NS == extra line 77 0x08051104 [ 88, 0] NS 0x0805110c [ 77, 0] NS == extra 0x08051121 [ 91, 0] NS compare the address 0x080510fd of call ~stack down below, the extra line 77 in line table, mess up the address/line mapping when doing command where. 87 return reverse; 0x080510f4: reverse_name+0x00b4:movl 0xfff0(%ebp),%ebx 0x080510f7: reverse_name+0x00b7:leal 0xffe8(%ebp),%eax 0x080510fa: reverse_name+0x00ba:movl %eax,(%esp) 0x080510fd: reverse_name+0x00bd:call ~stack [ 0x805102a, .-0xd3 ] 0x08051102: reverse_name+0x00c2:movl %ebx,%eax 88 } 0x08051104: reverse_name+0x00c4:addl $0x0024,%esp 0x08051107: reverse_name+0x00c7:popl %ebx 0x08051108: reverse_name+0x00c8:popl %ebp 0x08051109: reverse_name+0x00c9:ret 0x0805110a: reverse_name+0x00ca:movl %eax,%ebx 0x0805110c: reverse_name+0x00cc:leal 0xffe8(%ebp),%eax 0x0805110f: reverse_name+0x00cf:movl %eax,(%esp) 0x08051112: reverse_name+0x00d2:call ~stack [ 0x805102a, .-0xe8 ] 0x08051117: reverse_name+0x00d7:movl %ebx,%eax 0x08051119: reverse_name+0x00d9:movl %eax,(%esp) 0x0805111c: reverse_name+0x00dc:call _Unwind_Resume [PLT] [ 0x8050d64, .-0x3b8 ] 89
[Bug debug/54774] [4.4.4, 4.5, 4.6, 4.7] insufficient debug info for strong typed enum
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54774 chihin ko chihin.ko at oracle dot com changed: What|Removed |Added Summary|insufficient debug info for |[4.4.4, 4.5, 4.6, 4.7] |strong typed enum |insufficient debug info for ||strong typed enum --- Comment #3 from chihin ko chihin.ko at oracle dot com 2012-12-06 19:57:46 UTC --- This problem can trace back from gcc 4.4.4.
[Bug c++/55541] New: unable to see local variables due extra lexical block was generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55541 Bug #: 55541 Summary: unable to see local variables due extra lexical block was generated Classification: Unclassified Product: gcc Version: 4.6.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: chihin...@oracle.com There is a regression present gcc4.4.4: the compiler generates a bogus lexical block marker in the debug info, more precisely between the parameters and the local variables of functions. This is related to http://gcc.gnu.org/ml/gcc-patches/2010-08/msg02111.html This affect gdb/dbx behavior, that debugger users are not able to inspect local variable value when stop at } line of a function, for detail, please refer to gdb bugzilla http://sourceware.org/bugzilla/show_bug.cgi?id=14850 for following test cast int main() { int i; i = 10; } if I stop at } of main and print i, gdb gave error: tarting program: /home/chko/core/g++/g45/a.out Breakpoint 1, main () at t.cc:4 4 i = 10; (gdb) p i $1 = 0 (gdb) n 5 } (gdb) p i No symbol i in current context. (gdb) This is due to i was within DW_TAG_lexical_block: 10x0025DW_TAG_subprogram DW_AT_external yes(1) DW_AT_name main DW_AT_decl_file 0x0001 /tmp/t.cc DW_AT_decl_line 0x0003 DW_AT_type 0x0059 DW_AT_low_pc0x08050990 DW_AT_high_pc 0x080509a4 DW_AT_frame_baseloclist with 4 entries follows [ 0]lowpc=0xhighpc=0x0001DW_OP_breg4+4 [ 1]lowpc=0x0001highpc=0x0003DW_OP_breg4+8 [ 2]lowpc=0x0003highpc=0x0013DW_OP_breg5+8 [ 3]lowpc=0x0013highpc=0x0014DW_OP_breg4+4 DW_AT_GNU_all_call_sitesyes(1) DW_AT_sibling 0x0059 20x0042 DW_TAG_lexical_block DW_AT_low_pc0x08050996 DW_AT_high_pc 0x0805099d 30x004bDW_TAG_variable DW_AT_name i DW_AT_decl_file 0x0001 /tmp/t.cc DW_AT_decl_line 0x0004 DW_AT_type 0x0059 DW_AT_location DW_OP_fbreg -12 10x0059DW_TAG_base_type DW_AT_byte_size 0x0004 DW_AT_encoding DW_ATE_signed DW_AT_name int
[Bug debug/54773] New: no debug info generated for rvalue reference
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54773 Bug #: 54773 Summary: no debug info generated for rvalue reference Classification: Unclassified Product: gcc Version: 4.6.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug AssignedTo: unassig...@gcc.gnu.org ReportedBy: chihin...@oracle.com Created attachment 28318 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=28318 compileable c++ test case and dwarf dump for c++0x feature rvalue reference, g++ should generate DW_TAG_rvalue_reference_type, g++ generate DW_TAG_reference_type instead: see attachment for test cases: a.out.dw shows debug info for function void foo(int ii) are 20x0992 DW_TAG_formal_parameter DW_AT_name ii DW_AT_decl_file 0x0001 /net/benjamin2/export/ws/jeanko/ws/dbx_test/bugid/7189973/intel-Linux/t.cc DW_AT_decl_line 0x001b DW_AT_type 0x09a0 DW_AT_location DW_OP_fbreg -24 10x09a0DW_TAG_const_type DW_AT_type 0x09a5 10x09a5DW_TAG_reference_type DW_AT_byte_size 0x0008 DW_AT_type 0x0062
[Bug debug/54774] New: insufficient debug info for strong typed enum
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54774 Bug #: 54774 Summary: insufficient debug info for strong typed enum Classification: Unclassified Product: gcc Version: 4.6.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug AssignedTo: unassig...@gcc.gnu.org ReportedBy: chihin...@oracle.com Created attachment 28320 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=28320 compileable c++ test case and dwarf dump For strong typed enum, there is no type information: #include iostream enum UI: unsigned int { None = 0, Single = 1, Multiple = 0xU }; 126aa: Abbrev Number: 69 (DW_TAG_enumeration_type) DW_AT_name: UI DW_AT_byte_size : 4 DW_AT_decl_file : 1 DW_AT_decl_line : 3 DW_AT_sibling : 26cc Should have a DW_AT_type : unsigned int type under DW_TAG_enumeration_type