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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version 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かたまり
のシステム”としてリリースすることによって、バージ
ョンチェックを回避しようとしている。すなわち、共用
オブジェクトのバージョンの変更がなされたか否かに関
わらず、新たなアプリケーションは、それが必要とする
オブジェクトのすべてと共に出荷される。この点につ
き、前記システムにおける、バージョン変更に対処する
ために必要な部分のみをアップグレードできるようにす
ることが望ましい。
ル名は、新たなバージョンごとに更新されていた。この
ため、リンク処理中には前記共用オブジェクトの最も新
しいバージョンのみが存在し、この最も新しいバージョ
ンは該オブジェクトの旧いバージョンとは完全に異なる
ファイル名を有することになる。この点につき、オブジ
ェクトの新たなバージョンが作成される毎に該オブジェ
クトの名前を変えないようにすることが望ましい。従来
のシステムは、しばしば、アプリケーションプログラム
および共用オブジェクト(ライブラリ)を“1かたまり
のシステム”としてリリースすることによって、バージ
ョンチェックを回避しようとしている。すなわち、共用
オブジェクトのバージョンの変更がなされたか否かに関
わらず、新たなアプリケーションは、それが必要とする
オブジェクトのすべてと共に出荷される。この点につ
き、前記システムにおける、バージョン変更に対処する
ために必要な部分のみをアップグレードできるようにす
ることが望ましい。
【0005】この発明は上述の点に鑑みてなされたもの
で、オブジェクトの新たなバージョンが作成される毎に
該オブジェクトの名前を変えないようにすることがで
き、且つ、バージョン変更に対処するために必要な部分
のみをアップグレードできるようにすることにより、簡
単且つ効率的なバージョン設定を可能にする、ソフトウ
エアプログラムにバージョン設定情報を付す方法および
装置を提供することを目的とする。
で、オブジェクトの新たなバージョンが作成される毎に
該オブジェクトの名前を変えないようにすることがで
き、且つ、バージョン変更に対処するために必要な部分
のみをアップグレードできるようにすることにより、簡
単且つ効率的なバージョン設定を可能にする、ソフトウ
エアプログラムにバージョン設定情報を付す方法および
装置を提供することを目的とする。
【0006】
【課題を解決するための手段】この発明は、ソフトウエ
アプログラムを動的にリンクする方法および装置を提供
するものであり、また、アプリケーションソフトウエア
プログラムによってアクセスされるオブジェクトの連続
したバージョンにおける変更を把握するバージョンシス
テムを提供する。この発明は、バージョン設定されたオ
ブジェクトにアクセスするためにアプリケーションソフ
トウエアプログラムによって使用されるインターフェー
スをチェックし、前記アプリケーションソフトウエアプ
ログラムによる前記バージョン設定されたオブジェクト
の無効バージョンにアクセスする試みを検出する。こう
して、この発明は、アプリケーションソフトウエアプロ
グラムとオブジェクトとの間の後方互換性を維持しなが
ら、オブジェクトの制御された進化を可能にするもので
ある。
アプログラムを動的にリンクする方法および装置を提供
するものであり、また、アプリケーションソフトウエア
プログラムによってアクセスされるオブジェクトの連続
したバージョンにおける変更を把握するバージョンシス
テムを提供する。この発明は、バージョン設定されたオ
ブジェクトにアクセスするためにアプリケーションソフ
トウエアプログラムによって使用されるインターフェー
スをチェックし、前記アプリケーションソフトウエアプ
ログラムによる前記バージョン設定されたオブジェクト
の無効バージョンにアクセスする試みを検出する。こう
して、この発明は、アプリケーションソフトウエアプロ
グラムとオブジェクトとの間の後方互換性を維持しなが
ら、オブジェクトの制御された進化を可能にするもので
ある。
【0007】この発明は、記号インターフェースおよび
実行上の変更が1つのオブジェクト内においてラベル表
示できるようにする、バージョン設定システムを提供す
る。構築時において、リンクエディタは、バージョン設
定されたオブジェクトに対して、該オブジェクトのすべ
ての利用可能なバージョンを定義するデータ(バージョ
ン定義セクションおよびバージョン記号セクション)を
付加する。また、構築時において、リンクエディタは、
ソフトウエアアプリケーションに対して、該アプリケー
ションのバージョン要件を定義するデータ(バージョン
従属状態セクション)を付加する。実行時において、実
行時リンカは、前記ソフトウエアアプリケーションの要
件が前記オブジェクト自体に格納されたバージョン定義
に一致するか否か、すなわち、前記ソフトウエアアプリ
ケーションに必要とされる前記バージョン設定されたオ
ブジェクトが前記実行時リンカに利用可能であるか否か
を確認する。
実行上の変更が1つのオブジェクト内においてラベル表
示できるようにする、バージョン設定システムを提供す
る。構築時において、リンクエディタは、バージョン設
定されたオブジェクトに対して、該オブジェクトのすべ
ての利用可能なバージョンを定義するデータ(バージョ
ン定義セクションおよびバージョン記号セクション)を
付加する。また、構築時において、リンクエディタは、
ソフトウエアアプリケーションに対して、該アプリケー
ションのバージョン要件を定義するデータ(バージョン
従属状態セクション)を付加する。実行時において、実
行時リンカは、前記ソフトウエアアプリケーションの要
件が前記オブジェクト自体に格納されたバージョン定義
に一致するか否か、すなわち、前記ソフトウエアアプリ
ケーションに必要とされる前記バージョン設定されたオ
ブジェクトが前記実行時リンカに利用可能であるか否か
を確認する。
【0008】バージョンとは、オブジェクトに記録され
た名前またはラベルである。バージョンは1つまたは2
つ以上の大域記号(グローバルシンボル)に関連づけら
れてよく、この場合、バージョンは記号インターフェー
スを定義する。そうでない場合、バージョンは、単に、
実行上の変更、すなわち、オブジェクトの機能の変更が
存在するものの、新たな大域記号の定義はなされない変
更を示す標識であってよい。後者の場合、そのバージョ
ンは“弱い(ウィーク)”バージョンと呼ばれる。ここ
に説明するこの発明の実施の形態において、各バージョ
ンに関連した大域記号およびバージョン名は、人によっ
て発生される“マップファイル”に定義される。バージ
ョン設定されたオブジェクトを作成するために、前記マ
ップファイルは、構築時に、1つまたは2つ以上の再配
置可能な(コンパイルされた)オブジェクトと共に前記
リンクエディタに入力される。構築時に、アプリケーシ
ョンが(バージョン設定情報を有する)バージョン設定
されたオブジェクトとリンク編集されるとき、デフォル
ト値により、前記アプリケーションによって参照される
大域記号を含むバージョンに対する従属状態が前記アプ
リケーションに設定される。さらに、弱い定義に対する
“弱い”従属状態が設定される。
た名前またはラベルである。バージョンは1つまたは2
つ以上の大域記号(グローバルシンボル)に関連づけら
れてよく、この場合、バージョンは記号インターフェー
スを定義する。そうでない場合、バージョンは、単に、
実行上の変更、すなわち、オブジェクトの機能の変更が
存在するものの、新たな大域記号の定義はなされない変
更を示す標識であってよい。後者の場合、そのバージョ
ンは“弱い(ウィーク)”バージョンと呼ばれる。ここ
に説明するこの発明の実施の形態において、各バージョ
ンに関連した大域記号およびバージョン名は、人によっ
て発生される“マップファイル”に定義される。バージ
ョン設定されたオブジェクトを作成するために、前記マ
ップファイルは、構築時に、1つまたは2つ以上の再配
置可能な(コンパイルされた)オブジェクトと共に前記
リンクエディタに入力される。構築時に、アプリケーシ
ョンが(バージョン設定情報を有する)バージョン設定
されたオブジェクトとリンク編集されるとき、デフォル
ト値により、前記アプリケーションによって参照される
大域記号を含むバージョンに対する従属状態が前記アプ
リケーションに設定される。さらに、弱い定義に対する
“弱い”従属状態が設定される。
【0009】この発明は、1つのオブジェクト内におけ
るバージョン定義の継承を可能にする。バージョンはバ
ージョンを受け継ぎ、これにより、相互に関連したイン
ターフェース定義を作成するために、複数組の記号を組
合わせることができる。例えば、1つの新たなバージョ
ンは、旧いバージョンのすべての大域記号を受け継ぐこ
とができる。この発明は、リンクエディット時における
オブジェクトのバージョンの可視性を制御でき、実際
上、前記アプリケーションプログラムに利用可能なイン
ターフェースを制御できる。また、この発明は、前記ア
プリケーションプログラムがオブジェクトの弱いバージ
ョンを要求することを強制することもできる。
るバージョン定義の継承を可能にする。バージョンはバ
ージョンを受け継ぎ、これにより、相互に関連したイン
ターフェース定義を作成するために、複数組の記号を組
合わせることができる。例えば、1つの新たなバージョ
ンは、旧いバージョンのすべての大域記号を受け継ぐこ
とができる。この発明は、リンクエディット時における
オブジェクトのバージョンの可視性を制御でき、実際
上、前記アプリケーションプログラムに利用可能なイン
ターフェースを制御できる。また、この発明は、前記ア
プリケーションプログラムがオブジェクトの弱いバージ
ョンを要求することを強制することもできる。
【0010】上記目的を達成するため、この発明は、ソ
フトウエアプログラムにバージョン設定情報を付す方法
であって、ソフトウエアプログラムのためのオブジェク
トコードを用意するステップと、前記ソフトウエアプロ
グラムのバージョンに関するバージョン名を示すマップ
ファイルを用意するステップと、前記ソフトウエアプロ
グラムのバージョン名を示す情報が、前記マップファイ
ルに従って前記オブジェクトコードに付加されるよう、
前記オブジェクトコードをリンクし、これにより、バー
ジョン設定されたオブジェクトを生成するステップとを
具備し、これらのステップがデータ処理システムによっ
て実行されるものである。これにより、この発明によれ
ば、バージョン設定されたオブジェクトを自動的に生成
することができる。
フトウエアプログラムにバージョン設定情報を付す方法
であって、ソフトウエアプログラムのためのオブジェク
トコードを用意するステップと、前記ソフトウエアプロ
グラムのバージョンに関するバージョン名を示すマップ
ファイルを用意するステップと、前記ソフトウエアプロ
グラムのバージョン名を示す情報が、前記マップファイ
ルに従って前記オブジェクトコードに付加されるよう、
前記オブジェクトコードをリンクし、これにより、バー
ジョン設定されたオブジェクトを生成するステップとを
具備し、これらのステップがデータ処理システムによっ
て実行されるものである。これにより、この発明によれ
ば、バージョン設定されたオブジェクトを自動的に生成
することができる。
【0011】さらに、この発明は、ソフトウエアプログ
ラムにバージョン設定情報を付す方法であって、第1の
ソフトウエアプログラムのための第1のオブジェクトコ
ードを用意するステップと、前記第1のソフトウエアプ
ログラムのバージョンに関するバージョン名を示すマッ
プファイルを用意するステップと、前記第1のソフトウ
エアプログラムのバージョン名を示す情報が、前記マッ
プファイルに従って前記第1のオブジェクトコードに付
加されるよう、前記第1のオブジェクトコードをリンク
し、これにより、バージョン設定されたオブジェクトを
生成するステップと、第2のソフトウエアプログラムの
ための第2のオブジェクトコードを用意するステップ
と、前記第2のオブジェクトコードを前記バージョン設
定されたオブジェクトにリンクするステップであって、
このステップが、前記第2のソフトウエアプログラムに
必要とされる前記第1のソフトウエアプログラムのバー
ジョンを判定するステップと、前記第2のソフトウエア
プログラムに必要とされる前記バージョンを示す情報を
前記第2のオブジェクトコードに付加し、これにより、
動的に実行可能なプログラムを生成するステップとをさ
らに含むものと、を具備し、これらのステップがデータ
処理システムによって実行されるものである。これによ
り、この発明によれば、バージョン設定されたオブジェ
クトを自動的に生成することができると共に、第2のソ
フトウエアプログラムすなわちアプリケーションソフト
ウエアプログラムを、このバージョン設定されたオブジ
ェクトに動的にリンクして実行可能とすることができ
る。
ラムにバージョン設定情報を付す方法であって、第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のオブジェクトコードを前記
バージョン設定されたオブジェクトにリンクし、これに
より、動的に実行可能なプログラムを生成するリンカと
を具備したものである。
エアプログラムにバージョン設定情報を付す装置であっ
て、第1のソフトウエアプログラムのための第1のオブ
ジェクトコードを格納する記憶媒体と、前記第1のソフ
トウエアプログラムのバージョンに関するバージョン名
を指定するマップファイルを格納する記憶媒体と、前記
マップファイルに従って、前記第1のオブジェクトコー
ドに対して、前記第1のソフトウエアプログラムの前記
バージョンのバージョン名を定義する付加情報を付し、
これにより、バージョン設定されたオブジェクトを生成
するリンカと、第2のソフトウエアプログラムのための
第2のオブジェクトコードを格納する記憶媒体と、前記
第2のソフトウエアプログラムに必要とされるバージョ
ンを示す付加情報を前記第2のオブジェクトコードに付
すことによって、前記第2のオブジェクトコードを前記
バージョン設定されたオブジェクトにリンクし、これに
より、動的に実行可能なプログラムを生成するリンカと
を具備したものである。
【0013】別の観点に従えば、この発明は、動的に実
行可能なオブジェクトに必要とされるオブジェクトのバ
ージョンが該実行可能オブジェクトの実行中に存在する
ことを判定させるための、コンピュータによって読み取
り可能なコードを格納したコンピュータによって使用可
能な媒体を備えたコンピュータプログラム製品であっ
て、コンピュータに、第1のソフトウエアプログラムの
ための第1のオブジェクトコードを用意させる第1のコ
ンピュータ読み取り可能プログラムコード装置と、コン
ピュータに、前記第1のソフトウエアプログラムのバー
ジョンに関連したバージョン名を指定するマップファイ
ルを用意させる第2のコンピュータ読み取り可能プログ
ラムコード装置と、前記第1のソフトウエアプログラム
のバージョン名を示す情報が、前記マップファイルに従
って、前記第1のオブジェクトコードに付加されるよ
う、コンピュータに、前記第1のオブジェクトコードを
リンクさせ、これにより、バージョン設定されたオブジ
ェクトを生成させる第3のコンピュータ読み取り可能プ
ログラムコード装置とを具備したものである。
行可能なオブジェクトに必要とされるオブジェクトのバ
ージョンが該実行可能オブジェクトの実行中に存在する
ことを判定させるための、コンピュータによって読み取
り可能なコードを格納したコンピュータによって使用可
能な媒体を備えたコンピュータプログラム製品であっ
て、コンピュータに、第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を有す
る。
明の一実施の形態を詳細に説明する。 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は、アプリケーショ
ンプログラム、オペレーティングシステム、データ等の
その他の情報をも格納している。
の発明において、前記オブジェクト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は、コンパイルシステム
によって作成されてもよい。
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のフォーマットを有し、人によっ
て作成される。
の入出力を示す図であり、図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はエラーを発生する。
時リンカ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
に対するインターフェースの変更を必要とする。
ージョン間で可能な変更について説明する。一般に、こ
れらの変更は、互換性のある更新と互換性の無い更新と
の2つのグループに分類できる。前記互換性のある更新
とは、付加的な更新、すなわち、共用オブジェクト11
4に対するインターフェースでそれまで利用可能であっ
た大域記号がそのまま維持される更新である。互換性の
ある更新の一例は、大域記号の付加である。前のバージ
ョンから記号は除去されていないので、前のバージョン
とインターフェース接続されたアプリケーションソフト
ウエアは依然として正しく動作する。前記互換性の無い
更新は、特定の既存のインターフェースを使用した既存
のアプリケーションが故障したり不正動作したりするよ
うな状態に、前記既存のインターフェースを変更するも
のである。このような互換性の無い更新の例としては、
記号の除去、機能に対する引数の付加、機能からの引数
の除去、および、機能に対する引数のサイズまたは内容
の変更などがある。共用オブジェクト114に対する誤
り訂正は、既存のインターフェースに対する互換性のあ
る更新であったり、互換性の無い更新であったりする。
例えば、互換性のある誤り訂正は、単に、それまで定義
されていたインターフェースを維持しながら、共用オブ
ジェクト114の内部機能を変更するものである。一
方、互換性の無い誤り訂正は、共用オブジェクト114
に対するインターフェースの変更を必要とする。
【0020】2.構築時におけるバージョン設定情報の
作成 上記パラグラフは、この発明に従うバージョン設定を実
行するために、構築時および実行時に行われる処理の全
体的な説明であった。以下のパラグラフは、前記リンク
エディタ124が、どのようにして、共用オブジェクト
およびアプリケーションプログラムにバージョン設定情
報を付加するのかを説明するものである。
作成 上記パラグラフは、この発明に従うバージョン設定を実
行するために、構築時および実行時に行われる処理の全
体的な説明であった。以下のパラグラフは、前記リンク
エディタ124が、どのようにして、共用オブジェクト
およびアプリケーションプログラムにバージョン設定情
報を付加するのかを説明するものである。
【0021】a.構築時にバージョン設定されたオブジ
ェクトに関する バージョン定義作成 以下に説明するように、好ましい実施の形態において、
前記リンクエディタ124は、マップファイル130の
バージョン指示情報に従って、共用オブジェクトのバー
ジョン設定を制御する。前記マップファイル130は、
人によって作成されるのが好ましいが、コンパイルシス
テムのようなソフトウエアによって作成されてもよい。
図6および図7は、図2のリンクエディタ124によっ
て実行されるステップを示すフローチャートである。こ
れらのステップは、共用オブジェクト114のようなバ
ージョン設定されたオブジェクトを作成するために実行
されるステップの一部である。当業者によって理解され
るように、図6および図7(および図12)のステップ
は、メモリ104に格納されていて、且つ、例えばメモ
リ104に格納されたデータ構造を使用したリンクエデ
ィタ124の命令を実行する図1のCPU102によっ
て行われる。
ェクトに関する バージョン定義作成 以下に説明するように、好ましい実施の形態において、
前記リンクエディタ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
の例は共用オブジェクトの作成を示しているが、この発
明は、バージョン設定された再配置可能なオブジェクト
および動的に実行可能なオブジェクトを作成するために
も使用可能である。
ップは、リンクエディタ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を作成す
る。
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に対する内部実行
上の変更を伴うことがある。
フォーマットを使用したマップファイル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は、前記共用オブジェ
クトの機能変更を有するが、インターフェース変更を有
さないバージョンを示す。
すものである。該表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の大域記号を引き継いで
いる。
号を受け継いだ、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”
に関連した、そのバージョンの内部バージョン定義によ
って構成される。
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によって作成される共用オブ
ジェクトのバージョン設定情報、および、各バージョン
に利用可能な大域記号をプリントアウトする。
をコンパイルし、リンクするための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に
ついて作成される。
いて“基準バージョン”の定義も作成される。この基準
バージョンは、前記共用オブジェクト自体の名前(例え
ば“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を含む。以下のパラグラフは、こ
れらのセクションの作成および使用について説明するも
のである。
バージョン名がマップファイル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を受け継いだバージョンの名前とを含
んでいる。
ジェクト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(“基準”フラ
グ)は、この基準バージョン定義において設定される。
ジョン定義を有する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参照)。
イル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に対す
る索引である。
ジョン番号である。バージョン定義索引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(またはゼロ)を指し示す。
に対するエントリ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は、他のバージョ
ン設定されたオブジェクトを参照することができる。こ
のバージョン従属状態セクションの作成については、後
で説明する。
クエディタ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のすべ
てのバージョンをチェックする。
報の作成 表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は、バージョン従属状態セクシ
ョンのフォーマットを示す図である。
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に進む。
ンクエディタ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に必要な
大域記号を含むのかを判定する。
ィタ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とリンクされている
すべての共用オブジェクトのバージョン定義セクション
およびバージョン記号セクションを調べることによっ
て、前記記号がどのバージョンに属するものかについて
の情報を得る。
される従属状態は、アプリケーションプログラムが共用
オブジェクトに対するインターフェイスの大域記号を参
照する毎に作成される。表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とを含んでいる。
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つのインス
タンスが存在する。
ージョン値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を示すポインタであ
る。
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に対する
従属状態が記録される。
承(受け継いだ情報)がバージョン定義セクション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は、特にこの発明に関連のあるものである。
図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のみを含むことになる。
ジョン定義セクション506およびバージョン記号セク
ション508を含むELFオブジェクト114の作成、
および、バージョン従属状態セクション510を含むE
LFオブジェクト120の作成について説明した。な
お、前記バージョン定義セクション506およびバージ
ョン記号セクション508は大域記号の定義を含むオブ
ジェクトのみに作成されるものであり、バージョン従属
状態セクション510は、大域記号を含むオブジェクト
に従属するオブジェクトのみに作成されるものである。
こうして、大域インターフェースを有する共用オブジェ
クトは、セクション506,508および510を含む
ことになる。前記共用オブジェクトを参照する実行可能
なアプリケーションプログラムは、バージョン従属状態
セクション510のみを含むことになる。
【0052】c.構築時におけるアプリケーション構造
の制限 上記パラグラフは、共用オブジェクト114のすべての
利用可能なバージョンと再配置可能なオブジェクトとの
間のバージョン結合の一例について説明した。結合は、
アプリケーションプログラムと、図13のオブジェクト
の特定のバージョンのみとの間で発生するよう制限され
ることもできる。図13は、図4のマップファイル13
2におけるファイル制御指示のフォーマットを示すもの
である。このフォーマットのファイル制御指示は、他の
オブジェクトの特定のバージョンに従って動的に実行可
能なオブジェクトを結合するために使用される。
の制限 上記パラグラフは、共用オブジェクト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”を未定義の記号として認識す
る。
エディタが図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によって確認される、ことを保証す
る。
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のステップは、必要な従属状態のすべてが存在してい
るか否かを判定するために、実行前チェックとして行わ
れる。
確認 図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
に進む。
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のバージョン従属状態セクションにおいて指
定される。
ンカ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に戻る。弱い
バージョンではない判定した場合、必要とされる弱くな
いバージョンが存在していないので、致命的なエラーが
発生する。従って、存在していない“弱い”バージョン
への従属はエラーを発生しないが、“弱くない”バージ
ョンへの従属はエラーを発生することになる。
た場合、共用オブジェクト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は、他のオブジェクト
に従属しており、従って、バージョン従属状態セクショ
ンを有さない)。
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バージョンも記録される。
および、それぞれのバージョン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)の名前は、そのバージョン定義を生成す
るときに作成される大域記号でもある。
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”が実
行されることになる。以上、いくつかの好ましい実施例
について本発明につき説明したが、これら実施例に限ら
ず、本発明の精神と範囲を逸脱しない限り、その他の種
々の変形が可能であることが理解されるであろう。
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項に記載の方法。
様のいくつかを要約して示すと下記の通りである。 (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項に記載の装置。
ジョン設定情報を付す装置であって、第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項に記載の
コンピュータプログラム製品。
に必要とされるオブジェクトのバージョンが該実行可能
オブジェクトの実行中に存在することを判定させるため
の、コンピュータによって読み取り可能なコードを格納
したコンピュータによって使用可能な媒体を備えたコン
ピュータプログラム製品であって、コンピュータに、第
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の
リンクエディタによって実行されるステップを示すフロ
ーチャート。
びバージョン記号セクションを付加するために、図2の
リンクエディタによって実行されるステップを示すフロ
ーチャート。
【図7】図6の処理の詳細を示すフローチャート。
【図8】図2のマップファイルのフォーマットを示す
図。
図。
【図9】バージョン設定されたオブジェクトに含まれる
図2のリンクエディタの出力を示す図。
図2のリンクエディタの出力を示す図。
【図10】図9のバージョン定義セクションのフォーマ
ットを示す図。
ットを示す図。
【図11】図9のバージョン記号セクションのフォーマ
ットを示す図。
ットを示す図。
【図12】動的に実行可能なアプリケーションプログラ
ムにバージョン従属状態セクションを付加するために、
図3または図4のリンクエディタによって実行されるス
テップを示すフローチャート。
ムにバージョン従属状態セクションを付加するために、
図3または図4のリンクエディタによって実行されるス
テップを示すフローチャート。
【図13】図4のマップファイルのフォーマットを示す
図。
図。
【図14】動的に実行可能なアプリケーションプログラ
ムに含まれる図3のリンクエディタの出力を示す図。
ムに含まれる図3のリンクエディタの出力を示す図。
【図15】図9および図14のバージョン従属状態セク
ションのフォーマットを示す図。
ションのフォーマットを示す図。
【図16】図10、図11および図15のセクションヘ
ッダのフォーマットを示す図。
ッダのフォーマットを示す図。
【図17】図16のヘッダにおける様々な値のリストを
示す図。
示す図。
【図18】図16のヘッダにおける様々な値のリストを
示す図。
示す図。
【図19】アプリケーションプログラムのバージョン要
件が該アプリケーションプログラムにリンクされている
オブジェクトに存在するバージョンに一致していること
を確認するために、図5の実行時リンカによって実行さ
れるステップを示すフローチャート。
件が該アプリケーションプログラムにリンクされている
オブジェクトに存在するバージョンに一致していること
を確認するために、図5の実行時リンカによって実行さ
れるステップを示すフローチャート。
【図20】前記リンクエディタによってオブジェクトに
付加されたバージョン定義セクションの一例を示す図。
付加されたバージョン定義セクションの一例を示す図。
【図21】前記リンクエディタによってオブジェクトに
付加されたバージョン記号セクションの一例を示す図。
付加されたバージョン記号セクションの一例を示す図。
【図22】前記リンクエディタによってバージョン設定
されたオブジェクトおよび動的に実行可能なアプリケー
ションプログラムの一方または両方に付加可能なバージ
ョン従属状態セクションの一例を示す図。
されたオブジェクトおよび動的に実行可能なアプリケー
ションプログラムの一方または両方に付加可能なバージ
ョン従属状態セクションの一例を示す図。
102 CPU 104 メモリ 110 ソースコード 114 共用オブジェクト 116 ソースコード 118 再配置可能なオブジェクト 120 動的に実行可能なオブジェクト 124 リンクエディタ 124 実行時リンカ 130 マップファイル 132 マップファイル
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロバート エー ジンゲル アメリカ合衆国 94087 カリフォルニア, サニーベイル,ライトアベニュー,1377
Claims (3)
- 【請求項1】 ソフトウエアプログラムにバージョン設
定情報を付す方法であって、 ソフトウエアプログラムのためのオブジェクトコードを
用意するステップと、 前記ソフトウエアプログラムのバージョンに関するバー
ジョン名を示すマップファイルを用意するステップと、 前記ソフトウエアプログラムのバージョン名を示す情報
が、前記マップファイルに従って前記オブジェクトコー
ドに付加されるよう、前記オブジェクトコードをリンク
し、これにより、バージョン設定されたオブジェクトを
生成するステップとを具備し、これらのステップがデー
タ処理システムによって実行される方法。 - 【請求項2】 ソフトウエアプログラムにバージョン設
定情報を付す方法であって、 第1のソフトウエアプログラムのための第1のオブジェ
クトコードを用意するステップと、 前記第1のソフトウエアプログラムのバージョンに関す
るバージョン名を示すマップファイルを用意するステッ
プと、 前記第1のソフトウエアプログラムのバージョン名を示
す情報が、前記マップファイルに従って前記第1のオブ
ジェクトコードに付加されるよう、前記第1のオブジェ
クトコードをリンクし、これにより、バージョン設定さ
れたオブジェクトを生成するステップと、 第2のソフトウエアプログラムのための第2のオブジェ
クトコードを用意するステップと、 前記第2のオブジェクトコードを前記バージョン設定さ
れたオブジェクトにリンクするステップであって、この
ステップが、前記第2のソフトウエアプログラムに必要
とされる前記第1のソフトウエアプログラムのバージョ
ンを判定するステップと、前記第2のソフトウエアプロ
グラムに必要とされる前記バージョンを示す情報を前記
第2のオブジェクトコードに付加し、これにより、動的
に実行可能なプログラムを生成するステップとをさらに
含むものと、を具備し、これらのステップがデータ処理
システムによって実行される方法。 - 【請求項3】 ソフトウエアプログラムにバージョン設
定情報を付す装置であって、 第1のソフトウエアプログラムのための第1のオブジェ
クトコードを格納する記憶媒体と、 前記第1のソフトウエアプログラムのバージョンに関す
るバージョン名を指定するマップファイルを格納する記
憶媒体と、 前記マップファイルに従って、前記第1のオブジェクト
コードに対して、前記第1のソフトウエアプログラムの
前記バージョンのバージョン名を定義する付加情報を付
し、これにより、バージョン設定されたオブジェクトを
生成するリンカと、 第2のソフトウエアプログラムのための第2のオブジェ
クトコードを格納する記憶媒体と、 前記第2のソフトウエアプログラムに必要とされるバー
ジョンを示す付加情報を前記第2のオブジェクトコード
に付すことによって、前記第2のオブジェクトコードを
前記バージョン設定されたオブジェクトにリンクし、こ
れにより、動的に実行可能なプログラムを生成するリン
カとを具備した装置。
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)
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)
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)
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 |
-
1995
- 1995-07-06 US US08/499,062 patent/US5805899A/en not_active Expired - Fee Related
-
1996
- 1996-06-27 DE DE69621381T patent/DE69621381T2/de not_active Expired - Fee Related
- 1996-06-27 EP EP96110383A patent/EP0752647B1/en not_active Expired - Lifetime
- 1996-07-05 JP JP8195380A patent/JPH09152961A/ja active Pending
Cited By (6)
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 |