WIP updated homebrew toolchain for PS2

Here's what will probably happen: EE will be held back at binutils 2.25.1 and GCC 6.3.0, while the IOP toolchain will be continuously updated to latest binutils and GCC combos. I'm not well-versed in binutils and GCC changes, so I'll leave it at that.

Someone is working on a LLVM/Clang toolchain for the EE.

If you need assistance with this toolchain, feel free to pop open #psugnd on freenode.

Here's what already happened: EE and DVP will be held back at binutils 2.25.1, but the rest will be using latest GCC and binutils. It works so far.
 
Last edited:
gskit works? Interesting!

Does any project compile on it 'right out of the box'?
 
gskit works? Interesting!

Does any project compile on it 'right out of the box'?
No, you have to change the makefile to point it to the new toolchain, and you have to fix any errors (example: wrong l-value assignment)
 
  • Like
Reactions: TnA
I'm working on patches for upstream ps2sdk and ps2toolchain that will cleanup the code and merge some newlib changes. This will reduce the amount of non-upstreamed code in my branch.
 
GCC 9 will transition to bugfixes on November 11 and regression fixes and documentation fixes on January 6.

Binutils 2.31.1 has been released a while back, and I'm planning to update to that version.

I need to fix gsKit so all the samples will work properly. The hires sample complied with my toolchain will error on my PS2 TOOL for some reason.
I should eventually upstream the working patches, and fix the old patches that differ from upstream.

libc-test: https://github.com/AssemblyScript/libc-test
Information about the GCC C unit test suite: https://gcc.gnu.org/onlinedocs/gccint/C-Tests.html
 
Last edited:
I updated gsKit and PS2SDK. The samples I tried work in PCSX2, but I haven't tested on a real PS2 yet.

GCC 9 is in the stabilization phrase (Stage 4). I won't touch my toolchain fork (update Binutils or GCC) until GCC 9.1 is released.

fileXioInit seems to hang. I need to figure out why.
 
Last edited:
I updated gsKit and PS2SDK. The samples I tried work in PCSX2, but I haven't tested on a real PS2 yet.

GCC 9 is in the stabilization phrase (Stage 4). I won't touch my toolchain fork (update Binutils or GCC) until GCC 9.1 is released.

fileXioInit seems to hang. I need to figure out why.

Doh, that explains it. I thought it was something I was doing wrong lol. If I remember correctly from yesterday it's gets stuck in an infinite loop on the call to SifBindRpc. res = 0
 
@uyjulian
1. Is it possible to port these changes into your fork? commit1 and commit2 .
This will allow you to get rid of lc, lm and crt0. Example
Some projects are already moved to simplified make flags and sometimes it is difficult to get these flags back.
I was trying to port these changes by myself but failed... Something goes wrong.

2. I made tests with different GCC version and unfortunately only GCC v6 (and v5) is working stuff for me. I was testing fceumm-ps2 stuff with travis matrix and precompiled docker images (link for travis output). I can confirm that ps2sdk samples and gsKit samples are working in all GCC versions (v5, v6, v7, v8) but fceumm-ps2 is working only with gcc5 and gcc6. I also tested different versions of newlib - it seems this is not source of problem.
 
@uyjulian
Now transfer.sh is dead so it is more difficult to proceed tests. I can only post here results of my isolated tests.
1) I realised that fceumm-ps2 doesn't work work when binutils 2.25.1 are mixing with binutils 2.31. So my first step I left only 2.25.1 Anyway it is better not to mix different versions
2) I created special branch for isolated testing: https://github.com/AKuHAK/ps2toolchain/tree/new_gcc_teset_all_in_one. Added 3 environment variables for easy switch between versions.
Code:
ENV BINUTILS_VERSION 2.25.1
ENV GCC_VERSION 6.3.0
ENV NEWLIB_VERSION 3.0.0
3) Created ps2sdk fork adopted for newest toolchain and based on up-to-date ps2sdk: https://github.com/ps2homebrew/ps2sdk/tree/test1
3) I created various docker images based on this branch. It takes really long time - almost whole day until all images were built.
4) I tested my gsKit fork adopted for newest toolchain. All docker images were fine - all samples (except hires) were working fine. https://github.com/AKuHAK/gsKit/tree/patch-5
4) Then I created travis matrix for testing all images. Each image compiled working elf file. But some elf files failed to show main menu.
5) After tests I confirmed that binutils should be 2.25.1 only, GCC version should be less then v7, newlib can be any version.
 
I've rebased on top of binutils 2.32/gcc 9.1.0/newlib 3.1.0. In the process, I removed the EE core extension/MMI patches and DVP support temporarily.

IOP modules are not working correctly. I need to figure out why.
 
Last edited:
Before I forget to mention: GNU sed needs to be used instead of BSD sed, since BSD sed doesn't support functions used by the building of the toolchain.

Otherwise, you get this error:
xgcc: error: addsf3: No such file or directory

Make sure "sed" points to GNU sed, not BSD sed.
 
Last edited:

Similar threads

Back
Top