<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'><div style="text-align: left;">What does "mapped" mean here?<br><br>The way it works, on Modula-3 NT386, and I haven't seen this done quite this way ever on Win32, not so systematically/mechanically/automatically, and I don't know how Posixish systems work here, but the way it works is that for every .dll, CM3 NT386 builds foo.lib and foo.lib.sa.<br><br>foo.lib is an "import lib", just containing essentially function names and a file name.<br>foo.lib.sa is a regular old static .lib, sa for standalone.<br><br>You can also just build a static .lib -- for stuff that is never a .dll, for stuff that is only used once, but is broken up into multiple directories.<br>For example m3quake, m3middle, m3objfile, m3back, etc. They are only used by cm3 so are just static .libs, just foo.lib, are built.<br>(If we fix cm3.exe to be copy over itself, and I have some new clever ideas here, it might be profitable, for "developer productivity", to turn these into .dlls -- just so I can cd around and rebuild/reship less.)<br><br>When you ask to build a standalone executable, we have a list of .libs, foo.lib, bar.lib. They are full paths.<br>For each one, we see if foo.lib.sa exists, and if so, we use that instead of foo.lib.<br><br>It is all rather simple and clever, but at least to me, it was surprising and new, so I explain it here.<br>Perhaps Posixish systems work very similarly and this is old hat?<br>I know cm3 doesn't implement this for Posix, but ar/ld/gcc could be handling things this way underneath for it.<br><br>For example, I know on Mac OS X, if you link to a full path to a file, that's what you get.<br>But if you say -Ldirectory -lfoo, ld probes for directory/foo.dylib and then directory/foo.a.<br>So modulo the extensions and unknown to me how you build the things in the first place, same thing.<br>You have to be sure to use the setting to split lib paths like that, otherwise you break dynamic linking.<br><br>CM3 makes foo.sa.lib with its own mklib. This is also unusual. Normally one would use lib.exe or link.exe /lib for this,<br>or ar/ld/gcc/dlltools. But the CM3 folks were obviously, openly en route to cutting dependencies through<br>reimplementation.<br>I had some initial trouble on NT385GNU building static .libs with ar/ld/gcc/dlltool, so, heck, I just do what NT386 does, and<br>it seems to be working (modulo that SOMETHING is not working :) ).<br><br>I don't want to stop anyone else from debugging this but if nobody else figures it out I will try.<br>I can repro it easily, thanks for the good repro Randy! (though I wish it would crash instead of mis-display :) )<br><br>There is no "vendor's equivalent library" here, it is all just Modula-3 foo.lib or foo.lib.sa.<br>Look at NT386/*.txt, by the .exe.<br>Build one way.<br>Rename away NT386.<br>Build the other way.<br>Compare the directories.<br>You will see what I am talking about.<br><br> - Jay<br></div><br><br><blockquote><hr id="EC_stopSpelling">Date: Sat, 19 Jan 2008 21:12:37 -0500<br>From: rcoleburn@scires.com<br>To: hosking@cs.purdue.edu; wagner@elegosoft.com<br>CC: m3devel@elegosoft.com<br>Subject: Re: [M3devel] my status on win32<br><br>
<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<meta name="Generator" content="Microsoft SafeHTML">
<div>Hi Tony:</div>
<div> </div>
<div>Are you suggesting that when the program is built standalone it maps libraries differently? I know there is a difference between dynamic vs. static libraries, but are you suggesting that a different library is being mapped than the vendor's equivalent of the dynamic library? How would I check for this situation?</div>
<div> </div>
<div>Your suggestion seems plausible since the source is not recompiled; instead, the linker is used to change the way the EXE is put together and that seems to cause the difference in operation as far as pixmaps are concerned.</div>
<div> </div>
<div>Regards,</div>
<div>Randy<br><br>>>> Tony Hosking <hosking@cs.purdue.edu> 1/19/2008 6:47 PM >>><br>I would perhaps suspect a bad library mapping.<br><br>On Jan 19, 2008, at 2:48 PM, Olaf Wagner wrote:<br><br>> Quoting Randy Coleburn <rcoleburn@scires.com>:<br>>> 1. pixmaps aren't rendered properly on the screen. They look really<br>>> bad. I recall having this problem a while back with one of the early<br>>> 5.x releases, so I guess it was never solved. I've got some old test<br>>> programs I try to dig out and see if I can find out what is going <br>>> on. I<br>>> seem to recall that building standalone in the past seemed to fix the<br>>> problem, so this is a real mystery.<br>><br>> Hi Randy,<br>><br>> I'm afraid I wasn't able to solve it directly some years ago and<br>> then forgot about it due to more urgent tasks.<br>><br>> I think we should try to narrow down the location of the problem<br>> (i.e. is it in the runtime, code generation, linker, or windows<br>> libraries).<br>><br>> As you still have the 4.1 code of the Windows libraries, could you<br>> first try to build them with the new compiler and see if it makes<br>> a difference if you link against them?<br>><br>> It may also be worthwhile to compare the commands actually used<br>> for linking (use -commands). That is, before we turn to the actual<br>> generated code...<br>><br>> I still haven't got Windows access here, so I can just suggest what<br>> to do...<br>><br>> Olaf<br>> -- <br>> Olaf Wagner -- elego Software Solutions GmbH<br>> Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, <br>> Germany<br>> phone: +49 30 23 45 86 96 mobile: +49 177 2345 869 fax: +49 30 23 <br>> 45 86 95<br>> <a href="http://www.elegosoft.com/" target="_blank">http://www.elegosoft.com</a> | Geschäftsführer: Olaf Wagner | Sitz: <br>> Berlin<br>> Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: <br>> DE163214194<br>><br><br><br></div>
</blockquote><br /><hr />Helping your favorite cause is as easy as instant messaging. You IM, we give. <a href='http://im.live.com/Messenger/IM/Home/?source=text_hotmail_join' target='_new'>Learn more.</a></body>
</html>