llvm で Unicode 文字を出力するために、llvm ir で setLocale を使用しました。
call i8* @setlocale(i32 6, i8* getelementptr inbounds ([1 x i8]* @pe, i32 0, i32 0)) nounwind
@pe は次のように定義されます。
@pe = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
ただし、次のエラーが発生しました。
*** glibc detected *** ./test/bin/executable: free(): invalid next size (fast): 0x08f93140 ***
gdb を使用してプログラムをデバッグしました。バックトレースは次のとおりです。
#0 0xb7728424 in __kernel_vsyscall ()
#1 0xb74aee71 in raise () from /lib/i386-linux-gnu/libc.so.6
#2 0xb74b234e in abort () from /lib/i386-linux-gnu/libc.so.6
#3 0xb74e5577 in ?? () from /lib/i386-linux-gnu/libc.so.6
#4 0xb74ef961 in ?? () from /lib/i386-linux-gnu/libc.so.6
#5 0xb74f128b in ?? () from /lib/i386-linux-gnu/libc.so.6
#6 0xb74f441d in free () from /lib/i386-linux-gnu/libc.so.6
#7 0xb74a6730 in ?? () from /lib/i386-linux-gnu/libc.so.6
#8 0xb74a5299 in ?? () from /lib/i386-linux-gnu/libc.so.6
#9 0xb74a4cd1 in setlocale () from /lib/i386-linux-gnu/libc.so.6
...
この問題を解決するにはどうすればよいですか? どんな助けでもいただければ幸いです