grishka, thank you so much for pointing me in the right direction.
I was able to solve the problem (more or less) with this hint, though this
means to patch tclDecls.h and tclIntDecls.h, two headers I took in from the tcl
Source, so a bit problematic to maintain.
Furthermore, the __attribute__((dllimport)) is not needed, when compiling
against libtclstubsXX.a, and was not needed in 0.9.26, behavior seems a bit
inconsistent to me. Anyway, it's working for the moment...
Michael
IIRC tcc from 0.9.27 on tries to help with a more explicit error message
made just for that case:
tcc: error: undefined symbol 'xxxx', missing __declspec(dllimport)?
See also the libtcc_test.c example:
/* this strinc is referenced by the generated code */
const char hello[] = "Hello World!";
char my_program[] =
"..."
"#ifdef _WIN32\n" /* dynamically linked data needs 'dllimport' */
" __attribute__((dllimport))\n"
"#endif\n"
"extern const char hello[];\n"
[...]
tcc_add_symbol(s, "hello", hello);
FYI, the change was necessary with the introduction of 64-bit targets
to the effect that data objects that are resolved via tcc_add_symbol()
are now accessed by the same mechanism as those that come from dlls.
*This mechanism needs special code to be generated already at compile time
which is what happens when tcc sees __declspec(dllimport) (and does not
otherwise).*
-- grischka
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel