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:
1 parent
82ac1237fa
commit
0d0c2c4250
6 files changed
+680
-19
No files matched your search
+24
-11
@@ -19,17 +19,30 @@ make
|
||||
```
|
||||
|
||||
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) partially fixed this
|
||||
but he notes that this will not work without some possibly serious debugging. As
|
||||
it is it segfaults. He fixed an earlier segfault so that at least the file can
|
||||
be opened and he also changed some of the macro uses to what they expanded to
|
||||
but mostly he kept it the same. He also fixed
|
||||
[bellard.otccex.c](bellard.otccex.c) so it does not
|
||||
segfault and seemingly works okay (it did not work at all). The author stated
|
||||
that they used [gcc
|
||||
but he notes that this will not work without (according to the author) i386
|
||||
linux or else some skill in resolving the portability issues. As it is it
|
||||
segfaults in 64-bit linux (and as expected macOS). He fixed an earlier segfault
|
||||
so that at least the file can be opened (but perhaps that will be wrong in i386
|
||||
linux?) and he also changed some of the macro used to what they evaluate to but
|
||||
mostly he kept it the same. He also fixed [bellard.otccex.c](bellard.otccex.c)
|
||||
so it does not segfault and seemingly works okay (it did not work at all) but
|
||||
still this appears to not work in 64-bit linux. See below portability notes.
|
||||
Thank you Cody for your assistance!
|
||||
|
||||
### Portability notes:
|
||||
|
||||
With a tip from [Yusuke Endoh](/winners.html#Yusuke_Endoh) we rediscovered the
|
||||
author's [web page for this program](https://bellard.org/otcc/) where it is
|
||||
stated that this will only work in i386 linux. The author also stated in the
|
||||
remarks in this document that they used that they used [gcc
|
||||
2.95.2](https://ftp.gnu.org/gnu/gcc/gcc-2.95.2/gcc-everything-2.95.2.tar.gz) but
|
||||
we don't know if that's relevant or not. Thank you Cody for your assistance! Can
|
||||
you fix the entry? We welcome your help! If you can please look at
|
||||
[bugs.md](/bugs.md) for more information. Thank you!
|
||||
we don't know if that's relevant or not.
|
||||
|
||||
Yusuke offered a modification which is not needed with gcc but with some
|
||||
versions of `clang` it is. With `gcc` we can get away with `-rdynamic -fno-pie
|
||||
-Wl,-z,execstack` which solves the problem of execution in memory but any
|
||||
compiler that does not support this would not work. Thus we use the modification
|
||||
by Yusuke. Thank you Yusuke!
|
||||
|
||||
|
||||
## Try:
|
||||
@@ -40,7 +53,7 @@ you fix the entry? We welcome your help! If you can please look at
|
||||
|
||||
## Judges' remarks:
|
||||
|
||||
<JUDGES_COMMENTS> :-)
|
||||
\<JUDGES_COMMENTS\> :-)
|
||||
|
||||
## Author's remarks:
|
||||
|
||||
|
||||
Reference in new issue
Block a user