This patch series adds qemu_strerror() function, which is thread-safe version of the libc strerror(). The first patch introduces the qemu_strerror() function, and the second patch replaces strerror() function in linux-user/* with qemu_strerror() function.
Because it involves thread safety, qemu_strerror() should be tested carefully. But before adding tests, I want to ask (1) will this patch be acceptable to QEMU project after adding tests, (2) where and how qemu_strerror() should be tested. (1) means that: is my approach too complicated to solve potential thread-unsafe implementation of strerror()? Although strerror() is not guaranteed to be thread-safe, glibc implements thread-safe strerror(). We have to consider the balance between maintenance costs and potential risks. (2) means that: is tests/unit/test-cutils.c a good place for tests? Because the behavior of qemu_strerror() is changed by the feature test macros, the tests should be run with different test macros, hopefully in different OSs. Note that strerror_r() function called by qemu_strerror() has different return types between architectures because of the historical reason. qemu_strerror() handles both the newer POSIX strerror() and the older POSIX strerror(). All tests except for skipped ones are passed in my environment (x86_64 linux). Yohei Kojima (2): util: Add thread-safe qemu_strerror() function linux-user: replace strerror() function to the thread safe qemu_strerror() include/qemu/cutils.h | 20 +++++++++++++++++++ linux-user/elfload.c | 4 ++-- linux-user/main.c | 4 ++-- linux-user/syscall.c | 2 +- util/cutils.c | 45 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 70 insertions(+), 5 deletions(-) -- 2.39.2