Note that 2001/bellard only works for i386 linux

The author stated this directly. It is noted in the bugs.md file and the
README.

I also included a suggested change by Yusuke Endoh. This is not
necessary for compilers that support -Wl,-z,execstack but not all
compilers do (though the only one I've found that has this problem is
macOS which it won't work under anyway just like -m32 won't which we
also now use).

Added the 'more portable' version by the author. This does not compile
at least under 64-bit linux (not macOS either though of course it
wouldn't work in macOS as if you look at the code you see hardcoded
paths for linux ld-linux.so).

I note that there's a de-obfuscated version on the author's page for the
entry which might give some clues. I might look at it in the future but
it appears that unless someone can provide a 64-bit linux version this
will be one of the entries (now far fewer with many fixes made) that
simply no longer work.

This thus completes for now 2001/bellard even with disappointing
circumstances.
This commit is contained in:
Cody Boone Ferguson committed 2023-04-22 09:11:15 -07:00
1 parent 82ac1237fa
commit 0d0c2c4250
6 files changed
+680 -19

No files matched your search

+28 -4
View File
@@ -1030,19 +1030,43 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing))! :-) ).
# 2001
## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md))
## STATUS: probable bug (possibly depending on system) - please help test and if necessary fix
## STATUS: doesn't work with some platforms - please help us fix
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed an initial
segfault and he also fixed the [supplementary program
bellard.otccex.c](2001/bellard/bellard.otccex.c) but this still crashes. Cody
will probably be looking at this in the not too distant future but if you have a
fix we welcome it.
bellard.otccex.c](2001/bellard/bellard.otccex.c) but this still crashes. Below
are some notes about getting this entry to work but the gist of it is that it
requires i386 linux. Can you fix it for 64-bit linux? We welcome your help! Here
are some notes of interest:
The author said that they compiled it with [gcc version
2.95.2](https://ftp.gnu.org/gnu/gcc/gcc-2.95.2/gcc-everything-2.95.2.tar.gz). We
don't know if a certain gcc version is necessary but it might be helpful to
download and compile that version to test it - or it might not.
I (Cody) have no i386 system to test this but perhaps this is why I can't get it
to work. Yusuke was able to get this to work with `-m32` but it seems with an
emulator.
On the author's [web page for this program](https://bellard.org/otcc/) where it
is stated it requires i386 linux.
There I found what should be a more portable version which is included as
[otccelf.c](2001/bellard/otccelf.c) (after adding some `#include`s and the
modification by Yusuke noted in the README.md file) but it appears this also
requires i386 linux; indeed looking at the code it hard codes paths that are
i386 specific to linux.
Another point of interest is that the author provided de-obfuscated versions
which might be of value to look at. I might do that as well but this entry is
very likely never going to work for 64-bit linux.
Or maybe you have a fix for 64-bit CPUs? You might like to look at the otccelf
version but note that it at least in 64-bit linux (and macOS) have compilation
errors.
Either way we welcome your help! Thank you!
## [2001/cheong](2001/cheong/cheong.c) ([README.md](2001/cheong/README.md))
## STATUS: INABIAF - please **DO NOT** fix