Re: Win32LIb/Llama Status

new topic     » goto parent     » topic index » view thread      » older message » newer message

David Cuny writes:
> Llama won't bind correctly, even with -clear_routines.
> I suspect the problem is that I have a bunch of include
> files with the same local function names - for example, "set".

Yes, that is likely the problem.

All programs that do not use routine_id() can be bound.
Most programs (e.g. win32lib.ew) that use routine_id()
can also be bound, using the existing bind program and
the -clear_routines option.
However, the bind program was designed long before
routine_id() was introduced, and there are some cases
that can't be handled.

After the Linux port, my top priority is to improve the
namespace situation, and part of that effort will involve
changes to the bind program, perhaps a major redesign.
That should allow binding to work for 100% of programs.

How the binder currently works:

The binder takes a multi-file program, consisting of a main
file and all necessary include files, and it converts it into
a single large file. In general, this shouldn't be possible if there
are local symbols in 2 different files that have the same name.
However, the binder changes all names to short,
meaningless names of it's own choosing. fred() in x.e
might be changed to aa(), while fred() in y.e might be changed
to bb(), so there's no conflict.

Now, suppose the programmer has routine_id("fred") in his
program. fred() has been changed to aa(), so this routine_id()
call is now wrong. The binder will issue a warning, and you
must rebind with -clear_routines. This will force the binder to
leave fred() in x.e and fred() in y.e unchanged. But now
when the second instance of fred is encountered, the binder
will issue a warning, and change the 2nd fred anyway,
in the hope that you aren't calling routine_id for the second fred().
If you ignore the warning, you can run, but things will likely fail.

In the redesign, I hope to get away from the concept
of creating "one" file. The source file
boundaries would be retained somehow, solving this
routine_id situation and making other features available,
such as the option to bind clear, unshrouded source, and
get proper ex.err dumps etc.

Regards,
     Rob Craig
     Rapid Deployment Software
     http://members.aol.com/FilesEu/

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu