GCC-M68k Binaries for Win95/NT ============================== Release 4 : Initial Release --------------------------- Upgraders --------- This file contains details about what has changed or been improved since the last release(R3) of the compiler. The major change is the move from the fairly unstable and difficult to maintain GNU-Win32 source to the publicly available Experimental GNU Compiler System(EGCS)(pronounced "eggs"). This gives ColdFire users a number of benefits: the ability to report bugs properly(either to me or to egcs-bugs@cygnus.com directly), a Standard C++ library with support for IOStreams, etc and a C++ compiler to go with it and a better all round optimising C compiler. For other m68k users there is now proper "multilib" support so you dont have to use a ColdFire C library or build your own you just specify the processor and the compiler picks the correct libraries. Contact ------- Feel free to contact me with any suggestions, nags or help. email: D.J.Fiddes@hw.ac.uk Web Address: http://www.calm.hw.ac.uk/davidf/coldfire.htm (Check here for an updated upgrade.txt) What do I have to change? ------------------------- New releases are all very well but they can break existing setups. Previous versions of the compiler have been pretty good about that...they were uniformly unfriendly. This version behaves a lot more like a UNIX/Linux version of gcc which can bring a few problems to the unwary. The main changes are: - Multilib support means that you now have to use m68k-coff-gcc(or g++) to link your programs rather than called m68k-coff-ld explicitly. To link for the ColdFire you would now call "m68k-coff-gcc -m5200 -Wl,-s - Wl,-n -Tsbc5206.ld -o hello.x hello.o" The processor type is specified so that the correct libraries are picked up. Make sure you put your .o files on the end of the link command otherwise strange errors will creep in. Libraries are now held in /gcc-m68k/m68k-coff/lib/m5200 instead of in /gcc-m68k/m68k-coff/lib/lib. - Another side-effect of multilib support is that the sbc5206.ld demmo linker script is now held in the same place as the libraries. You can either store your linker script there or do as you used to. - EGCS has introduced a number of new SECTIONS into object files which affects linker scripts. The most notable addition is the exception handling frame section (.eh_fram) which should be linked in just after all the .text sections thusly: *(.text) . = ALIGN(0x4); *(.eh_fram) . = ALIGN(0x4); The .gcc_exc frame is created by the C++ compiler. I'm not 100% sure what it is/does but I have linked it in the .data section. One other thing to note in the linker script is that you no longer need to put in a STARTUP(crt0.o) section as this is done automatically by gcc when it calls the linker. Have I missed anything? If you need to change anything when you upgrade from the old compiler then please let me know so I can update this document. Always check the web for the most up to date version of this document.