#なるほど。stripって今時役に立つのかなあ。昔はバイナリを小さくするためによく使ったけど。auxsysについては今はもう分けてる意味が無くなったので将来はsrcに統合してしまおうかと思ってて、そうしたらこの問題は出なくなりそうです。が、他のDSOのロードで問題が出てないかどうか気になります。gauche.uvector、gauche.fcntlなどのモジュールは使えますか?
#MacOSX の strip は単に strip executable とすると dynamic load に必要なシンボルまで取り除いてしまうみたいですね. man page の真ん中あたりにごにょごにょ書いてあります. http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/strip.1.html #gosh を strip した上で make check してみましたが、uvector、fcntl ともに問題ないようです。
いくつか出るエラーも、すべて auxsys に関するものですね。
#いわれてみるとほかはリンクできるのは変ですね.strip -u -r したバイナリではリンクできるようです.
#strip gosh と strip -u -r gosh で削られるバイト数は同じですが,
#hexdump して比較すると environ を含むテーブルらしきものがなくなっていました.
#ふむ。まあライブラリ中にあるグローバルにアクセス可能なデータっていうのが珍しくなりつつあるのでenvironだけ特殊な事情があるってのもありそうには思える。昔はerrnoもそうだったけどスレッドが普通になってからはerrnoはマクロになってるからなあ。
#削られているテーブルみると environ だけ特別ってわけでもないみたいです
#00004470 00 72 e0 03 12 40 5f 73 74 72 63 6d 70 00 90 00 |.r...@_strcmp...|
-00004480 00 02 5f 00 0d 73 74 61 72 74 00 b2 01 00 0e 5f |.._..start....._|
-00004490 00 8c 01 65 00 b7 01 6c 6f 61 64 5f 00 d3 01 63 |...e...load_...c|
-000044a0 6c 65 61 6e 75 70 5f 6d 61 69 6e 00 f3 01 74 65 |leanup_main...te|
-000044b0 73 74 5f 00 f8 01 66 00 94 02 70 00 bd 02 75 73 |st_...f...p...us|
-000044c0 61 67 65 00 88 03 76 65 72 73 69 6f 6e 00 8d 03 |age...version...|
-000044d0 6d 61 69 6e 00 97 03 4e 58 41 72 67 00 a6 03 73 |main...NXArg...s|
-000044e0 74 61 74 73 5f 6d 6f 64 65 00 c9 03 62 61 74 63 |tats_mode...batc|
-000044f0 68 5f 6d 6f 64 65 00 d3 03 69 6e 74 65 72 61 63 |h_mode...interac|
-00004500 74 69 76 65 5f 6d 6f 64 65 00 d8 03 00 02 6d 68 |tive_mode.....mh|
-00004510 5f 65 78 65 63 75 74 65 5f 68 65 61 64 65 72 00 |_execute_header.|
-00004520 ae 01 5f 70 72 6f 67 6e 61 6d 65 00 bf 03 02 00 |.._progname.....|
-00004530 00 00 03 00 b0 1c 00 00 02 72 72 6f 72 5f 65 78 |.........rror_ex|
-00004540 69 74 00 ce 01 6e 76 69 72 6f 6e 00 ba 03 03 00 |it...nviron.....|
-00004550 f0 1c 00 00 02 67 61 75 63 68 65 5f 69 6e 69 74 |.....gauche_init|
-00004560 00 ee 01 69 6e 69 74 66 69 6c 65 00 9c 03 03 00 |...initfile.....|
-00004570 f0 1d 00 03 00 d0 1e 00 00 02 70 61 74 68 73 5f |..........paths_|
-00004580 73 65 74 75 70 00 8f 02 6d 6f 64 65 00 ce 03 03 |setup...mode....|
-00004590 00 90 22 00 00 02 65 61 74 75 72 65 5f 6f 70 74 |.."...eature_opt|
-000045a0 69 6f 6e 73 00 b8 02 75 72 74 68 65 72 5f 6f 70 |ions...urther_op|
-000045b0 74 69 6f 6e 73 00 83 03 03 00 f0 23 00 00 02 72 |tions......#...r|
-000045c0 00 d2 02 61 72 73 65 5f 6f 70 74 69 6f 6e 73 00 |...arse_options.|
-000045d0 92 03 00 02 6f 66 69 6c 00 e4 02 65 5f 63 6d 64 |....ofil...e_cmd|
#特別っていうか、data領域のシンボルってことだったんだけど、他にもdata領域のシンボル
#で必要なものってある?
#data領域のシンボルって曖昧か。外部ライブラリのdata領域を参照してるシンボル、くらいの意図。
#getopt() のとか tzname とかいらなそうなのばかりですね
#そういうのも参照してれば問題出てたかも。今ソースの構成をいじってるので、ついでにauxsysもsrcに統合しちゃおうかな。とりあえずのworkaroundとして。真相が突き止められた方がいいけど。