gcc-gnat x86 Clock broken in 3.13+
gcc-gnat appears to have broken Clock on x86 for alpine 3.13 and up.
Running an example display_current_time.adb from here it reports random time in x86 alpine 3.13 and up.
Example code:
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Calendar; use Ada.Calendar;
with Ada.Calendar.Formatting;
use Ada.Calendar.Formatting;
procedure Display_Current_Time is
Now : Time := Clock;
begin
Put_Line ("Current time: " & Image (Now));
end Display_Current_Time;
How to reproduce:
$ docker run -it --platform linux/i386 alpine:3.18 /bin/ash
/ # apk add build-base gcc-gnat vim
fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/community/x86/APKINDEX.tar.gz
(1/30) Upgrading musl (1.2.4-r1 -> 1.2.4-r2)
(2/30) Installing libgcc (12.2.1_git20220924-r10)
(3/30) Installing libstdc++ (12.2.1_git20220924-r10)
(4/30) Installing zstd-libs (1.5.5-r4)
(5/30) Installing binutils (2.40-r7)
(6/30) Installing libmagic (5.45-r0)
(7/30) Installing file (5.45-r0)
(8/30) Installing libgomp (12.2.1_git20220924-r10)
(9/30) Installing libatomic (12.2.1_git20220924-r10)
(10/30) Installing gmp (6.2.1-r3)
(11/30) Installing isl26 (0.26-r1)
(12/30) Installing mpfr4 (4.2.0_p12-r0)
(13/30) Installing mpc1 (1.3.1-r1)
(14/30) Installing gcc (12.2.1_git20220924-r10)
(15/30) Installing libstdc++-dev (12.2.1_git20220924-r10)
(16/30) Installing musl-dev (1.2.4-r2)
(17/30) Installing libc-dev (0.7.2-r5)
(18/30) Installing g++ (12.2.1_git20220924-r10)
(19/30) Installing make (4.4.1-r1)
(20/30) Installing fortify-headers (1.1-r3)
(21/30) Installing patch (2.7.6-r10)
(22/30) Installing build-base (0.5-r3)
(23/30) Installing libgnat (12.2.1_git20220924-r10)
(24/30) Installing libgnat-static (12.2.1_git20220924-r10)
(25/30) Installing gcc-gnat (12.2.1_git20220924-r10)
(26/30) Installing vim-common (9.0.1568-r0)
(27/30) Installing xxd (9.0.1568-r0)
(28/30) Installing ncurses-terminfo-base (6.4_p20230506-r0)
(29/30) Installing libncursesw (6.4_p20230506-r0)
(30/30) Installing vim (9.0.1568-r0)
Executing busybox-1.36.1-r2.trigger
OK: 382 MiB in 44 packages
/ # vim display_current_time.adb
/ # gnatmake display_current_time.adb
gcc -c display_current_time.adb
gnatbind -x display_current_time.ali
gnatlink display_current_time.ali
/ # ./display_current_time
Current time: 2291-02-20 04:26:57
/ # ./display_current_time
raised ADA.CALENDAR.TIME_ERROR : a-calfor.adb:558
/ #
3.12 is fine:
$ docker run -it --platform linux/i386 alpine:3.12 /bin/ash
/ # apk add build-base gcc-gnat vim
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86/APKINDEX.tar.gz
(1/27) Installing libgcc (9.3.0-r2)
(2/27) Installing libstdc++ (9.3.0-r2)
(3/27) Installing binutils (2.34-r2)
(4/27) Installing libmagic (5.38-r0)
(5/27) Installing file (5.38-r0)
(6/27) Installing gmp (6.2.1-r1)
(7/27) Installing isl (0.18-r0)
(8/27) Installing libgomp (9.3.0-r2)
(9/27) Installing libatomic (9.3.0-r2)
(10/27) Installing libgphobos (9.3.0-r2)
(11/27) Installing mpfr4 (4.0.2-r4)
(12/27) Installing mpc1 (1.1.0-r1)
(13/27) Installing gcc (9.3.0-r2)
(14/27) Installing musl-dev (1.1.24-r10)
(15/27) Installing libc-dev (0.7.2-r3)
(16/27) Installing g++ (9.3.0-r2)
(17/27) Installing make (4.3-r0)
(18/27) Installing fortify-headers (1.1-r0)
(19/27) Installing patch (2.7.6-r7)
(20/27) Installing build-base (0.5-r2)
(21/27) Installing libgnat (9.3.0-r2)
(22/27) Installing gcc-gnat (9.3.0-r2)
(23/27) Installing xxd (8.2.4836-r0)
(24/27) Installing lua5.3-libs (5.3.5-r6)
(25/27) Installing ncurses-terminfo-base (6.2_p20200523-r1)
(26/27) Installing ncurses-libs (6.2_p20200523-r1)
(27/27) Installing vim (8.2.4836-r0)
Executing busybox-1.31.1-r22.trigger
OK: 314 MiB in 41 packages
/ # vim display_current_time.adb
/ # gnatmake display_current_time.adb
gcc -c display_current_time.adb
gnatbind -x display_current_time.ali
gnatlink display_current_time.ali
/ # ./display_current_time
Current time: 2023-10-10 02:33:20