June 12, 2013
http://bugzilla.gdcproject.org/show_bug.cgi?id=62

Johannes Pfau <johannespfau@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |johannespfau@gmail.com

-- 
Configure bugmail: http://bugzilla.gdcproject.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.
February 17, 2014
http://bugzilla.gdcproject.org/show_bug.cgi?id=62

Johannes Pfau <johannespfau@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID

--- Comment #1 from Johannes Pfau <johannespfau@gmail.com> 2014-02-17 11:58:24 GMT ---
This is a bug in libbacktrace, reported here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60240



Iain, what was the reason we don't mark nested function declarations as TREE_PUBLIC again? It seems GCC only emits the mangled name into debug info for public functions.

Test case:
-----------
void main()
{
    void a()
    {
    }
    a();
}
-----------

compile with
gdc test.d test.d -c -g
objdump -W test.o > dwarf.info

Search for "test.main.a". Then you'll see there's a DW_TAG_subprogram with "DW_AT_name" set, but "DW_AT_linkage_name" is not set.

The TREE_PUBLIC check is in "dwarf2out.c:add_linkage_name":
  if (debug_info_level > DINFO_LEVEL_TERSE
      && (TREE_CODE (decl) == FUNCTION_DECL || TREE_CODE (decl) == VAR_DECL)
      && TREE_PUBLIC (decl)
      && !DECL_ABSTRACT (decl)
      && !(TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl))
      && die->die_tag != DW_TAG_member)
    {

-- 
Configure bugmail: http://bugzilla.gdcproject.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.