commit: 84c07ed90ba24621383d7c7df9b016b766acc923
parent 2550cebc20473caa010102742a74d915b8dcab17
Author: fosslinux <fosslinux@aussies.space>
Date: Sat, 11 Jan 2025 21:46:32 +1100
Various GCC 4.7 regenerations
Diffstat:
4 files changed, 366 insertions(+), 6 deletions(-)
diff --git a/steps/SHA256SUMS.pkgs b/steps/SHA256SUMS.pkgs
@@ -55,7 +55,7 @@ ab8b5b92de4780b085d8bc7e98ee72ad5ba9c07b26690c579c559b5cc21817eb gc-8.0.4_0.tar
2537802994ec434e543d3736210a1d4c1e704bb2cc849375beeceacf794e26b2 gcc-13.1.0_0.tar.bz2
64052d4b2ad1ac405455767b3ac09b77c31d90c38b1d69bfc0922902bd943a2d gcc-4.0.4_0.tar.bz2
da88bb5900f33c1caca9180784e47367e64ec9f258182a147d84168540de1450 gcc-4.0.4_1.tar.bz2
-5958cf5a547134bea11fda1eee7f7fdb3435f8e55c8339238ecd1b139ca96599 gcc-4.7.4_0.tar.bz2
+cbbc193d4bef0b9ac9e4ba0111009297da66bc65de12c9f07b14d3f0d3be9688 gcc-4.7.4_0.tar.bz2
6b5236819c5963d33dffa022142df70644dbc1960adcb4456017112cf9b79f5b gettext-0.21_0.tar.bz2
309282ba840f80b5e10897b1221f3ff3329b9e05b982c788d03652f411974524 gmp-6.2.1_0.tar.bz2
e89c5a38c49f2beb959e51732ff29bcf3652945e4f1c2bf70d39310c22b0c58f gperf-3.1_0.tar.bz2
diff --git a/steps/gcc-4.7.4/files/decDPD.h.preamble b/steps/gcc-4.7.4/files/decDPD.h.preamble
@@ -0,0 +1,59 @@
+// SPDX-FileCopyrightText: 2007, 2009 Free Software Foundation, Inc.
+// SPDX-License-Identifier: GPL-3.0-or-later
+/* Conversion lookup tables for the decNumber C Library.
+ Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Contributed by IBM Corporation. Author Mike Cowlishaw.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */
+
+/* ------------------------------------------------------------------------ */
+/* Binary Coded Decimal and Densely Packed Decimal conversion lookup tables */
+/* [Automatically generated -- do not edit. 2008.06.21] */
+/* ------------------------------------------------------------------------ */
+/* For details, see DPDecimal.html on the General Decimal Arithmetic page. */
+
+#include "decDPDSymbols.h"
+
+/* This include file defines several DPD and BCD conversion tables: */
+/* */
+/* uint16_t BCD2DPD[2458]; -- BCD -> DPD (0x999 => 2457) */
+/* uint16_t BIN2DPD[1000]; -- Bin -> DPD (999 => 2457) */
+/* uint8_t BIN2CHAR[4001]; -- Bin -> CHAR (999 => '\3' '9' '9' '9') */
+/* uint8_t BIN2BCD8[4000]; -- Bin -> bytes (999 => 9 9 9 3) */
+/* uint16_t DPD2BCD[1024]; -- DPD -> BCD (0x3FF => 0x999) */
+/* uint16_t DPD2BIN[1024]; -- DPD -> BIN (0x3FF => 999) */
+/* uint32_t DPD2BINK[1024]; -- DPD -> BIN * 1000 (0x3FF => 999000) */
+/* uint32_t DPD2BINM[1024]; -- DPD -> BIN * 1E+6 (0x3FF => 999000000) */
+/* uint8_t DPD2BCD8[4096]; -- DPD -> bytes (x3FF => 9 9 9 3) */
+/* */
+/* In all cases the result (10 bits or 12 bits, or binary) is right-aligned */
+/* in the table entry. BIN2CHAR entries are a single byte length (0 for */
+/* value 0) followed by three digit characters; a trailing terminator is */
+/* included to allow 4-char moves always. BIN2BCD8 and DPD2BCD8 entries */
+/* are similar with the three BCD8 digits followed by a one-byte length */
+/* (again, length=0 for value 0). */
+/* */
+/* To use a table, its name, prefixed with DEC_, must be defined with a */
+/* value of 1 before this header file is included. For example: */
+/* #define DEC_BCD2DPD 1 */
+/* This mechanism allows software to only include tables that are needed. */
+/* ------------------------------------------------------------------------ */
diff --git a/steps/gcc-4.7.4/files/decDPD_generate.c b/steps/gcc-4.7.4/files/decDPD_generate.c
@@ -0,0 +1,228 @@
+// SPDX-FileCopyrightText: 2025 fosslinux <fosslinux@aussies.space>
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include <stdio.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+/*
+ * Creates decDPD.h.
+ * Based upon the algorithm given on;
+ * https://web.archive.org/web/20080308073422/http://www2.hursley.ibm.com/decimal/DPDecimal.html
+ * originally written in the (obsolete) language Rexx.
+ *
+ * Is not bit-for-bit identical to the original decDPD.h, as we don't bother
+ * to follow the same formatting.
+ *
+ * The original Rexx code follows;
+ */
+
+// /* dpdGenerate.rex -- display Densely Packed Decimal table */
+// /* mfc 2000.10.03; Rexx version with new equations 2007.02.01 */
+//
+// do i=0 to 999
+// bcd=right(i, 3, 0) -- make three-digit hexadecimal string
+// bit10=bcd2dpd(x2b(bcd)) -- compress
+// bit12=dpd2bcd(bit10) -- expand
+// say bcd bit10 bit12 -- display
+// end i
+// exit
+//
+// /* bcd2dpd -- Compress BCD to Densely Packed Decimal
+// argument is a string of 12 characters, each 0 or 1, being 3 digits
+// of 4 bits, each being a valid BCD digit (0000-1001)
+// (for example, 923 is 100100100011)
+// result is a string of 10 characters, each 0 or 1
+// (for the example, this would be 1001010011)
+// */
+// bcd2dpd: procedure
+// -- assign each bit to a variable, named as in the description
+// parse arg a +1 b +1 c +1 d +1 e +1 f +1 g +1 h +1 i +1 j +1 k +1 m +1
+//
+// -- derive the result bits, using boolean expressions only
+// -- [the operators are: '&'=AND, '|'=OR, '\'=NOT.]
+// p=b | (a & j) | (a & f & i)
+// q=c | (a & k) | (a & g & i)
+// r=d
+// s=(f & (\a | \i)) | (\a & e & j) | (e & i)
+// t=g | (\a & e &k;) | (a & i)
+// u=h
+// v=a | e | i
+// w=a | (e & i) | (\e & j)
+// x=e | (a & i) | (\a & k)
+// y=m
+// -- concatenate the bits and return
+// return p||q||r||s||t||u||v||w||x||y
+//
+// /* dpd2bcd -- Expand Densely Packed Decimal to BCD
+// argument is a string of 10 characters, each 0 or 1; all 1024
+// possibilities are accepted (non-canonicals -> 999)
+// (for example, 1001010011)
+// result is a string of 12 characters, each 0 or 1
+// (for the example, 100100100011 -- 923)
+// */
+// dpd2bcd: procedure
+// -- assign each bit to a variable, named as in the description
+// parse arg p +1 q +1 r +1 s +1 t +1 u +1 v +1 w +1 x +1 y +1
+//
+// -- derive the result bits, using boolean expressions only
+// a= (v & w) & (\s | t | \x)
+// b=p & (\v | \w | (s & \t & x))
+// c=q & (\v | \w | (s & \t & x))
+// d=r
+// e=v & ((\w & x) | (\t & x) | (s & x))
+// f=(s & (\v | \x)) | (p & \s & t & v & w & x)
+// g=(t & (\v | \x)) | (q & \s & t & w)
+// h=u
+// i=v & ((\w & \x) | (w & x & (s | t)))
+// j=(\v & w) | (s & v & \w & x) | (p & w & (\x | (\s & \t)))
+// k=(\v & x) | (t & \w & x) | (q & v & w & (\x | (\s & \t)))
+// m=y
+// -- concatenate the bits and return
+// return a||b||c||d||e||f||g||h||i||j||k||m
+
+void int2boolarr(uint32_t num, bool *arr, int bits) {
+ int j = 0;
+ for (int i = bits - 1; i >= 0; i--) {
+ arr[j++] = (num >> i) & 0x1;
+ }
+}
+
+uint32_t boolarr2int(bool *dpd, int bits) {
+ uint32_t num = 0;
+ int j = 0;
+ for (int i = bits - 1; i >= 0; i--) {
+ num |= dpd[j++] << i;
+ }
+ return num;
+}
+
+uint32_t bcd2dpd(uint16_t ibcd) {
+ bool bcd[12];
+ int2boolarr(ibcd, bcd, 12);
+
+ bool dpd[10];
+ dpd[0] = bcd[1] | (bcd[0] & bcd[9]) | (bcd[0] & bcd[5] & bcd[8]);
+ dpd[1] = bcd[2] | (bcd[0] & bcd[10]) | (bcd[0] & bcd[6] & bcd[8]);
+ dpd[2] = bcd[3];
+ dpd[3] = (bcd[5] & (~bcd[0] | ~bcd[8])) | (~bcd[0] & bcd[4] & bcd[9]) | (bcd[4] & bcd[8]);
+ dpd[4] = bcd[6] | (~bcd[0] & bcd[4] & bcd[10]) | (bcd[0] & bcd[8]);
+ dpd[5] = bcd[7];
+ dpd[6] = bcd[0] | bcd[4] | bcd[8];
+ dpd[7] = bcd[0] | (bcd[4] & bcd[8]) | (~bcd[4] & bcd[9]);
+ dpd[8] = bcd[4] | (bcd[0] & bcd[8]) | (~bcd[0] & bcd[10]);
+ dpd[9] = bcd[11];
+
+ return boolarr2int(dpd, 10);
+}
+
+uint32_t dpd2bcd(uint32_t idpd) {
+ bool dpd[10];
+ int2boolarr(idpd, dpd, 10);
+
+ bool bcd[12];
+ bcd[0] = (dpd[6] & dpd[7]) & (~dpd[3] | dpd[4] | ~dpd[8]);
+ bcd[1] = dpd[0] & (~dpd[6] | ~dpd[7] | (dpd[3] & ~dpd[4] & dpd[8]));
+ bcd[2] = dpd[1] & (~dpd[6] | ~dpd[7] | (dpd[3] & ~dpd[4] & dpd[8]));
+ bcd[3] = dpd[2];
+ bcd[4] = dpd[6] & ((~dpd[7] & dpd[8]) | (~dpd[4] & dpd[8]) | (dpd[3] & dpd[8]));
+ bcd[5] = (dpd[3] & (~dpd[6] | ~dpd[8])) | (dpd[0] & ~dpd[3] & dpd[4] & dpd[6] & dpd[7] & dpd[8]);
+ bcd[6] = (dpd[4] & (~dpd[6] | ~dpd[8])) | (dpd[1] & ~dpd[3] & dpd[4] & dpd[7]);
+ bcd[7] = dpd[5];
+ bcd[8] = dpd[6] & ((~dpd[7] & ~dpd[8]) | (dpd[7] & dpd[8] & (dpd[3] | dpd[4])));
+ bcd[9] = (~dpd[6] & dpd[7]) | (dpd[3] & dpd[6] & ~dpd[7] & dpd[8]) | (dpd[0] & dpd[7] & (~dpd[8] | (~dpd[3] & ~dpd[4])));
+ bcd[10] = (~dpd[6] & dpd[8]) | (dpd[4] & ~dpd[7] & dpd[8]) | (dpd[1] & dpd[6] & dpd[7] & (~dpd[8] | (~dpd[3] & ~dpd[4])));
+ bcd[11] = dpd[9];
+
+ return boolarr2int(bcd, 12);
+}
+
+uint8_t get_cntrl_char(uint8_t num) {
+ if (num == 0) {
+ return 0;
+ } else if (num < 10) {
+ return 1;
+ } else if (num < 100) {
+ return 2;
+ } else {
+ return 3;
+ }
+}
+
+void bin2char(uint8_t num, uint32_t str[4]) {
+ str[0] = get_cntrl_char(num);
+ str[1] = num / 100 + '0';
+ str[2] = (num % 100) / 10 + '0';
+ str[3] = num % 10 + '0';
+}
+
+void bin2bcd8(uint8_t num, char digit[4], uint32_t arr[4]) {
+ for (int i = 0; i < 3; i++) {
+ arr[i] = digit[i] - '0';
+ }
+ arr[3] = get_cntrl_char(num);
+}
+
+#define TABLES_COUNT 9
+
+int main(void) {
+ uint32_t BCD2DPD[2458] = {0};
+ uint32_t BIN2DPD[1000] = {0};
+ uint32_t BIN2BCD8[4000];
+ uint32_t BIN2CHAR[4001];
+ uint32_t DPD2BCD[1024] = {0};
+ uint32_t DPD2BIN[1024] = {0};
+ uint32_t DPD2BINK[1024] = {0};
+ uint32_t DPD2BINM[1024] = {0};
+ uint32_t DPD2BCD8[4096];
+
+ for (int i = 0; i < 1000; i++) {
+ char digit[4];
+ snprintf(digit, 4, "%03d", i);
+ uint32_t bcd = 0;
+ for (int j = 0; j < 3; j++) {
+ bcd |= (digit[j] - '0') << (4 * (2 - j));
+ }
+
+ uint32_t dpd = bcd2dpd(bcd);
+ BCD2DPD[bcd] = dpd;
+ DPD2BCD[dpd] = bcd;
+ BIN2DPD[i] = dpd;
+ DPD2BIN[dpd] = i;
+ DPD2BINK[dpd] = i * 1000;
+ DPD2BINM[dpd] = i * 1E+6;
+
+ bin2char(i, BIN2CHAR + (4 * i));
+ bin2bcd8(i, digit, BIN2BCD8 + (4 * i));
+ bin2bcd8(i, digit, DPD2BCD8 + (4 * dpd));
+ }
+ BIN2CHAR[4000] = '\0';
+
+ char *names[] = {
+ "BCD2DPD", "BIN2DPD", "BIN2CHAR", "BIN2BCD8", "DPD2BCD", "DPD2BIN",
+ "DPD2BINK", "DPD2BINM", "DPD2BCD8",
+ };
+ char *types[] = {
+ "uint16_t", "uint16_t", "uint8_t", "uint8_t", "uint16_t", "uint16_t",
+ "uint32_t", "uint32_t", "uint8_t",
+ };
+ uint32_t *data[] = {
+ BCD2DPD, BIN2DPD, BIN2CHAR, BIN2BCD8, DPD2BCD, DPD2BIN,
+ DPD2BINK, DPD2BINM, DPD2BCD8,
+ };
+ int lengths[] = {2458, 1000, 4001, 4000, 1024, 1024, 1024, 1024, 4096};
+
+ for (int i = 0; i < TABLES_COUNT; i++) {
+ printf("#if defined(DEC_%s) && DEC_%s==1 && !defined(DEC%s)\n", names[i], names[i], names[i]);
+ printf("#define DEC%s\n", names[i]);
+ printf("const %s %s[%d] = {\n", types[i], names[i], lengths[i]);
+ for (int j = 0; j < lengths[i] / 16; j++) {
+ for (int k = j * 16; k < (j + 1) * 16 && k < lengths[i]; k++) {
+ printf("%s%d,", k == j * 16 ? "" : " ", data[i][k]);
+ }
+ printf("\n");
+ }
+ printf("};\n");
+ printf("#endif\n\n");
+ }
+}
diff --git a/steps/gcc-4.7.4/pass1.sh b/steps/gcc-4.7.4/pass1.sh
@@ -16,6 +16,57 @@ src_prepare() {
# Remove unused generated files
rm libgo/aclocal.m4 libgo/configure libgo/Makefile.in
+ rm gcc/config/avr/t-multilib
+ rm gcc/config/mep/intrinsics.h gcc/config/mep/intrinsics.md \
+ gcc/config/mep/mep-intrin.h
+ rm gcc/config/arm/arm_neon.h
+ rm gcc/testsuite/gcc.target/x86_64/abi/test_passing_integers.c \
+ gcc/testsuite/gcc.target/x86_64/abi/test_3_element_struct_and_unions.c \
+ gcc/testsuite/gcc.target/x86_64/abi/test_passing_floats.c \
+ gcc/testsuite/gcc.target/x86_64/abi/test_basic_returning.c
+ rm gcc/testsuite/go.test/test/bench/go1/jsondata_test.go \
+ gcc/testsuite/go.test/test/bench/shootout/mandelbrot.txt
+ rm gcc/testsuite/go.test/test/cmplxdivide1.go
+ find zlib -name "*.obj" -delete
+ rm zlib/contrib/puff/zeros.raw zlib/contrib/blast/test.pk \
+ zlib/contrib/dotzlib/DotZLib.chm
+ find libjava -name "*.class" -delete
+ find libjava -type f -name "*.jar" -delete
+ find libjava -name "*.h" -exec grep -l "DO NOT EDIT THIS FILE" {} \; | xargs rm
+ rm libjava/classpath/gnu/java/lang/CharData.java \
+ libjava/classpath/gnu/java/rmi/dgc/DGCImpl_Skel.java \
+ libjava/classpath/gnu/java/rmi/dgc/DGCImpl_Stub.java \
+ libjava/classpath/gnu/java/rmi/registry/RegistryImpl_Skel.java \
+ libjava/classpath/gnu/java/rmi/registry/RegistryImpl_Stub.java
+ rm libjava/classpath/resource/gnu/java/locale/*.properties \
+ libjava/classpath/resource/java/text/*.properties \
+ libjava/classpath/resource/java/util/*.properties
+ rm libjava/include/java-chardecomp.h \
+ libjava/include/java-chartables.h
+ rm -r libjava/testsuite/libjava.cni \
+ libjava/testsuite/libjava.jvmti
+ rm boehm-gc/MacProjects.sit.hqx
+ find fixincludes/tests -name "*.h" -delete
+ find . -name "*.pdf" -delete
+ rm -r libstdc++-v3/doc/html
+ rm libgfortran/generated/*.F90
+ rm -r libgo/go/debug/elf/testdata \
+ libgo/go/debug/macho/testdata \
+ libgo/go/debug/pe/testdata \
+ libgo/go/debug/dwarf/testdata
+ rm libgo/go/regexp/syntax/perl_groups.go
+ rm libgo/go/strconv/isprint.go
+
+ # Regenerating these would require TCL
+ rm libjava/sources.am libjava/Makefile.in
+
+ # Part generated, part human-written, but unused
+ rm libgcc/config/sh/lib1funcs.S libgcc/config/sh/lib1funcs-4-300.S
+ rm libjava/classpath/java/util/TimeZone.java
+ rm libjava/gcj/javaprims.h
+
+ # xz-style blobs
+ rm boehm-gc/cord/de_win.ICO
# Regenerate aclocal.m4 files
# grep "generated automatically by aclocal" */aclocal.m4 -l | sed -e 's#/aclocal.m4##' | tr "\n" " " | sed -e 's/ $/\n/'
@@ -33,11 +84,11 @@ src_prepare() {
rm aclocal.m4
AUTOCONF=autoconf-2.64 AUTOM4TE=autom4te-2.64 aclocal-1.11 --acdir=../gcc
cd ..
- for dir in boehm-gc libffi libgfortran libgomp libitm libjava libmudflap libobjc libquadmath libssp lto-plugin zlib; do
- cd $dir
+ for dir in boehm-gc libffi libgfortran libgomp libitm libjava libmudflap libobjc libquadmath libssp lto-plugin zlib libjava/classpath libjava/libltdl; do
+ pushd "$dir"
rm aclocal.m4
AUTOCONF=autoconf-2.64 AUTOM4TE=autom4te-2.64 aclocal-1.11
- cd ..
+ popd
done
cd libstdc++-v3
@@ -56,7 +107,7 @@ src_prepare() {
# Regenerate Makefile.in
# Find all folders with Makefile.am and rebuild them. At the moment we exclude boehm-gc folder.
- for dir in $(find . -mindepth 2 -maxdepth 2 -name Makefile.am | sed 's#/Makefile.am##' | grep -v -x './libgo' | tr "\n" " " | sed -e 's/ $/\n/' -e 's/^boehm-gc //'); do
+ for dir in $(find . -mindepth 2 -maxdepth 2 -name Makefile.am | sed 's#/Makefile.am##' | grep -v -x -e './libgo' -e './libjava' | tr "\n" " " | sed -e 's/ $/\n/' -e 's/^boehm-gc //'); do
pushd "$dir"
rm Makefile.in
AUTOCONF=autoconf-2.64 AUTOM4TE=autom4te-2.64 automake-1.11 --add-missing
@@ -70,10 +121,22 @@ src_prepare() {
cd ..
done
+ # Rebuild dependencies in libiberty/Makefile.in
+ pushd libiberty
+ ./configure --enable-maintainer-mode
+ make maint-deps
+ popd
+
# Rebuild libtool files
rm config.guess config.sub ltmain.sh
- libtoolize
+ rm libjava/libltdl/missing
+ libtoolize -i
cp "${PREFIX}/share/automake-1.15/config.sub" .
+ for dir in libjava/libltdl libjava/classpath libgo/config; do
+ pushd "$dir"
+ libtoolize -i
+ popd
+ done
# Workaround for bison being too new
rm intl/plural.c
@@ -91,11 +154,21 @@ src_prepare() {
mv crc32.c.new crc32.c
popd
+ # Regenerate decDPD.h
+ rm libdecnumber/decDPD.h
+ gcc -std=c99 -o decDPD_generate decDPD_generate.c
+ cp decDPD.h.preamble libdecnumber/decDPD.h
+ ./decDPD_generate >> libdecnumber/decDPD.h
+
# Remove translation catalogs
find . -name '*.gmo' -delete
# Pre-built texinfo files
+ rm libiberty/functions.texi
find . -name '*.info' -delete
+
+ # Pre-built manpages
+ find . -name '*.[1-9]' -delete
}
src_configure() {