From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-0.9 required=3.0 tests=AC_FROM_MANY_DOTS,BAYES_00, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.5-pre1 X-Received: by 2002:ac8:6758:: with SMTP id n24mr587257qtp.258.1609868234303; Tue, 05 Jan 2021 09:37:14 -0800 (PST) X-Received: by 2002:a25:e646:: with SMTP id d67mr649249ybh.405.1609868234003; Tue, 05 Jan 2021 09:37:14 -0800 (PST) Path: eternal-september.org!reader02.eternal-september.org!news.gegeweb.eu!gegeweb.org!usenet-fr.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Tue, 5 Jan 2021 09:37:13 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=79.43.129.53; posting-account=JRF_-woAAABYlsAtkCl_CUxBuQy2SsaQ NNTP-Posting-Host: 79.43.129.53 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <4114fd92-2639-409b-8092-6a2eb0ed5e72n@googlegroups.com> Subject: SweetAda 0.1h released From: Gabriele Galeotti Injection-Date: Tue, 05 Jan 2021 17:37:14 +0000 Content-Type: text/plain; charset="UTF-8" Xref: reader02.eternal-september.org comp.lang.ada:61045 List-Id: Hi all. I've just released SweetAda 0.1h. SweetAda is lightweight development framework to create Ada systems on a wide range of machines. Please refer to https://www.sweetada.org. Release notes ------------- - 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 setup - 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 tcltk.zip 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 Makefile.tc.in, corrected -gnatdt switch description - 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 Quick notes ----------- As the release notes outlined, SweetAda should run on a bare 64-bit host system which supports, dependently on your target CPU setup, symbolic (soft) links and (optionally) Tcl/Tk. This is normal for Linux, Windows and OS X, so no concerns should arise. If you do not want to install the tcltk package I am providing from the SweetAda site, then download a package from your vendor, and specify the path to the tclsh executable in the top-level configuration.in. The reason behind this is promptly understood: Tcl is a long-time HL language used in industrial automation and is currently used as a scripting tool in large applications like Xilinx Vivado, Altera Quartus and others. Also OpenOCD uses an embedded version that drives its user interface, so it is at least adviseable to have a look, especially if you are working with SoC, embedded softcores or you are playing with JTAG programming on the bare metal. To use SFP, please change settings in the top-level configuration.in: RTS := sfp PROFILE := sfp USE_LIBADA := Y Remember, you can change RTS at your will after a "make clean" or "menu.[sh|bat] clean". Please do not rely on low-level layout of the filesystem hierarchies. When SFP runtime will be (hopefully) working, many files could be symlinks or separate units in order to switch between ZFP and SFPs. More precisely, low-level subprograms could start to declare private exceptions and interrupt-related RTS units, and this will prevent the use of a ZFP (which does NOT use anything from the compiler library, and this requires absolute care). About aggregates in AVR targets. The problem is, aggregates could be Ada static RO objects, and so the back-end can legitimately allocates them in the .rodata section. Historically, .rodata section is quite often linked together with the .text, but unfortunately, AVR is an Harvard machine with separate address spaces, and the .rodata section should stay together with data sections in an executable image. Relocating Flash ROM .rodata in RAM during startup obviously is a no-op. Placing .rodata in RAM prevents the read-only behaviour, though. The ideal solutions could be to place .rodata in EEPROM, but this introduces a level of complexity that I see of little concernment so far. So the current decision is to place .rodata in RAM, and warn you about try to overwrite static data (it will require intimate knowledge of dereferencing machine-code objects, furthermore, objects are nevertheless hardly traceable, and this a very esotic, non-Ada, non-sense bad practice, so trying to do that implies hugely problems in other areas). Last thing, as I've updated toolchains (without change timestamps), you are encouraged to re-download them, since exists the possibility that previous targets have problems in the GNAT/GCC wrappers, and do not emit compilation messages of dependent units during "brief", non-VERBOSE mode, as well as not generating Ada intermediate files nor assembler listing thereof. If you don't care about visual outputs or assembler analysis, simply ignore this. As usual, download the three packages core, RTS and LibGGC (since many changes are system-wide), and please save your work before overwrite the filesystem. Happy new year. G