Skip to content
  • Yaakov Selkowitz's avatar
    Fix _XtInherit on x86_64 Windows · 0c2c7562
    Yaakov Selkowitz authored and Jon Turney's avatar Jon Turney committed
    
    
    As noted in Initialize.c, _XtInherit needs special treatment as it's both called
    as a function, and used as a value to compare with.
    
    We need to change this trickery for x86_64, as the symbols are no longer
    underscore prefixed, and the address is 64 bits.
    
    We also cannot place the trampoline in the .data section, as it may be marked
    no-execute, so we use a special section for it instead.
    
    v2: Uses of XtInherit must also be marked dllimport, so that they do not use a
    thunk, but instead indirect via the __imp_XtInherit auto-import. This avoids
    problems with an incorrect relocation being calculated in the case where libXt
    and a library using it (e.g. libXaw/libXaw3d/libXm/etc.) are loaded more than
    2GiB apart from each other.
    
    This is enough to build a working libXt for Cygwin x86_64, because it uses the
    LP64 data model.  I believe that more patches are needed for libXt to work
    correctly when built for the Windows LLP64 data model.
    
    Signed-off-by: default avatarYaakov Selkowitz <yselkowitz@cygwin.com>
    Reviewed-by: default avatarJon TURNEY <jon.turney@dronecode.org.uk>
    Reviewed-by: default avatarColin Harrison <colin.harrison@virgin.net>
    0c2c7562