JPH09152961A - ソフトウエアプログラムにバージョン設定情報を付す方法および装置 - Google Patents

ソフトウエアプログラムにバージョン設定情報を付す方法および装置

Info

Publication number
JPH09152961A
JPH09152961A JP8195380A JP19538096A JPH09152961A JP H09152961 A JPH09152961 A JP H09152961A JP 8195380 A JP8195380 A JP 8195380A JP 19538096 A JP19538096 A JP 19538096A JP H09152961 A JPH09152961 A JP H09152961A
Authority
JP
Japan
Prior art keywords
version
software program
section
sunw
object code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8195380A
Other languages
English (en)
Inventor
Rodrick I Evans
アイ エバンズ ロドリック
Robert A Gingell
エー ジンゲル ロバート
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH09152961A publication Critical patent/JPH09152961A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 ソフトウエアプログラムについて、簡単且つ
効率的なバージョン設定を実現できるようにする。 【解決手段】 構築時にオブジェクトがコンパイルさ
れ、リンクされる場合、リンクエディタは、前記オブジ
ェクト内に、このオブジェクトの様々なバージョンに定
義された大域記号を示すバージョン定義セクションおよ
びバージョン記号セクションを作成する。前記オブジェ
クトは、共用オブジェクト、再配置可能なオブジェクト
または動的に実行可能なオブジェクトであってよい。構
築時にアプリケーションソフトウエアプログラムがバー
ジョン情報を有するオブジェクトとリンクされる場合、
前記エディタは、その結果としての動的に実行可能なオ
ブジェクトに、このオブジェクトのどのバージョンが前
記プログラムの実行に必要であるかを示すバージョン従
属状態セクションを作成する。実行時リンカは、前記プ
ログラムの実行前に、前記オブジェクトの必要なバージ
ョンのすべてが存在するかを判定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、ソフトウエアプ
ログラムをリンクする方法および装置に関し、特に、ソ
フトウエアプログラムの連続したバージョンの変更を管
理する動的リンクシステムを提供する方法および装置に
関する。
【0002】
【従来の技術】ソフトウエア開発というものは絶えず現
在進行中のプロセスといえるものである。ソフトウエア
の最初のバージョンは、該ソフトウエアが書かれたとき
のタスクには十分であろうが、時が経過し、新たな特徴
が追加されるのに伴って、アップグレードを必要とす
る。ソフトウエアアプリケーションが共用オブジェクト
(“ライブラリ”とも言う)に結合(バインド)される
ような場合、このソフトウエア開発プロセスは、特に問
題を伴う。共用オブジェクトが更新または変更される場
合、しばしば、該共用オブジェクトに対するインターフ
ェイスも更新または変更される。さらに、共用オブジェ
クトに対するインターフェイスが変更されない場合で
も、しばしば、前記共用オブジェクトによって実行され
る機能の一部に変化が生じる。
【0003】
【発明が解決しようとする課題】従来のシステムのある
ものは、実行時(ランタイム)に、アプリケーションソ
フトウエアプログラムを共用オブジェクトに動的にリン
クする。このようなシステムにおいては、共用オブジェ
クトの新たなバージョンがリリースされる度に、該共用
オブジェクトにアクセスするアプリケーションソフトウ
エアプログラムを慎重にチェックする必要がある。ま
た、(前記共用オブジェクトに対するインターフェイス
が同じであっても)前記共用オブジェクトの動作が変っ
ていないか否かを判定するためにも、前記アプリケーシ
ョンソフトウエアプログラムをチェックする必要があ
る。従来、このようなチェックは人手によって行われて
いた。インターフェイスの不整合によって生じるエラー
は、しばしば、インターフェイスの不整合が見つかり、
または、共用オブジェクトがそれまでと同じ動作を行わ
ないことにより、アプリケーションソフトウエアプログ
ラムの実行中にのみ発見される。このような場合必要な
のは、特定のアプリケーションソフトウエアプログラム
が共用オブジェクトのどのバージョンにリンクしようと
するのかを判定する手段、および、前記共用オブジェク
トの必要なバージョンが実行時における動的リンク処理
中に存在しているか否かをチェックする手段である。
【0004】従来、前記共用オブジェクト自体のファイ
ル名は、新たなバージョンごとに更新されていた。この
ため、リンク処理中には前記共用オブジェクトの最も新
しいバージョンのみが存在し、この最も新しいバージョ
ンは該オブジェクトの旧いバージョンとは完全に異なる
ファイル名を有することになる。この点につき、オブジ
ェクトの新たなバージョンが作成される毎に該オブジェ
クトの名前を変えないようにすることが望ましい。従来
のシステムは、しばしば、アプリケーションプログラム
および共用オブジェクト(ライブラリ)を“1かたまり
のシステム”としてリリースすることによって、バージ
ョンチェックを回避しようとしている。すなわち、共用
オブジェクトのバージョンの変更がなされたか否かに関
わらず、新たなアプリケーションは、それが必要とする
オブジェクトのすべてと共に出荷される。この点につ
き、前記システムにおける、バージョン変更に対処する
ために必要な部分のみをアップグレードできるようにす
ることが望ましい。
【0005】この発明は上述の点に鑑みてなされたもの
で、オブジェクトの新たなバージョンが作成される毎に
該オブジェクトの名前を変えないようにすることがで
き、且つ、バージョン変更に対処するために必要な部分
のみをアップグレードできるようにすることにより、簡
単且つ効率的なバージョン設定を可能にする、ソフトウ
エアプログラムにバージョン設定情報を付す方法および
装置を提供することを目的とする。
【0006】
【課題を解決するための手段】この発明は、ソフトウエ
アプログラムを動的にリンクする方法および装置を提供
するものであり、また、アプリケーションソフトウエア
プログラムによってアクセスされるオブジェクトの連続
したバージョンにおける変更を把握するバージョンシス
テムを提供する。この発明は、バージョン設定されたオ
ブジェクトにアクセスするためにアプリケーションソフ
トウエアプログラムによって使用されるインターフェー
スをチェックし、前記アプリケーションソフトウエアプ
ログラムによる前記バージョン設定されたオブジェクト
の無効バージョンにアクセスする試みを検出する。こう
して、この発明は、アプリケーションソフトウエアプロ
グラムとオブジェクトとの間の後方互換性を維持しなが
ら、オブジェクトの制御された進化を可能にするもので
ある。
【0007】この発明は、記号インターフェースおよび
実行上の変更が1つのオブジェクト内においてラベル表
示できるようにする、バージョン設定システムを提供す
る。構築時において、リンクエディタは、バージョン設
定されたオブジェクトに対して、該オブジェクトのすべ
ての利用可能なバージョンを定義するデータ(バージョ
ン定義セクションおよびバージョン記号セクション)を
付加する。また、構築時において、リンクエディタは、
ソフトウエアアプリケーションに対して、該アプリケー
ションのバージョン要件を定義するデータ(バージョン
従属状態セクション)を付加する。実行時において、実
行時リンカは、前記ソフトウエアアプリケーションの要
件が前記オブジェクト自体に格納されたバージョン定義
に一致するか否か、すなわち、前記ソフトウエアアプリ
ケーションに必要とされる前記バージョン設定されたオ
ブジェクトが前記実行時リンカに利用可能であるか否か
を確認する。
【0008】バージョンとは、オブジェクトに記録され
た名前またはラベルである。バージョンは1つまたは2
つ以上の大域記号(グローバルシンボル)に関連づけら
れてよく、この場合、バージョンは記号インターフェー
スを定義する。そうでない場合、バージョンは、単に、
実行上の変更、すなわち、オブジェクトの機能の変更が
存在するものの、新たな大域記号の定義はなされない変
更を示す標識であってよい。後者の場合、そのバージョ
ンは“弱い(ウィーク)”バージョンと呼ばれる。ここ
に説明するこの発明の実施の形態において、各バージョ
ンに関連した大域記号およびバージョン名は、人によっ
て発生される“マップファイル”に定義される。バージ
ョン設定されたオブジェクトを作成するために、前記マ
ップファイルは、構築時に、1つまたは2つ以上の再配
置可能な(コンパイルされた)オブジェクトと共に前記
リンクエディタに入力される。構築時に、アプリケーシ
ョンが(バージョン設定情報を有する)バージョン設定
されたオブジェクトとリンク編集されるとき、デフォル
ト値により、前記アプリケーションによって参照される
大域記号を含むバージョンに対する従属状態が前記アプ
リケーションに設定される。さらに、弱い定義に対する
“弱い”従属状態が設定される。
【0009】この発明は、1つのオブジェクト内におけ
るバージョン定義の継承を可能にする。バージョンはバ
ージョンを受け継ぎ、これにより、相互に関連したイン
ターフェース定義を作成するために、複数組の記号を組
合わせることができる。例えば、1つの新たなバージョ
ンは、旧いバージョンのすべての大域記号を受け継ぐこ
とができる。この発明は、リンクエディット時における
オブジェクトのバージョンの可視性を制御でき、実際
上、前記アプリケーションプログラムに利用可能なイン
ターフェースを制御できる。また、この発明は、前記ア
プリケーションプログラムがオブジェクトの弱いバージ
ョンを要求することを強制することもできる。
【0010】上記目的を達成するため、この発明は、ソ
フトウエアプログラムにバージョン設定情報を付す方法
であって、ソフトウエアプログラムのためのオブジェク
トコードを用意するステップと、前記ソフトウエアプロ
グラムのバージョンに関するバージョン名を示すマップ
ファイルを用意するステップと、前記ソフトウエアプロ
グラムのバージョン名を示す情報が、前記マップファイ
ルに従って前記オブジェクトコードに付加されるよう、
前記オブジェクトコードをリンクし、これにより、バー
ジョン設定されたオブジェクトを生成するステップとを
具備し、これらのステップがデータ処理システムによっ
て実行されるものである。これにより、この発明によれ
ば、バージョン設定されたオブジェクトを自動的に生成
することができる。
【0011】さらに、この発明は、ソフトウエアプログ
ラムにバージョン設定情報を付す方法であって、第1の
ソフトウエアプログラムのための第1のオブジェクトコ
ードを用意するステップと、前記第1のソフトウエアプ
ログラムのバージョンに関するバージョン名を示すマッ
プファイルを用意するステップと、前記第1のソフトウ
エアプログラムのバージョン名を示す情報が、前記マッ
プファイルに従って前記第1のオブジェクトコードに付
加されるよう、前記第1のオブジェクトコードをリンク
し、これにより、バージョン設定されたオブジェクトを
生成するステップと、第2のソフトウエアプログラムの
ための第2のオブジェクトコードを用意するステップ
と、前記第2のオブジェクトコードを前記バージョン設
定されたオブジェクトにリンクするステップであって、
このステップが、前記第2のソフトウエアプログラムに
必要とされる前記第1のソフトウエアプログラムのバー
ジョンを判定するステップと、前記第2のソフトウエア
プログラムに必要とされる前記バージョンを示す情報を
前記第2のオブジェクトコードに付加し、これにより、
動的に実行可能なプログラムを生成するステップとをさ
らに含むものと、を具備し、これらのステップがデータ
処理システムによって実行されるものである。これによ
り、この発明によれば、バージョン設定されたオブジェ
クトを自動的に生成することができると共に、第2のソ
フトウエアプログラムすなわちアプリケーションソフト
ウエアプログラムを、このバージョン設定されたオブジ
ェクトに動的にリンクして実行可能とすることができ
る。
【0012】別の観点に従えば、この発明は、ソフトウ
エアプログラムにバージョン設定情報を付す装置であっ
て、第1のソフトウエアプログラムのための第1のオブ
ジェクトコードを格納する記憶媒体と、前記第1のソフ
トウエアプログラムのバージョンに関するバージョン名
を指定するマップファイルを格納する記憶媒体と、前記
マップファイルに従って、前記第1のオブジェクトコー
ドに対して、前記第1のソフトウエアプログラムの前記
バージョンのバージョン名を定義する付加情報を付し、
これにより、バージョン設定されたオブジェクトを生成
するリンカと、第2のソフトウエアプログラムのための
第2のオブジェクトコードを格納する記憶媒体と、前記
第2のソフトウエアプログラムに必要とされるバージョ
ンを示す付加情報を前記第2のオブジェクトコードに付
すことによって、前記第2のオブジェクトコードを前記
バージョン設定されたオブジェクトにリンクし、これに
より、動的に実行可能なプログラムを生成するリンカと
を具備したものである。
【0013】別の観点に従えば、この発明は、動的に実
行可能なオブジェクトに必要とされるオブジェクトのバ
ージョンが該実行可能オブジェクトの実行中に存在する
ことを判定させるための、コンピュータによって読み取
り可能なコードを格納したコンピュータによって使用可
能な媒体を備えたコンピュータプログラム製品であっ
て、コンピュータに、第1のソフトウエアプログラムの
ための第1のオブジェクトコードを用意させる第1のコ
ンピュータ読み取り可能プログラムコード装置と、コン
ピュータに、前記第1のソフトウエアプログラムのバー
ジョンに関連したバージョン名を指定するマップファイ
ルを用意させる第2のコンピュータ読み取り可能プログ
ラムコード装置と、前記第1のソフトウエアプログラム
のバージョン名を示す情報が、前記マップファイルに従
って、前記第1のオブジェクトコードに付加されるよ
う、コンピュータに、前記第1のオブジェクトコードを
リンクさせ、これにより、バージョン設定されたオブジ
ェクトを生成させる第3のコンピュータ読み取り可能プ
ログラムコード装置とを具備したものである。
【0014】
【発明の実施の形態】以下、添付図面を参照してこの発
明の一実施の形態を詳細に説明する。 1.概論 図1は、この発明に係るコンピュータシステム100の
ブロック図である。該コンピュータシステム100は、
CPU102と、メモリ104と、入出力ライン106
とを備えている。当業者に理解されるように、前記コン
ピュータシステム100は、ディスクドライブ、キーボ
ード、ディスプレイ装置、ネットワーク接続部、付加的
なメモリ、付加的なCPU等、ここでは明確さのために
図示していないその他の多数の要素を含んでいてもよ
い。前記メモリ104は、ライブラリ(共用オブジェク
トとも言う)114と、該共用オブジェクト114のソ
ースコード110および再配置可能な(コンパイルされ
た)コード112とを格納している。さらに、前記メモ
リ104は、アプリケーションソフトウエアプログラム
のソースコード116と、アプリケーション116の再
配置可能な(コンパイルされた)コード118と、アプ
リケーション116の動的に実行可能な(リンクされ
た)コード120を格納している。また、前記メモリ1
04は、OS(カーネル)ソフトウエア122と、マッ
プファイル130,132と、リンクエディタ124
と、実行時(ランタイム)リンカ126とを格納してい
る。前記共用オブジェクト114および実行可能オブジ
ェクト120の各々は、前記リンクエディタ124によ
って作成されるものである。前記共用オブジェクト11
4および実行可能コード120の各々は、Prentice Hal
l,Inc.によって発行された“System V Application Bin
ary Interface”の第3版に定義されたExecutable Link
ing Format(実行可能リンクフォーマット、以下、“E
LFフォーマット”とも言う)と同様なELFを有す
る。
【0015】しかしながら、以下に説明するように、こ
の発明において、前記オブジェクト114,120のE
LFフォーマットは、付加的なデータを含むよう拡張さ
れている。共用オブジェクト114は、図9に示すフォ
ーマットを有する。前記動的に実行可能なオブジェクト
120は、図14に示すフォーマットを有する。以下に
説明するように、前記共用オブジェクト114は、該共
用オブジェクト114の各バージョン毎のバージョン設
定情報(バージョン定義セクション)と、各バージョン
毎の公用記号リスト(バージョン記号セクション)とを
含んでいる。さらに、前記共用オブジェクト114は、
バージョンの従属状態(関係)に関する情報(バージョ
ン従属状態セクション)を含んでいてよい。実行可能オ
ブジェクト120は、バージョンの従属状態(関係)に
関する情報(バージョン従属状態セクション)を含んで
いる。明確さのために図示されていないが、当業者に理
解されるように、前記メモリ104は、アプリケーショ
ンプログラム、オペレーティングシステム、データ等の
その他の情報をも格納している。
【0016】この発明の好ましい実施の形態は、Solari
sオペレーティングシステムのバージョン2.5の下に
実施される。SolarisはSun Microsystems, Inc. の登録
商標である。また、Unixは、X/OPEN, Ltd. により排他
的にライセンスされ、米国およびその他の国で登録され
た商標である。図2は、図1のリンクエディタ124の
入出力を示す図であり、バージョン設定された共用オブ
ジェクトの作成を示す。以下では共用オブジェクトのバ
ージョン設定について説明するが、この発明は、動的に
実行可能なオブジェクトおよび再配置可能なオブジェク
トのバージョン設定を実行するためにも使用可能であ
る。このように、これらの種類のオブジェクトは、バー
ジョン定義セクションおよびバージョン記号セクション
を含むことができる。前記リンカエディタ124は、マ
ップファイル130および共用オブジェクト用の再配置
可能なオブジェクトコード112の入力を受け取り、共
用オブジェクト114の出力を発生する。前記マップフ
ァイル130は、前記共用オブジェクトの各バージョン
毎に大域(グローバル)記号およびバージョン名を指定
する。ここに説明する実施の形態において、好ましく
は、前記マップファイル130は、図8のフォーマット
を有し、人によって作成される。他の実施の形態におい
て、前記マップファイル130は、コンパイルシステム
によって作成されてもよい。
【0017】図3は、図1のリンクエディタ124の他
の入出力を示す図であり、図2の共用オブジェクトによ
るアプリケーションプログラムのリンクエディト(編
集)を示すものである。前記リンクエディタ124は、
共用オブジェクト114および再配置可能なオブジェク
ト118を入力し、これらのオブジェクト114,11
8を処理することによって動的に実行可能なオブジェク
ト120を生成する。図4に示すように、前記オブジェ
クト114のどのバージョンがこのリンク手続きに許容
されるかを示すために、このステップにマップファイル
132が使用されてもよい。好ましくは、該マップファ
イル132は、図13のフォーマットを有し、人によっ
て作成される。
【0018】図5に示すように、実行時において、実行
時リンカ126は、動的に実行可能なオブジェクト12
0が必要とする共用オブジェクト114のすべてのバー
ジョンが存在するか否かを確認する。前記すべてのバー
ジョンが存在する場合、前記実行時リンカ126は、処
理ファイル122を作成して実行することによって、動
的に実行可能なオブジェクト120を実行する。こうし
て、前記リンクエディタ124は、再配置可能なオブジ
ェクトからバージョン設定された共用オブジェクトを構
築し、前記共用オブジェクトのどのバージョンがアプリ
ケーションプログラムに必要とされるのかを判定する。
前記実行時リンカ126は、そのメモリのオブジェクト
をマップし、結合する。こうして、前記実行時リンカ1
26は、単に、前記リンクエディタ124によって指示
されるようにオブジェクトを結合する。さらに、前記実
行時リンカ126は、動的に実行可能なオブジェクト1
20が必要とする共用オブジェクト114のバージョン
が存在することを保証するための、確認チェックを行
う。正しいバージョンが存在しない場合、前記実行時リ
ンカ126はエラーを発生する。
【0019】次に、共用オブジェクト114の様々なバ
ージョン間で可能な変更について説明する。一般に、こ
れらの変更は、互換性のある更新と互換性の無い更新と
の2つのグループに分類できる。前記互換性のある更新
とは、付加的な更新、すなわち、共用オブジェクト11
4に対するインターフェースでそれまで利用可能であっ
た大域記号がそのまま維持される更新である。互換性の
ある更新の一例は、大域記号の付加である。前のバージ
ョンから記号は除去されていないので、前のバージョン
とインターフェース接続されたアプリケーションソフト
ウエアは依然として正しく動作する。前記互換性の無い
更新は、特定の既存のインターフェースを使用した既存
のアプリケーションが故障したり不正動作したりするよ
うな状態に、前記既存のインターフェースを変更するも
のである。このような互換性の無い更新の例としては、
記号の除去、機能に対する引数の付加、機能からの引数
の除去、および、機能に対する引数のサイズまたは内容
の変更などがある。共用オブジェクト114に対する誤
り訂正は、既存のインターフェースに対する互換性のあ
る更新であったり、互換性の無い更新であったりする。
例えば、互換性のある誤り訂正は、単に、それまで定義
されていたインターフェースを維持しながら、共用オブ
ジェクト114の内部機能を変更するものである。一
方、互換性の無い誤り訂正は、共用オブジェクト114
に対するインターフェースの変更を必要とする。
【0020】2.構築時におけるバージョン設定情報の
作成 上記パラグラフは、この発明に従うバージョン設定を実
行するために、構築時および実行時に行われる処理の全
体的な説明であった。以下のパラグラフは、前記リンク
エディタ124が、どのようにして、共用オブジェクト
およびアプリケーションプログラムにバージョン設定情
報を付加するのかを説明するものである。
【0021】a.構築時にバージョン設定されたオブジ
ェクトに関する バージョン定義作成 以下に説明するように、好ましい実施の形態において、
前記リンクエディタ124は、マップファイル130の
バージョン指示情報に従って、共用オブジェクトのバー
ジョン設定を制御する。前記マップファイル130は、
人によって作成されるのが好ましいが、コンパイルシス
テムのようなソフトウエアによって作成されてもよい。
図6および図7は、図2のリンクエディタ124によっ
て実行されるステップを示すフローチャートである。こ
れらのステップは、共用オブジェクト114のようなバ
ージョン設定されたオブジェクトを作成するために実行
されるステップの一部である。当業者によって理解され
るように、図6および図7(および図12)のステップ
は、メモリ104に格納されていて、且つ、例えばメモ
リ104に格納されたデータ構造を使用したリンクエデ
ィタ124の命令を実行する図1のCPU102によっ
て行われる。
【0022】ステップ302に示すように、図6のステ
ップは、リンクエディタ124がコマンドライン上のー
Gオプションによって起動された時に開始される。前記
ーGオプションは、リンクエディタ124が(動的に実
行可能なオブジェクトとは対照的な)共用オブジェクト
を生成すべきことを示すものである。この発明の好まし
い実施の形態において、前記リンクエディタ124はー
Mオプションによっても起動される。該ーMオプション
は、マップファイル130が“バージョン定義指示”ソ
ースとして使用されるべきことを示すものである。図2
の例は共用オブジェクトの作成を示しているが、この発
明は、バージョン設定された再配置可能なオブジェクト
および動的に実行可能なオブジェクトを作成するために
も使用可能である。
【0023】以下の例は、使用されるUnixコマンド(ca
t,cc,pvs,ld)の詳細を含んでいない。該Unixコマン
ドは、Sun Microsystemsから入手可能なSolaris Refere
nceManualに記載されている。この後のパラグラフで
は、共用オブジェクトソースコード110およびマップ
ファイル130の一例について説明する。表1は、Cプ
ログラミング言語で書かれた4つのソースファイル
(“foo.c”,“data.c”,“bar1.c”および“bar2.
c”)のソースコード110を示している。これらのソ
ースコードファイルは、1つの共用オブジェクトを構成
している。また、表2のマップファイルは、前記共用オ
ブジェクトの様々なバージョンの大域インターフェース
を定義している。これらのファイルは、コンパイルされ
ることにより、図1の再配置可能なオブジェクト112
を構成する。その後、前記リンクエディタ124は、後
で説明するように、マップファイル130に従って、バ
ージョン設定された共用オブジェクト114を作成す
る。
【0024】
【表1】
【0025】
【表2】
【0026】図8は、BackusーNaur(バッカスナウル)
フォーマットを使用したマップファイル130のフォー
マットを示すものである。該バッカスナウルフォーマッ
トにおいて、角括弧“[”および“]”はオプショナル
要素を示す。例えば、図8において、“[version nam
e]”は前記マップファイルフォーマットのオプショナ
ル要素である。共用オブジェクト114は、実行時にお
いて動的に実行可能なオブジェクト120のような他の
オブジェクトが結合することが可能な大域記号を提供す
る。これらの大域記号は、前記マップファイル130に
おいて指定されており、共用オブジェクト114のアプ
リケーション・バイナリ・インターフェース(ABI)
を記述する。共用オブジェクト114の生存期間中、オ
ブジェクトのインターフェースは、大域記号の付加また
は除去によって変更可能である。さらに、共用オブジェ
クト114の進化は、前記インターフェースの大域記号
に影響しない、該オブジェクト114に対する内部実行
上の変更を伴うことがある。
【0027】表2は、マップファイル130の一例を示
すものである。該表2において、前記マップファイル1
30は、共用オブジェクト114のバージョンであるSU
NW.1.1,SUNW.1.2,SUNW.1.2.1,SUNW.1.3a,SUNW.1.3b
およびSUNW.1.4に関するバージョン定義を含んでいる。
これらのバージョン定義は、該共用オブジェクト114
についてそれまで定義されていたすべてのバージョン
(およびそれらの大域記号)を含む。この例において、
SUNW.1.1はRelease Xに含まれる共用オブジェクト11
4のバージョンであり、SUNW.1.2は、SUNW.1.1の大域記
号を受け継いだ、Release X+1に含まれる共用オブジェ
クト114のバージョンであり、SUNW.1.2.1は、SUNW.
1.2の大域記号を受け継いだ、Release X+2に含まれる共
用オブジェクト114のバージョンである。なお、SUN
W.1.2.1は、新たな大域記号を含んでいないので、“弱
い(weak:ウィーク)”バージョンである。このバージ
ョンは、前記共用オブジェクトにおける“実行上の”変
更を示す。その他の前記バージョンは、“インターフェ
ース”の変更を示す。SUNW.1.2.1は、前記共用オブジェ
クトの機能変更を有するが、インターフェース変更を有
さないバージョンを示す。
【0028】さらに、SUNW.1.3aは、SUNW.1.2の大域記
号を受け継いだ、Release X+3に含まれる共用オブジェ
クト114のバージョンであり、SUNW.1.3bも、SUNW.1.
2の大域記号を受け継いだ、Release X+3に含まれる共用
オブジェクト114のバージョンである。しかし、SUN
W.1.3bバージョンは、SUNW.1.3aに定義された大域記号
“bar1”の代りに、大域記号“bar2”を定義している。
SUNW.1.4は、大域記号“bar3”を定義するものであり、
前記SUNW.1.3aおよびSUNW.1.3bの大域記号を引き継いで
いる。
【0029】表2のテーブルの例において、記号“foo
1”は、SUNW.1.1バージョンの公用インターフェースに
定義された唯一の大域記号である。特殊な“自動縮小
化”命令(“*”)によって、前記共用オブジェクトの
すべてのその他の大域記号は、該共用オブジェクトに対
するインターフェースの一部とならないよう、局部的な
有効範囲に縮小される。こうして、前記SUNW.1.1バージ
ョンの公用インターフェースは、前記大域記号“foo1”
に関連した、そのバージョンの内部バージョン定義によ
って構成される。
【0030】
【表3】
【0031】この表3は、表1のソースコードファイル
をコンパイルし、リンクするためのUnixコマンドを示し
ている。オブジェクトコードファイル“foo.o”,“dat
a.o”,“bar1.o”および“bar2.o”(図示せず)は、
表2のマップファイル130を使用して動的にリンクさ
れ、これにより、“libfoo.so.1”と称する共用オブジ
ェクト114を生成する。(この例の場合、ccコンパイ
ラは、自動的にld(1)リンクエディタ124を呼出
す)。コマンドライン上のーGオプションは、リンクエ
ディタ124が動的に実行可能なオブジェクトではな
く、共用オブジェクトを生成すべきことを示す。“ln”
コマンドは、ld(1)の“ーl”オプションに適した“コン
パイル環境”名を作成する。“pvs”Unixコマンドは、
前記リンクエディタ124によって作成される共用オブ
ジェクトのバージョン設定情報、および、各バージョン
に利用可能な大域記号をプリントアウトする。
【0032】表3に示すように、前記オブジェクトにつ
いて“基準バージョン”の定義も作成される。この基準
バージョンは、前記共用オブジェクト自体の名前(例え
ば“libfoo.so.1”)を使用して定義され、前記リンク
エディタ124によって生成され確保された記号を前記
オブジェクトに関連づける。例えば、表3の例におい
て、基準バージョンの定義は、前記リンカによって作成
され確保された大域記号(例えば、_etext,_edata,_e
nd,_DYNAMIC,PROCEDURE_LINKAGE_TABLEおよびGLOBAL_
OFFSET_TABLE)を含む共用オブジェクトlibfoo.so.1に
ついて作成される。
【0033】図6に戻り、(ステップ304において)
バージョン名がマップファイル130に現れた場合、前
記リンクエディタ124は、共用オブジェクト114内
に、特にバージョンに関する幾つかのセクションを作成
する。これらの特別なセクションは、図9に示されてお
り、バージョン定義セクション506、バージョン記号
セクション508およびオプショナルのバージョン従属
状態セクション510を含む。以下のパラグラフは、こ
れらのセクションの作成および使用について説明するも
のである。
【0034】図10は、バージョン設定された共用オブ
ジェクト114のバージョン定義セクション506のフ
ォーマットを示すものである。また、図20は、表1〜
表3に基づくバージョン定義セクションの一例を示すも
のである。該バージョン定義セクションは、セクション
ヘッダ602(図16参照)と、構造セクション604
と、フラグ606と、バージョン定義索引610と、カ
ウント値612と、ハッシュ値614と、補助値616
と、次バージョン定義ポインタ618と、該バージョン
自体の名前620と、該定義されたバージョンが大域記
号620,622を受け継いだバージョンの名前とを含
んでいる。
【0035】各共用オブジェクト114は、多数のバー
ジョン定義を有する1つのバージョン定義セクション5
06を含んでいる。各フィールド604〜622を、
“バージョン定義”と言う。次のパラグラフは、バージ
ョン定義の内容を説明するものである。前記セクション
ヘッダ602は、前記バージョン定義セクションに含ま
れるバージョンの数を示す。各バージョン定義セクショ
ンは、マップファイルに明示的に定義されていない大域
記号を定義する基準バージョンに関する情報を含んでい
る。このため、基準バージョンについてのフィールド6
04〜622(バージョン定義)が、図6のステップ3
06で作成される。フィールド609(“基準”フラ
グ)は、この基準バージョン定義において設定される。
【0036】ステップ308において、前記マップファ
イル130に定義された共用オブジェクト114の各バ
ージョンごとに、バージョン定義(フィールド604〜
622)が、リンクエディタ124によって作成され
る。こうして、ステップ308において、表2のマップ
ファイル130に関して、前記基準バージョン定義の他
に6つのバージョン定義が作成される。図7のステップ
310〜316は、ステップ306,308で作成され
た各バージョン定義毎に実行される。ステップ310に
示すように、前記マップファイル130が1つのバージ
ョン(例えば、表1のSUNW.1.2.1参照)に関する大域記
号を定義していない場合、そのバージョン定義に関する
“ウィーク”フラグ608が、ステップ312において
設定される(図20参照)。
【0037】フィールド604は、その構造自体のバー
ジョン番号である。バージョン定義索引610は、共用
オブジェクト114について定義された各バージョン毎
に異なる(固有の)値を有するものであり、図11との
関係で後で説明することにする。カウント値612は、
当該バージョンにおけるフィールド620および622
の対のインスタンスの数を示すものである。ハッシュ値
614は、このバージョンの名前に対するハッシュ値で
あり、通常のELF(実行可能フォーマット)ハッシュ
関数を使用する。また、補助値616は、このバージョ
ンの第1のフィールド620に対する索引である。次バ
ージョン定義618は、前記バージョン定義セクション
における次のバージョン定義のフィールド604に対す
る索引である。
【0038】ステップ313は、このバージョンの名前
に対するエントリ620,622を作成し、このエント
リを指し示すよう前記補助値616を設定する。こうし
て、前記第1のフィールド620は、前記バージョン自
体のバージョン名を含んでいる。継承(受け継ぎ)情報
は、定義されたバージョンが他のバージョンを受け継ぐ
元となる1つまたは2つ以上のバージョンの名前で構成
されている。図7のステップ314において、マップフ
ァイル130が図8および表2に示すように継承情報を
有するか否かを調べる。ステップ316において、前記
リンクエディタ124は、継承情報を保持する1つまた
は2つ以上のエントリ620,622を作成する。該フ
ィールド620,622は、特定のバージョンが他のバ
ージョンを受け継ぐ元となるバージョン毎に存在する。
前記フィールド620は受け継がれたバージョン定義の
名前を含み、前記フィールド622は次のフィールド6
20(またはゼロ)を指し示す。
【0039】図6のステップ318において、前記リン
クエディタ124は、リンク編集中のオブジェクトのす
べての記号について、バージョン記号セクションを作成
する。図11は、バージョン記号セクション508のフ
ォーマットを示す図。前記バージョン記号セクション5
08におけるエントリは、そのバージョンに関する記号
テーブル内の記号と1対1に対応する(図21参照)。
前記記号テーブルは、当業者によく知られており、前記
System V Application Binary Interface Manualに記載
されており、従って、ここでは説明しない。前記セクシ
ョンヘッダ702のフォーマットは、図17との関係に
おいて説明する。前記バージョン記号セクション508
のエントリ704は、記号が定義されたバージョンの索
引である。表2において、SUNW.1.3bバージョンが
“6”の索引610を有する場合(図20参照)、大域
記号“bar2”に対応するバージョン記号セクションのエ
ントリが“6”のエントリ値を有することになる(図2
1)。図11に示すように、局部的な有効範囲を有する
記号のエントリは、“0”の値を有する。基準バージョ
ン定義における記号のエントリは、“1”の値を有す
る。上述の如く、大域記号として明示的に定義された記
号(例えば、基準セクションに関する記号、各バージョ
ンの名前、“foo1”,“foo2”,“bar1”,“bar2”お
よび“bar3”)のみが、バージョン記号セクション50
8においてゼロではないエントリ704を有する。図6
のステップ320は、(必要な場合)共用オブジェクト
114に関するバージョン従属状態セクションを作成す
る。例えば、共用オブジェクト114は、他のバージョ
ン設定されたオブジェクトを参照することができる。こ
のバージョン従属状態セクションの作成については、後
で説明する。
【0040】b.構築時におけるバージョン従属状態情
報の作成 表4は、アプリケーションプログラムソフトウエア11
6(“prog.c”)のソースバージョンの一例を示すもの
である。“prog.c”は、共用オブジェクト114libfo
o.so.1の2つの大域記号、すなわち、“foo1”および
“foo2”を参照する。これらの記号は、それぞれ、イン
ターフェイスSUNW.1.1およびSUNW.1.2の一部として定義
される。表4によると、構築時において、コンパイラcc
はldリンクエディタ124を起動する。構築時におい
て、“prog.c”とバージョンSUNW.1.1,SUNW.1.2,SUN
W.1.2.1間で、大域記号“foo1”および“foo2”を含む
結合(バインディング)が行われる。前者の2つのバー
ジョンは、記号結合を示す。後者のバージョンは、その
弱い性質のため記録される。コンパイル/リンクコマン
ドによってバージョン制御指示は与えられないので、前
記リンクエディタ124は、prog.cにおける大域記号を
分解するときに存在する共用オブジェクト114のすべ
てのバージョンをチェックする。
【0041】
【表4】
【0042】図12は、再配置可能なオブジェクト11
8および共用オブジェクト114から動的に実行可能な
ELFファイル120を作成するために、構築時に前記
リンクエディタ124によって実行されるステップを示
すものである。前記動的に実行可能なELFファイル1
20のフォーマットは、図14に示されている。図14
のフォーマットは、バージョン従属状態セクションを含
むがバージョン定義セクションまたはバージョン記号セ
クションを含まないという点を除き、図9のフォーマッ
トと同様である。図15は、バージョン従属状態セクシ
ョンのフォーマットを示す図である。
【0043】図12のステップ802において、前記リ
ンクエディタ124は、リンク中のオブジェクト(例え
ばprog)における未分解の大域記号を、リンク中の他の
オブジェクト(例えばlibfoo1.so.1)の大域記号テーブ
ルと照会することによって、前記オブジェクトprogが前
記他のオブジェクトに従属しているか否かを判定する。
従属している場合、ステップ804において、前記リン
クエディタ124は、必要とされるオブジェクトが複数
のバージョンを有するか否か、すなわち、前記必要とさ
れるオブジェクトがバージョン定義セクションを有する
か否かを判定する。ステップ806において、前記必要
とされるオブジェクトのいくつかのバージョンのみが前
記リンクエディタ12にとって可視性のものと判定され
た場合、制御はステップ810に進む。そうでない場
合、制御はステップ808に進む。
【0044】ステップ808において、前記リンクエデ
ィタ124は、共用オブジェクト114のすべての利用
可能なバージョン定義セクションを調べ、どのバージョ
ンが再配置可能なオブジェクト118に必要な大域記号
を含むかを判定することによって、動的に実行可能なオ
ブジェクト120にバージョン従属状態セクションを作
成する。または、マップファイル132が、いくつかの
バージョンのみを、前記リンクエディタ124にとって
可視性のものとして識別してもよい。ステップ810で
は、前記リンクエディタ124は、共用オブジェクト1
14の可視性のバージョン定義セクションを調べ、どの
バージョンが再配置可能なオブジェクト118に必要な
大域記号を含むのかを判定する。
【0045】図14のバージョン定義セクションに記録
される従属状態は、アプリケーションプログラムが共用
オブジェクトに対するインターフェイスの大域記号を参
照する毎に作成される。表4は、アプリケーションプロ
グラムソフトウエア116(“prog.c”)のソースバー
ジョンの一例を示すものである。該アプリケーションプ
ログラム“prog.c”は、SUNW.1.1バージョンに定義され
た大域記号“foo1”およびSUNW.1.2バージョンに定義さ
れた大域記号“foo2”(表2参照)を参照する。こうし
て、アプリケーションプログラムprog.cと(SUNW.1.1バ
ージョンから受け継いだ)SUNW.1.2バージョンとの間に
は、従属関係が存在する。前記リンクエディタ124
は、prog.cの動的に実行可能なオブジェクト120に、
prog.cがSUNW.1.2バージョンに従属していることを示す
バージョン従属状態セクションを作成する(図22参
照)。前記再配置可能なオブジェクト118における未
定義の大域記号毎に、前記リンクエディタ124は、前
記再配置可能なオブジェクト118とリンクされている
すべての共用オブジェクトのバージョン定義セクション
およびバージョン記号セクションを調べることによっ
て、前記記号がどのバージョンに属するものかについて
の情報を得る。
【0046】図15は、バージョン定義セクション51
0のフォーマットを示すものである。該バージョン定義
セクション510は、図16に関連して説明するセクシ
ョンヘッダ1102と、構造バージョン1104と、カ
ウント値1106と、ファイル名1108と、補助値1
110と、次バージョン従属状態セクション1112
と、複数のフィールド1114〜1122のインスタン
スとを含んでいる。前記フィールド1114〜1122
は、ハッシュ値114と、“ウィーク”フラグ1116
と、未使用フィールド1118と、名前フィールド11
20と、次名前フィールド1122とを含んでいる。
【0047】図10に関連して上述したように、構造バ
ージョン値1104はこの発明のバージョン設定に関係
しない。カウント値1106は、フィールド1114〜
1122のインスタンスの数を示す。ファイル名110
8は、共用オブジェクトの従属状態の名前である。補助
値1110は、このバージョンに関する第1のフィール
ド1114に対する索引である。次バージョン従属状態
セクション値1112は、次のバージョンフィールド1
104に対する索引(またはゼロ)である。前記フィー
ルド1114〜1122の各インスタンスは、作成中の
オブジェクトが必要とするバージョンを示す。バージョ
ンが前記オブジェクトによって参照される大域記号を定
義する場合、該バージョンが必要になる。常に、前記フ
ィールド1114〜1122の少なくとも1つのインス
タンスが存在する。
【0048】ハッシュ値114は、バージョン名112
0から、通常のELFハッシュ関数を使用して発生され
る。“ウィーク”フラグ1116は、被従属(必要とさ
れる)バージョンが弱いバージョンか否か、すなわち、
該バージョンが大域記号を含んでいないものか否かを示
す。フィールド1118は、この発明のすべての実施の
形態において形成されるものではなく、単に位置合せの
ために含まれる。ネームフィールド1120の第1のイ
ンスタンスは、前記バージョン自体の名前(例えば、
“SUNW.1.2”)を含むものである。次名前フィールド1
122は、次のハッシュ値1114を示すポインタであ
る。
【0049】この発明のこの実施の形態は、すべての継
承(受け継いだ情報)がバージョン定義セクション51
0に記録されないようにする、“バージョン縮小化”を
使用する。弱バージョンおよおよび必要とされるバージ
ョンが、記録される。しかし、これらのバージョンが他
のバージョンから大域記号を継承するとき、一般に、前
記他のバージョンは記録されない。例えば、第1の弱い
バージョンからの第2のバージョンを介した継承は、フ
ィールド1120,1122に記録される前に、縮小化
されるのが好ましい。同様に、第1の弱くないバージョ
ンからの第2の弱くないバージョンを介した継承も、記
録される前に縮小化されるのが好ましい。弱いバージョ
ンと弱くないバージョンとの間の継承は、縮小化されな
い。こうして、SUNW.1.2はフィールド1120,112
2に記録されるが、SUNW.1.1からの継承は縮小化されな
い。さらに、弱いバージョンであるSUNW.1.2.1に対する
従属状態が記録される。
【0050】図16〜図18は、図10、図11および
図15のセクションの様々な様相を示すものである。図
16〜図18のフィールドは、従来のELFフォーマッ
トの一部であるので、ここではこれらのすべては説明せ
ず、この発明に関係するフィールドのみについて説明す
る。図16は、セクションヘッダ607,702,11
02に使用されるセクションヘッダのフォーマットを示
す図である。“sh_name”フィールド1202はセクシ
ョンの名前を含み、“sh_type”フィールド1204は
前記セクションの種類を含んでいる。前記フィールドの
値1202は、特にこの発明に関連のあるものである。
図17は、前記フィールド1204の様々な種類を表す
値を示すものである。値1302は、特にこの発明に関
連のあるものである。図16のセクションヘッダフォー
マットは、さらに、前記セクションにおけるバイト数を
示す“sh_size”フィールド1306と、“sh_link”フ
ィールド1308と、“sh_info”フィールド1310
とを含んでいる。図18は、前記“sh_type”,“sh_li
nk”および“sh_info”の値の例を示している。値14
02は、特にこの発明に関連のあるものである。
【0051】上記パラグラフは、構築時における、バー
ジョン定義セクション506およびバージョン記号セク
ション508を含むELFオブジェクト114の作成、
および、バージョン従属状態セクション510を含むE
LFオブジェクト120の作成について説明した。な
お、前記バージョン定義セクション506およびバージ
ョン記号セクション508は大域記号の定義を含むオブ
ジェクトのみに作成されるものであり、バージョン従属
状態セクション510は、大域記号を含むオブジェクト
に従属するオブジェクトのみに作成されるものである。
こうして、大域インターフェースを有する共用オブジェ
クトは、セクション506,508および510を含む
ことになる。前記共用オブジェクトを参照する実行可能
なアプリケーションプログラムは、バージョン従属状態
セクション510のみを含むことになる。
【0052】c.構築時におけるアプリケーション構造
の制限 上記パラグラフは、共用オブジェクト114のすべての
利用可能なバージョンと再配置可能なオブジェクトとの
間のバージョン結合の一例について説明した。結合は、
アプリケーションプログラムと、図13のオブジェクト
の特定のバージョンのみとの間で発生するよう制限され
ることもできる。図13は、図4のマップファイル13
2におけるファイル制御指示のフォーマットを示すもの
である。このフォーマットのファイル制御指示は、他の
オブジェクトの特定のバージョンに従って動的に実行可
能なオブジェクトを結合するために使用される。
【0053】
【表5】
【0054】図4および表5に示すように、前記リンク
エディタが図13に示されたファイル制御を含むマップ
ファイル132を使用して実行される場合、前記オブジ
ェクトの特定のバージョンについてのみ結合が行われ
る。表5において、マップファイルは、“libfoo.so-SU
NW.1.1.”を含んでいる。表4に示したように、アプリ
ケーションソフトウエア“prog.c”は、大域記号“foo
1”および“foo2”を参照する。記号“foo2”は、SUNW.
1.2バージョンに定義されている。(ccコンパイラおよ
びld(1)リンクエディタを使用して)prog.cが-Mオプ
ションとリンクされる場合、該prog.cは、SUNW.1.1バー
ジョンのみとリンクされる。このようにして、表5に示
すように、リンクエディタ124は、SUNW.1.2バージョ
ンに定義された“foo2”を未定義の記号として認識す
る。
【0055】d.構築時における弱いバージョンの昇格 表6は、リンクエディタ124が弱いバージョン(SUN
W.1.2.1)を強いバージョンに“昇格”するよう強制さ
れる例を示すものである。“-u”オプションにより、
リンクエディタ124は、SUNW.1.2.1バージョンに対す
る“prog”の従属状態を、該“prog”のバージョン従属
状態セクションに記録する。さらに、“ウィーク”フラ
グ1116が、SUNW.1.2.1バージョンに関して、“pro
g”のバージョン従属状態セクションにおいて、“偽”
に設定される。この場合、SUNW.1.2.1バージョンはSUN
W.1.2バージョンを受け継ぐ。故に、progの従属状態の
すべては“強”であるので、バージョンの縮小化は、SU
NW.1.2.1バージョンのみが弱くないバージョンとしてpr
ogに記録される、ことを意味する。このような弱いバー
ジョンの昇格は、“prog”が実行されるとき、それまで
弱いものであったバージョンが存在することが実行時リ
ンクエディタ124によって確認される、ことを保証す
る。
【0056】
【表6】
【0057】3.実行時におけるバージョン設定情報の
確認 図19は、動的に実行可能なオブジェクト120をリン
クして実行するときに、参照されるオブジェクトの必要
なバージョンのすべてが存在することを保証するため
に、実行時リンカ126(図5参照)によって実行され
るステップを示すフローチャート1500である。図1
9のステップは、好ましくは、CPU102がメモリに
格納された命令を実行することによって行われる。図1
9のステップは、必要な従属状態のすべてが存在してい
るか否かを判定するために、実行前チェックとして行わ
れる。
【0058】ステップ1502において、前記リンカ1
26は、実行中の動的に実行可能なオブジェクト120
がバージョン従属状態セクション(図15参照)を含ん
でいるか否かを判定する。この判定結果がNOである場
合、なんらチェックはなされず、通常の実行が続行され
る。この判定結果がYESである場合、ステップ150
4において、前記リンカ126は、リンク中のオブジェ
クト114の少なくとも1つがバージョン定義セクショ
ンおよびバージョン記号セクションを含んでいるか否か
を判定する。この判定結果がNOである場合、それ以上
のチェックはなされず、通常の実行が続行される。この
判定結果がYESである場合、制御はステップ1506
に進む。
【0059】ステップ1506において、前記実行時リ
ンカ126は、現在の動的に実行可能なオブジェクト1
20におけるすべてのバージョン従属状態が処理された
か否かを判定する。すべてのバージョン従属状態が処理
された場合、通常の実行が続行され、そうでない場合、
制御はステップ1508に進む。ステップ1508で
は、前記実行時リンカ126は、(前記動的に実行可能
なオブジェクト120のバージョン従属状態セクショ
ン)必要とされるバージョンと、前記共用オブジェクト
114のバージョン定義セクションとが一致するか否か
を判定する。例えば、図20および図22において、SU
NW.1.2バージョンおよびSUNW.1.2.1バージョンは、共用
オブジェクト114のバージョン定義セクションに定義
されており、必要に応じて、動的に実行可能なオブジェ
クト120のバージョン従属状態セクションにおいて指
定される。
【0060】ステップ1508において一致が検出され
た場合、共用オブジェクト114の必要とされるバージ
ョンが存在していることになり、ステップ1508にお
いて一致が検出されなかった場合、必要とされるバージ
ョンが存在していないことになるので、ステップ151
0において、その存在していないバージョンが弱いバー
ジョンであるか、または、弱くないバージョンであるか
を判定することが必要になる。前記実行時リンカ126
は、動的に実行可能なオブジェクト120のバージョン
従属状態セクションの“ウィーク”フラグ1116をチ
ェックすることによって、前記バージョンが弱いものか
否かを判定する。(なお、前記フラグ1116は、バー
ジョンの弱から強への昇格を反映してもよい)。前記実
行時リンカ126が、ステップ1510において、その
バージョンが弱いバージョンであると判定した場合、エ
ラーは発生せず、制御はステップ1506に戻る。弱い
バージョンではない判定した場合、必要とされる弱くな
いバージョンが存在していないので、致命的なエラーが
発生する。従って、存在していない“弱い”バージョン
への従属はエラーを発生しないが、“弱くない”バージ
ョンへの従属はエラーを発生することになる。
【0061】図20は、バージョン定義セクション16
00の一例を示し、図21は、共用オブジェクト114
(表1〜表3のlibfoo.so.1)に関するバージョン記号
セクション1700の一例を示す。さらに、図22は、
アプリケーションプログラム120(表4の“prog”)
の動的に実行可能な形態に関するバージョン従属状態セ
クション1800の一例を示すものである。(この例に
おいて、共用オブジェクト114は、他のオブジェクト
に従属しており、従って、バージョン従属状態セクショ
ンを有さない)。
【0062】図20は、基準バージョン定義1604、
および、それぞれのバージョンSUNW.1.1,SUNW.1.2,SU
NW.1.2.1,SUNW.1.3a,SUNW.1.3bおよびSUNW.1.4のため
の6つのバージョン定義を含んでいる。前記基準バージ
ョン定義1604の“基準”フラグは、“真(true)”
に設定されている。また、SUNW.1.2.1バージョンに関す
るバージョン定義の“弱”フラグは、“真(true)”に
設定されている。各バージョン定義は、固有のバージョ
ン定義索引を有する。バージョンの縮小化は、バージョ
ン定義テーブルにおいて適用される。アプリケーション
“prog”は、(SUNW.1.1の)大域記号foo1および(SUN
W.1.2の)大域記号foo2を参照する。SUNW.1.2はSUNW.1.
1の大域記号を受け継ぐので、前記リンクエディタ12
4はバージョン縮小化を適用し、(SUNW.1.2のための)
エントリがバージョン定義セクションにおいてなされ
る。弱いSUNW.1.2.1バージョンも記録される。
【0063】図21は、バージョン記号セクション17
00における記号のうちのいくつかを示す図である。例
えば、大域変数“foo1”は、SUNW.1.1バージョンに定義
されており、バージョン定義索引“2”を有する。こう
して、foo1に関する記号テーブルのエントリに対応する
前記バージョン記号セクションのエントリは、“2”を
含む。上記実施の形態において、各バージョン(例え
ば、SUNW.1.1)の名前は、そのバージョン定義を生成す
るときに作成される大域記号でもある。
【0064】図22は、動的に実行可能なオブジェクト
120におけるバージョン従属状態セクションの一例を
示す図である。バージョン縮小化により、前記セクショ
ンは、SUNW.1.1ではなく、SUNW.1.2のためのエントリを
含む。該セクションは、“弱い”SUNW.1.2.1バージョン
のためのエントリをも含む。実行時において、リンカ1
26は、progがバージョン従属状態セクションを有する
と判定し(ステップ1502)、libfoo.so.1がバージ
ョン定義セクションを有すると判定し(ステップ150
4)、必要とされるバージョン(SUNW.1.2)が存在する
と判定する(ステップ1508)。故に、“prog”が実
行されることになる。以上、いくつかの好ましい実施例
について本発明につき説明したが、これら実施例に限ら
ず、本発明の精神と範囲を逸脱しない限り、その他の種
々の変形が可能であることが理解されるであろう。
【0065】最後に、本願に係わる発明及びその実施態
様のいくつかを要約して示すと下記の通りである。 (1) ソフトウエアプログラムにバージョン設定情報
を付す方法であって、第1のソフトウエアプログラムの
ための第1のオブジェクトコードを用意するステップ
と、前記第1のソフトウエアプログラムのバージョンに
関するバージョン名を示すマップファイルを用意するス
テップと、前記第1のソフトウエアプログラムのバージ
ョン名を示す情報が、前記マップファイルに従って前記
第1のオブジェクトコードに付加されるよう、前記第1
のオブジェクトコードをリンクし、これにより、バージ
ョン設定されたオブジェクトを生成するステップとを具
備し、これらのステップがデータ処理システムによって
実行される方法。 (2) 第2のソフトウエアプログラムのための第2の
オブジェクトコードを用意するステップと、前記第2の
オブジェクトコードを前記バージョン設定されたオブジ
ェクトにリンクするステップとをさらに具備し、前記リ
ンクするステップが、前記第2のソフトウエアプログラ
ムに必要とされる前記第1のソフトウエアプログラムの
バージョンを判定するステップと、前記第2のソフトウ
エアプログラムに必要とされる前記バージョンを示す情
報を前記第2のオブジェクトコードに付加し、これによ
り、動的に実行可能なプログラムを生成するステップと
をさらに含むことを特徴とする前記1項に記載の方法。 (3) 前記動的に実行可能なプログラムを実行する前
に、該実行可能なプログラムにおいて必要とされるバー
ジョンが、前記バージョン設定されたオブジェクトにお
いて示されるバージョンと一致するか否か、を判定する
ステップと、前記動的に実行可能なプログラムを実行す
るステップとをさらに具備し、前記動的に実行可能なプ
ログラムが前記バージョン設定されたオブジェクトの前
記必要とされるバージョンを呼出す前記2項に記載の方
法。 (4) 前記マップファイルが、前記第1のソフトウエ
アプログラムの前記バージョンのインターフェースを構
成する大域記号をさらに指定し、前記生成するステップ
が、前記バージョン設定されたオブジェクトを生成する
ために、前記マップファイルに従って、前記バージョン
名、および、前記バージョンのインターフェースを構成
する大域記号を示す情報を前記第1のオブジェクトコー
ドに付加するステップを含む前記1項に記載の方法。 (5) 前記判定するステップが、どの大域記号が前記
第2のソフトウエアプログラムに必要とされるのかを調
べることによって、前記第2のソフトウエアプログラム
に必要とされる前記第1のソフトウエアプログラムのバ
ージョンを判定し、さらに、前記バージョン設定された
オブジェクトにおける情報をチェックすることによっ
て、前記必要とされる大域記号がどのバージョンに存在
するのかを判定するステップを含む前記2項に記載の方
法。 (6) 前記第1のオブジェクトコードに付加される情
報がバージョン定義セクションである前記1項に記載の
方法。 (7) 前記第1のオブジェクトコードに付加される情
報がバージョン記号セクションである前記1項に記載の
方法。 (8) 前記第1のオブジェクトコードに付加される情
報がバージョン従属状態セクションである前記2項に記
載の方法。 (9) 前記バージョン設定されたオブジェクトが、再
配置可能なオブジェクトである前記1項に記載の方法。 (10) 前記バージョン設定されたオブジェクトが、
動的に実行可能なオブジェクトである前記1項に記載の
方法。 (11) 前記バージョン設定されたオブジェクトが、
共用オブジェクトである前記1項に記載の方法。
【0066】(12) ソフトウエアプログラムにバー
ジョン設定情報を付す装置であって、第1のソフトウエ
アプログラムのための第1のオブジェクトコードを格納
する記憶媒体と、前記第1のソフトウエアプログラムの
バージョンに関するバージョン名を指定するマップファ
イルを格納する記憶媒体と、前記マップファイルに従っ
て、前記第1のオブジェクトコードに対して、前記第1
のソフトウエアプログラムの前記バージョンのバージョ
ン名を定義する付加情報を付し、これにより、バージョ
ン設定されたオブジェクトを生成するリンカとを具備す
る装置。 (13) 第2のソフトウエアプログラムのための第2
のオブジェクトコードを格納する記憶媒体と、前記第2
のソフトウエアプログラムに必要とされるバージョンを
示す付加情報を前記第2のオブジェクトコードに付すこ
とによって、前記第2のオブジェクトコードを前記バー
ジョン設定されたオブジェクトにリンクし、これによ
り、動的に実行可能なプログラムを生成するリンカとを
さらに具備した前記12項に記載の装置。 (14) 前記動的に実行可能なオブジェクトにおいて
指定された前記必要とされるバージョンが、前記バージ
ョン設定されたオブジェクトに定義されたバージョンに
一致していると判定した場合、前記動的に実行可能なプ
ログラムの実行を可能にする実行時リンカをさらに具備
した前記13項に記載の装置。 (15) 前記バージョン設定されたオブジェクトが、
再配置可能なオブジェクトである前記12項に記載の装
置。 (16) 前記バージョン設定されたオブジェクトが、
動的に実行可能なオブジェクトである前記12項に記載
の装置。 (17) 前記バージョン設定されたオブジェクトが、
共用オブジェクトである前記12項に記載の装置。
【0067】(18) 動的に実行可能なオブジェクト
に必要とされるオブジェクトのバージョンが該実行可能
オブジェクトの実行中に存在することを判定させるため
の、コンピュータによって読み取り可能なコードを格納
したコンピュータによって使用可能な媒体を備えたコン
ピュータプログラム製品であって、コンピュータに、第
1のソフトウエアプログラムのための第1のオブジェク
トコードを用意させる第1のコンピュータ読み取り可能
プログラムコード装置と、コンピュータに、前記第1の
ソフトウエアプログラムのバージョンに関連したバージ
ョン名を指定するマップファイルを用意させる第2のコ
ンピュータ読み取り可能プログラムコード装置と、前記
第1のソフトウエアプログラムのバージョン名を示す情
報が、前記マップファイルに従って、前記第1のオブジ
ェクトコードに付加されるよう、コンピュータに、前記
第1のオブジェクトコードをリンクさせ、これにより、
バージョン設定されたオブジェクトを生成させる第3の
コンピュータ読み取り可能プログラムコード装置とを具
備したコンピュータプログラム製品。 (19) コンピュータに、第2のソフトウエアプログ
ラムのための第2のオブジェクトコードを用意させる第
4のコンピュータ読み取り可能プログラムコード装置
と、コンピュータに、前記第2のソフトウエアプログラ
ムに必要とされる前記第1のソフトウエアプログラムの
バージョンを判定させ、前記第2のソフトウエアプログ
ラムに必要とされるバージョンを示す情報を前記第2の
オブジェクトコードに付加させることによって、前記バ
ージョン設定されたオブジェクトに対する前記第2のオ
ブジェクトコードのリンクを実行させる第5のコンピュ
ータ読み取り可能プログラムコード装置とをさらに具備
した前記18項に記載のコンピュータプログラム製品。 (20) コンピュータに、前記動的に実行可能なプロ
グラムがプログラムを実行するために必要とされるバー
ジョンが前記バージョンを有するオブジェクトに定義さ
れたバージョンと一致しているか否かを判定させる第6
のコンピュータ読み取り可能プログラムコード装置をさ
らに具備し、前記動的に実行可能なプログラムが前記バ
ージョン設定されたオブジェクトの前記必要とされるバ
ージョンを呼出すことを特徴とする前記19項に記載の
コンピュータプログラム製品。
【0068】
【発明の効果】以上のように、この発明は、オブジェク
トの新たなバージョンが作成される毎に該オブジェクト
の名前を変える必要性を無くし、且つ、バージョン変更
に対処するために必要な部分のみのアップグレードを可
能にするので、簡単且つ効率的なバージョン設定を実現
できる、という優れた効果を奏する。
【図面の簡単な説明】
【図1】この発明に係るコンピュータシステムを示すブ
ロック図。
【図2】構築時における図1のリンクエディタの入出力
を示す図。
【図3】構築時における図1のリンクエディタの他の入
出力を示す図。
【図4】構築時における図1のリンクエディタの他の入
出力を示す図。
【図5】実行時における図1の実行時リンカプログラム
の入出力を示す図。
【図6】オブジェクトにバージョン定義セクションおよ
びバージョン記号セクションを付加するために、図2の
リンクエディタによって実行されるステップを示すフロ
ーチャート。
【図7】図6の処理の詳細を示すフローチャート。
【図8】図2のマップファイルのフォーマットを示す
図。
【図9】バージョン設定されたオブジェクトに含まれる
図2のリンクエディタの出力を示す図。
【図10】図9のバージョン定義セクションのフォーマ
ットを示す図。
【図11】図9のバージョン記号セクションのフォーマ
ットを示す図。
【図12】動的に実行可能なアプリケーションプログラ
ムにバージョン従属状態セクションを付加するために、
図3または図4のリンクエディタによって実行されるス
テップを示すフローチャート。
【図13】図4のマップファイルのフォーマットを示す
図。
【図14】動的に実行可能なアプリケーションプログラ
ムに含まれる図3のリンクエディタの出力を示す図。
【図15】図9および図14のバージョン従属状態セク
ションのフォーマットを示す図。
【図16】図10、図11および図15のセクションヘ
ッダのフォーマットを示す図。
【図17】図16のヘッダにおける様々な値のリストを
示す図。
【図18】図16のヘッダにおける様々な値のリストを
示す図。
【図19】アプリケーションプログラムのバージョン要
件が該アプリケーションプログラムにリンクされている
オブジェクトに存在するバージョンに一致していること
を確認するために、図5の実行時リンカによって実行さ
れるステップを示すフローチャート。
【図20】前記リンクエディタによってオブジェクトに
付加されたバージョン定義セクションの一例を示す図。
【図21】前記リンクエディタによってオブジェクトに
付加されたバージョン記号セクションの一例を示す図。
【図22】前記リンクエディタによってバージョン設定
されたオブジェクトおよび動的に実行可能なアプリケー
ションプログラムの一方または両方に付加可能なバージ
ョン従属状態セクションの一例を示す図。
【符号の説明】
102 CPU 104 メモリ 110 ソースコード 114 共用オブジェクト 116 ソースコード 118 再配置可能なオブジェクト 120 動的に実行可能なオブジェクト 124 リンクエディタ 124 実行時リンカ 130 マップファイル 132 マップファイル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロバート エー ジンゲル アメリカ合衆国 94087 カリフォルニア, サニーベイル,ライトアベニュー,1377

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 ソフトウエアプログラムにバージョン設
    定情報を付す方法であって、 ソフトウエアプログラムのためのオブジェクトコードを
    用意するステップと、 前記ソフトウエアプログラムのバージョンに関するバー
    ジョン名を示すマップファイルを用意するステップと、 前記ソフトウエアプログラムのバージョン名を示す情報
    が、前記マップファイルに従って前記オブジェクトコー
    ドに付加されるよう、前記オブジェクトコードをリンク
    し、これにより、バージョン設定されたオブジェクトを
    生成するステップとを具備し、これらのステップがデー
    タ処理システムによって実行される方法。
  2. 【請求項2】 ソフトウエアプログラムにバージョン設
    定情報を付す方法であって、 第1のソフトウエアプログラムのための第1のオブジェ
    クトコードを用意するステップと、 前記第1のソフトウエアプログラムのバージョンに関す
    るバージョン名を示すマップファイルを用意するステッ
    プと、 前記第1のソフトウエアプログラムのバージョン名を示
    す情報が、前記マップファイルに従って前記第1のオブ
    ジェクトコードに付加されるよう、前記第1のオブジェ
    クトコードをリンクし、これにより、バージョン設定さ
    れたオブジェクトを生成するステップと、 第2のソフトウエアプログラムのための第2のオブジェ
    クトコードを用意するステップと、 前記第2のオブジェクトコードを前記バージョン設定さ
    れたオブジェクトにリンクするステップであって、この
    ステップが、前記第2のソフトウエアプログラムに必要
    とされる前記第1のソフトウエアプログラムのバージョ
    ンを判定するステップと、前記第2のソフトウエアプロ
    グラムに必要とされる前記バージョンを示す情報を前記
    第2のオブジェクトコードに付加し、これにより、動的
    に実行可能なプログラムを生成するステップとをさらに
    含むものと、を具備し、これらのステップがデータ処理
    システムによって実行される方法。
  3. 【請求項3】 ソフトウエアプログラムにバージョン設
    定情報を付す装置であって、 第1のソフトウエアプログラムのための第1のオブジェ
    クトコードを格納する記憶媒体と、 前記第1のソフトウエアプログラムのバージョンに関す
    るバージョン名を指定するマップファイルを格納する記
    憶媒体と、 前記マップファイルに従って、前記第1のオブジェクト
    コードに対して、前記第1のソフトウエアプログラムの
    前記バージョンのバージョン名を定義する付加情報を付
    し、これにより、バージョン設定されたオブジェクトを
    生成するリンカと、 第2のソフトウエアプログラムのための第2のオブジェ
    クトコードを格納する記憶媒体と、 前記第2のソフトウエアプログラムに必要とされるバー
    ジョンを示す付加情報を前記第2のオブジェクトコード
    に付すことによって、前記第2のオブジェクトコードを
    前記バージョン設定されたオブジェクトにリンクし、こ
    れにより、動的に実行可能なプログラムを生成するリン
    カとを具備した装置。
JP8195380A 1995-07-06 1996-07-05 ソフトウエアプログラムにバージョン設定情報を付す方法および装置 Pending JPH09152961A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/499,062 1995-07-06
US08/499,062 US5805899A (en) 1995-07-06 1995-07-06 Method and apparatus for internal versioning of objects using a mapfile

Publications (1)

Publication Number Publication Date
JPH09152961A true JPH09152961A (ja) 1997-06-10

Family

ID=23983666

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8195380A Pending JPH09152961A (ja) 1995-07-06 1996-07-05 ソフトウエアプログラムにバージョン設定情報を付す方法および装置

Country Status (4)

Country Link
US (1) US5805899A (ja)
EP (1) EP0752647B1 (ja)
JP (1) JPH09152961A (ja)
DE (1) DE69621381T2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001010119A (ja) * 1999-06-28 2001-01-16 Canon Inc データベース及びそれを用いた画像処理装置
JP2001051741A (ja) * 1999-05-27 2001-02-23 Sun Microsyst Inc 完全要求駆動型リンク
US7051343B2 (en) 1999-05-27 2006-05-23 Sun Microsystems, Inc. Module-by-module verification
US7197511B2 (en) 1998-08-14 2007-03-27 Sun Microsystems, Inc. Methods and apparatus for type safe, lazy, user-defined class loading
US7268897B1 (en) 1999-06-28 2007-09-11 Canon Kabushiki Kaisha Print control apparatus and method
US7444648B2 (en) 1999-05-27 2008-10-28 Sun Microsystems, Inc. Fully lazy linking with module-by-module verification

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983242A (en) * 1997-07-01 1999-11-09 Microsoft Corporation Method and system for preserving document integrity
US6442753B1 (en) * 1997-08-28 2002-08-27 International Business Machines Corporation Apparatus and method for checking dependencies among classes in an object-oriented program
US6654747B1 (en) * 1997-12-02 2003-11-25 International Business Machines Corporation Modular scalable system for managing data in a heterogeneous environment with generic structure for control repository access transactions
US5966707A (en) * 1997-12-02 1999-10-12 International Business Machines Corporation Method for managing a plurality of data processes residing in heterogeneous data repositories
US6272677B1 (en) 1998-08-28 2001-08-07 International Business Machines Corporation Method and system for automatic detection and distribution of code version updates
US6195796B1 (en) * 1998-10-21 2001-02-27 Wildseed, Ltd. User centric source control
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6510551B1 (en) 1998-12-22 2003-01-21 Channelpoint, Inc. System for expressing complex data relationships using simple language constructs
US6978450B2 (en) * 1999-01-15 2005-12-20 Hewlett-Packard Development Company, L.P. Method and system for optimizing compilation time of a program by selectively reusing object code
US6463583B1 (en) 1999-04-08 2002-10-08 Novadigm, Inc. Dynamic injection of execution logic into main dynamic link library function of the original kernel of a windowed operating system
US6550060B1 (en) 1999-04-08 2003-04-15 Novadigm, Inc. Method and system for dynamic injection of dynamic link libraries into a windowed operating system
CA2391826A1 (en) * 1999-06-10 2000-12-21 Belle Gate Investment B.V. Arrangements storing different versions of a set of data in separate memory areas and method for updating a set of data in a memory
US6567973B1 (en) * 1999-07-28 2003-05-20 International Business Machines Corporation Introspective editor system, program, and method for software translation using a facade class
US7139999B2 (en) 1999-08-31 2006-11-21 Accenture Llp Development architecture framework
US6256773B1 (en) * 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6662357B1 (en) 1999-08-31 2003-12-09 Accenture Llp Managing information in an integrated development architecture framework
AU777437B2 (en) * 1999-12-07 2004-10-14 Sun Microsystems, Inc. Secure photo carrying identification device, as well as means and method for authenticating such an identification device
US6658659B2 (en) * 1999-12-16 2003-12-02 Cisco Technology, Inc. Compatible version module loading
SE9904646D0 (sv) * 1999-12-17 1999-12-17 Ericsson Telefon Ab L M A mtehod in a software controlled system
US6779120B1 (en) * 2000-01-07 2004-08-17 Securify, Inc. Declarative language for specifying a security policy
US8074256B2 (en) * 2000-01-07 2011-12-06 Mcafee, Inc. Pdstudio design system and method
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US7287259B2 (en) 2000-04-24 2007-10-23 Microsoft Corporation Isolating assembly versions for binding to application programs
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
US7124408B1 (en) * 2000-06-28 2006-10-17 Microsoft Corporation Binding by hash
DE60037342T2 (de) 2000-07-20 2008-11-27 Belle Gate Investment B.V. Verfahren und system für kommunizierende geräte, und vorrichtungen dafür, mit geschützter datenübertragung
US6748591B1 (en) * 2000-09-14 2004-06-08 International Business Machines Corporation Method, system, program, and data structures for loading programs into a runtime environment
US6810519B1 (en) * 2000-09-29 2004-10-26 International Business Machines Corporation Achieving tight binding for dynamically loaded software modules via intermodule copying
US20020160833A1 (en) * 2000-10-25 2002-10-31 Lloyd David B. Adapting a game state to be compatible with a new version of a game
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US6931626B2 (en) * 2001-01-17 2005-08-16 Hewlett-Packard Development Company, L.P. Method and apparatus for versioning statically bound files
FI20010828A (fi) 2001-04-23 2002-10-24 Nokia Corp Erilaisten palveluversioiden käsitteleminen palvelimessa
US20030001894A1 (en) * 2001-06-29 2003-01-02 International Business Machines Corporation Method and apparatus for dynamically determining actions to perform for an object
US6981250B1 (en) * 2001-07-05 2005-12-27 Microsoft Corporation System and methods for providing versioning of software components in a computer programming language
US8001523B1 (en) 2001-07-05 2011-08-16 Microsoft Corporation System and methods for implementing an explicit interface member in a computer programming language
KR100433056B1 (ko) * 2001-08-18 2004-05-24 엘지전자 주식회사 프로그램 업그레이드 방법
US7143395B2 (en) * 2002-02-14 2006-11-28 Hewlett-Packard Development Company, L.P. Verifying a program version
JP3946057B2 (ja) * 2002-03-01 2007-07-18 富士通株式会社 整合性検査支援方法および整合性検査支援システム
US20030191870A1 (en) * 2002-04-02 2003-10-09 Dominic Duggan Method and apparatus for updating software libraries
US6898764B2 (en) * 2002-04-29 2005-05-24 International Business Machines Corporation Method, system and program product for determining differences between an existing graphical user interface (GUI) mapping file and a current GUI
US7086048B1 (en) * 2002-11-04 2006-08-01 Savaje Technologies, Inc. Method and apparatus for combining operating system resource data and application program resource data in a shared object
US7082600B1 (en) 2002-11-04 2006-07-25 Savaje Technologies, Inc. Method and apparatus for integrating a computer application programming language runtime environment with an operating system kernel
US7055147B2 (en) * 2003-02-28 2006-05-30 Sun Microsystems, Inc. Supporting interactions between different versions of software for accessing remote objects
US7290252B2 (en) * 2003-04-17 2007-10-30 International Business Machines Corporaiton Method and apparatus for building executable computer programs using compiled program libraries
US7954086B2 (en) * 2003-05-19 2011-05-31 Hewlett-Packard Development Company, L.P. Self-describing kernel modules
US20050028151A1 (en) * 2003-05-19 2005-02-03 Roth Steven T. Module symbol export
US20040250257A1 (en) * 2003-06-04 2004-12-09 Oleg Koutyrine System and method for generator state object validation
US20040249940A1 (en) * 2003-06-04 2004-12-09 Sohn Matthias Eberhard System and method for asynchronous resource management
US20040250259A1 (en) * 2003-06-04 2004-12-09 Johannes Lauterbach System and method for incremental object generation
US7308684B2 (en) * 2003-06-16 2007-12-11 Microsoft Corporation Classifying software and reformulating resources according to classifications
US7496904B2 (en) * 2003-06-26 2009-02-24 Microsoft Corporation Mining dependencies for testing and risk management
US20040268302A1 (en) * 2003-06-26 2004-12-30 Microsoft Corporation Framework for determining and exposing binary dependencies
EP1652069B1 (en) * 2003-07-07 2010-08-25 Red Bend Ltd. Method and system for updating versions of content stored in a storage device
US7840951B1 (en) * 2003-08-22 2010-11-23 Oracle America, Inc. Reducing the overhead involved in executing native code in a virtual machine through binary reoptimization
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
CN1973262B (zh) * 2003-10-23 2012-08-22 创道软件有限公司 使用集中动态寻址(da)管理器的动态寻址
US20050108684A1 (en) * 2003-11-14 2005-05-19 Sohn Matthias E. Method and system for generating an application object repository from application framework metadata
US20050177826A1 (en) * 2004-02-05 2005-08-11 Miller James S. Versioning support in object-oriented programming languages and tools
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7516451B2 (en) * 2004-08-31 2009-04-07 Innopath Software, Inc. Maintaining mobile device electronic files including using difference files when upgrading
US8117170B2 (en) * 2004-10-06 2012-02-14 International Business Machines Corporation Transient range versioning based on redirection
US8713550B2 (en) * 2005-03-11 2014-04-29 Hewlett-Packard Development Company, L.P. Methods, devices and software applications for facilitating a development of a computer program
US7958502B2 (en) * 2005-08-05 2011-06-07 Hewlett-Packard Development Company, L.P. Efficient generator of update packages for mobile devices that uses non-ELF preprocessing
EP2025095A2 (en) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
EP2047420A4 (en) 2006-07-27 2009-11-18 Hewlett Packard Development Co USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE
US7688757B2 (en) * 2006-12-29 2010-03-30 Alcatel-Lucent Usa Inc. Method and apparatus for assessing sourced elements
US8793676B2 (en) * 2007-02-15 2014-07-29 Microsoft Corporation Version-resilient loader for custom code runtimes
US9449298B2 (en) * 2008-05-13 2016-09-20 Emc Corporation Managing complex dependencies in a file-based team environment
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
US20110113409A1 (en) * 2009-11-10 2011-05-12 Rodrick Evans Symbol capabilities support within elf
US8719808B1 (en) * 2010-01-27 2014-05-06 Altera Corporation Method and apparatus for using object files to provide reliable program operation
CN102929600B (zh) * 2012-06-13 2016-06-29 许继电气股份有限公司 基于elf的监控系统版本识别方法
US9152665B2 (en) 2012-11-13 2015-10-06 Sap Se Labeling versioned hierarchical data
US20170357494A1 (en) * 2016-06-08 2017-12-14 International Business Machines Corporation Code-level module verification
US10083029B2 (en) * 2016-11-09 2018-09-25 Red Hat, Inc. Detect application defects by correlating contracts in application dependencies
US10620935B2 (en) 2018-01-31 2020-04-14 Salesforce.Com, Inc. Version management automation and consistent application builds for different target systems
US11443067B2 (en) 2018-01-31 2022-09-13 Salesforce.Com, Inc. Restricting access and edit permissions of metadata

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742450A (en) * 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
US4887204A (en) * 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
US5001628A (en) * 1987-02-13 1991-03-19 International Business Machines Corporation Single system image uniquely defining an environment for each user in a data processing system
US4809170A (en) * 1987-04-22 1989-02-28 Apollo Computer, Inc. Computer device for aiding in the development of software system
JPS6410353A (en) * 1987-07-03 1989-01-13 Hitachi Ltd Computer file system
US5077658A (en) * 1987-10-19 1991-12-31 International Business Machines Corporation Data access system for a file access processor
US4914569A (en) * 1987-10-30 1990-04-03 International Business Machines Corporation Method for concurrent record access, insertion, deletion and alteration using an index tree
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
US4912637A (en) * 1988-04-26 1990-03-27 Tandem Computers Incorporated Version management tool
CA1323448C (en) * 1989-02-24 1993-10-19 Terrence C. Miller Method and apparatus for translucent file system
DE59005294D1 (de) * 1989-11-29 1994-05-11 Siemens Ag Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems.
US5579509A (en) * 1991-02-08 1996-11-26 International Business Machines Corporation Apparatus and method for verifying compatibility of system components
CA2077273C (en) * 1991-12-12 1996-12-03 Mike H. Conner Language neutral objects
US5446899A (en) * 1992-06-26 1995-08-29 Digital Equipment Corporation Hint generation in smart recompilation
US5579223A (en) * 1992-12-24 1996-11-26 Microsoft Corporation Method and system for incorporating modifications made to a computer program into a translated version of the computer program
EP0698238B1 (en) * 1993-05-05 1997-11-05 Apple Computer, Inc. Method and apparatus for verifying compatibility between modular components in a computer system
US5634114A (en) * 1993-11-18 1997-05-27 Intel Corporation Dynamic link library version negotiation

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197511B2 (en) 1998-08-14 2007-03-27 Sun Microsystems, Inc. Methods and apparatus for type safe, lazy, user-defined class loading
JP2001051741A (ja) * 1999-05-27 2001-02-23 Sun Microsyst Inc 完全要求駆動型リンク
US7051343B2 (en) 1999-05-27 2006-05-23 Sun Microsystems, Inc. Module-by-module verification
US7444648B2 (en) 1999-05-27 2008-10-28 Sun Microsystems, Inc. Fully lazy linking with module-by-module verification
JP2001010119A (ja) * 1999-06-28 2001-01-16 Canon Inc データベース及びそれを用いた画像処理装置
US7268897B1 (en) 1999-06-28 2007-09-11 Canon Kabushiki Kaisha Print control apparatus and method

Also Published As

Publication number Publication date
DE69621381D1 (de) 2002-07-04
US5805899A (en) 1998-09-08
EP0752647B1 (en) 2002-05-29
DE69621381T2 (de) 2003-05-15
EP0752647A1 (en) 1997-01-08

Similar Documents

Publication Publication Date Title
JPH09152961A (ja) ソフトウエアプログラムにバージョン設定情報を付す方法および装置
US11256523B2 (en) Modular co-versioning in a dynamically linked runtime environment
US8042097B2 (en) Automated semantic-based updates to modified code base
US5325533A (en) Engineering system for modeling computer programs
US5956479A (en) Demand based generation of symbolic information
US6178546B1 (en) System and method of making software product deliverables
US5561800A (en) Method and apparatus for incrementally linking modified routines into software
US5519866A (en) Method and apparatus of incrementally linking components of a modeled computer program
US8607208B1 (en) System and methods for object code hot updates
US7484223B2 (en) System and method for building a run-time image from components of a software program
US5418964A (en) System and method for parent class shadowing in a statically linked object hierarchy
US20080082974A1 (en) Managing Software Component Version Identifications in a Componentised Software System
EP0496494A2 (en) Software maintenance system
US20160232017A1 (en) System and Method for Reloading Constructors
US20050065953A1 (en) System and method for changing defined elements in a previously compiled program using a description file
JP2002529812A (ja) 実行時にコンパイルされたコンピュータコードの機能を改変するためのシステム
JPH06103075A (ja) オブジェクト指向適用業務
AU2892200A (en) Automatic stub/adapter generator
US8606766B2 (en) Method and system to handle java class versioning
US9244706B2 (en) Command line shell command generation based on schema
Keller et al. Supporting the integration and evolution of components through binary component adaptation
Bazzi Integration of universe type system tools into eclipse
Townsend Installing the SR Programming Language Version 2.3
Judd et al. J2EE Standard Tools Projects
Rausch Migration of Persistent Object Models Using XMI