|Subject:||Re: [Tinycc-devel] SQLite miscompiles on Windows 32-bit|
|Date:||Sun, 16 Dec 2018 10:24:27 +0100|
It looks that instrinsic __faststorefence(), which “Guarantees that every previous memory reference, including both load and store memory references, is globally visible before any subsequent memory reference.” And declared in Windows header <intrin.h>
lock or DWORD PTR [rsp], 0
Now I’ve absolute no ideas how to explain tcc x86_64 backend to generate this code.
I second you for a full SQLite support with tcc. You may also ping SQLite guys to see if they see an interest to support tcc in their toolchain. Maybe they can do halt the road adapting the source code so that it better compiles with tcc?
From: Tinycc-devel [mailto:address@hidden On Behalf Of Jonathan Newman
I reported this a few months ago, but since there has been recent activity and I've now prepared a test setup, I thought it would be worth checking to see if anyone can investigate again.
Using the latest mob revision:
* Single-threaded (SQLITE_THREADSAFE=0) 64-bit builds of SQLite work OK
* Multi-threaded 64-bit builds fail with undefined symbol '__faststorefence'
* Any 32-bit build succeeds, but the result segfaults.
I've prepared a test setup including a Powershell script (test.ps1) that simply builds and runs each possible configuration:
(External link instead of attachment, since it's ~2MB)
sqlite3.c has been slightly modified from the official release to avoid the need to juggle different Windows headers around- an unmodified file demonstrates exactly the same behaviour.
Many thanks to anyone who can track it down...
|[Prev in Thread]||Current Thread||[Next in Thread]|