didbs-0.1.X - GCC Compiler testing releases

hammy

Member
Jun 1, 2019
51
21
8
UK
Edit: I am updating the versions of these releases, please see down thread for the latest release links - and be sure to choose the release appropriate for you! (mips3/mips4).

Edit2: Time to start retiring older versions. 0.1.0 no longer available.

didbs-0.1.X - Irix Development Bootstrap Tools + Compilers

This is a torrent with archives of the built artifacts produced by didbs:


Target=n32, mips4
Download size=0.6Gb
Install size=1.8Gb
Requires: Irix 6.5.30, MIPSpro 7.4.4m (C and C++ required, plus and any patches)

How to use:

  • Create /usr/didbs
  • chown it to your user
  • Extract the download under there as your user
Majority of binaries located in the bin and lib under there.

  • gcc4 found in the directory /usr/didbs/0_1_0/gbs4_2
  • gcc5 found in the directory /usr/didbs/0_1_0/gbs5_0
  • gcc8 found in the directory /usr/didbs/0_1_0/gbs8_1
e.g If you want to try out the gcc8 compiler the following would work in bash:

Code:
export PATH=/usr/didbs/0_1_0/gbs8_1/bin:/usr/didbs/0_1_0/bin:$PATH
export LD_LIBRARYN32_PATH=/usr/didbs/0_1_0/gbs8_1/lib:/usr/didbs/0_1_0/lib:$LD_LIBRARYN32_PATH
export PKG_CONFIG_PATH=/usr/didbs/0_1_0/lib/pkgconfig
(gcc5 is a special case and needs the gcc4 paths after the gcc5 ones, as it uses binutils from that directory).

If you only want to use the compilers, you can omit the didbs bin + lib dirs above. You'll probably still need the binaries on the filesystem though.

I'd appreciate any bug reports to double check the bug is reproducible with the didbs tools.

What packages are included?

Package list as follows:

Code:
XML-Parser-2.44
autoconf-2.69
automake-1.16.1
bash-5.0
binutils-2.23.2
bison-3.4.1
bzip2-1.0.6
cmake-2.8.12.2
coreutils-8.30
curl-7.61.0
db-5.3.28
dejagnu-1.6.2
diffutils-3.6
docbook-xml-4.5
docbook-xsl-nons-1.79.2
emacs-23.3
epm-4.4
expat-2.2.6
expect5.45.4
file-5.36
findutils-4.6.0
flac-1.3.2
flex-2.6.4
frotz-2.44
gawk-3.1.8
gcc-4.8.2
gcc-5.4.0
gcc-8.2.0
gdb-7.6.2
gettext-0.19.8.1
git-2.22.0
gmp-6.1.2
gnutls-3.5.19
grep-3.3
groff-1.22.4
gzip-1.9
help2man-1.47.10
isl-0.18
jpeg-9c
less-530
libXpm-3.5.12
libarchive-3.3.2
libffi-3.2.1
libiconv-1.16
libogg-1.3.3
libpipeline-1.5.1
libpng-1.6.34
libsndfile-1.0.28
libtool-2.4.6
libunistring-0.9.10
libvorbis-1.3.5
libxml2-2.9.9
libxslt-1.1.33
lynx2.8.9rel.1
m4-1.4.18
make-4.2.1
man-db-2.8.5
mpc-1.1.0
mpfr-4.0.1
mpg123-1.25.10
mrxvt-0.5.4
nc110
ncurses-6.1
neofetch-6.0.0
nettle-3.4
openssh-7.9p1
openssl-1.1.1a
perl-5.28.2
pkg-config-0.29.2
readline-8.0
rsync-3.1.3
rxvt-unicode-9.22
sed-4.5
sqlite-autoconf-3220000
tar-1.30
tcl8.6.9
tcsh-6.20.00
texinfo-6.6
tiff-4.0.9
tk8.6.9
unrar
unzip60
util-linux-2.34
vim81
wget-1.20.1
which-2.21
xli-2005-02-27
xman-1.1.4
xosview-1.20
xz-5.2.4
zlib-1.2.11
Bugs: Please report bugs either to the sgug forums (https://sgi.sh/) - or via the didbs github pages.
 
Last edited:
Reactions: onre and Elf

hammy

Member
Jun 1, 2019
51
21
8
UK
First issue noticed - due the way I installed gcc, there's broken .la files referencing a lib32 directory.

You may or may not hit this, depends if you are using pkgconfig and PKG_CONFIG_PATH.

Issue created here with a bit more info:


Work around is to hand edit the relevant .la files. Longer term n32 stuff should go into lib32 to be correct anyway.
 

hammy

Member
Jun 1, 2019
51
21
8
UK
Gijoe spotted that there's a difference between the didbs supplied "fixed" includes of gcc - these are headers that gcc patches to remove C99 or C++ compatibility problems.

The patched headers included are the ones from the didbs build host - that is Irix 6.5.30 + patches.

If you're on Irix < 6.5.23, at the very least there are differences in some of the system headers that may cause issues (the pthread.h was one the sparked the discussion).

One possible resolution for this:

Post didbs install - run the mkheaders binary found in the $ROOT/libexec/gcc/mips-sgi-irix-6.5/X.X.X/install-tools directory.

This does highlight the problems we may have generating binaries on a 6.5.30 host that are incompatible with older 6.X releases.

To be looked into further.
 

hammy

Member
Jun 1, 2019
51
21
8
UK
Edit: retiring of 0.1.1.

didbs-0.1.1 update.

Fixed the lib dirs (now lib32) - and included a build of gcc9.2.

There will be a mips4 and mips3 release - with the mips3 coming soon (in the process of building).
 
Last edited:
Reactions: Elf

hammy

Member
Jun 1, 2019
51
21
8
UK
Edit: Retiring of 0.1.1.

And the mips3 version of said tools.

These were built on a mips4 host 6.5.30 - so your mileage may vary - any feedback welcomed.
 
Last edited:

hammy

Member
Jun 1, 2019
51
21
8
UK
GCC bugs found in didbs-0.1.1 release so far:

  1. Thread local declarations in C11/C++11 onwards cause illegal instruction
    GCC detects that the binutils supports mips thread local storage, but IRIX ELF itself doesn't.
    Needs a new didbs release to fix.

  2. The default output ISA (mips3/mips4) isn't working correctly - have seen compilation failures with instruction not supported.
    The mips4 gccs should output and assemble with a default ISA of mips4. I must be missing some default setup somewhere.
    Can be worked around (where possible) by explicitly adding -mips4 in CFLAGS/LDFLAGS.
 

hammy

Member
Jun 1, 2019
51
21
8
UK
Edit: retiring of 0.1.2.

Didbs version 0.1.2 release - bug fixes for the above thread_local and default output isa.

Note 1: With this release, it is no longer possible to build mips3 executables with the mips4 gcc releases. Due the way in which little c-runtime fragments are built by GCC, this means using the mips4 GCC compilers will always result in the executable being promoted to mips4.

Note 2: These GCC compilers are not yet fully optimised - this will come once we are happy we are getting somewhere stable (it's a loooong slow build when the GCC itself must be built with optimisation).

Mips3/Mips4 release below - care to get the correct one (mips4 cannot create mips3 executables)
 
Last edited:
Reactions: Elf

hammy

Member
Jun 1, 2019
51
21
8
UK
Didbs version 0.1.3 release - the optimised GCC release.

Changes from 0.1.2:
  • Reduced the number of included packages (size still grew a little thanks to LTO and GOMP below)
  • Another attempt to fix the default ISA (0.1.2 mips3 release gcc9 could generate mips4 code if you didn't pass -mips3)
  • All gcc and binutils releases now built with -O2
  • All gcc releases have link time optimisation available
  • All gcc releases have GNU Open MP enabled (gomp)
Mips3/Mips4 release below - care to get the correct one (mips4 cannot create mips3 executables)

What's not included / things that someone may find interesting to look into:
  • The D language front end builds fine, but the D standard library needs porting (gcc9.2)
  • There is a GO front end that we might be able to activate (gcc9.2)
  • The libsanitizer parts in gcc build OK, but libsanitizer itself will need porting (gcc9.2)
 

Attachments

hammy

Member
Jun 1, 2019
51
21
8
UK
Quick and dirty timings from pre and post -O2 of the compiler - this shows time to compile for a little C++ program.

140
 
Last edited:

hammy

Member
Jun 1, 2019
51
21
8
UK
Currently outstanding bugs as follows:

* All gcc versions > 4.8.2 - math conformance problems

The breaking commit is here:


Looks like tweaks to include soft/hard floating point configurability have broken something.
Didbs bug is here:

* All gcc versions due to binutils - issues linking with historical "nekoware" libraries causing ld crashes

No deeper info for the moment, I'll ensure next didbs release includes -g debug versions of binutils.
 
Last edited:

hammy

Member
Jun 1, 2019
51
21
8
UK
Note: Some older didbs0.1.X torrents now retired.

Didbs version 0.1.4 release.

Changes from 0.1.3:

  • Bug fix of math conformance issues for gcc >4.8.2 (I hope...)
  • All binutils builds are made with -g now in the hope to get better data for crash diagnosis
  • A little patch to all binutils2.32 so that a missing .rld_map inside the .data section is logged rather than a hard crash
Mips3/Mips4 release below - care to get the correct one (mips4 cannot create mips3 executables)
 

Attachments

Last edited:

hammy

Member
Jun 1, 2019
51
21
8
UK
Didbs version 0.1.5 release.

Changes from 0.1.4:
  • All binutils should now handle ELF libraries where a section with misalignment has no section data (legacy MIPSPro C++ libraries and some nekoware libraries)
  • All binutils no longer -g (space saving)
Mips3/Mips4 release below - care to get the correct one (mips4 cannot create mips3 executables)

Note1: If you are on Irix <6.5.30 and you want to use the included GCC compilers - you'll need to execute the "header fixer" for each individual GCC.
These can found here for mips4, adjust paths for mips3 (and should be run as the user that you performed the didbs extraction with):

Code:
/usr/didbs/0_1_5_n32_mips4_mp/gbs4_2/libexec/gcc/mips-sgi-irix6.5/4.8.2/install-tools/mkheaders
/usr/didbs/0_1_5_n32_mips4_mp/gbs5_0/libexec/gcc/mips-sgi-irix6.5/5.4.0/install-tools/mkheaders
/usr/didbs/0_1_5_n32_mips4_mp/gbs8_1/libexec/gcc/mips-sgi-irix6.5/8.2.0/install-tools/mkheaders
/usr/didbs/0_1_5_n32_mips4_mp/gbs9_1/libexec/gcc/mips-sgi-irix6.5/9.2.0/install-tools/mkheaders
Note2: Toyed with the idea of including rpm, but punted to a later release.
 

Attachments

Last edited: