Gauche > Archives > 2011/11/24

2011/11/24 00:01:38 UTCshiro
#
なるほど。stripって今時役に立つのかなあ。昔はバイナリを小さくするためによく使ったけど。auxsysについては今はもう分けてる意味が無くなったので将来はsrcに統合してしまおうかと思ってて、そうしたらこの問題は出なくなりそうです。が、他のDSOのロードで問題が出てないかどうか気になります。gauche.uvector、gauche.fcntlなどのモジュールは使えますか?
2011/11/24 00:45:46 UTCenami
#
MacOSX の strip は単に strip executable とすると dynamic load に必要なシンボルまで取り除いてしまうみたいですね. man page の真ん中あたりにごにょごにょ書いてあります. http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/strip.1.html
2011/11/24 03:54:09 UTCktgy1016
#
gosh を strip した上で make check してみましたが、uvector、fcntl ともに問題ないようです。
いくつか出るエラーも、すべて auxsys に関するものですね。
2011/11/24 08:41:14 UTCenami
#
いわれてみるとほかはリンクできるのは変ですね.strip -u -r したバイナリではリンクできるようです.
2011/11/24 08:48:35 UTCenami
#
strip gosh と strip -u -r gosh で削られるバイト数は同じですが,
2011/11/24 08:49:26 UTCenami
#
hexdump して比較すると environ を含むテーブルらしきものがなくなっていました.
2011/11/24 08:54:13 UTCshiro
#
ふむ。まあライブラリ中にあるグローバルにアクセス可能なデータっていうのが珍しくなりつつあるのでenvironだけ特殊な事情があるってのもありそうには思える。昔はerrnoもそうだったけどスレッドが普通になってからはerrnoはマクロになってるからなあ。
2011/11/24 08:59:04 UTCenami
#
削られているテーブルみると environ だけ特別ってわけでもないみたいです
2011/11/24 08:59:14 UTCenami
#
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|
2011/11/24 09:09:21 UTCshiro
#
特別っていうか、data領域のシンボルってことだったんだけど、他にもdata領域のシンボル
#
で必要なものってある?
#
data領域のシンボルって曖昧か。外部ライブラリのdata領域を参照してるシンボル、くらいの意図。
2011/11/24 09:16:47 UTCenami
#
getopt() のとか tzname とかいらなそうなのばかりですね
2011/11/24 09:18:16 UTCshiro
#
そういうのも参照してれば問題出てたかも。今ソースの構成をいじってるので、ついでにauxsysもsrcに統合しちゃおうかな。とりあえずのworkaroundとして。真相が突き止められた方がいいけど。