www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 463] New: private module members have global bindings instead of local ones

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=463

           Summary: private module members have global bindings instead of
                    local ones
           Product: D
           Version: 0.170
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Keywords: link-failure
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: thomas-dloop kuehne.cn


http://www.digitalmars.com/d/attribute.html
 Private means that only members of the enclosing class can access
 the member, or members and functions in the same module as the
 enclosing class. Private members cannot be overridden. Private
 module members are equivalent to static declarations in C programs.

=== d.d === private void foo(){ } ====== dmd -c d.d readelf -s d.o
 Symbol table '.symtab' contains 11 entries:
 Num:    Value  Size Type    Bind   Vis      Ndx Name

  10: 00000000     5 FUNC    GLOBAL DEFAULT   12 _D1a3fooFZv

=== c.c === static void foo(){ } ====== gcc -c c.c readelf -s c.o
 Symbol table '.symtab' contains 11 entries:
 Num:    Value  Size Type    Bind   Vis      Ndx Name

   5: 00000000     6 FUNC    LOCAL  DEFAULT    1 foo

This becomes a problem if a private function with C calling convention is defined: === bug.d === private extern(C) void foo(){ } ====== dmd -c bug.d
 Symbol table '.symtab' contains 11 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name

 10: 00000000     5 FUNC    GLOBAL DEFAULT   12 foo

The last line should have been
 10: 00000000     5 FUNC     LOCAL DEFAULT   12 foo

--
Oct 26 2006
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=463


Andrei Alexandrescu <andrei metalanguage.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |andrei metalanguage.com
         AssignedTo|nobody puremagic.com        |bugzilla digitalmars.com


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 26 2010