Release 3.1 is available

Release 3.1 of the GNU HC11/HC12 port is now available.
It is available as source and binary for GNU/Linux and Windows.

It contains the following fixes and improvements:

Gcc
* Upgrade to gcc 3.3.6
* Fix [bug #15493]: Code generation problem on 68HC12
* Fix [bug #13917]: Bug in gcc 3.0.1. Error with pre-decremented pointer array and -Ox switch
* Fix [bug #13879]: gcc gets a bus error upon compiling a file with -mshort and -O2

Gdb
* Upgrade to gdb 6.4

This is available on the following sites:

http://m68hc11.serveftp.org/m68hc11_port.php
http://www.gnu-m68hc11.org

and also on anonymous ftp server:

ftp://m68hc11.serveftp.org/pub/m68hc11/gnu

Please, file any bug report on http://savannah.gnu.org/bugs/?group=m68hc11

Enjoy and have fun,

Stephane

Problems using release 3.1 with uTasker

Hi, I`ve been trying to compile uTasker 1.3 (www.utasker.com) for my Freescale NE64 board with GNU release 3.1, and it seems there is something wrong.
uTasker is in c:\uTasker
and the compiler is in c:\usr

When i attempt to compile uTasker by using:


C:\usr\bin\m6811-elf-gcc -IC:\uTasker\Applications\uTaskerV1.3 -D _HW_NE64 -D _GNU -g -Os -m68hcs12 -mshort -Wl,-m,m68hc12elfb,--defsym,vectors_addr=0xff80 -Wl,--no-gc-sections -nostartfiles -o uTaskerV1.3.elf ..\..\..\uTasker\uTasker.c ..\..\..\uTasker\driver.c ..\..\..\uTasker\eth_drv.c ..\..\..\uTasker\watchdog.c ..\..\..\uTasker\umalloc.c ..\..\..\uTasker\GlobalTimer.c ..\..\..\uTasker\uFile.c ..\..\..\uTasker\low_power.c ..\..\..\uTasker\uNetwork.c ..\..\..\Hardware\NE64\NE64.c ..\..\..\uTasker\tty_drv.c ..\..\..\uTasker\iic_drv.c ..\..\..\stack\ethernet.c ..\..\..\stack\arp.c ..\..\..\stack\ip.c ..\..\..\stack\ip_utils.c ..\..\..\stack\icmp.c ..\..\..\stack\udp.c ..\..\..\stack\tcp.c ..\..\..\stack\smtp.c ..\..\..\stack\dns.c ..\..\..\stack\ftp.c ..\..\..\stack\http.c ..\..\..\stack\telnet.c ..\..\..\stack\dhcp.c ..\..\..\stack\webutils.c ..\webInterface.c ..\application.c ..\debug.c ..\NetworkIndicator.c ..\KeyScan.c ..\LCD.c crt0.s

I`m getting this results:

C:\usr\bin\..\lib\gcc-lib\m6811-elf\3.3.6-m68hc1x-20060122\..\..\..\..\m6811-elf\bin\ld.exe: region text is full (uTaskerV1.3.elf section .text)
C:\usr\bin\..\lib\gcc-lib\m6811-elf\3.3.6-m68hc1x-20060122\..\..\..\..\m6811-elf\bin\ld.exe: section .rodata [00004000 -> 000056eb] overlaps section .text [00004000 -> 00010743]
C:\usr\bin\..\lib\gcc-lib\m6811-elf\3.3.6-m68hc1x-20060122\..\..\..\..\m6811-elf\bin\ld.exe: section .data [000056ec -> 0000571b] overlaps section .text [00004000 -> 00010743]
C:\usr\bin\..\lib\gcc-lib\m6811-elf\3.3.6-m68hc1x-20060122\..\..\..\..\m6811-elf\bin\ld.exe: section .vectors [0000ff80 -> 0000ffff] overlaps section .text [00004000 -> 00010743]
collect2: ld returned 1 exit status
C:\usr\bin\..\lib\gcc-lib\m6811-elf\3.3.6-m68hc1x-20060122\..\..\..\..\m6811-elf\bin\ld.exe: region text is full (uTaskerV1.3.elf section .text)
C:\usr\bin\..\lib\gcc-lib\m6811-elf\3.3.6-m68hc1x-20060122\..\..\..\..\m6811-elf\bin\ld.exe: section .rodata [00004000 -> 000056eb] overlaps section .text [00004000 -> 00010743]
C:\usr\bin\..\lib\gcc-lib\m6811-elf\3.3.6-m68hc1x-20060122\..\..\..\..\m6811-elf\bin\ld.exe: section .data [000056ec -> 0000571b] overlaps section .text [00004000 -> 00010743]
C:\usr\bin\..\lib\gcc-lib\m6811-elf\3.3.6-m68hc1x-20060122\..\..\..\..\m6811-elf\bin\ld.exe: section .vectors [0000ff80 -> 0000ffff] overlaps section .text [00004000 -> 00010743]

And no .elf file is created so I can do any further work.
I`ve tried this on 2 different PCs using Windows XP, and I keep getting the same error. uTasker`s developer assured me that his code is not the problem. What am I doing wrong?
Thank you

C++ and STL (libstdc++) and gcc-4

Is there a specific reason why the C++ support lacks the C++ standard library (STL)?
Or is just nobody using C++ on HCS12?

I'll try rebuilding the toolchain with full C++ support.
For my project, I would require certain parts of the Boost libraries.

Is gcc 4.1 expected to work, and an actual release of binutils, or would that require patches?

Thanks for any help,

-wolfi

Problem with release 3.1 of GCC 68HC11 and Windows Vista Pro

Hi,

I've downloaded and install gnu-68hc1x-3.1.exe on my Vista system, in c:\progra~1\68hc11 (I've also tested in c:\usr) directory.

I set up PATH variable correctly (by adding the \bin directory to path).

But when I compile a project with EmbeddedGNU 0.93 (or in a DOS box with a command line like "m6811-elf-gcc -m68hc11 -Os -fno-ident -fno-common -fomit-frame-pointer -mshort -fsigned-char -c prog.c"), I get always the same error:

m6811-elf-gcc: installation problem, cannot exec 'cc1': No such file or directory

I don't understand this error; have you an idea ?

Thanks.

Re: Problem with release 3.1 of GCC 68HC11 and Windows Vista Pro

I added to a new PATH user environment variable the following string :

C:\Program Files\68hc11\bin;C:\Program Files\68hc11\m6811-
elf\bin;C:\Program Files\68hc11\lib\gcc-lib\m6811-elf\3.3.6-m68hc1x-
20060122

and now it works !

But I think that it would be better to have a GCC patch for Vista
system because I use more than one GCC cross-compiler (68HC11 and ARM
target) and I wonder me if the compiler will be able to use the
correct 'cc1' and 'as' binaries...

What about managing banks

I'm seeing a large number of people expecting or hoping GCC will automatically fill PPAGE memmory banks. I wonder if this is in your plans.

IMHO, begin this feature by providing virtual memory regions, which say for example that the virtual region ".fartext" consists of real regions ".bank1" and ".bank2". Then the linker uses each of those two in that order if there is space available for each function or data. I wonder how similar the overlay mechanism might be.

I wonder if there are other GCC targets dealing with this sort of memory bank management.

Proposal for improvement

I do not know whether this is the right place to put this request.

Because I want to use a multi tasking OS I need to know where the soft registers are (and how many bytes they occupy). They must be saved during task switching.

I propose to change the ldscript, like this (add the __softregs_section_start, __softregs_section_end en __softregs_section_size symbols, analogously to __bss..). I do not understand the PROVIDE keyword in the script, maybe it is needed, maybe not. And perhaps the new symbols should be included in some header file?

Extract of my ldscript:
{
*(.page0)
__softregs_section_start = .;
*(.softregs)
__softregs_section_end = .;
} > page0
__softregs_section_size = SIZEOF(.softregs);
/* Start of text section. */
.stext :

Carl van Denzen

Re: Proposal for Improvement

This is a very good idea.

Indeed, I will also use it for the setjmp/longjmp implementation that must save/restore the soft registers. But not all of them in fact. Anyway, this is a good way to identify the size of what must be saved.

Thanks