newlibのmalloc()はスレッド・セーフじゃない

Blackfin toolchain 2009R1.1のbfin-elf-gccは、newlibを使います。
で、調べた結果newlibのmalloc()はスレッド・セーフじゃありませんでした。
調査はこんな感じ

takemasa@hilbert:~/foo$ bfin-elf-gcc -v
Using built-in specs.
Target: bfin-elf
コンフィグオプション: /usr/src/packages/BUILD/blackfin-toolchain-09r1.1/../gcc-4.1/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=bfin-elf --prefix=/opt/uClinux/bfin-elf --with-newlib --disable-libstdcxx-pch --enable-languages=c,c++ --disable-symvers --disable-libssp --disable-libffi --enable-clocale=generic --enable-version-specific-runtime-libs --enable-__cxa_atexit --with-bugurl=URL:http://blackfin.uclinux.org/gf/project/toolchain/tracker --with-pkgversion=ADI-09r1.1-2
スレッドモデル: single
gcc バージョン 4.1.2 (ADI svn)
takemasa@hilbert:~/foo$ cat main.c
#include <stdlib.h>

int main(void)
{
	int *p;

	p = malloc(sizeof(int)*100);
	return 3;
}

takemasa@hilbert:~/foo$ bfin-elf-gcc -g2 main.c -msim
takemasa@hilbert:~/foo$ bfin-elf-gdb -quiet a.out
(gdb) target sim 
Connected to the simulator.
(gdb) load
Loading section .init, size 0x12 vma 0x0
Loading section .text, size 0x1060 vma 0x14
Loading section .fini, size 0xe vma 0x1074
Loading section .rodata, size 0x8 vma 0x1084
Loading section .eh_frame, size 0x4 vma 0x108c
Loading section .ctors, size 0x8 vma 0x2090
Loading section .dtors, size 0x8 vma 0x2098
Loading section .jcr, size 0x4 vma 0x20a0
Loading section .data, size 0x81c vma 0x20a4
Start address 0x14
Transfer rate: 50656 bits in <1 sec.
(gdb) disassemble __malloc_lock 
Dump of assembler code for function __malloc_lock:
0x00000744 <__malloc_lock+0>:	NOP;
0x00000746 <__malloc_lock+2>:	NOP;
0x00000748 <__malloc_lock+4>:	LINK 0x0;		/* (0) */
0x0000074c <__malloc_lock+8>:	UNLINK;
0x00000750 <__malloc_lock+12>:	RTS;
End of assembler dump.
(gdb) 

リンクされている__malloc_lockはmalloc_rが呼び出す下位関数で、他のスレッドに切り替わらないようにします。コードを見れば空であることがわかります。ブレーク・ポイントを張って実行するとちゃんとブレークしますから、他の関数が替わりに呼ばれているわけでもありません。
つまり、スレッド・セーフになっていません。で、Blackfin Koopで聞いたのですが「ドキュメント読め」の一言。Blackfin Koopのnewlibドキュメントはずっと前から空ページのままですわ。
あきらめてCygnusのドキュメントを読んだのですが、malloc用に__malloc_lock/__malloc_unlockの他、他の部分をスレッド・セーフにするためにいろいろやらなければならないようです。
とりあえず、TOPPERS/JSPのアプリならmalloc()だけスレッド・セーフにすれば用が足りるので、何らかの抜け道が無いか頑張ってみます。多分sys_config.cでmalloc_lock()/unlock()を書いてLDで強制リンクすることになるでしょう。