Sun Jun 27 16:08:37 EDT 2010

New files uploaded

A new version of GCC6809 and the newlib C library have been uploaded.

Patch 3 is a minor update that fixes a few very uncommon problems. It is mostly a cleanup of the 6809 backend, removing lots of unused code. Notable fixes are support for character strings that include non-ASCII characters and support for the GCC 'alias' attribute.

The newlib library was updated to patch 2 and fixes only one problem: the read() and write() system calls for the simulator were not returning success/failure correctly; this was sometimes causing printf() etc. not to behave correctly.

Regression tests have been run and no new problems have arisen. Users of GCC6809 patch 2 do not need to upgrade unless they need one of the new features. Users of newlib are encouraged to upgrade.


Posted by Brian Dominy | Permanent link

Fri Jun 4 10:47:45 EDT 2010

The power of git

I've revisited porting gcc6809 to newer versions of GCC, and made some progress. For months, I've not done much because the current GCC6809 4.3.4 release was good enough for my own purposes. A 4.4 port compiled but did not run well, and 4.5 didn't even compile. I struggled with this for a while and then gave up on it. Until I decided that I was handling branching incorrectly. I use git to manage my gcc6809 repositories. GCC uses Subversion but git can cope with this, so I'm able to merge my branches and the upstream branches. Unfortunately I haven't been doing a good job of that. When I started, I was a git newbie and I did a lot of things wrong. The biggest lesson has been that 'git rebase' is your friend, and it's worth taking the time to understand it and use it wisely. It's like playing with fire: it's dangerous and best used only when necessary, but there are definitely times when you must use it. So I spent the last several days completely rebasing my private branches into something more sane. The end result is much cleaner and showed some problems with the 4.4 and 4.5 branches, which I've been correcting. The end result is that a 4.4-based 6809 is no longer out of the realm of possibility. And 4.5 and even the mainline trunk now compile and mostly work, although with lots of regressions that will need to be fixed before they can ever be truly used. git did a lot of the hard work in getting these branches usable again. If you're not using git for your software projects, take a look at it sometime.

Posted by Brian Dominy | Permanent link

Tue Dec 8 15:15:24 EST 2009

Compiler activity slowing down

As most of you who have been tracking this have realized by now, not much is happening with GCC6809 at the moment. It's serving its original purpose for me quite well, and I don't have a strong desire to make many more changes to it going forward.

The core GCC 4.3.4 is a very stable compiler release; few relevant updates have occurred that warrant another GCC6809 release. GCC 4.4 continues to give me problems and I've basically abandoned it. I've spent enough time already debugging numerous code generator bugs, and there's no compelling reason for me to upgrade to GCC 4.4 anyway.

There are a few optimizations I've made since August which haven't been officially released yet; they are extremely minor. I will eventually roll them out, but existing users probably don't want to bother upgrading.

There is one experimental side project I've devoted some time to -- that of improving the support for 32-bit math. Current GCC6809 generates mostly correct but hideously inefficient code for this. I have an idea on how to fix it, but I can't make any promises. I will post an update as soon as I have more information.


Posted by Brian Dominy | Permanent link

Mon Aug 10 22:33:42 EDT 2009

What's new in GCC6809 4.3.4-1

It occurred me that I never posted a list of the changes in the new release.
  • Include all core GCC 4.3.4 bug fixes.
  • Updated to version 5.0.0 of the ASXXXX tools, which is now licensed under the GPL.
  • The GCC modifications are relicensed from GPLv2 to GPLv3.
  • The maximum line length accepted by the assembler tools has been increased from 80 characters to 256 characters.
  • The binutils wrapper scripts ar, as, and ld are now templates. They are converted into real, executable scripts when they are installed. This is done so that the scripts know which target type is being requested. Likewise, the as6809.conf file is obsolete.
  • The default linker address locations have changed. All code and data, except for the vector table, now defaults to address 0x10. Previously, different addresses were reserved for different types of objects. Now, they are all packed into a single section.
  • Updated the online manual and rewrote it in Texinfo.
  • Changed so that configure is not re-run everytime on Cygwin, since it is very slow.
  • Removed the Subversion-related scripts.
  • The default stack pointer under simulation is now 0xFE00.
  • Disable an optimization that was incorrect for interrupt handlers.
  • Improve tail-call optimization.
  • Updated many comments in the machine description.
  • Remove many of the inline comments in the generated assembly, that was only for debugging the compiler.
  • Add the bswaphi instruction for byte swapping a 16-bit entity (using the exg a,b instruction).
  • Fix code generation bug when optimizing two consecutive PSHS instructions.
  • Fix parallel computation.

Posted by Brian Dominy | Permanent link

Mon Aug 10 21:51:44 EDT 2009

GCC6809 4.3.4-1 released

The newest version of GCC6809 is now available online. This is a patch against the recently released GCC 4.3.4. If you have any problems, please let me know. This is a fairly stable upgrade and mostly fixes a lot of installation issues that people were having. It also upgrades the ASXXXX assembler tools from version 4.1 to version 5.0.

Posted by Brian Dominy | Permanent link