[[atch] Re: anyone interested in helping fixing the 'tcc' compiler ?

Luigi Rizzo rizzo at iet.unipi.it
Sat Nov 28 18:49:42 UTC 2009


followup to myself due to scarce success...
I have done some partial step in fixing the ELF produced by tcc
to work with freebsd. A patch is attached which works for simple
programs but not for more complex ones.

I found the following problems:
- tcc does not produce a PHDR program header, which caused the
  linker to fail. This should be fixed by this patch.

- the relocation sections produced by tcc apparently include a
  mix of JMP and non JMP relocations in the same place.
  Our loader complains when it finds this mix.
  I have changed the section definitions but it seems to work
  only for simple things (Hello World -style).

- the relocation info is not in the place rtld is looking for.
  What i found is that UNDEF symbols had the offset to be
  patched in the dynsym section, instead of the .got section where
  (apparently) our loader is looking for. The function
  patch_dynsym_undef() in the patch attached seems to handle this,
  but I am not sure how general is this.

With this patch the simplest example programs (ex1, ex2, ex3, ex5)
do work, but ex4 (which uses -lX11) fails to load
ld-elf.so.1: assert failed: /usr/src/libexec/rtld-elf/i386/reloc.c:292
(I hope i can track this later).

cheers
luigi

  

On Sun, Nov 22, 2009 at 12:17:32PM +0100, Luigi Rizzo wrote:
> Hi,
> I have recently started playing with the Tiny C Compuler (lang/tcc)
> which is amazingly useful for prototyping, but has problem generating
> non-static binaries in FreeBSD -- basically it produces a bogus
> elf file which our loader does not like.
> Static binaries work fine, as well as 'tcc -run ' (compile
> and run on the fly -- you should really try it if you haven't yet).
> 
> There is an open PR on this
> 
> http://www.freebsd.org/cgi/query-pr.cgi?pr=138481
> 
> and the problem is known upstream but no fix
> 
> http://lists.gnu.org/archive/html/tinycc-devel/2005-07/msg00070.html
> 
> However, from the description it does not seem a horribly
> hard problem. Perhaps someone with a bit of knowledge on
> how our ld-elf.so works should not have a hard time pinpointing
> the problem so that other people can fix it ?
> 
> Any takers ?
> 
> cheers
> luigi


More information about the freebsd-arch mailing list