Mail Archives: djgpp/2001/08/12/07:45:25
In article <3b755f56 DOT sandmann AT clio DOT rice DOT edu>, Charles Sandmann wrote:
>> The last thing is only a hack to avoid the real problem. I'd rather be able
>> to use the runtime library from the mainprogram.
>
> To do this you can either:
> 1) link with libc (-lc) if the routine is standalone and doesn't reference
> external data. For example, a string routine works here, but malloc()
> doesn't.
> 2) create a transfer vector for the "call back" routines/data and have the
> loader fill them in.
This is what I do now, except that I link with a minimized FPC RTL, and not
the full. This is better smartlinkable.
>>
>> Then, the DXE loader routine must open the COFF binary for stabs, and try to
>> calc an address for the missing symbols, and use it to relocate and link the
>> missing symbols (both from mainprogram + libc/rtl) with the DXE.
>
> This requires the symbol table not be stripped from the image. If the image
> is stripped it fails. The transfer vector approach works even with stripped
> images.
Yes I know. But I could make a custom strip that kills unnecessary stab
info, and then mutates the binary so that it isn't strippable with a
standard strip.
(and yes, I know that is not ideal from a compability viewpoint, but DXE is
for specialistic purposes anyway.
>> If the DXE loader can't load (e.g. because the bin is stripped) the DXE load
>> will fail. Because of the change magic, one loader can be used.
>>
>> Does this all pass a theoritical sanity check? Afaik it does, at least I
>> know that I can find the symbol for an address in stabs, what about the
>> other way around.
>
> This could theoretically work, yes. Look at some of the other DXE/DLL tools
> in v2tk for examples.
So you can get an address for a mangled symbol in DJGPP too from a stab
binary?
Currently I have exams, but after them, I will pick this up, and hope to
have something running for FPC in september. Then I'll report back here, and
we can discuss an implementation that keeps compability between the two
compilers.
- Raw text -