__fpscr_values 問題 Edit

  • cvs版とdebian26版のglibcで__fpscr_valuesの扱い(グループ)が異なることが判明。
    ことの発端はmemo/gentoo参照
    • GLIBC_2.2グループ … SH-LinuxのFC版、silicon-linuxのebi版、debian26版のglibc
    • GLIBC_PRIVATEグループ … 将来版(CVS版)のglibc
    • グループなし … 素のglibc-2.3.5(gentoo版?) … __fpscr_valuesは、どうやって解決してるんだろう?

  • グループが異なると何が問題か?
    詳細は不明。
    コマンドやライブラリを異グループ間で相互利用できないらしい。
    特に_fpscr_valuesは全てのコマンドに含まれるため、 最悪ケースでは全てのコマンドやライブラリが相互利用できなくなる。
    将来のglibcと互換性が保てなくなる恐れがある。
    話を__fpscr_valuesに限定すれば、どうやら、ビルド済みのコマンドやライブラリは相互利用可能みたいです。
    それぞれのグループをゴチャ混ぜにして再ビルドする場合にのみ問題が露呈するらしい。

  • debian26版の方針
    • sargeは現行のまま、__fpscr_values@GLIBC_2.2とする。
    • etch版を作る場合は、CVS版互換に修正。__fpscr_values@GLIBC_PRIVATEとする。


私も

  • sargeは現行のまま、__fpscr_values@GLIBC_2.2とする。
  • etch版を作る場合は、CVS版互換に修正。__fpscr_values@GLIBC_PRIVATEとする。

が妥当だと思います。 少し長いのですがどうしてこうなってしまったか書いてみます。

__fpscr_tableはSH-4の各浮動小数点モードでの細かい動作を規定する内容を含みます。
そのためその実体は(各プロセスイメージ中)ユニークであるのが正しいです。 (丸めモードとか例外に関する挙動とかを規定するので)
初期それが認識されず各ライブラリやコマンドが勝手にその実体を持っていた時期がありました。
それではまずいと実体を crt1.o に移しライブラリはそれを含まないようにしようということになりました。
当然ですがそうすると本来は古いコマンドやライブラリは全て作りなおしになります。
それが難しい場合に(一時的な)回避策として libc.so に weak な定義をおいてディストリビュートされることが多かったのです。
コマンドは crt1.o 由来の __fpscr_table を使う場合もあるのでこれは正確には __fpscr_table のユニークネスを壊してしまいます。
が、回避策なのでそこはあきらめるわけです。
そういったディストリビューションでは shared lib を作ると libc.so にある __fpscr_table を参照しています。 これが GLIBC_2.2グループです。
当然ですがGLIBC_2.2グループのライブラリと上に書いた回避策を持たない libc.so の組み合わせでは問題がでてしまいます。
GLIBC_PRIVATE で versioned されたシンボルは特殊なもので CVS 版の dl-machine.h にある __fpscr_table は ld.so にだけ含まれます。
実際観察されているように外ではつかわれません。
なぜこんなものが必要かはhttp://sourceware.org/ml/libc-hacker/2005-01/msg00016.htmlにあります。
ld.so は crt1.o をリンクしないのでこういうトリックが必要でした。

  • kkojima? 2005-10-18 (火) 08:01:11
  • いつも有益な情報をありがとうございます。生半可に動いちゃうと、こういう重要な情報を見落としてしまいますね。特に、今回のケースは、亜流ディストリビューションを増やしてしまう恐れがあるので、そうならないために、何処かでパッチを一元管理できると良いのですが。とりあえず、私が気付いた部分はできるだけWikiに記しておこうと思います。 -- 管理人? 2005-10-18 (火) 22:08:49
  • ここへ来ると各パッチに「どうしてこれが必要か」という見方での解釈がされていてすごく勉強になりますし、どういう場合に必要かもそれでわかるのでとてもありがたいです。 私も toolchain 関係でもし何か追加できる情報があれば付け加えるようにしたいと思います。 -- kkojima? 2005-10-19 (水) 08:34:22
  • glibc-2.3.5とglibc-cvsって随分と中身が違うのですね。glibc-2.3.5へCVSパッチを不用意に当てるとエンバグしかねないので、下記「CVS版glibc-2.3.x」に記したパッチのみを適用する方向で検討中ですが、そうした場合、何か思いつく不都合などありますでしょうか? 本パッチは、「[PATCH] SH: Re: archs need fixing」に記される複合パッチ群から__fpscr_valuesに関係する部分を正しく切り出せているでしょうか?glibc-cvsって、私はglibc-2.3.x用と思っていましたが、来るglibc-2.4(3.0?)用のCVSだったのですね。汗-- 管理人? 2005-10-19 (水) 23:31:48
  • あ、純粋な glibc-2.3.x base でしたら __fpscr_value に対する patch は必要ないはずです。 純粋な glibc-2.3.x には問題になった audit function の support がありませんので。 もちろん patch 自体は有害にはならないです。gentooの patch を見てみたのですがこれは 2.3.5 release と mailine CVS at 20050722 のdiff + alpha のように見えます。 ちなみに 2.3.6 はもうすぐにもreleaseされるかもしれない、という状態のようです <http://sources.redhat.com/ml/libc-alpha/2005-10/msg00023.html>。 2.3.x の最新の状態は glibc-2_3-branch というタグで cvs で取れます。 うむむ、どういう方針で行くかですね。 -- kkojima? 2005-10-20 (木) 09:01:23
    • glibc作成時、GLIBC_2.2パッチ無し状態では正常にビルドできなかったので、GLIBC_2.2パッチは必須だと誤解してしまいました。実はGLIBC_2.2グループ(FC版)のlibgcc_s.so.1を使用してglibcを作成したため、その様なパッチが必要になったようです。(glibcとgccは鶏と卵の関係でした。)てな背景があります。 私の中では、業に従えってことで案2が有力候補ですが、他の状況をみつつ決めたいと思います。もう少し状況が整理できたら、海老原さんにも打診してみます。-- 管理人? 2005-10-20 (木) 22:58:11
      グループパッチなどShard lib 互換性備考(etchではどうすべきか?)
      案0  案1,2案3 
      案0GLIBC_2.2GLIBC_2.2パッチ       ◎  ○?用いない方向。案1,2環境で作成したshared libをリンク可能(グループ情報が含まれないため)
      案1GLIBC_PRIVATECVS-fpscr_valuesパッチのみ○?案1は、特に副作用は無いらしい。案2はグループ無しであるが問題ないらしい。「案1と案3は同じグループであるため、互換性が高い」というならば、積極的に案1を採用すべきだが、そういった利点がないなら案2を採用するのが無難
      案2グループなし glibc-2.3.5そのまま ○?
      案3GLIBC_PRIVATEglibc-2.3.5-branch update-20050722 audit function込み? △?◎? 将来バージョン。下位互換性は考慮されていると推測。ただし、枯れてない可能性がある。またdebianとの相性問題も心配

#comment

debian26-etch版での対策メモ Edit

作るか作らないかは気分しだいです。(笑)

debian26版glibc-2.3.5 Edit

debian26版のglibcではどうなっているかというと!

  • glibc-2.3.5リリース版に対する__fpscr_valuesパッチ部分
    --- glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/sysdep.S.orig	2002-10-11 19:51:13.000000000 +0900
    +++ glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/sysdep.S	2004-04-24 04:40:41.000000000 +0900
    @@ -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/Versions~	2004-04-24 14:41:42.000000000 +0900
    +++ glibc-2.3.2-200310271512/sysdeps/unix/sysv/linux/sh/Versions	2004-04-24 14:42:31.000000000 +0900
    @@ -2,6 +2,7 @@
     libc { ← 説明の便宜上追加
    
       GLIBC_2.2 {
         # functions used in other libraries
         __xstat64; __fxstat64; __lxstat64;
    +    __fpscr_values;
     
         # a*
         alphasort64;
    
  • SH-LinuxのFC版互換である。
  • __fpscr_valuesは、data セクション、サイズは8、グループはGLIBC_2.2である。
  • オブジェクトのチェック
    glibcとそれを用いてビルドしたshared libの__fpscr_values を表示してみる。
    landisk:~# objdump -T /lib/libc-2.3.5.so | grep fpscr
    001164c8  w   DO .data  00000008  GLIBC_2.2   __fpscr_values
    
    landisk:~# objdump -T /lib/libgcc_s.so.1 | grep fpscr
    00000000      DO *UND*  00000008  GLIBC_2.2   __fpscr_values
    
    libc-2.3.5.so の中に__fpscr_valuesの実態が存在する。しかし、weak指定されている。
    「通常は実行ファイルに含まれる __fpscr_values が優先される」という解釈でいいのかな?

CVS版glibc-2.3.x Edit

  • glibc-2.3.5リリース版に対する__fpscr_valuesパッチ部分
    --- glibc-2.3.5/sysdeps/sh/sh4/Versions~        1970-01-01 09:00:00.000000000 +0900
    +++ glibc-2.3.5/sysdeps/sh/sh4/Versions 2005-01-12 11:58:13.000000000 +0900
    @@ -0,0 +1,5 @@
    +ld {
    +  GLIBC_PRIVATE {
    +    __fpscr_values;
    +  }
    +}
    --- glibc-2.3.5/sysdeps/sh/dl-machine.h~        2004-10-26 04:04:03.000000000 +0900
    +++ glibc-2.3.5/sysdeps/sh/dl-machine.h 2005-10-13 22:07:08.000000000 +0900
    @@ -459,6 +459,12 @@ _dl_start_user:\n\
     .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 セクション、サイズ指定は無し、グループはGLIBC_PRIVATEである。
      • 素朴な疑問:なぜ text セクションに__fpscr_valuesを配置するの?サイズ指定はなしでいいの?
  • オブジェクトのチェック
    glibcとそれを用いてビルドしたshared libの__fpscr_values を表示してみる。
    landisk:/# objdump -T /lib/libc-2.3.5.so  | grep fpscr
    00000000      DO *UND*  00000000  GLIBC_PRIVATE __fpscr_values
    
    landisk:/# objdump -T /lib/libgcc_s.so.1  | grep fpscr
    00000000      D  *UND*  00000000              __fpscr_values
    
    • textと指定してあるのにdataセクションになっている。何故? サイズは0でいいのかな〜?
    • 本来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共に存在する。
    /* Define a symbol for the first piece of initialized data.  */
    	.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の使用状況調査 Edit

  • __fpscr_values@GLIBC_2.2 を shared lib に含むパッケージ
    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 詳細
    /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/IDirectFBVideoProvider/libidirectfbvideoprovider_libmpeg3.so
    /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
    
  • チェックスクリプト
    #!/usr/bin/perl
    
    while (</share/www/download/debian26/binary-sh4/*/*sh4.deb>){
        $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+)\s+(\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 vxfz data.tar.gz -C ./tmp1 > /dev/null");
    
        $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);
     }
    

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-06-13 (火) 20:02:27 (6527d)