Release notes


core, RTS and LibGCC last version: 0.2 - 21/01/2021

- Makefile is now optimized and does not perform a bind phase every time; note, this
requires an updated gnat-wrapper, please download a fresh copy of the toolchain

- Makefile "all-clean" target renamed as "distclean" (and so do all variables
starting with "ALL_CLEAN...")

- Makefile: added GNATLS tool, deleted unnecessary variables, added .h dependencies
in clibrary build, deleted C++ toolchain variables in

- Makefile: double-quoted some file references which lead to errors if SweetAda lays
in a path directory which contains spaces

- there is a new "share" directory, which contains various auxiliary files, in
order to centralize sparse and/or duplicated files

- AVR ATmega328P targets specify now an emulation mode during linking objects so that
the final ELF object has correct flags; this prevents, e.g., QEMU-AVR from exiting

- QEMU-AVR: startup.S #undef's __AVR_ENHANCED__ because QEMU isn't yet able to
fully emulate ELPM instructions

- new target STM32F769I (disco) ARM-CortexM7; only able to blink a LED (needs OpenOCD
to communicate with the target from inside SweetAda)

- PC-x86-64 uses Tcl scripts for FD/HD booting in QEMU

- upgraded SPARCstation5 and DECstation5000, which missed the new $(SYMLINK) script

- Dreamcast target produces a CD-ROM image suitable to create a physical CDI

- S/390 can IPL SweetAda from DASD devices (thanks to Hercules' DASDLOAD -- you need it)

- S/390 createtxtrecord.tcl script now renamed as S360obj.tcl

- typos, cosmetics and minor adjustments


core, RTS and LibGCC last version: 0.1h - 05/01/2021

- There is now a primitive SFP (Small-FootPrint) runtime, does nothing very interesting
so far, only allows non-trivial exception declarations and floating-point validation;
when I will implement the Secondary Stack, things should start to be far better

- RTS and PROFILE items are now lowercased, as well as RTS directory names

- RTS for MIPS* targets is tuned with -G0, you should use this in your target compiler

- RTS for SH* targets is tuned with -fno-leading-underscore, you should use this in
your target compiler setup

- the Bits library unit now exposes BigEndian and LittleEndian static booleans

- new procedure Print (Interfaces.C.char) in Console library unit

- Tcl will be the default scripting language for complex tasks, it is strongly advised
to install it in your machine (Windows users could download the package)
since script files will be gradually replaced, at least those too heavy for a shell

- as just said, the "createtxtrecord" tool in S/390 and the scripts for the creation of
bootable PC floppy/hard disk images are now written quick-and-dirty in Tcl, but they
should be widely usable and requires no external OS utilities support

- IDE driver sets LBA mode, and FAT (read-only) works with LBA logical sectors

- MBR library unit to recognize partitions (very minimal, only 1st partition detected)

- menu.bat now shows automatically an usage if an incorrect action was supplied

- libutils provides a createsymlink shell script to create symbolic (soft) links in
an OS-transparent way, use it by referencing $(CREATESYMLINK) in the Makefiles; this
substitutes a physical copy of files in non-Linux machines during subplatform-specific
installation; however, in Windows machines it requires PowerShell elevation rights
in order to avoid bloated warning messages, so adjust your OS settings; the good news
are that is now possible to edit subplatform-specific files without lose your changes
whenever you restart from scratch with a "createkernelcfg" build cycle

- Makefile cleanups, there are no scattered shell-dependent bloated constructs,
except for the trivial ones, and they are now concentrated logically in few places;
the build system should tolerate even spaces in pathnames (very bad practice, though)

- delete unnecessary functions and variables in Makefiles

- reordering of gnat1 debug switches in, corrected -gnatdt switch

- reordering of configuration dump in Makefile

- reordering/deletion/tuning of compiler switches in various platforms

- new target MSP432P401R, very minimal, only blinks the on-board LED

- DE10-Lite NiosII target now performs stack setup and calls the low-level adainit
function in startup.S, so that proper runtime elaboration happens

- AVR targets can now use aggregates (see explanation below)

- ArduinoUno does not specify the path to AVRDUDE executable, this is now
delegated to the run script

- the S/390 target specifies a correct emulation mode in linking objects so that
there are no more problems during processing

- typos, cosmetics and minor adjustments


core, RTS and LibGCC last version: 0.1g - 15/11/2020

- new toolchains: Binutils 2.35, GCC 10.2.0, GDB 10.1
- some aspects changed due to better Ada front-end compiler analysis
- echo_log() and echo_log_error() renamed to log_print() and log_print_error() in Bash scripts
- general cleanup and cosmetics
- fixed executables in QEMU emulators for Linux (AArch64, ARM, AVR, i386 and M68K targets)
- added missing libffi-6.dll to all QEMU emulators for Windows
Note that Insight has still GDB @ 9.1, and will overwrite the standard GDB executable


core, RTS and LibGCC last version: 0.1f - 17/08/2020

- general cleanup and cosmetics
- general infrastructure improvements
- the VGA text driver is now unified across platforms; it is actually used by PC-x86, PC-x86-64 and MIPS Malta
- the ugly handling of network packets (Amiga/FS-UAE and PC-x86) is re-routed to a PBUF FIFO handler (the management is still far from ideal, but is not tied to the ISR like before)
- various I/O have now correct aspect specifiers; in particular some hardware registers with specific sizes are now correctly handled without premature optimizations
- AVR is now part of SweetAda and so 2 platforms exist: ArduinoUno and a QEMU emulator (both ATmega328P);
the AVR support is primitive and incomplete, but, with an ArduinoUno board, is sufficient to start up the Ada infrastructure and is able to blink the on-board LED;
note that programming is performed by means of the AVRDUDE tool, so you should use a version suitable for your environment;
otherwise you could use the IHEX .hex output file with your preferred tool;
the QEMU-AVR platform can be used with GDB or Insight to trace the execution of code;
- runsweetada and IOEMU library now correctly show in argv dumps the launched executable instead of a "NULL" tag
- the parser inside the IOEMU library now expose in the .cfg file a variable (__LASTPID__) that carries the PID of the last launched executable (see QEMU-AVR/qemu.cfg)

QEMU emulators build 20200817 - 17/08/2020

- QEMU version 5.1.0; please note that the Linux version is linked with the SDL2 library instead of the previous GTK+3


core last version: 0.1e - 22/07/2020

- general cleanup and cosmetics
- general infrastructure improvements
- QEMU-RISC-V-32 target can do serial output in a terminal
- IntegratorCP target uses LCD VGA
- Malta MIPS target uses a VGA PCI board
- handling of directories in the cpus hierarchy, which allows selective unit overriding
- Insight can be called as a toolchain component
- IOEMU configuration files are now fully consistent


QEMU emulators build 20200714 - 14/07/2020

- QEMU now prints to stdout the IOEMU I/O ports, along with their addresses
- QEMU for OS X doesn't need a separate /usr/local/lib hierarchy, .dylibs libraries
are installed in the sibling lib/ directory of <prefix>/bin, so it is now self-consistent


core last version: 0.1d - 12/07/2020

- general cleanup
- cosmetics and more standardized ioemu.cfg files
- PowerPC Taihu target has more pleasant interrupt handling (still very primitive)
- ML605 MicroBlaze target has more pleasant interrupt handling (still very primitive)
- PC-x86-64 QEMU target has a kludge to overcome problems with QEMU movdqa instruction