Optlink is on github

deadalnix deadalnix at gmail.com
Wed Mar 6 21:04:29 PST 2013


On Thursday, 7 March 2013 at 01:25:02 UTC, Walter Bright wrote:
> Some months ago, I did make the source to optlink available on 
> github:
>
> https://github.com/DigitalMars/optlink
>
> Rainer Schuetze has improved it where it can be built with 
> modern tools (the older tools would not run on Win7). I know 
> some of you are frustrated by optlink problems. Well, now you 
> can do something about it!
>
> Note that the optlink source is quite a challenge to work on. 
> It's very old skool (80's style).
>
> Here's an approach that I've used successfully to fix optlink 
> seg faults:
>
> 1. Find out where in the source code it is. This is not so 
> easy, even if using a debugger. The trouble is the asm 
> functions do not have standard stack frames, so the debugger 
> cannot do a stack trace. Even where there is a standard stack 
> frame, the modern Microsoft debuggers fail to recognize them. 
> You gotta use an older debugger under Windows XP.
>
> So, what I do, is look at the asm code where the seg fault 
> occurs, and then grep through the asm source till I find it.
>
> 2. Convert the source file where the seg fault occurs to C. I 
> do this one function at a time, running the full set of tests 
> at each step. Otherwise, it's just impossible to figure out 
> where you made a mistake in the conversion. Sometimes, you 
> gotta go even finer grained - using the inline assembler 
> feature of dmc to convert asm code line by line.
>
> You gotta pay very, very close attention to which registers 
> have parameters passed through them, which registers are saved, 
> and which registers have parameters that are silently passed 
> through a function to callees of that function (!). This 
> information is all pretty much utterly lacking in the comments, 
> and the comments are often dead wrong as they refer to much 
> older versions of the code.
>
> 3. Once it is in C, things get a lot easier. You can, for 
> example, insert printf's to figure out where things go wrong, 
> and *then* fix it.
>
>
> The full test suite for optlink has a lot of stuff I cannot 
> publish on github. However, what you can do is run the win32 
> tests for dmd. I, of course, will run the full one when 
> verifying pulls.
>
> Happy hacking!

It sound like a nightmare. What is the reason in the first place 
to use optlink ? Isn't it possible to use another linker ?


More information about the Digitalmars-d mailing list