そのうち気づいた
#include <stdio.h>
wprintf( L"Hello, %s\n", "world" );
Linux では標準の glibc で動作しますが、同じことが newlib では同じようには動作しません。newlib は "%s" にワイド文字列を期待しているように見えるので、代わりに次のように動作します:
wprintf( L"Hello, %s\n", L"world" );
正しい動作はどれですか? これは newlib のバグですか? また、printf文字列フォーマット指定子で幅の広い文字列ではなく、「狭い」文字列が必要であることを明示的に指定する方法はありますか?