|
Namazu for hns による簡易全文検索 詳しくは 詳細指定/ヘルプを参照して下さい |
|||||||||||||||||||||||||||||||||||||||||||||||
2004年09月26日(日) 旧暦 [n年日記]更新: "2004/09/27 23:57:57"#1 [NetBSD][build.sh] SHLIB_LINK 問題
8/28 の覚え。
@ grep SHLIB_LINK t-[s,n]*:ttyp4:makoto@st4200 17:12:58/040926(...checkout/src)> \と入力して表示されるものを見て考えてみた。 @ SHLIB_LINK= の行がない時 (TNF):
行がない時には、
gnu/dist/gcc/gcc/config/t-slibgcc-elf-ver
にある次の定義が生きる。
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ -Wl,--soname=$(SHLIB_SONAME) \ -Wl,--version-script=$(SHLIB_MAP) \ -o $(SHLIB_NAME) @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \ rm -f $(SHLIB_SOLINK) && \ $(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK)こちらは signal 11 (ただし見聞のみ) @ SHLIB_LINK= の行がある時 (nandra):
SHLIB_LINK= の行がある時には、
この定義が空になり
# Disable SHLIB_LINK if shared libgcc not enabled.という場合になる。そうして、_Unwind_GetIP 問題、つまり libstdc++.so: undefined reference to `_Unwind_GetIP'という問題になる。 関連記事: tech-pkg, 2004/02/29 例えば libgcc という名前は src/gnu/lib/libgcc3 の下の 次のところにある。 ttype:makoto@harry 18:10:13/040926(...lib/libgcc3)> find . -name libgcc\* -ls 512 Sep 12 23:48 ./libgcc 53110 Sep 12 23:57 ./libgcc/obj/libgcc.a 59188 Sep 12 23:57 ./libgcc/obj/libgcc_p.a 54310 Sep 12 23:57 ./libgcc/obj/libgcc_pic.a 512 Sep 12 23:48 ./libgcc_eh 38752 Sep 12 23:58 ./libgcc_eh/obj/libgcc_eh.a 41364 Sep 12 23:58 ./libgcc_eh/obj/libgcc_eh_p.a 33622 Sep 12 23:58 ./libgcc_eh/obj/libgcc_eh_pic.a 512 Sep 12 23:48 ./libgcc_s 79194 Sep 12 23:58 ./libgcc_s/obj/libgcc_s_pic.a 43112 Sep 12 23:58 ./libgcc_s/obj/libgcc_s.so.1.0 1148 Sep 12 23:58 ./libgcc_s/obj/libgcc.map 15 Sep 12 23:58 ./libgcc_s/obj/libgcc_s.so.1 -> libgcc_s.so.1.0 15 Sep 12 23:58 ./libgcc_s/obj/libgcc_s.so -> libgcc_s.so.1.0この中で、件の定義は、次の中にある。 ttype:makoto@harry 18:12:19/040926(...lib/libgcc3)> nm libgcc_s/obj/libgcc_s.so.1.0 | grep -i unwind_getipこれは src/destdir.macppc/lib/ の下には写されていない。 src/gnu/lib/Makefile の中に次の文がある。 .if ${MKGCC} != "no"この libgcc3 の行があるところに行くためには: MKGCC=no でなくて、HAVE_GCC3 == no でないこと。 つまり /etc/mk.conf に次のように書いておく MKGCC=yes HAVE_GCC3=yes(いま読直すと、全然論理が合っていない...上の設定は初期値か..多分) /usr/share/mk/bsd.own.mk に、次の行がある。 /usr/share/mk/bsd.own.mk:HAVE_GCC3?= yesつまり初期値。 libgcc_s.so.1.0 を使わずに _Unwind_GetIP 問題を解決する必要がある .. @ ./libgcc3/libgcc_eh/obj/libgcc_eh.a:ttype:makoto@harry 18:56:19/040926(...gnu/lib)> nm ./libgcc3/libgcc_eh/obj/libgcc_eh.a | grep -i unwind_getipこれを使う。その方法は
@ gnu/dist/gcc/gcc/gcc.c にそれらしいコードが:1561 /* Transform the extant libgcc_spec into one that uses the shared libgcc 1562 when given the proper command line arguments. */ 1563 while (*p) 1564 { 1565 if (in_sep && *p == '-' && strncmp (p, "-lgcc", 5) == 0) 1566 { 1567 init_gcc_specs (&obstack, 1568 #ifdef NO_SHARED_LIBGCC_MULTILIB 1569 "-lgcc_s" 1570 #else 1571 "-lgcc_s%M" 1572 #endif 1573 , 1574 "-lgcc", 1575 "-lgcc_eh" 1576 #ifdef USE_LIBUNWIND_EXCEPTIONS 1577 " -lunwind" 1578 #endif 1579 ); 1580 1581 p += 5; 1582 in_sep = 0; 1583 } 1584 else if (in_sep && *p == 'l' && strncmp (p, "libgcc.a%s", 10) == 0) 1585 { 1586 /* Ug. We don't know shared library extensions. Hope that 1587 systems that use this form don't do shared libraries. */ 1588 init_gcc_specs (&obstack, 1589 #ifdef NO_SHARED_LIBGCC_MULTILIB 1590 "-lgcc_s" 1591 #else 1592 "-lgcc_s%M" 1593 #endif 1594 , 1595 "libgcc.a%s", 1596 "libgcc_eh.a%s" 1597 #ifdef USE_LIBUNWIND_EXCEPTIONS 1598 "libunwind.a%s" 1599 #endif 1600 ); 1601 p += 10; 1602 in_sep = 0; 1603 }-lgcc であれば、内部的に -lgcc_s や -lgcc_eh に書換えてくれる ? 1.7 (2/25/2004) で変更されている。... これを特に書戻したりはしていない ... 最初の問題を見直す: # link grodvi/grodvistrings して見ると、この c++ には eh が出て来ない。-lgcc も指定していない ? このようなものはいかがだろうか ? cvs diff -u gnu/dist/gcc/gcc/cp/g++spec.c Index: gnu/dist/gcc/gcc/cp/g++spec.c =================================================================== RCS file: /export/20040820/Repository/src/gnu/dist/gcc/gcc/cp/g++spec.c,v retrieving revision 1.1.1.1 diff -u -u -r1.1.1.1 g++spec.c --- gnu/dist/gcc/gcc/cp/g++spec.c 26 Sep 2004 07:18:49 -0000 1.1.1.1 +++ gnu/dist/gcc/gcc/cp/g++spec.c 26 Sep 2004 12:52:24 -0000 @@ -37,10 +37,10 @@ #endif #ifndef LIBSTDCXX -#define LIBSTDCXX "-lstdc++" +#define LIBSTDCXX "-lstdc++ -lgcc -lgcc_eh" #endif #ifndef LIBSTDCXX_PROFILE -#define LIBSTDCXX_PROFILE "-lstdc++" +#define LIBSTDCXX_PROFILE "-lstdc++ -lgcc -lgcc_eh" #endif void ttyp5:makoto@st4200 22:01:09/040926(...checkout/src)> @ cannot find -lstdc++ -lgcc:/export/20040820/checkout/src/obj/tooldir.NetBSD-2.0G-powerpc/lib/gcc-lib/powerpc--netbsd/3.3.3/ ../../../../powerpc--netbsd/bin/ld: cannot find -lstdc++ -lgcc -lgcc_eh ( つっこみ )
|
最近の日記 2024年05月08日 ・comparison on ./buildsh tools 2024年05月06日 ・py-setuptools (python 3.11.9) ・make release took 1 hours and 10 min ・qemu invocation for 10.99.10 2024年05月05日 ・Windows 10 version ・serial connection ・bc bench 2024年05月04日 ・Trial on 10.99.10 ・another version (later trial) to succeed 2024年04月29日 ・dkim | ||