Many thanks Michael! I can confirm SQLite now compiles correctly on win32.
On Mon, 31 Dec 2018 at 21:06, Michael Matz <[email protected]> wrote: > Hello, > > On Sat, 29 Dec 2018, Jonathan Newman wrote: > > > Hi,This seems to be the issue causing SQLite compilation to fail (or at > > least part of it/related to it). > > > > When a function pointer is declared in a particular way, it seems that > > __stdcall (and presumably other attributes?) are ignored. As a result, > TCC > > thinks the function is caller-cleanup when it is not, and the stack gets > > "cleaned" twice. > > > > See the full test case attached. As a quick summary, > > > > This works: > > ((int __stdcall (*)(int, int, int))some_stdcall_func) (2, 0, 0); > > > > And so does this: > > ((int(*__stdcall)(int, int, int))some_stdcall_func) (3, 0, 0); > > > > But this fails: > > ((int(__stdcall*)(int, int, int))some_stdcall_func) (4, 0, 0); > > Aha, thanks for the investigation and testcase, that really helps. This > particular problem is now fixed on trunk. Lacking win32 I can't > check if it completely fixes SQLite, but at least your testcase works when > cross compiled and run under wine. > > > Ciao, > Michael. > > _______________________________________________ > Tinycc-devel mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/tinycc-devel >
_______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
