(57)【特許請求の範囲】
【請求項１】
複数のオブジェクトを結合して実行形式プログラムファイルを生成する生成方法であって、
コンピュータが、
オブジェクトの識別子と、該オブジェクトの位置情報を示すアドレスと、該オブジェクトが現在有効かどうかを示すフラグとを対応付けて記憶した管理情報に基づいて、前記複数のオブジェクトのうち、前記管理情報において前記フラグが、オブジェクトが有効であることを示す情報に設定されているオブジェクトを参照可能に結合して実行形式プログラムファイルを生成することを実行し、
前記実行形式プログラムファイル中のオブジェクトに対する更新指示を受けたときに、更新対象である前記オブジェクトである旧オブジェクトに対応する更新後の新オブジェクトを、前記実行形式プログラムファイルに含まれる既存の前記オブジェクトの位置を保持しつつ前記実行形式プログラムファイルに追加することを実行し、
前記管理情報は、生成した前記実行形式プログラムファイルに含まれる、
ことを特徴とする生成方法。
【請求項２】
前記コンピュータが、
前記管理情報に、前記新オブジェクトの識別子と前記新オブジェクトの位置情報を示すアドレスと、前記フラグとして前記新オブジェクトが有効であることを示す情報とを対応付けて記録することを実行し、
前記管理情報の前記旧オブジェクトに対応する前記フラグを、前記旧オブジェクトが有効でないことを示す情報に変更することを実行し、
前記複数のオブジェクトのうち、前記管理情報において有効であることを示す前記フラグが設定されているオブジェクトを参照可能に変更することを実行する、
ことを特徴とする請求項１記載の生成方法。
【請求項３】
前記コンピュータが、
前記新オブジェクトを、前記既存オブジェクトの末尾に追加することで、前記新オブジェクトを前記実行形式プログラムファイルに含まれる既存オブジェクトの位置を保持しつつ前記実行形式プログラムファイルに追加することを実行する、
ことを特徴とする請求項２記載の生成方法。
【請求項４】
前記実行形式プログラムファイルは、オブジェクトの識別子と、該オブジェクトが備えるシンボル識別子と該シンボル識別子の位置情報を示すアドレスとを対応付けて記録したシンボル情報、および前記オブジェクトの識別子と、該オブジェクトが参照するシンボル識別子と、該オブジェクトがシンボルを参照する参照元とを対応付けて記憶したシンボル参照情報を含み、
前記コンピュータが、
前記シンボル情報に、前記新オブジェクトが備えるシンボルのシンボル識別子と位置情報を示すアドレスとを対応付けて記録することを実行し、
前記シンボル参照情報に、前記新オブジェクトが参照するシンボルのシンボル識別子と参照元の位置情報を示すアドレスとを対応付けて記録することを実行し、
前記管理情報と、前記シンボル情報と、前記シンボル参照情報とに基づいて、シンボルの参照関係を解決することを実行する、
ことを特徴とする請求項２または３記載の生成方法。
【請求項５】
前記管理情報の、前記旧オブジェクトに対応する前記フラグを、有効であることを示す情報に変更することを実行し、
前記新オブジェクトを結合して前記実行形式プログラムファイルを生成したときに記録した情報であって、前記シンボル情報と前記シンボル参照情報それぞれに記録した情報を削除し、前記実行形式プログラムファイルを更新前の状態に復元することを実行する、
ことを特徴とする請求項４記載の生成方法。
【請求項６】
複数のオブジェクトを結合して実行形式プログラムファイルを生成する生成プログラムであって、
コンピュータに、
オブジェクトの識別子と、該オブジェクトの位置情報を示すアドレスと、該オブジェクトが現在有効かどうかを示すフラグとを対応付けて記憶した管理情報に基づいて、前記複数のオブジェクトのうち、前記管理情報において前記フラグが、オブジェクトが有効であることを示す情報に設定されているオブジェクトを参照可能に結合して実行形式プログラムファイルを生成することを実行させ、
前記実行形式プログラムファイル中のオブジェクトに対する更新指示を受けたときに、更新対象である旧オブジェクトに対応する更新後の新オブジェクトを、前記実行形式プログラムファイルに含まれる既存オブジェクトの位置を保持しつつ前記実行形式プログラムファイルに追加することを実行させ、
前記管理情報は、生成した前記実行形式プログラムファイルに含まれる、
ことを特徴とする生成プログラム。
【請求項７】
前記コンピュータに、
前記管理情報に、前記新オブジェクトの識別子と前記新オブジェクトの位置情報を示すアドレスと、前記フラグとして前記新オブジェクトが有効であることを示す情報とを対応付けて記録することを実行させ、
前記管理情報の前記旧オブジェクトに対応する前記フラグを、前記旧オブジェクトが有効でないことを示す情報に変更することを実行させ、
前記複数のオブジェクトのうち、前記管理情報において有効であることを示す前記フラグが設定されているオブジェクトを参照可能に変更することを実行させる、
ことを特徴とする請求項６記載の生成プログラム。
【請求項８】
前記コンピュータに、
前記新オブジェクトを、前記既存オブジェクトの末尾に追加することで、前記新オブジェクトを前記実行形式プログラムファイルに含まれる既存オブジェクトの位置を保持しつつ前記実行形式プログラムファイルに追加することを実行させる、
ことを特徴とする請求項７記載の生成プログラム。
【請求項９】
前記実行形式プログラムファイルは、オブジェクトの識別子と、該オブジェクトが備えるシンボル識別子と該シンボル識別子の位置情報を示すアドレスとを対応付けて記録したシンボル情報、および前記オブジェクトの識別子と、該オブジェクトが参照するシンボル識別子と、該オブジェクトがシンボルを参照する参照元とを対応付けて記憶したシンボル参照情報を含み、
前記コンピュータに、
前記シンボル情報に、前記新オブジェクトが備えるシンボルのシンボル識別子と位置情報を示すアドレスとを対応付けて記録することを実行させ、
前記シンボル参照情報に、前記新オブジェクトが参照するシンボルのシンボル識別子と参照元の位置情報を示すアドレスとを対応付けて記録することを実行させ、
前記管理情報と、前記シンボル情報と、前記シンボル参照情報とに基づいて、シンボルの参照関係を解決することを実行させる、
ことを特徴とする請求項７または８記載の生成プログラム。
【請求項１０】
前記コンピュータに、
前記管理情報の、前記旧オブジェクトに対応する前記フラグを、有効であることを示す情報に変更することを実行させ、
前記新オブジェクトを結合して前記実行形式プログラムファイルを生成したときに記録した情報であって、前記シンボル情報と前記シンボル参照情報それぞれに記録した情報を削除し、前記実行形式プログラムファイルを更新前の状態に復元することを実行させる、
ことを特徴とする請求項９記載の生成プログラム。
【請求項１１】
複数のオブジェクトを結合して実行形式プログラムファイルを生成する生成装置であって、
オブジェクトの識別子と、該オブジェクトの位置情報を示すアドレスと、該オブジェクトが現在有効かどうかを示すフラグとを対応付けて記憶した管理情報に基づいて、前記複数のオブジェクトのうち、前記管理情報において前記フラグが、オブジェクトが有効であることを示す情報に設定されているオブジェクトを参照可能に結合して実行形式プログラムファイルを生成する生成手段と、
前記実行形式プログラムファイル中のオブジェクトに対する更新指示を受けたときに、更新対象である前記オブジェクトである旧オブジェクトに対応する更新後の新オブジェクトを、前記実行形式プログラムファイルに含まれる既存の前記オブジェクトの位置を保持しつつ前記実行形式プログラムファイルに追加することを実行する結合手段と、
を備え、
前記管理情報は、生成した前記実行形式プログラムファイルに含まれる、
ことを特徴とする生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置およびオブジェクトの結合方法に関する。更に詳しくは、前記実行形式プログラムファイルに修正を適用する場合に、修正オブジェクトを既存のオブジェクトからなる実行形式プログラムファイルに結合するオブジェクト結合装置および結合方法に関する。
【背景技術】
【０００２】
従来、Linuxで使われるモノリシックカーネルなどの、静的にリンクされた単一の実行形式プログラムファイルに修正を適用する場合、修正されたオブジェクト（以下、修正オブジェクトと呼ぶ）と、その他の必要なすべてのオブジェクトを、リンカによって再結合して単一で巨大な実行形式ファイルを再生成していた。【０００３】
ここで、静的なリンクとは、アプリケーションプログラムをリンクした時に必要なライブラリをプログラムに含めることをいい、具体的にはリンク時にオブジェクトファイルを汎用ライブラリにリンクさせることにより、実行可能形式のバイナリを作成することをいう。【０００４】
静的なリンクの利点としては、必要なAPI(Application Program Interface)やライブラリの版数間の互換性による不具合が生じないことがある。
静的なリンクと対比されるものとして、プログラムを実行する際に、ライブラリを結合する動的なリンクがある。【０００５】
図１に、静的にリンクされた実行形式プログラムの一部を修正する場合の従来の原理構成の例を示す。図１は、オブジェクトBのみに修正を適用する場合の例を示している。上述した手順のように、修正されたオブジェクトB（新）とその他の必要なすべてのオブジェクトA,C,Dをリンカ１００によって再配置および再結合して、実行形式ファイル（新）を生成する。この場合、セキュリティ修正など、局所的、少量な修正に対しても上記手順により生成されたファイル全体の置き換えとなる。【０００６】
また、リンカにより再結合する場合、オブジェクト再配置の結果、その再配置場所などの情報（シンボル情報）が新たに生成される。一般的に再配置、再結合によって得られた新たなシンボル情報は、元の実行形式ファイルのシンボル情報とは異なる。このため、局所的な修正を行ったとしても、元のファイルと比べて実行形式ファイル全体にわたって内容が変更されることになる。【０００７】
図２に、カーネルファイル（旧）に対してオブジェクトBのみ修正を行うために再結合を行う場合の例を示す。オブジェクトB（新）がオブジェクトB（旧）に置き換えられることにより、オブジェクトC,D,Eの位置情報（アドレス）がそれぞれaddr-c0, addr-d0, addr-e0からaddr-c1, addr-d1, addr-e1に変更される。これにより、本来修正される必要のない他のオブジェクトA,C,D,Eに対してもデータの書き換えが発生していることがわかる（例えば、オブジェクトAのaddr-axにおいて、オブジェクトCを参照している場合に、カーネルファイル（旧）ではaddr-c0であったがカーネルファイル（新）ではaddr-c1に書き換えられる。）
このように静的にリンクされた実行形式プログラムの一部を修正する場合、局所的、少量な修正であってもファイル全体の置き換えを行う必要があった。また、オブジェクトの再配置の結果、その配置場所などのシンボル情報が新たに生成されるため、本来修正される必要のない他のオブジェクトに対してもデータの書き換えを行う必要があった。更に、カーネルモジュールとして提供されるデバイスドライバなどは、シンボル情報に依存するため、修正適用に伴って対応するモジュールを用意し、再インストールする必要があった。【０００８】
一方で、近年増加しつつあるミッションクリティカルなシステムでは、システムを停止する時間が従来に比べてより制約されるためプログラム修正適用作業に伴うシステムの停止時間を短縮したいという要望や、修正適用によるシステムへの影響を極小化したいという要望が増えている。【０００９】
そこで、上述のような静的にリンクされた実行形式プログラムの一部に修正適用する際に、ファイル全体を置き換えることやシンボル情報などのファイル内容の書き換えることを極力少なくし、システムへのプログラム修正適用作業時間を可能な限り短縮することが求められる。また、修正適用後、新しいプログラムに不具合が生じた場合などは元の古いプログラムに復元し、より安定したシステムを提供するということが求められる。【００１０】
このような問題を解決する技術として様々なものが提案されてきている。
まず、モジュール（＝実行形式プログラム）と、それを構成する複数のプログラム（＝オブジェクト）において、修正がないプログラムに極力影響を与えずに修正プログラムを置換する技術が知られている。この技術ではモジュールやプログラムの構成要素を把握する管理機能を新たに設けることで当該技術を実現している。しかし、修正オブジェクトの置換位置に関する記述がなく、修正が不適切な場合に旧版に戻すことはできない。【００１１】
また、ロードモジュール（＝実行形式プログラムファイル）内のオブジェクトモジュール（＝オブジェクト）の置換挿入を特徴としたリンカ技術が知られている。詳しくは、ロードモジュール内の空きエリア（特に元のオブジェクトモジュールの位置）にオブジェクトモジュールを配置することで当該技術を実現している。しかし、この技術では空きエリアがない場合には従来の全リンクを行うように構成されており、部分リンクの効果が得られない欠点がある。また、修正が不適切な場合に旧版に戻すことはできない。【００１２】
以上、静的にリンクされた実行形式プログラムに修正を適用する従来方法について述べてきたが、問題点をまとめると以下のようになる。
１）実行形式ファイルのサイズが大きいため、配布・入手が困難となり、修正適用時間が長くなる。特に数百、数千の多数の実行形式ファイルに対して修正を適用する場合、修正適用時間への影響が顕著となる。
２）修正適用後、何らかの理由により復元（ロールバック）を行う場合、事前にバックアップした実行形式ファイル全体をシステムに戻す必要がある。多数の実行形式ファイルに対して修正を適用した場合には、復元時間への影響が顕著となる。
３）カーネルモジュールとして提供されるデバイスドライバなどは、シンボル情報に依存するため、修正適用に伴って対応するモジュールを用意し、再インストールする必要がある。
４）修正を適用する場合、修正を含まないオブジェクトに対してもシンボル情報の書き換えなどの改変が施されるため、高信頼が求められるミッションクリティカルなシステムではプログラム全体にわたって再度テストを行う必要がある。
【特許文献１】特開平１−１２９３２６号公報
【特許文献２】特開平１−２０５３３２号公報
【発明の開示】
【００１３】
本発明は、上述のような実情に鑑みてなされたものであり、静的にリンクされた実行形式プログラムに修正を適用する場合、修正時間を可能な限り短縮し、また修正を含まない部分については修正の影響を極小化可能なプログラムの結合方法およびその装置を提供することを目的とする。また、何らかの理由で復元を行う場合にも、復元時間を可能な限り短縮可能とする。
【００１４】
本発明のオブジェクトの結合方法によれば、実行形式プログラムに修正を適用する場合、すなわち旧オブジェクトを新オブジェクトに置き換えを行う場合、旧オブジェクトを削除せずに新オブジェクトに置き換える。つまり、オブジェクトの置き換え時に、旧オブジェクトを上書きせずに、既にある複数のオブジェクトが配置されている末尾に新オブジェクトを追加し、旧オブジェクトと新オブジェクトの両方のデータおよび情報を管理できるようにした。かつ、旧オブジェクトと新オブジェクトとのいずれかが有効であるかを指定管理できるようにした。かつ、新旧オブジェクトの有効・無効の管理およびオブジェクト間のシンボル情報などの管理を行うためのオブジェクト管理テーブルを保持する領域を実行形式プログラムファイルの末尾（追加した新オブジェクトの後ろ）に追加するようにした。
【００１５】
このような構成により、次のような効果が得られる。
まず、配布する修正ファイルのサイズが小さくなり、配布・入手が容易になる。また、修正適用時間、つまりプログラムの更新時間が短縮される。また、修正適用後に不具合があった場合、管理情報を元に適用前の状態に容易に復元が可能となる。また、デバイスドライバなどの外部モジュールへの影響が極小となるため、プログラムファイルへの修正適用時にドライバモジュールの再作成、再インストールが必要となる機会が大幅に減少される。また、修正に関連しないオブジェクトは、旧プログラムファイルの動作が保障されるため、テスト範囲の絞り込みによるテスト実施工数の削減が可能である。
【図面の簡単な説明】
【００１６】
【図１】従来の原理構成を示す図である。
【図２】従来の構成において、実行形式プログラムに修正を適用する場合を説明する図である。
【図３】実施の形態の原理構成を示す図である。
【図４】実施の形態の全体構成を示す図である。
【図５】オブジェクト管理テーブルの構成を示す図である。
【図６】シンボル情報テーブルの構成を示す図である。
【図７】シンボル参照テーブルの構成を示す図である。
【図８】オブジェクトの結合を説明する図である。
【図９】オブジェクトの結合の際のファイル結合部のフローを示す図である。
【図１０】シンボル情報の解決を説明する図である。
【図１１】シンボル情報の解決の際のシンボル情報解決部のフローを示す図である。
【図１２】オブジェクトの復元を説明する図である。
【図１３】オブジェクトの復元の際のシンボル情報解決部のフローを示す図である。
【図１４】実施の形態おける情報処理装置の構成を示す図である。
【図１５】実施の形態におけるプログラムのコンピュータへのローディングを説明する図である。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して、静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置およびオブジェクトの結合方法の実施の形態の一例について説明する。【００１８】
まず、図３に示す原理構成図を参照して説明する。
カーネル本体は、複数のオブジェクト（A.o,B.o,C.o,D.o）とオブジェクトやオブジェクト内のシンボル情報等を管理するための管理テーブルを保持する領域とからなるファイルである。（E.aはアセンブラ言語のソースファイルであり、実際の時カーネルなどには含まれるファイルであるためここで示しているが、以下の説明では省略する。）
図３では、カーネル本体（旧）のB.o-1オブジェクトをB.o-2オブジェクトに更新し、カーネル本体（新）を得る場合を示している。【００１９】
まず、修正を適用する際、新オブジェクトであるオブジェクトB.o-2をカーネル本体ファイルに結合を行うが、この時、旧オブジェクトであるオブジェクトB.o-1を削除せずにそのまま残し（図３の（１））、新オブジェクトB.o-2を既存のオブジェクトの末尾とオブジェクト管理テーブルの間に組み込む（図３の（２））。【００２０】
次に、追加された新オブジェクトB.o-2について位置情報を新たに算出し、オブジェクト管理テーブルの情報を更新する（図３の（３））。そして、更新されたオブジェクト管理テーブルの値に基づき、新オブジェクトB.o-2を参照する他の既存オブジェクトに含まれる位置情報を変更する（図３の（４））。【００２１】
このように実行形式プログラムへ修正を適用することによって、既存オブジェクトについては再配置が不要で、かつシンボル情報の書き換えについては新オブジェクトに関係する情報のみとなるため、修正適用時間を短縮することが可能である。また、修正適用後に不具合があった場合、旧オブジェクトが削除されていないため、旧オブジェクトを有効にするだけで元のシステムへ復元(ロールバック)が可能である。また、修正に関係しない既存オブジェクトの部分は旧プログラムファイルの動作が保障される。また、従来のようにファイル修正が全体ではないため、デバイスドライバなどの外部モジュールへの影響が極小となるため、修正適用時にドライバモジュールの再作成、再インストールが必要となる機会が大幅に減少される。【００２２】
以下、静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置およびオブジェクトの結合方法の実施の形態の一例についてより詳しく説明する。【００２３】
図４に全体構成図を示す。
まず、実行形式プログラムである、実行形式モジュールは各オブジェクト及び該オブジェクトを管理する管理テーブル領域で構成される。【００２４】
また、リンカ１は、ファイル結合部２とシンボル情報解決部３を備える。リンカ１は、実行形式モジュール（旧）と修正を含んだ新オブジェクトを入力として、実行形式モジュール（新）を生成する。【００２５】
ファイル結合部２は、既存のオブジェクト群の末尾へ新オブジェクトを追加し（再結合）、オブジェクト管理テーブルにその情報を記録する。
シンボル情報解決部３は、再結合されたすべてのオブジェクトに対して、シンボル情報を具体的なアドレスへ変換し、オブジェクト管理テーブル（図３のｉ））にその情報を記録する。また、実行形式モジュール（新）から実行形式モジュール（旧）に戻す場合に、旧オブジェクトを復元する。【００２６】
実行形式モジュールの管理テーブル領域には、前述のオブジェクト管理テーブル（図３のｉ））とシンボル情報テーブル（図３のｉｉ））とシンボル参照テーブル（図３のｉｉｉ））が格納されている。それぞれのテーブルの構成を図５、６、７に示す。
【００２７】
図５に、ｉ）オブジェクト管理テーブルの構成を示す。
オブジェクト管理テーブルには、オブジェクトの情報（オブジェクト識別子およびアドレス）と、そのオブジェクトが現在有効かどうかの情報が記録される。削除フラグは、新オブジェクトにより置き換えがあったかどうかを示すフラグで、本実施の形態の一例では、このフラグが有効の場合、当該オブジェクトは新しいオブジェクトで置き換えられたことを示すものとする。
【００２８】
図６に、ｉｉ）シンボル情報テーブルの構成を示す。
シンボル情報テーブルには、各オブジェクトに対して、含まれるシンボル情報（シンボル識別子、シンボルのアドレス）が記録される。
【００２９】
図７にｉｉｉ）シンボル参照テーブルの構成を示す。
各オブジェクトに対して、他オブジェクトへのシンボル参照に関する情報（参照先のシンボル識別子、参照元のアドレス）が記録される。
【００３０】
以上、図５〜図７にオブジェクトを管理するためのテーブルの構成を示したが、以下の説明では、場合によって各テーブルの各行をレコードと呼ぶことにする。
図４において、リンカ１は、実行形式モジュール（旧）と修正オブジェクトとしてのオブジェクトA（新）を入力として、実行形式モジュール（新）を生成する。
【００３１】
その際、オブジェクトA（新）を実行形式モジュール（旧）に結合する処理は、ファイル結合部２が行う。
また、修正適用前、実行形式モジュール（旧）内に、オブジェクトA（旧）内にシンボルa1、シンボルa2、およびオブジェクトB内のシンボルb1への参照が存在するが、これらのシンボルの参照関係の解決は、シンボル情報解決部３が行う。【００３２】
また、修正適用後、実行形式モジュール（新）を復元して実行形式モジュール（旧）に戻す場合には、シンボル情報解決部３が管理テーブル領域内の３つのテーブルの情報を修正することによって旧オブジェクトを復元する。【００３３】
以上図４の概略を説明したが、実行形式プログラムに修正を適用する場合の「１．オブジェクトの結合」「２．シンボル情報の解決」、および実行形式プログラムを復元する場合の「３．オブジェクトの復元」について図面をそれぞれ参照して、より詳しく説明する。【００３４】
１．オブジェクトの結合
図８にオブジェクトの結合を説明する図を示す。
実行形式プログラムに修正を適用する場合のオブジェクトの再結合は、リンカ１のファイル結合部２によって行う。この際、旧オブジェクトを含めて既存オブジェクトの順序、位置は変更せずに、新オブジェクトを末尾に追加する形で結合を行う。また、結合後の情報を元にｉ）オブジェクト管理テーブルを更新する。【００３５】
図８において、まず、リンカ１のファイル結合部２は、オブジェクトA（旧）は残したまま、オブジェクトA（新）を既存オブジェクトの末尾に追加するように結合する。その後、ｉ）オブジェクト管理テーブルにおいて、オブジェクトA（旧）の削除フラグを有効にするとともに、オブジェクトA（新）の情報（オブジェクト識別子＝A、アドレス＝1800、削除フラグ＝０（無効を示す））を追加登録する。尚、修正オブジェクトが新規オブジェクトの場合には、ｉ）オブジェクト管理テーブルへの追加のみとなる。【００３６】
オブジェクト結合の際の、ファイル結合部２の処理の流れを図９に示す。
まず、Ｓ９１で、新オブジェクトを既存オブジェクトの末尾に結合する。次に、Ｓ９２で、ｉ）オブジェクト管理テーブルを参照し、追加するオブジェクトと同じものが存在するか否かを判断する。存在しない場合（Ｎｏ）には、Ｓ９４に進む。存在する場合（Ｙｅｓ）には、Ｓ９３に進み、ｉ）オブジェクト管理テーブルの、旧オブジェクトのレコードに対して、削除フラグを有効にする。そして、Ｓ９４で、ｉ）オブジェクト管理テーブルに新オブジェクトの情報を追加する。【００３７】
２．シンボル情報の解決
オブジェクトの結合処理後、リンカ１のシンボル情報解決部３によって、再結合された実行形式モジュールのシンボル情報の解決が行われる。ｉｉ）シンボル情報テーブルと、ｉｉｉ）シンボル参照テーブルの情報を元に、追加された新オブジェクトのシンボル情報を求め、ｉｉ）シンボル情報テーブルとｉｉｉ）シンボル参照テーブルのレコードを追加する。【００３８】
図８でオブジェクト結合処理がなされた後に、シンボル情報を解決する場合について図１０に示す。
オブジェクトA（新）を追加した場合、まず、ｉ）オブジェクト管理テーブルとｉｉ）シンボル情報テーブルのオブジェクトA（旧）に関するレコードを元に、オブジェクトA（新）のシンボル情報（a1/1800, a2/2400）を求め、ｉｉ）シンボル情報テーブルへレコードとして追加する。更にｉｉｉ）シンボル参照テーブルからオブジェクトA（旧）に関するレコードを検索し、これが存在する場合(b1/200)、シンボル参照テーブルへオブジェクトA（新）に対する情報(b1/2200)を新たなレコードとして追加する。これらのテーブル情報を元に、オブジェクトBに含まれるオブジェクトA（新）のシンボル参照情報(a2)の更新を行う。【００３９】
図１１に、シンボル情報の解決の処理の流れを示す。
まず、Ｓ１１１で、シンボル情報解決部３は、ｉ）オブジェクト管理テーブル、ｉｉ）シンボル情報テーブルから新オブジェクトのシンボル情報を求め、ｉｉ）シンボル情報テーブルに追加する。【００４０】
次に、Ｓ１１２で、ｉｉｉ）シンボル参照テーブルに旧オブジェクトに対する情報が存在するか否かを判定する。存在しない場合（Ｎｏ）は、Ｓ１１４に進む。存在する場合（Ｙｅｓ）は、Ｓ１１３に進む。Ｓ１１３で、ｉｉｉ）シンボル参照テーブルに、新オブジェクトへのシンボル参照情報を追加する。そして、Ｓ１１４で、ｉ）オブジェクト管理テーブル、ｉｉ）シンボル情報テーブル、ｉｉｉ）シンボル参照テーブルに基づいて、オブジェクトのシンボル情報を解決する。【００４１】
３．オブジェクトの復元
実行形式モジュールに修正を適用した後、何らかの理由で元の実行形式モジュールに戻す場合がある。その場合には、リンカ１のシンボル情報解決部３によって、ｉ）オブジェクト管理テーブル、ｉｉ）シンボル情報テーブル、ｉｉｉ）シンボル参照テーブルの情報を元に、１世代前のオブジェクトを復元する。【００４２】
図１２は、図１０に示した実行形式モジュール（新）を実行形式モジュール（旧）に戻す場合を示す図である。すなわち、オブジェクトA（旧）を復元する。
この場合、ｉ）オブジェクト管理テーブルに削除フラグが有効なオブジェクトAのレコードが存在する場合、ｉ）オブジェクト管理テーブル、ｉｉ）シンボル情報テーブル、ｉｉｉ）シンボル参照テーブルに対して、最後に追加されたレコードを検索して削除する（オブジェクト管理テーブルのA/1800/0、シンボル情報テーブルのA/a1/1800, A/a2/2400、シンボル参照テーブルのA/b1/2200）。そして、ｉ）オブジェクト管理テーブルのオブジェクトA（旧）の削除フラグを無効にする（１→０に値を変更）。更新されたテーブル情報を元に、各オブジェクトに含まれる他のオブジェクトのシンボル参照情報を再度更新する。【００４３】
図１３に、オブジェクト復元の処理の流れを示す。
まずＳ１３１で、ｉ）オブジェクト管理テーブルに削除フラグが有効な復元対象オブジェクトの情報が１つ以上存在するかを判断する。存在しない場合（Ｎｏ）には、復元はできないため処理を終了する。存在する場合（Ｙｅｓ）には、Ｓ１３２に進む。【００４４】
Ｓ１３２では、各テーブルにおいて、最後に追加された情報を削除する。最後に追加された情報とは、復元対象オブジェクト（旧オブジェクト）を修正するために結合された新オブジェクトに関する情報である。【００４５】
Ｓ１３３で、ｉ）オブジェクト管理テーブルの復元対象オブジェクトのレコードについて、削除フラグを無効にする。
そして、Ｓ１３４で、ｉｉ）シンボル情報テーブル、ｉｉｉ）シンボル参照テーブルの情報を元に、復元対象オブジェクトへの参照情報を更新する。【００４６】
以上、静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置およびオブジェクトの結合方法の実施の形態の一例について詳細に説明した。【００４７】
以上に説明した実施の形態の一例によれば、実行形式プログラムへの修正適用、すなわちオブジェクトA（新）を結合する場合でも、既存オブジェクトについては再配置が不要で、かつシンボル情報の書き換えについては新しく追加したオブジェクトに関係する情報のみとなる。これにより、修正適用時間を従来と比べて格段に短縮することが可能である。また、修正適用後に１世代前のシステムに復元したい場合にも、オブジェクトA（旧）を削除していないので、容易に元のシステムへの復元（ロールバック）が可能である。また、修正に関係しない既存オブジェクトの部分は旧プログラムファイルの動作が保障される。【００４８】
以上、本実施の形態の一例を、図面を参照しながら説明したが、上述した実施の形態を実現する情報処理装置１５０のハードウェア構成を図１４に示す。
情報処理装置１５０は、ＣＰＵ１４１、メモリ１４２、入力装置１４３、出力装置１４５、外部記録装置１４６、媒体駆動装置１４７、可搬記録媒体１４９、ネットワーク接続装置１４８がバス１４４で接続される構成である。【００４９】
メモリ１４２は例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ），ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を含み、各オブジェクトや実行形式ファイルなどのデータ、およびリンカを実現するためのプログラムを格納する。【００５０】
ＣＰＵ１４１は、メモリ１４２を利用してプログラムを実行することにより、実行形式ファイルの修正適用などの処理を実現する。
入力装置１４３は、たとえばキーボード、ポインティングデバイス、タッチパネル等である。出力装置１４５は、たとえばディスプレイやプリンタ等である。【００５１】
外部記憶装置１４６は、たとえば磁気ディスク装置、光ディスク装置、光磁気ディスク装置等である。この外部記憶装置１４６にプログラムとデータを保存しておき、必要に応じて、それらをメモリ１４２上にロードして使用することもできる。【００５２】
媒体駆動装置１４７は、可搬型記録媒体１４９を駆動し、その記録内容にアクセスする。可搬型記録媒体１４９としては、メモリカード、メモリスティック、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ），  光ディスク、光磁気ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等、任意のコンピュータで読み取り可能な記録媒体が用いられる。この可搬型記録媒体１４９にプログラムとデータを格納しておき、必要に応じて、それらをメモリ１４２にロードして使用することもできる。【００５３】
ネットワーク接続装置１４８は、ＬＡＮ，ＷＡＮ等の任意のネットワーク（回線）を介して外部の装置と通信し、通信に伴うデータ変換を行う。また、必要に応じて、プログラムとデータを外部装置から受け取り、それらをメモリ１４２にロードして使用することもできる。【００５４】
情報処理装置１５０上で動作するプログラムは情報処理装置１５０のメモリ１４２等を用いて上述したリンカ（ファイル結合部、シンボル情報解決部）の処理を実行するように構成される。たとえば、上述した、図９、図１１、図１３のフローを実行する。【００５５】
情報処理装置１５０がプログラムを実行することによって実行形式プログラムへの修正の適用が実現される場合に、当該プログラムを情報処理装置へローディングする方法について図１５に示しておく。【００５６】
図１５（ａ）は、情報処理装置１５０のハードディスクなどの外部記憶装置に格納されたプログラムやデータを情報処理装置１５０がローディングする方法を示したものである。【００５７】
図１５（ｂ）は、ＣＤ−ＲＯＭやＤＶＤなどの可搬型の記憶媒体に記録されたプログラムやデータが情報処理装置１５０の媒体駆動装置を介してローディングする方法を示したものである。【００５８】
図１５（ｃ）は、ネットワークなどの回線を介して、情報提供者が提供するプログラムやデータを、情報処理装置１５０の通信装置を介してローディングする方法を示したものである。【００５９】
上述した実施の形態は、上述した実行形式プログラムへ修正を適用する際のリンカの処理を情報処理装置に行わせるためのプログラムとして構成してもよい。また、上述した実施の形態は、上述したリンカの処理を情報処理装置に行わせるためのプログラムを記録したコンピュータ読み出し可能な記録媒体として構成することもできる。また、上述した実施の形態は、搬送波に具現化された上述のリンカのプログラムを表現するコンピュータ・データ・シグナルとして構成することもできる。【００６０】
以上のように、静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置およびオブジェクトの結合方法の実施の形態の一例について詳細に説明したが、本実施の形態はこれに限定されるものではなく、本実施の形態の要旨を逸脱しない範囲内で種々の構成または形状を取ることができることは言うまでもない。
【図１】
0005402930.tif 000002
【図２】
0005402930.tif 000003
【図３】
0005402930.tif 000004
【図４】
0005402930.tif 000005
【図５】
0005402930.tif 000006
【図６】
0005402930.tif 000007
【図７】
0005402930.tif 000008
【図８】
0005402930.tif 000009
【図９】
0005402930.tif 000010
【図１０】
0005402930.tif 000011
【図１１】
0005402930.tif 000012
【図１２】
0005402930.tif 000013
【図１３】
0005402930.tif 000014
【図１４】
0005402930.tif 000015
【図１５】
0005402930.tif 000016