This is the mail archive of the mailing list for the Cygwin XFree86 project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Enabling cygwin.rules/SharedLibFont

Alexander Gottwald wrote:

> Harold L Hunt II wrote:
> > Okay, do you want to look into why XWin.exe crashed on startup with the
> > shared version of the Xfont library?  Or, are you willing to let me
> > handle that?  :)
> First should be xfs working with the shared lib. I've tried the shared
> linked xfs and it failed. Relinking it with the static Xfont solved the
> problem. So there must be a big difference in the way how the libs are
> build.

Results of my closer look:

The stub library (libfntstubs) is required because the libXfont design
requires undefined symbols, which are defined in the program (eg ErrorF).
libfntstubs provides the functions as non-functional ones. the only consist
of the prototype and an return.

Some of the functions initalize global structures (RegisterFPEFunctions).
RegisterFPEFunctions is not defined in libXfont but in xfs. Unfortunatly
the dlls do not allow undefined symbols and the stub library is used, but
now the required initialisation of the global structures is not done.

As a fix I think of changing the stubs to use an indirect call:

func_type *_RegisterFPEFunctions = NULL;
int RegisterFPEFunctions(...) {
    if (_RegisterFPEFunctions == NULL)
        return 0;

and set it with code added to libXfont.dll.a which is linked staticly into
the program:

extern func_type *_RegisterFPEFunctions;

void __init() {
  _RegisterFPEFunctions = RegisterFPEFunctions;

But this still requires some days. I'm away for the next weekend.


NP: Terminal Choice - Flesh in Chains
--           ICQ: 126018723

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]