*** MOVED ***

NOTE: I have merged the contents of this blog with my web-site. I will not be updating this blog any more.

2004-10-27

New GCC C Parser

Lesser mortals take significantly longer than the mere week that Joseph Myers took to write a new recursive-descent C parser for GCC that accepts the same C language plus GNU extensions (a.k.a. "GNU C") as the existing one that uses Bison. :-/

(Originally posted on Advogato.)

2004-10-25

Jacks Migrated

Jacks has migrated to its new home within Mauve! Thank you Tom and Mark.

(Originally posted on Advogato.)

QEMU Rocks!

At work, we needed to test out our project on as many machines as possible, but we could not get access to enough machines that we could maul as and when we pleased. VMWare would have helped, but we didn't have enough licenses. Bochs was good but was too slow for practical purposes. Fortunately for us, we found QEMU and it fit the bill quite well. It has been written primarily by Fabrice Bellard and is quite fast and works surprisingly well - we could get an entire installation of Red Hat Enterprise Linux 3 Advanced Server running under QEMU without any problems!

For the adventurous, quite a few QEMU-ready images can be found at FreeOSZoo. QEMU also comes with a utility to convert VMWare disc images to the raw disc images used by both QEMU and Bochs. Very cool stuff and highly recommended! Thanks Fabrice!

(Originally posted on Advogato.)

2004-10-18

Jacks

Tom thinks that Jacks should be forked since development on it has stalled and no one seems to respond to any mails. Anyone checking out the Jacks CVS repository regularly or taking a look at the Jacks mailing list archives would also come to the same conclusion. Jacks is a fantastic testsuite but sadly has not kept up with the language constructs introduced in JDK 1.5 (or "Java 2 Version 5" or "Java 5" or whatever) and patches to fix this have been mostly ignored for some reason.

In fact, there seems to be a proposal to merge Jacks with Mauve. That would be really neat. I hope it is kept as a separate module within the Mauve CVS repository though, as compiler and runtime testsuites ought to be kept separate, in my opinion.

As an aside, I found that GCJX gives different results (as is to be expected) when run against Jacks and different values for the --source option. For example, the construct Object foo = 1; now seems to be valid due to automatic boxing. Perhaps Jacks should be modified to tailor the status of testcase executions based on the language level targetted by the compiler being tested. Or perhaps it can just target the latest language specification.

Talking of GCJX, a simple clarification I asked for on the GCC mailing list resulted in a big thread - thankfully, the patch I suggested to work around the issue was approved, so that the part of GCC used by GCJX can now be compiled by a C++ compiler once again.

(Originally posted on Advogato.)

2004-10-08

Corrupt RAM Modules

Once again, I have been bitten by bad RAM modules, this time in the Dell Optiplex GX270 machine I use at work. Memtest-86 was able to diagnose the problem after I spent almost a month wondering why programs randomly crashed on me and trying out all sorts of software updates.

(Originally posted on Advogato.)

GCJX

Tom has been having great sucesses with GCJX lately. He announced his intentions to start a branch on gcc.gnu.org to continue with its development. He also wanted to take suggestions for an alternative name for this project. The straightforward one in the grand hacker tradition of recursive acronyms would perhaps be "GING" for "GING Is Not GCJ" or maybe "GRAG" for "GCJ Rewritten As GRAG". Or perhaps "JAC4J" for "Just Another Compiler For Java", though that one almost looks like it has come from a marketroid.

(Originally posted on Advogato.)

2004-09-30

Doom 3 on Windows 98

The load at work has finally eased a bit and I can now actually get home in time! ~phew~
So I decide to try out a few game demos ("Doom 3", "Far Cry" and "Prince of Persia: Sands of Time") and finish the full version of "Uru" that had been abandoned when the mad rush to finish the project at work started.


While Far Cry and PoPSoT are gorgeous games, Doom 3 just refused to run on the Windows 98 that I have. Specifically, it needed "GlobalMemoryStatusEx" from kernel32.dll, which is available only in Windows 2000 and XP. Now I am not going to buy Windows 2000 or XP just to play the demo of a game.


Of course others have also faced the same issue but alarmingly people have just been editing the doom3.exe binary to zero out the "Ex" of "GlobalMemorysStatusEx" in the import table to match another function that is available on Windows 98. It seems to work for them, but is wrong because the former method returns a BOOL while the latter does not and the former takes in a struct of a different size altogether!


So using MinGW I wrote a simple dummy DLL named "mykrnl32.dll" which provided an implementation of GlobalMemoryStatusEx using GlobalMemoryStatus from the real kernel32.dll and forwarded all other calls to the real kernel32.dll. The forwarding bit was done by using "export forwarding" support in Windows Portable Executable files. (Interestingly, export forwarding is supported by MinGW's dllwrap tool but not by its "gcc -shared".) I then changed "kernel32.dll" in the import table of the doom3.exe binary to "mykrnl32.dll".


This got me past that particular failure, but I had to do a couple of more tweaks (none related to Windows 98 per se) to get it running. Suffice it to say that I did manage to get it running well enough in the end! So Doom 3 can run on Windows 98 (and perhaps 95 and ME), but doesn't because of some sloppy coding on iD's part - hey even libiberty in GCC knows how to do it right!

However, the game itself was a terrible letdown - it is so dark throughout the game and while the characters look detailed, their klunky contours are quite distracting! Far Cry is much better looks wise (but with terrible controls) as well as for playability (those enemies with their A.I.!) and PoPSoT is far more polished than either of these.


In any case, I enjoyed this little bit of hacking.


(Originally posted on Advogato.)

2004-09-10

GCC 4.0

So the next version of GCC will be numbered "4.0.0" after all! I was hoping this would happen and could never quite understand why some people were so against bumping the major version number.

(Originally posted on Advogato.)

2004-09-06

GCC and Stack Slot Coalescing

RTH does it again - GCC now has stack slot coalescing! This feature is especially important for the kernel developers.

(Originally posted on Advogato.)

2004-09-03

GCC

The pressure at work to meet the project deadline is not letting me spend any time on GCC hacking. :-(
A quick perusal of the lists show that some very exciting things are happening with GCC and with GCJ. GCC will soon be entering Stage 3 and a lot of people are working hard to get their stuff in before that. Jan Hubicka seems to be on a mission to reduce the memory taken up by GCC after the tree-ssa merge. Sebastian Pop has actually implemented loop interchanging for code that ought to have been written properly in the first place - I am happy that GCC is becoming smarter but sad that this would let sloppy code go unpunished.

Tom and Andrew are back at hacking furiously at the BC-ABI for GCJ while Michael has finally liberated GCJ from the clutches of a hacked automake. Bryce seems have taken on the role of the GCJ PR man while triaging (and fixing) a lot of GCJ bugs.

I can't wait to get back...

(Originally posted on Advogato.)