Changes between Initial Version and Version 10 of Ticket #220


Ignore:
Timestamp:
Mar 17, 2011, 11:21:27 PM (13 years ago)
Author:
bird
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #220

    • Property Cc dryeo added
    • Property Status changed from new to assigned
    • Property Summary changed from emxomf tries to export local (non-public) symbols to emxomf: long names in libraries gets the wrong dict entry and barfs
    • Property Milestone changed from to libc-0.6.4
  • Ticket #220 – Description

    initial v10  
    1 Recently I run into a situation when GCC 4.4.2 generated an N_EXP stub for a local symbol (having a name like _T.3032 to be precise) which is an emitted inline function (static member of a class defined as __declspec(dllexport)) in the object file.
     1~~~Recently I run into a situation when GCC 4.4.2 generated an N_EXP stub for a local symbol (having a name like _T.3032 to be precise) which is an emitted inline function (static member of a class defined as __declspec(dllexport)) in the object file.~~~
    22
    3 Given the resulting .obj file, emxomf created an OMF export record for this symbol but the linker (WLINK here) failed with the 'unresolved export' message when creating a DLL out of this .obj which is not a surprise because _T.3032 isn't public at all (lacks .globl in the assembler file). I understand that creating OMF export records for such local symbols will never succeed so I changed it to not do that which solved the problem  (the patch is attached).
     3~~~Given the resulting .obj file, emxomf created an OMF export record for this symbol but the linker (WLINK here) failed with the 'unresolved export' message when creating a DLL out of this .obj which is not a surprise because _T.3032 isn't public at all (lacks .globl in the assembler file). I understand that creating OMF export records for such local symbols will never succeed so I changed it to not do that which solved the problem  (the patch is attached).~~~
     4
     5emxomf-03-fix-symbol-too-long.diff: Make sure the stripped down symbol name is used not only when performing an AOUT to OMF conversion for a single object file but also when converting the whole object library. Prior to this fix, an unstripped version of the symbol would go to the OMF library's dictionary which caused the 'Symbol too long' error and program termination.