tinycc-devel
[Top][All Lists]
Advanced

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

[Tinycc-devel] tcc no longer compiles on Windows


From: Christian Jullien
Subject: [Tinycc-devel] tcc no longer compiles on Windows
Date: Fri, 7 Dec 2018 07:03:42 +0100

Tccelf.c has an undefined reference to sym_index with R_X86_64_PC32 case line 897.

 

The declaration of sym_index at line 877 is not covered by this case.

 

static int prepare_dynamic_rel(TCCState *s1, Section *sr)

{

    ElfW_Rel *rel;

    int type, count;

 

    count = 0;

    for_each_elem(sr, 0, rel, ElfW_Rel) {

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

        switch(type) {

#if defined(TCC_TARGET_I386) || defined(TCC_TARGET_X86_64)

#if defined(TCC_TARGET_I386)

        int sym_index = ELFW(R_SYM)(rel->r_info);  <<<< definition limited to I386

        case R_386_32:

            if (!get_sym_attr(s1, sym_index, 0)->dyn_index

                && ((ElfW(Sym)*)symtab_section->data + sym_index)->st_shndx == SHN_UNDEF) {

                /* don't fixup unresolved (weak) symbols */

                rel->r_info = ELFW(R_INFO)(sym_index, R_386_RELATIVE);

                break;

            }

#elif defined(TCC_TARGET_X86_64)

        case R_X86_64_32:

        case R_X86_64_32S:

        case R_X86_64_64:

#endif

            count++;

            break;

#if defined(TCC_TARGET_I386)

        case R_386_PC32:

#elif defined(TCC_TARGET_X86_64)

        case R_X86_64_PC32:

#endif

            if (get_sym_attr(s1, sym_index, 0)->dyn_index)

                count++;

            break;

#endif

        default:

            break;

        }

    }

    if (count) {

        /* allocate the section */

        sr->sh_flags |= SHF_ALLOC;

        sr->sh_size = count * sizeof(ElfW_Rel);

    }

    return count;

}


reply via email to

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