tinycc-devel
[Top][All Lists]
Advanced

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

[Tinycc-devel] Is tcc_add_library supposed to persist?


From: Eric Raible
Subject: [Tinycc-devel] Is tcc_add_library supposed to persist?
Date: Thu, 1 Aug 2024 03:08:33 -0700

Given that tcc_add_library() takes a TCCState it seems to me
that a call shouldn't persist to subsequent TCCStates.
This example seems to show that it does.

$ tcc -version
tcc version 0.9.28rc 2024-06-11 mob@08a4c52d (AArch64 Linux)
$ tcc tcc-add-library-bug.c -ltcc && ./a.out
tcc_add_library=0
tcc: error: undefined symbol 'atan'

tcc_add_library=1
3.14159

tcc_add_library=0
3.14159

Thanks - Eric
#include <stdio.h>
#include "libtcc.h"

char *C =
    "#include <math.h>\n"
    "#include <stdio.h>\n"
    "void pi() { printf(\"%g\\n\", 4 * atan(1)); }\n";

void test(int add_lib)
{
    TCCState *s = tcc_new();
    tcc_set_output_type(s, TCC_OUTPUT_MEMORY);

    printf("tcc_add_library=%d\n", add_lib);
    if (add_lib) tcc_add_library(s, "m");
    if (!tcc_compile_string(s, C) && !tcc_relocate(s)) {
        void (*pi)() = tcc_get_symbol(s, "pi");
        pi();
    }
    tcc_delete(s);
    printf("\n");
}

int main()
{
    test(0);
    test(1);
    test(0);
    return 0;
}


reply via email to

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