cygwin ホストで Linux を対象としたアプリをクロスコンパイルしました。プログラムは、ターゲット上でも gdbserver でも正常に実行されます。ただし、プログラムをステップ実行しようとすると、共有ライブラリ関数にステップインするたびにクラッシュします。バックトレース gdb 出力は次のとおりです。
(gdb) bt
#0 0x00000000004008f4 in ?? ()
#1 0x0000003f0380d7e4 in ?? ()
#2 0x00002b1373630000 in ?? ()
#3 0x00002b1373630590 in ?? ()
#4 0x00002b1373631348 in ?? ()
#5 0x00002b1373631888 in ?? ()
#6 0x0000003f03a1c510 in ?? ()
#7 0x0000000000000000 in ?? ()
関数にブレークポイントを設定して続行すると、クラッシュしません。
これは hello.c です。
void foo(int*);
int main()
{
int a;
foo(&a);
return a;
}
x86_64-unknown-linux-gnu-gcc -g -c hello.c でコンパイル。
および foo.c:
void foo(int *i)
{
*i = 2;
}
x86_64-unknown-linux-gnu-gcc -g -shared -Wl,-soname,libfoo.so -o libfoo.so foo.c でコンパイル。
リンクはx86_64-unknown-linux-gnu-gcc -Wl,-rpath, で行われます。libfoo.so hello.o -o こんにちは。