[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tinycc-devel] Need help with ELF to port tcc on OpenBSD

From: Christian Jullien
Subject: [Tinycc-devel] Need help with ELF to port tcc on OpenBSD
Date: Thu, 3 Dec 2020 08:33:51 +0100

Hi team,

I’m probably not too far to have a working tcc on OpenBSD.

-          I’ve got a tcc which produces a .o: tcc –c foo.c

-          The link sequence is /usr/lib/crtbegin.o foo.o /usr/lib/crtend.o and tcc has already been modified to produce this sequence on OpenBSD instead or crti.o/crtn.o

-          The foo.o and crtend.o ELF look good but crtbegin.o is not

It fails with: crtbegin.o: error: Invalid relocation entry [ 2] '.rela.text' @ 0000006a


You can reproduce this issue with tcc on Linux x64  with enclosed crtbegin.o


[jullien@fedora64 ~]$ tcc -o foo crtbegin.o foo.o

crtbegin.o: error: Invalid relocation entry [ 2] '.rela.text' @ 0000006a

[jullien@fedora64 ~]$


The code fails here with type == 2, I tried to filter this type with no luck:

            for_each_elem(s, (offset / sizeof(*rel)), rel, ElfW_Rel) {

                int type;

                unsigned sym_index;

                /* convert symbol index */

                type = ELFW(R_TYPE)(rel->r_info);

                sym_index = ELFW(R_SYM)(rel->r_info);

                /* NOTE: only one symtab assumed */

                if (sym_index >= nb_syms)

                    goto invalid_reloc;

                sym_index = old_to_new_syms[sym_index];

                /* ignore link_once in rel section. */

                if (!sym_index && !sm_table[sh->sh_info].link_once


                    && type != R_ARM_V4BX

#elif defined TCC_TARGET_RISCV64

                    && type != R_RISCV_ALIGN

                    && type != R_RISCV_RELAX


                   ) {


                    tcc_error_noabort("Invalid relocation entry [%2d] '%s' @ %.\


                        i, strsec + sh->sh_name, (int)rel->r_offset);

                    goto fail;



I confess I’m an early bird with ELF.

Mod includes all required changes.


Your help is welcome.



Attachment: crtbegin.o
Description: Binary data

reply via email to

[Prev in Thread] Current Thread [Next in Thread]