memo/__fpscr_values
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
*__fpscr_values 問題 [#je2ff055]
-cvs版とdebian26版のglibcで__fpscr_valuesの扱い(グループ...
ことの発端は[[memo/gentoo]]参照~
--GLIBC_2.2グループ … SH-LinuxのFC版、silicon-linuxのebi...
--GLIBC_PRIVATEグループ … 将来版(CVS版)のglibc
--グループなし … 素のglibc-2.3.5(gentoo版?) … __fpscr...
~
-グループが異なると何が問題か?~
詳細は不明。~
コマンドやライブラリを異グループ間で相互利用できないらし...
特に_fpscr_valuesは全てのコマンドに含まれるため、
最悪ケースでは全てのコマンドやライブラリが相互利用できな...
将来のglibcと互換性が保てなくなる恐れがある。~
&color(red){話を__fpscr_valuesに限定すれば、どうやら、ビ...
&color(red){それぞれのグループをゴチャ混ぜにして再ビルド...
~
-debian26版の方針~
--sargeは現行のまま、__fpscr_values@GLIBC_2.2とする。~
--etch版を作る場合は、CVS版互換に修正。__fpscr_values@GLI...
~
----
私も~
--sargeは現行のまま、__fpscr_values@GLIBC_2.2とする。~
--etch版を作る場合は、CVS版互換に修正。__fpscr_values@GLI...
が妥当だと思います。 少し長いのですがどうしてこうなってし...
~
__fpscr_tableはSH-4の各浮動小数点モードでの細かい動作を規...
そのためその実体は(各プロセスイメージ中)ユニークであるの...
初期それが認識されず各ライブラリやコマンドが勝手にその実...
それではまずいと実体を crt1.o に移しライブラリはそれを含...
当然ですがそうすると本来は古いコマンドやライブラリは全て...
それが難しい場合に(一時的な)回避策として libc.so に weak ...
コマンドは crt1.o 由来の __fpscr_table を使う場合もあるの...
が、回避策なのでそこはあきらめるわけです。~
そういったディストリビューションでは shared lib を作ると ...
当然ですがGLIBC_2.2グループのライブラリと上に書いた回避策...
GLIBC_PRIVATE で versioned されたシンボルは特殊なもので C...
実際観察されているように外ではつかわれません。~
なぜこんなものが必要かはhttp://sourceware.org/ml/libc-hac...
ld.so は crt1.o をリンクしないのでこういうトリックが必要...
-- [[kkojima]] &new{2005-10-18 (火) 08:01:11};
-いつも有益な情報をありがとうございます。生半可に動いちゃ...
--メモ…etchでは、下記をあてること。
---http://sourceware.org/ml/libc-hacker/2005-01/msg00016....
---http://sourceware.org/ml/libc-hacker/2005-01/msg00017....
-ここへ来ると各パッチに「どうしてこれが必要か」という見方...
-glibc-2.3.5とglibc-cvsって随分と中身が違うのですね。glib...
--もしかしたら、gentooのパッチを当てれば全て解決するかも...
-あ、純粋な glibc-2.3.x base でしたら __fpscr_value に対...
--glibc作成時、GLIBC_2.2パッチ無し状態では正常にビルドで...
| 案 | グループ | パッチなど |>|>| Shard lib 互換性 | 備...
|~|~|~| 案0 | 案1,2 |案3 |~|h
|案0| GLIBC_2.2 | GLIBC_2.2パッチ |◎ | ◎ |...
|案1| GLIBC_PRIVATE | CVS-fpscr_valuesパッチのみ| △| ◎ | ...
|案2| グループなし | glibc-2.3.5そのまま | △ | ◎ |...
|案3| GLIBC_PRIVATE |glibc-2.3.5-branch update-20050722 a...
#comment
*debian26-etch版での対策メモ [#u769b2f7]
作るか作らないかは気分しだいです。(笑)~
**debian26版glibc-2.3.5 [#ude39baf]
debian26版のglibcではどうなっているかというと!~
-glibc-2.3.5リリース版に対する__fpscr_valuesパッチ部分~
#pre{{
--- glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/s...
+++ glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/s...
@@ -30,3 +30,13 @@
#define __syscall_error __syscall_error_1
#include <sysdeps/unix/sh/sysdep.S>
+
+ .data
+ .align 3
+ .globl ___fpscr_values
+ .type ___fpscr_values, @object
+ .size ___fpscr_values, 8
+___fpscr_values:
+ .long 0
+ .long 0x80000
+weak_alias (___fpscr_values, __fpscr_values)
--- glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/V...
+++ glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/V...
@@ -2,6 +2,7 @@
&color(blue){libc { ← 説明の便宜上追加};
GLIBC_2.2 {
# functions used in other libraries
__xstat64; __fxstat64; __lxstat64;
+ __fpscr_values;
# a*
alphasort64;
}}
--SH-LinuxのFC版互換である。~
--__fpscr_valuesは、data セクション、サイズは8、グループ...
~
-オブジェクトのチェック~
glibcとそれを用いてビルドしたshared libの__fpscr_values ...
#pre{{
landisk:~# objdump -T /lib/libc-2.3.5.so | grep fpscr
001164c8 w DO .data 00000008 GLIBC_2.2 __fpscr_val...
landisk:~# objdump -T /lib/libgcc_s.so.1 | grep fpscr
00000000 DO *UND* 00000008 GLIBC_2.2 __fpscr_val...
}}
libc-2.3.5.so の中に__fpscr_valuesの実態が存在する。しか...
「通常は実行ファイルに含まれる __fpscr_values が優先され...
**CVS版glibc-2.3.x [#j36c18ad]
-glibc-2.3.5リリース版に対する__fpscr_valuesパッチ部分~
#pre{{
--- glibc-2.3.5/sysdeps/sh/sh4/Versions~ 1970-01-0...
+++ glibc-2.3.5/sysdeps/sh/sh4/Versions 2005-01-12 11:58:...
@@ -0,0 +1,5 @@
+ld {
+ GLIBC_PRIVATE {
+ __fpscr_values;
+ }
+}
--- glibc-2.3.5/sysdeps/sh/dl-machine.h~ 2004-10-2...
+++ glibc-2.3.5/sysdeps/sh/dl-machine.h 2005-10-13 22:07:...
@@ -459,6 +459,12 @@ _dl_start_user:\n\
&color(blue){.text\n\ ← 説明の便宜上追加};
.long _rtld_local@GOT\n\
.L_dl_fini:\n\
.long _dl_fini@GOT\n\
+ .type __fpscr_values,@object\n\
+ .global __fpscr_values\n\
+__fpscr_values:\n\
+ .long 0\n\
+ .long 0x80000\n\
+ .weak __fpscr_values\n\
.previous\n\
");
}}
--__fpscr_valuesは、text セクション、サイズ指定は無し、グ...
---素朴な疑問:なぜ text セクションに__fpscr_valuesを配置...
~
-オブジェクトのチェック~
glibcとそれを用いてビルドしたshared libの__fpscr_values ...
#pre{{
landisk:/# objdump -T /lib/libc-2.3.5.so | grep fpscr
00000000 DO *UND* 00000000 GLIBC_PRIVATE __fpscr_v...
landisk:/# objdump -T /lib/libgcc_s.so.1 | grep fpscr
00000000 D *UND* 00000000 __fpscr_val...
}}
--textと指定してあるのにdataセクションになっている。何故...
--本来GLIBC_PRIVATEとなる部分がなぜかNULLになる。(ld{}の...
--__fpscr_valuesの実態がない。実態は各コマンドに存在する...
サイズ0の理由も「実態がないから」と解釈すればツジツマが...
~
-glibc-2.3.5/sysdeps/sh/elf/start.S~
本ファイルにも、__fpscr_valuesが存在し、data セクションで...
こちらの定義が使用されているようだ。(2重定義?)~
ちなみに、本部分は、debian26、CVS、素のglibc-2.3.5共に存...
#pre{{
/* Define a symbol for the first piece of initialized dat...
.data
.globl __data_start
__data_start:
.long 0
.weak data_start
data_start = __data_start
.global __fpscr_values
__fpscr_values:
.long 0
.long 0x80000
}}
-その他~
CVS版で作成したshared libは、__fpscr_valuesのグループが無...
debian26等のオブジェクトと混在させてビルド&リンクするこ...
(実際に使用できた。ただし逆は不可。)~
~
**__fpscr_values@GLIBC_2.2の使用状況調査 [#i6dc56b4]
-__fpscr_values@GLIBC_2.2 を shared lib に含むパッケージ~
#pre{{
a52dec
aalib
alsa-lib
apache
apt
arts
audiofile
bonobo
caudium
classpath
cupsys
db2
db3
directfb
e2fsprogs
evolution-data-server
expect
fltk1.1
freeglut
freetds
gcc-3.4
gimp-print
%%glib2.0%%
%%glibc%%
gnome-libs
gnome-print
gnome-vfs2
graphviz
%%gtk+2.0%%
guile-1.6
imagemagick
imlib+png2
jack-audio-connection-kit
jasper
kaffe
lcms
lesstif1-1
libbonoboui
libdv
libexif
libgd2
libggi
libglade
libgnome
libgnomeprint
libgnomeprintui
libgphoto2
libgsm
libmpeg3
libpng
libquicktime
libsdl1.2
libsndfile
libstroke
libvorbis
libwmf
libxml2
libxslt
mesa
net-snmp
ocaml
orbit
orbit2
php4
pike7.2
postgresql
qt-x11-free
recode
rpm
sane-backends
t1lib
tk8.4
w3c-libwww
wmaker
xaw3d
xawtv
%%xfree86%%
}}
-shared lib 詳細~
#pre{{
/lib/libc-2.3.5.so
/lib/libdb.so.3
/lib/libdb2.so.2.7.7
/lib/libext2fs.so.2.4
/lib/libgcc_s.so.1
/lib/libm-2.3.5.so
/lib/tls/libc-2.3.5.so
/lib/tls/libm-2.3.5.so
/usr/X11R6/lib/debug/libGL.so.1.2
/usr/X11R6/lib/debug/libGLU.so.1.3
/usr/X11R6/lib/debug/libXaw.so.6.1
/usr/X11R6/lib/debug/libXaw.so.7.0
/usr/X11R6/lib/debug/libXt.so.6.0
/usr/X11R6/lib/debug/libdps.so.1.0
/usr/X11R6/lib/debug/libdpstk.so.1.0
/usr/X11R6/lib/debug/libpsres.so.1.0
/usr/X11R6/lib/libGL.so.1.2
/usr/X11R6/lib/libGLU.so.1.3
/usr/X11R6/lib/libXaw.so.6.1
/usr/X11R6/lib/libXaw.so.7.0
/usr/X11R6/lib/libXaw3d.so.6.1
/usr/X11R6/lib/libXt.so.6.0
/usr/X11R6/lib/libdps.so.1.0
/usr/X11R6/lib/libdpstk.so.1.0
/usr/X11R6/lib/libpsres.so.1.0
/usr/lib/apache/1.3/libphp4.so
/usr/lib/apache/1.3/libproxy.so
/usr/lib/apache/1.3/mod_negotiation.so
/usr/lib/apache/1.3/mod_status.so
/usr/lib/apache2/modules/libphp4.so
/usr/lib/caudium/lib/7.2.580/UltraLog.so
/usr/lib/classpath/libgtkpeer.so.0.0.0
/usr/lib/classpath/libjavalang.so.0.0.0
/usr/lib/debug/libc-2.3.5.so
/usr/lib/debug/libdb2.so.2.7.7
/usr/lib/debug/libm-2.3.5.so
/usr/lib/directfb-0.9-udeb.20/systems/libdirectfb_fbdev.so
/usr/lib/directfb-0.9.20/interfaces/IDirectFBVideoProvide...
/usr/lib/directfb-0.9.20/systems/libdirectfb_fbdev.so
/usr/lib/directfb-0.9.20/systems/libdirectfb_sdl.so
/usr/lib/gdk-imlib1/libimlib-ps.so
/usr/lib/ggi/display/xf86dga.so
/usr/lib/ggi/helper/helper_x_dga.so
/usr/lib/ggi/helper/helper_x_vidmode.so
/usr/lib/gphoto2/2.1.5/libgphoto2_canon.so
/usr/lib/gphoto2/2.1.5/libgphoto2_digita.so
/usr/lib/gphoto2/2.1.5/libgphoto2_dimera3500.so
/usr/lib/gphoto2/2.1.5/libgphoto2_jamcam.so
/usr/lib/gphoto2/2.1.5/libgphoto2_jd11.so
/usr/lib/gphoto2/2.1.5/libgphoto2_kodak_dc120.so
/usr/lib/gphoto2/2.1.5/libgphoto2_kodak_dc210.so
/usr/lib/gphoto2/2.1.5/libgphoto2_kodak_dc240.so
/usr/lib/gphoto2/2.1.5/libgphoto2_kodak_dc3200.so
/usr/lib/gphoto2/2.1.5/libgphoto2_konica.so
/usr/lib/gphoto2/2.1.5/libgphoto2_konica_qm150.so
/usr/lib/gphoto2/2.1.5/libgphoto2_mars.so
/usr/lib/gphoto2/2.1.5/libgphoto2_panasonic_coolshot.so
/usr/lib/gphoto2/2.1.5/libgphoto2_panasonic_dc1000.so
/usr/lib/gphoto2/2.1.5/libgphoto2_panasonic_dc1580.so
/usr/lib/gphoto2/2.1.5/libgphoto2_panasonic_l859.so
/usr/lib/gphoto2/2.1.5/libgphoto2_pccam600.so
/usr/lib/gphoto2/2.1.5/libgphoto2_polaroid_pdc700.so
/usr/lib/gphoto2/2.1.5/libgphoto2_ptp2.so
/usr/lib/gphoto2/2.1.5/libgphoto2_ricoh_g3.so
/usr/lib/gphoto2/2.1.5/libgphoto2_samsung.so
/usr/lib/gphoto2/2.1.5/libgphoto2_sierra.so
/usr/lib/gphoto2/2.1.5/libgphoto2_sipix_web2.so
/usr/lib/gphoto2/2.1.5/libgphoto2_smal.so
/usr/lib/gphoto2/2.1.5/libgphoto2_sx330z.so
/usr/lib/graphviz/libneatogen.so.0.0.0
/usr/lib/graphviz/libtclplan.so.0.0.0
/usr/lib/kaffe/jthreads/jre/lib/sh/libkaffegc-1.1.x-cvs.so
/usr/lib/kaffe/jthreads/jre/lib/sh/libkaffevm-1.1.x-cvs.so
/usr/lib/kaffe/jthreads/jre/lib/sh/libnative-1.1.x-cvs.so
/usr/lib/kaffe/pthreads/jre/lib/sh/libgtkpeer.so.0.0.0
/usr/lib/kaffe/pthreads/jre/lib/sh/libkaffegc-1.1.x-cvs.so
/usr/lib/kaffe/pthreads/jre/lib/sh/libkaffevm-1.1.x-cvs.so
/usr/lib/kaffe/pthreads/jre/lib/sh/libnative-1.1.x-cvs.so
/usr/lib/lib-gnu-java-awt-peer-gtk.so.5.0.0
/usr/lib/libGL.so.1.4.500
/usr/lib/libGLU.so.1.3.500
/usr/lib/libImlib.so.1.9.14
/usr/lib/libMagick.so.6.0.6
/usr/lib/libORBit-2.so.0.0.0
/usr/lib/libORBit.so.0.5.17
/usr/lib/libOSMesa.so.4.0.500
/usr/lib/libSDL-1.2.so.0.7.1
/usr/lib/libXm.so.1.0.2
/usr/lib/libXm.so.2.0.1
/usr/lib/liba52-0.7.4.so
/usr/lib/libaa.so.1.0.4
/usr/lib/libapt-pkg-libc6.3-6.so.3.3.0
/usr/lib/libartscbackend.so.0.0.0
/usr/lib/libartsflow.so.1.0.0
/usr/lib/libartsgslplayobject.so.0.0.0
/usr/lib/libartswavplayobject.so.0.0.0
/usr/lib/libasound.so.2.0.0
/usr/lib/libaudiofile.so.0.0.2
/usr/lib/libbonoboui-2.so.0.0.0
/usr/lib/libbonobox.so.2.0.1
/usr/lib/libct.so.1.0.0
/usr/lib/libcups.so.2
/usr/lib/libcupsimage.so.2
/usr/lib/libdb_tcl.so.3.0.2
/usr/lib/libdirectfb-0.9-udeb.so.20.0.0
/usr/lib/libdirectfb-0.9.so.20.0.0
/usr/lib/libdv.so.4.0.1
/usr/lib/libecal.so.6.3.0
/usr/lib/libecpg.so.4.1
/usr/lib/libexif.so.10.0.0
/usr/lib/libexpect5.42.so.1
/usr/lib/libfltk.so.1.1
/usr/lib/libfltk_forms.so.1.1
/usr/lib/libg2c.so.0.0.0
/usr/lib/libgcj.so.5.0.0
/usr/lib/libgd.so.2.0.33
/usr/lib/libgdk_pixbuf-2.0.so.0.600.2
/usr/lib/libgimpprint.so.1.1.3
/usr/lib/libglade.so.0.4.2
/usr/lib/libglut.so.3.8.0
/usr/lib/libgnome-2.so.0.800.1
/usr/lib/libgnome.so.32.4.3
/usr/lib/libgnomeprint.so.15.1.11
/usr/lib/libgnomeprint/2.8.2/modules/libgnomeprintcups.so
/usr/lib/libgnomeprintui-2-2.so.0.1.0
/usr/lib/libgnomeui.so.32.14.1
/usr/lib/libgnomevfs-2.so.0.800.4
/usr/lib/libgobject-2.0.so.0.600.3
/usr/lib/libgphoto2.so.2.0.3
/usr/lib/libgsm.so.1.0.10
/usr/lib/libgstroke.so.0.0.5
/usr/lib/libgtk-x11-2.0.so.0.600.2
/usr/lib/libgtkxmhtml.so.1.0.1
/usr/lib/libguile.so.12.3.0
/usr/lib/libjack-0.80.0.so.0.0.23
/usr/lib/libjack0.80.0-0/intime.so
/usr/lib/libjack0.80.0-0/jack_alsa.so
/usr/lib/libjack0.80.0-0/jack_dummy.so
/usr/lib/libjack0.80.0-0/jack_oss.so
/usr/lib/libjasper-1.701.so.1.0.0
/usr/lib/liblcms.so.1.0.13
/usr/lib/libmpeg3.so.1.5.4
/usr/lib/libnetsnmpmibs.so.5.1.2
/usr/lib/libpics.so.0.0.0
/usr/lib/libpng10.so.0.1.0.18
/usr/lib/libqt-mt.so.3.3.3
/usr/lib/libqt.so.3.3.3
/usr/lib/libquicktime.so.1.0.0
/usr/lib/libquicktime/lqt_audiocodec.so
/usr/lib/libquicktime/lqt_dv.so
/usr/lib/libquicktime/lqt_mjpeg.so
/usr/lib/libquicktime/lqt_opendivx.so
/usr/lib/libquicktime/lqt_png.so
/usr/lib/libquicktime/lqt_rtjpeg.so
/usr/lib/libquicktime/lqt_videocodec.so
/usr/lib/libquicktime/lqt_vorbis.so
/usr/lib/librecode.so.0.0.0
/usr/lib/librpm-4.0.4.so
/usr/lib/libsndfile.so.1.0.10
/usr/lib/libstroke.so.0.0.5
/usr/lib/libsybdb.so.3.0.0
/usr/lib/libt1.so.5.0.2
/usr/lib/libt1x.so.5.0.2
/usr/lib/libtds.so.2.0.0
/usr/lib/libtdssrv.so.1.0.0
/usr/lib/libtk8.4.so.0
/usr/lib/libvorbis.so.0.3.0
/usr/lib/libvorbisenc.so.2.0.0
/usr/lib/libvorbisfile.so.3.1.0
/usr/lib/libwmf-0.2.so.7.1.0
/usr/lib/libwmflite-0.2.so.7.0.1
/usr/lib/libwraster.so.3.1.0
/usr/lib/libxml2.so.2.6.16
/usr/lib/libxslt.so.1.1.12
/usr/lib/libzvt.so.2.3.0
/usr/lib/ocaml/3.08.3/stublibs/dllbigarray.so
/usr/lib/odbc/libtdsodbc.so
/usr/lib/php4/20020429/gd.so
/usr/lib/pike/7.2.580/lib/modules/GL.so
/usr/lib/pike/7.2.580/lib/modules/Image.so
/usr/lib/pike/7.2.580/lib/modules/_Image_JPEG.so
/usr/lib/pike/7.2.580/lib/modules/_Image_TTF.so
/usr/lib/pike/7.2.580/lib/modules/___GTK.so
/usr/lib/pike/7.2.580/lib/modules/___Math.so
/usr/lib/postgresql/lib/_int.so
/usr/lib/postgresql/lib/btree_gist.so
/usr/lib/postgresql/lib/ltree.so
/usr/lib/postgresql/lib/rtree_gist.so
/usr/lib/postgresql/lib/seg.so
/usr/lib/postgresql/lib/tsearch.so
/usr/lib/postgresql/lib/tsearch2.so
/usr/lib/qt3/plugins/imageformats/libqjpeg-non-mt.so
/usr/lib/qt3/plugins/imageformats/libqjpeg.so
/usr/lib/sane/libsane-agfafocus.so.1.0.15
/usr/lib/sane/libsane-artec.so.1.0.15
/usr/lib/sane/libsane-bh.so.1.0.15
/usr/lib/sane/libsane-canon.so.1.0.15
/usr/lib/sane/libsane-canon630u.so.1.0.15
/usr/lib/sane/libsane-dc25.so.1.0.15
/usr/lib/sane/libsane-hp5400.so.1.0.15
/usr/lib/sane/libsane-microtek.so.1.0.15
/usr/lib/sane/libsane-microtek2.so.1.0.15
/usr/lib/sane/libsane-snapscan.so.1.0.15
/usr/lib/sane/libsane-umax_pp.so.1.0.15
/usr/lib/xawtv/drv0-v4l2-old.so
/usr/lib/xawtv/drv0-v4l2.so
/usr/lib/xawtv/drv1-v4l.so
/usr/lib/xawtv/flt-disor.so
/usr/lib/xawtv/flt-gamma.so
/usr/lib/xawtv/snd-oss.so
/usr/lib/xawtv/write-qt.so
}}
-チェックスクリプト
#pre{{
#!/usr/bin/perl
while (</share/www/download/debian26/binary-sh4/*/*sh4.de...
$file = $_;
$packag="";
$source="";
open (DPKG, "dpkg --info $file |");
while(<DPKG>){
chop;
$line=$_;
$line =~ s/^\s+//;
if($line =~ /^Package:/){
$packag = $line;
$source = $line;
}
if($line =~ /^Source:/){
$source = $line;
}
}
$_ = "$packag $source ";
($dummy1,$packag,$dummy2,$source) = /^(\S+):\s+(\S+)\...
close(DPKG);
system("rm -rf ./tmp");
system("mkdir ./tmp");
system("cp $file ./tmp");
system("cd ./tmp && mkdir ./tmp1 && ar x $file && tar...
$fname = $file;
$fname =~ s/^.*\///g;
print ("checking ... $source/$fname\n");
open (FLIST_, "find ./tmp/tmp1/ |");
while($filel = <FLIST_>){
chop($filel);
$file_type = qx{file $filel};
if($file_type =~ /shared object/){
$find = qx{objdump -T $filel | grep fpscr};
if($find){
chop($find);
print "$source:$fname:$filel -> $find\n";
}
}
}
close(FLIST);
}
}}
終了行:
*__fpscr_values 問題 [#je2ff055]
-cvs版とdebian26版のglibcで__fpscr_valuesの扱い(グループ...
ことの発端は[[memo/gentoo]]参照~
--GLIBC_2.2グループ … SH-LinuxのFC版、silicon-linuxのebi...
--GLIBC_PRIVATEグループ … 将来版(CVS版)のglibc
--グループなし … 素のglibc-2.3.5(gentoo版?) … __fpscr...
~
-グループが異なると何が問題か?~
詳細は不明。~
コマンドやライブラリを異グループ間で相互利用できないらし...
特に_fpscr_valuesは全てのコマンドに含まれるため、
最悪ケースでは全てのコマンドやライブラリが相互利用できな...
将来のglibcと互換性が保てなくなる恐れがある。~
&color(red){話を__fpscr_valuesに限定すれば、どうやら、ビ...
&color(red){それぞれのグループをゴチャ混ぜにして再ビルド...
~
-debian26版の方針~
--sargeは現行のまま、__fpscr_values@GLIBC_2.2とする。~
--etch版を作る場合は、CVS版互換に修正。__fpscr_values@GLI...
~
----
私も~
--sargeは現行のまま、__fpscr_values@GLIBC_2.2とする。~
--etch版を作る場合は、CVS版互換に修正。__fpscr_values@GLI...
が妥当だと思います。 少し長いのですがどうしてこうなってし...
~
__fpscr_tableはSH-4の各浮動小数点モードでの細かい動作を規...
そのためその実体は(各プロセスイメージ中)ユニークであるの...
初期それが認識されず各ライブラリやコマンドが勝手にその実...
それではまずいと実体を crt1.o に移しライブラリはそれを含...
当然ですがそうすると本来は古いコマンドやライブラリは全て...
それが難しい場合に(一時的な)回避策として libc.so に weak ...
コマンドは crt1.o 由来の __fpscr_table を使う場合もあるの...
が、回避策なのでそこはあきらめるわけです。~
そういったディストリビューションでは shared lib を作ると ...
当然ですがGLIBC_2.2グループのライブラリと上に書いた回避策...
GLIBC_PRIVATE で versioned されたシンボルは特殊なもので C...
実際観察されているように外ではつかわれません。~
なぜこんなものが必要かはhttp://sourceware.org/ml/libc-hac...
ld.so は crt1.o をリンクしないのでこういうトリックが必要...
-- [[kkojima]] &new{2005-10-18 (火) 08:01:11};
-いつも有益な情報をありがとうございます。生半可に動いちゃ...
--メモ…etchでは、下記をあてること。
---http://sourceware.org/ml/libc-hacker/2005-01/msg00016....
---http://sourceware.org/ml/libc-hacker/2005-01/msg00017....
-ここへ来ると各パッチに「どうしてこれが必要か」という見方...
-glibc-2.3.5とglibc-cvsって随分と中身が違うのですね。glib...
--もしかしたら、gentooのパッチを当てれば全て解決するかも...
-あ、純粋な glibc-2.3.x base でしたら __fpscr_value に対...
--glibc作成時、GLIBC_2.2パッチ無し状態では正常にビルドで...
| 案 | グループ | パッチなど |>|>| Shard lib 互換性 | 備...
|~|~|~| 案0 | 案1,2 |案3 |~|h
|案0| GLIBC_2.2 | GLIBC_2.2パッチ |◎ | ◎ |...
|案1| GLIBC_PRIVATE | CVS-fpscr_valuesパッチのみ| △| ◎ | ...
|案2| グループなし | glibc-2.3.5そのまま | △ | ◎ |...
|案3| GLIBC_PRIVATE |glibc-2.3.5-branch update-20050722 a...
#comment
*debian26-etch版での対策メモ [#u769b2f7]
作るか作らないかは気分しだいです。(笑)~
**debian26版glibc-2.3.5 [#ude39baf]
debian26版のglibcではどうなっているかというと!~
-glibc-2.3.5リリース版に対する__fpscr_valuesパッチ部分~
#pre{{
--- glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/s...
+++ glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/s...
@@ -30,3 +30,13 @@
#define __syscall_error __syscall_error_1
#include <sysdeps/unix/sh/sysdep.S>
+
+ .data
+ .align 3
+ .globl ___fpscr_values
+ .type ___fpscr_values, @object
+ .size ___fpscr_values, 8
+___fpscr_values:
+ .long 0
+ .long 0x80000
+weak_alias (___fpscr_values, __fpscr_values)
--- glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/V...
+++ glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/V...
@@ -2,6 +2,7 @@
&color(blue){libc { ← 説明の便宜上追加};
GLIBC_2.2 {
# functions used in other libraries
__xstat64; __fxstat64; __lxstat64;
+ __fpscr_values;
# a*
alphasort64;
}}
--SH-LinuxのFC版互換である。~
--__fpscr_valuesは、data セクション、サイズは8、グループ...
~
-オブジェクトのチェック~
glibcとそれを用いてビルドしたshared libの__fpscr_values ...
#pre{{
landisk:~# objdump -T /lib/libc-2.3.5.so | grep fpscr
001164c8 w DO .data 00000008 GLIBC_2.2 __fpscr_val...
landisk:~# objdump -T /lib/libgcc_s.so.1 | grep fpscr
00000000 DO *UND* 00000008 GLIBC_2.2 __fpscr_val...
}}
libc-2.3.5.so の中に__fpscr_valuesの実態が存在する。しか...
「通常は実行ファイルに含まれる __fpscr_values が優先され...
**CVS版glibc-2.3.x [#j36c18ad]
-glibc-2.3.5リリース版に対する__fpscr_valuesパッチ部分~
#pre{{
--- glibc-2.3.5/sysdeps/sh/sh4/Versions~ 1970-01-0...
+++ glibc-2.3.5/sysdeps/sh/sh4/Versions 2005-01-12 11:58:...
@@ -0,0 +1,5 @@
+ld {
+ GLIBC_PRIVATE {
+ __fpscr_values;
+ }
+}
--- glibc-2.3.5/sysdeps/sh/dl-machine.h~ 2004-10-2...
+++ glibc-2.3.5/sysdeps/sh/dl-machine.h 2005-10-13 22:07:...
@@ -459,6 +459,12 @@ _dl_start_user:\n\
&color(blue){.text\n\ ← 説明の便宜上追加};
.long _rtld_local@GOT\n\
.L_dl_fini:\n\
.long _dl_fini@GOT\n\
+ .type __fpscr_values,@object\n\
+ .global __fpscr_values\n\
+__fpscr_values:\n\
+ .long 0\n\
+ .long 0x80000\n\
+ .weak __fpscr_values\n\
.previous\n\
");
}}
--__fpscr_valuesは、text セクション、サイズ指定は無し、グ...
---素朴な疑問:なぜ text セクションに__fpscr_valuesを配置...
~
-オブジェクトのチェック~
glibcとそれを用いてビルドしたshared libの__fpscr_values ...
#pre{{
landisk:/# objdump -T /lib/libc-2.3.5.so | grep fpscr
00000000 DO *UND* 00000000 GLIBC_PRIVATE __fpscr_v...
landisk:/# objdump -T /lib/libgcc_s.so.1 | grep fpscr
00000000 D *UND* 00000000 __fpscr_val...
}}
--textと指定してあるのにdataセクションになっている。何故...
--本来GLIBC_PRIVATEとなる部分がなぜかNULLになる。(ld{}の...
--__fpscr_valuesの実態がない。実態は各コマンドに存在する...
サイズ0の理由も「実態がないから」と解釈すればツジツマが...
~
-glibc-2.3.5/sysdeps/sh/elf/start.S~
本ファイルにも、__fpscr_valuesが存在し、data セクションで...
こちらの定義が使用されているようだ。(2重定義?)~
ちなみに、本部分は、debian26、CVS、素のglibc-2.3.5共に存...
#pre{{
/* Define a symbol for the first piece of initialized dat...
.data
.globl __data_start
__data_start:
.long 0
.weak data_start
data_start = __data_start
.global __fpscr_values
__fpscr_values:
.long 0
.long 0x80000
}}
-その他~
CVS版で作成したshared libは、__fpscr_valuesのグループが無...
debian26等のオブジェクトと混在させてビルド&リンクするこ...
(実際に使用できた。ただし逆は不可。)~
~
**__fpscr_values@GLIBC_2.2の使用状況調査 [#i6dc56b4]
-__fpscr_values@GLIBC_2.2 を shared lib に含むパッケージ~
#pre{{
a52dec
aalib
alsa-lib
apache
apt
arts
audiofile
bonobo
caudium
classpath
cupsys
db2
db3
directfb
e2fsprogs
evolution-data-server
expect
fltk1.1
freeglut
freetds
gcc-3.4
gimp-print
%%glib2.0%%
%%glibc%%
gnome-libs
gnome-print
gnome-vfs2
graphviz
%%gtk+2.0%%
guile-1.6
imagemagick
imlib+png2
jack-audio-connection-kit
jasper
kaffe
lcms
lesstif1-1
libbonoboui
libdv
libexif
libgd2
libggi
libglade
libgnome
libgnomeprint
libgnomeprintui
libgphoto2
libgsm
libmpeg3
libpng
libquicktime
libsdl1.2
libsndfile
libstroke
libvorbis
libwmf
libxml2
libxslt
mesa
net-snmp
ocaml
orbit
orbit2
php4
pike7.2
postgresql
qt-x11-free
recode
rpm
sane-backends
t1lib
tk8.4
w3c-libwww
wmaker
xaw3d
xawtv
%%xfree86%%
}}
-shared lib 詳細~
#pre{{
/lib/libc-2.3.5.so
/lib/libdb.so.3
/lib/libdb2.so.2.7.7
/lib/libext2fs.so.2.4
/lib/libgcc_s.so.1
/lib/libm-2.3.5.so
/lib/tls/libc-2.3.5.so
/lib/tls/libm-2.3.5.so
/usr/X11R6/lib/debug/libGL.so.1.2
/usr/X11R6/lib/debug/libGLU.so.1.3
/usr/X11R6/lib/debug/libXaw.so.6.1
/usr/X11R6/lib/debug/libXaw.so.7.0
/usr/X11R6/lib/debug/libXt.so.6.0
/usr/X11R6/lib/debug/libdps.so.1.0
/usr/X11R6/lib/debug/libdpstk.so.1.0
/usr/X11R6/lib/debug/libpsres.so.1.0
/usr/X11R6/lib/libGL.so.1.2
/usr/X11R6/lib/libGLU.so.1.3
/usr/X11R6/lib/libXaw.so.6.1
/usr/X11R6/lib/libXaw.so.7.0
/usr/X11R6/lib/libXaw3d.so.6.1
/usr/X11R6/lib/libXt.so.6.0
/usr/X11R6/lib/libdps.so.1.0
/usr/X11R6/lib/libdpstk.so.1.0
/usr/X11R6/lib/libpsres.so.1.0
/usr/lib/apache/1.3/libphp4.so
/usr/lib/apache/1.3/libproxy.so
/usr/lib/apache/1.3/mod_negotiation.so
/usr/lib/apache/1.3/mod_status.so
/usr/lib/apache2/modules/libphp4.so
/usr/lib/caudium/lib/7.2.580/UltraLog.so
/usr/lib/classpath/libgtkpeer.so.0.0.0
/usr/lib/classpath/libjavalang.so.0.0.0
/usr/lib/debug/libc-2.3.5.so
/usr/lib/debug/libdb2.so.2.7.7
/usr/lib/debug/libm-2.3.5.so
/usr/lib/directfb-0.9-udeb.20/systems/libdirectfb_fbdev.so
/usr/lib/directfb-0.9.20/interfaces/IDirectFBVideoProvide...
/usr/lib/directfb-0.9.20/systems/libdirectfb_fbdev.so
/usr/lib/directfb-0.9.20/systems/libdirectfb_sdl.so
/usr/lib/gdk-imlib1/libimlib-ps.so
/usr/lib/ggi/display/xf86dga.so
/usr/lib/ggi/helper/helper_x_dga.so
/usr/lib/ggi/helper/helper_x_vidmode.so
/usr/lib/gphoto2/2.1.5/libgphoto2_canon.so
/usr/lib/gphoto2/2.1.5/libgphoto2_digita.so
/usr/lib/gphoto2/2.1.5/libgphoto2_dimera3500.so
/usr/lib/gphoto2/2.1.5/libgphoto2_jamcam.so
/usr/lib/gphoto2/2.1.5/libgphoto2_jd11.so
/usr/lib/gphoto2/2.1.5/libgphoto2_kodak_dc120.so
/usr/lib/gphoto2/2.1.5/libgphoto2_kodak_dc210.so
/usr/lib/gphoto2/2.1.5/libgphoto2_kodak_dc240.so
/usr/lib/gphoto2/2.1.5/libgphoto2_kodak_dc3200.so
/usr/lib/gphoto2/2.1.5/libgphoto2_konica.so
/usr/lib/gphoto2/2.1.5/libgphoto2_konica_qm150.so
/usr/lib/gphoto2/2.1.5/libgphoto2_mars.so
/usr/lib/gphoto2/2.1.5/libgphoto2_panasonic_coolshot.so
/usr/lib/gphoto2/2.1.5/libgphoto2_panasonic_dc1000.so
/usr/lib/gphoto2/2.1.5/libgphoto2_panasonic_dc1580.so
/usr/lib/gphoto2/2.1.5/libgphoto2_panasonic_l859.so
/usr/lib/gphoto2/2.1.5/libgphoto2_pccam600.so
/usr/lib/gphoto2/2.1.5/libgphoto2_polaroid_pdc700.so
/usr/lib/gphoto2/2.1.5/libgphoto2_ptp2.so
/usr/lib/gphoto2/2.1.5/libgphoto2_ricoh_g3.so
/usr/lib/gphoto2/2.1.5/libgphoto2_samsung.so
/usr/lib/gphoto2/2.1.5/libgphoto2_sierra.so
/usr/lib/gphoto2/2.1.5/libgphoto2_sipix_web2.so
/usr/lib/gphoto2/2.1.5/libgphoto2_smal.so
/usr/lib/gphoto2/2.1.5/libgphoto2_sx330z.so
/usr/lib/graphviz/libneatogen.so.0.0.0
/usr/lib/graphviz/libtclplan.so.0.0.0
/usr/lib/kaffe/jthreads/jre/lib/sh/libkaffegc-1.1.x-cvs.so
/usr/lib/kaffe/jthreads/jre/lib/sh/libkaffevm-1.1.x-cvs.so
/usr/lib/kaffe/jthreads/jre/lib/sh/libnative-1.1.x-cvs.so
/usr/lib/kaffe/pthreads/jre/lib/sh/libgtkpeer.so.0.0.0
/usr/lib/kaffe/pthreads/jre/lib/sh/libkaffegc-1.1.x-cvs.so
/usr/lib/kaffe/pthreads/jre/lib/sh/libkaffevm-1.1.x-cvs.so
/usr/lib/kaffe/pthreads/jre/lib/sh/libnative-1.1.x-cvs.so
/usr/lib/lib-gnu-java-awt-peer-gtk.so.5.0.0
/usr/lib/libGL.so.1.4.500
/usr/lib/libGLU.so.1.3.500
/usr/lib/libImlib.so.1.9.14
/usr/lib/libMagick.so.6.0.6
/usr/lib/libORBit-2.so.0.0.0
/usr/lib/libORBit.so.0.5.17
/usr/lib/libOSMesa.so.4.0.500
/usr/lib/libSDL-1.2.so.0.7.1
/usr/lib/libXm.so.1.0.2
/usr/lib/libXm.so.2.0.1
/usr/lib/liba52-0.7.4.so
/usr/lib/libaa.so.1.0.4
/usr/lib/libapt-pkg-libc6.3-6.so.3.3.0
/usr/lib/libartscbackend.so.0.0.0
/usr/lib/libartsflow.so.1.0.0
/usr/lib/libartsgslplayobject.so.0.0.0
/usr/lib/libartswavplayobject.so.0.0.0
/usr/lib/libasound.so.2.0.0
/usr/lib/libaudiofile.so.0.0.2
/usr/lib/libbonoboui-2.so.0.0.0
/usr/lib/libbonobox.so.2.0.1
/usr/lib/libct.so.1.0.0
/usr/lib/libcups.so.2
/usr/lib/libcupsimage.so.2
/usr/lib/libdb_tcl.so.3.0.2
/usr/lib/libdirectfb-0.9-udeb.so.20.0.0
/usr/lib/libdirectfb-0.9.so.20.0.0
/usr/lib/libdv.so.4.0.1
/usr/lib/libecal.so.6.3.0
/usr/lib/libecpg.so.4.1
/usr/lib/libexif.so.10.0.0
/usr/lib/libexpect5.42.so.1
/usr/lib/libfltk.so.1.1
/usr/lib/libfltk_forms.so.1.1
/usr/lib/libg2c.so.0.0.0
/usr/lib/libgcj.so.5.0.0
/usr/lib/libgd.so.2.0.33
/usr/lib/libgdk_pixbuf-2.0.so.0.600.2
/usr/lib/libgimpprint.so.1.1.3
/usr/lib/libglade.so.0.4.2
/usr/lib/libglut.so.3.8.0
/usr/lib/libgnome-2.so.0.800.1
/usr/lib/libgnome.so.32.4.3
/usr/lib/libgnomeprint.so.15.1.11
/usr/lib/libgnomeprint/2.8.2/modules/libgnomeprintcups.so
/usr/lib/libgnomeprintui-2-2.so.0.1.0
/usr/lib/libgnomeui.so.32.14.1
/usr/lib/libgnomevfs-2.so.0.800.4
/usr/lib/libgobject-2.0.so.0.600.3
/usr/lib/libgphoto2.so.2.0.3
/usr/lib/libgsm.so.1.0.10
/usr/lib/libgstroke.so.0.0.5
/usr/lib/libgtk-x11-2.0.so.0.600.2
/usr/lib/libgtkxmhtml.so.1.0.1
/usr/lib/libguile.so.12.3.0
/usr/lib/libjack-0.80.0.so.0.0.23
/usr/lib/libjack0.80.0-0/intime.so
/usr/lib/libjack0.80.0-0/jack_alsa.so
/usr/lib/libjack0.80.0-0/jack_dummy.so
/usr/lib/libjack0.80.0-0/jack_oss.so
/usr/lib/libjasper-1.701.so.1.0.0
/usr/lib/liblcms.so.1.0.13
/usr/lib/libmpeg3.so.1.5.4
/usr/lib/libnetsnmpmibs.so.5.1.2
/usr/lib/libpics.so.0.0.0
/usr/lib/libpng10.so.0.1.0.18
/usr/lib/libqt-mt.so.3.3.3
/usr/lib/libqt.so.3.3.3
/usr/lib/libquicktime.so.1.0.0
/usr/lib/libquicktime/lqt_audiocodec.so
/usr/lib/libquicktime/lqt_dv.so
/usr/lib/libquicktime/lqt_mjpeg.so
/usr/lib/libquicktime/lqt_opendivx.so
/usr/lib/libquicktime/lqt_png.so
/usr/lib/libquicktime/lqt_rtjpeg.so
/usr/lib/libquicktime/lqt_videocodec.so
/usr/lib/libquicktime/lqt_vorbis.so
/usr/lib/librecode.so.0.0.0
/usr/lib/librpm-4.0.4.so
/usr/lib/libsndfile.so.1.0.10
/usr/lib/libstroke.so.0.0.5
/usr/lib/libsybdb.so.3.0.0
/usr/lib/libt1.so.5.0.2
/usr/lib/libt1x.so.5.0.2
/usr/lib/libtds.so.2.0.0
/usr/lib/libtdssrv.so.1.0.0
/usr/lib/libtk8.4.so.0
/usr/lib/libvorbis.so.0.3.0
/usr/lib/libvorbisenc.so.2.0.0
/usr/lib/libvorbisfile.so.3.1.0
/usr/lib/libwmf-0.2.so.7.1.0
/usr/lib/libwmflite-0.2.so.7.0.1
/usr/lib/libwraster.so.3.1.0
/usr/lib/libxml2.so.2.6.16
/usr/lib/libxslt.so.1.1.12
/usr/lib/libzvt.so.2.3.0
/usr/lib/ocaml/3.08.3/stublibs/dllbigarray.so
/usr/lib/odbc/libtdsodbc.so
/usr/lib/php4/20020429/gd.so
/usr/lib/pike/7.2.580/lib/modules/GL.so
/usr/lib/pike/7.2.580/lib/modules/Image.so
/usr/lib/pike/7.2.580/lib/modules/_Image_JPEG.so
/usr/lib/pike/7.2.580/lib/modules/_Image_TTF.so
/usr/lib/pike/7.2.580/lib/modules/___GTK.so
/usr/lib/pike/7.2.580/lib/modules/___Math.so
/usr/lib/postgresql/lib/_int.so
/usr/lib/postgresql/lib/btree_gist.so
/usr/lib/postgresql/lib/ltree.so
/usr/lib/postgresql/lib/rtree_gist.so
/usr/lib/postgresql/lib/seg.so
/usr/lib/postgresql/lib/tsearch.so
/usr/lib/postgresql/lib/tsearch2.so
/usr/lib/qt3/plugins/imageformats/libqjpeg-non-mt.so
/usr/lib/qt3/plugins/imageformats/libqjpeg.so
/usr/lib/sane/libsane-agfafocus.so.1.0.15
/usr/lib/sane/libsane-artec.so.1.0.15
/usr/lib/sane/libsane-bh.so.1.0.15
/usr/lib/sane/libsane-canon.so.1.0.15
/usr/lib/sane/libsane-canon630u.so.1.0.15
/usr/lib/sane/libsane-dc25.so.1.0.15
/usr/lib/sane/libsane-hp5400.so.1.0.15
/usr/lib/sane/libsane-microtek.so.1.0.15
/usr/lib/sane/libsane-microtek2.so.1.0.15
/usr/lib/sane/libsane-snapscan.so.1.0.15
/usr/lib/sane/libsane-umax_pp.so.1.0.15
/usr/lib/xawtv/drv0-v4l2-old.so
/usr/lib/xawtv/drv0-v4l2.so
/usr/lib/xawtv/drv1-v4l.so
/usr/lib/xawtv/flt-disor.so
/usr/lib/xawtv/flt-gamma.so
/usr/lib/xawtv/snd-oss.so
/usr/lib/xawtv/write-qt.so
}}
-チェックスクリプト
#pre{{
#!/usr/bin/perl
while (</share/www/download/debian26/binary-sh4/*/*sh4.de...
$file = $_;
$packag="";
$source="";
open (DPKG, "dpkg --info $file |");
while(<DPKG>){
chop;
$line=$_;
$line =~ s/^\s+//;
if($line =~ /^Package:/){
$packag = $line;
$source = $line;
}
if($line =~ /^Source:/){
$source = $line;
}
}
$_ = "$packag $source ";
($dummy1,$packag,$dummy2,$source) = /^(\S+):\s+(\S+)\...
close(DPKG);
system("rm -rf ./tmp");
system("mkdir ./tmp");
system("cp $file ./tmp");
system("cd ./tmp && mkdir ./tmp1 && ar x $file && tar...
$fname = $file;
$fname =~ s/^.*\///g;
print ("checking ... $source/$fname\n");
open (FLIST_, "find ./tmp/tmp1/ |");
while($filel = <FLIST_>){
chop($filel);
$file_type = qx{file $filel};
if($file_type =~ /shared object/){
$find = qx{objdump -T $filel | grep fpscr};
if($find){
chop($find);
print "$source:$fname:$filel -> $find\n";
}
}
}
close(FLIST);
}
}}
ページ名: