fix: try to add a bounds.o only if __bounds_init not found

/usr/local/lib/tcc/i386/bcheck.o: error: '__bound_error_msg' defined twice
    #include <stdio.h>
    int main ()
    {
        #if 1
    	    int v[10];
            v[10] = 0;
            fprintf(stderr, "is bounds error catched?\n");
        #endif
        return 0;
    }
    // tcc -b test.c
This commit is contained in:
seyko 2015-03-28 19:41:01 +03:00
parent 3b7f5008fd
commit f2cfc07554

View File

@ -1589,10 +1589,13 @@ ST_FUNC void tcc_add_bcheck(TCCState *s1)
pinit = section_ptr_add(init_section, 5);
pinit[0] = 0xe8;
put32(pinit + 1, -4);
tcc_add_support(s1, "bcheck.o");
sym_index = find_elf_sym(symtab_section, "__bound_init");
if (!sym_index)
tcc_error("__bound_init not defined");
if (!sym_index) {
tcc_add_support(s1, "bcheck.o");
sym_index = find_elf_sym(symtab_section, "__bound_init");
if (!sym_index)
tcc_error("__bound_init not defined");
}
put_elf_reloc(symtab_section, init_section,
init_section->data_offset - 4, R_386_PC32, sym_index);
}