didbs-0.1.X - GCC Compiler testing releases

hammy

Member
Jun 1, 2019
46
17
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).

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.
 

Attachments

Last edited:
Reactions: onre and Elf

hammy

Member
Jun 1, 2019
46
17
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
46
17
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
46
17
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
46
17
8
UK
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)
 

Attachments

Last edited:
Reactions: Elf

hammy

Member
Jun 1, 2019
46
17
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
46
17
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: