[racket-dev] mzscheme executable broken when using --enable-shared

From: Marijn (hkBst at gentoo.org)
Date: Mon Apr 18 04:11:25 EDT 2011

Hash: SHA1

Hi Matthew,

On 04/18/11 04:00, Imran Rafique wrote:
> Ah, that would explain it (Marijn is packaging racket for gentoo, as
> part of the gentoo-lisp group). Binaries are stripped by default
> pre-installation by the emerge packager.

Imran is correct.

> On 18 April 2011 00:39, Matthew Flatt <mflatt at cs.utah.edu> wrote:
>> Was `strip' or a similar tool run on the `mzscheme' executable?
>> Except for `racket', `gracket', and executables created as shell
>> scripts, Racket executables are generated by cloning `starter' and
>> appending extra data to the end of the executable file. Simply
>> appending data to the end of the file is a hack; it doesn't create a
>> well-formed ELF binary. Using `strip' or similar tools on the broken
>> binary tends to just throw away the data, which would lead to an error
>> like the one you reported.
>> I've pushed changes that add to `starter' in a proper ELF section. Even
>> if you didn't run `strip', having a valid ELF binary may fix the
>> problem you're seeing.

I tried to test your changes, but ran into an (unrelated I think)
compile failure:

 x86_64-pc-linux-gnu-gcc -I./.. -I./../include
- -I/usr/lib64/libffi-3.0.10rc8/include -DMZ_DONT_USE_JIT
- -DMZ_USES_SHARED_LIB -c ./module.c  -fPIC -DPIC -o .libs/module.o
- --mode=compile --tag=CC x86_64-pc-linux-gnu-gcc -I./.. -I./../include
   -I/usr/lib64/libffi-3.0.10rc8/include   -DMZ_DONT_USE_JIT
- -DMZ_USES_SHARED_LIB -c ./mzrt.c -o mzrt.lo
./module.c: In function 'do_module_execute':
./module.c:5278: error: 'scheme_module_code_cache' undeclared (first use
in this function)
./module.c:5278: error: (Each undeclared identifier is reported only once
./module.c:5278: error: for each function it appears in.)
make[6]: *** [module.lo] Error 1

Version: GnuPG v2.0.17 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/


Posted on the dev mailing list.