JPS63147232A - 整合性検査方式 - Google Patents
整合性検査方式Info
- Publication number
- JPS63147232A JPS63147232A JP61294419A JP29441986A JPS63147232A JP S63147232 A JPS63147232 A JP S63147232A JP 61294419 A JP61294419 A JP 61294419A JP 29441986 A JP29441986 A JP 29441986A JP S63147232 A JPS63147232 A JP S63147232A
- Authority
- JP
- Japan
- Prior art keywords
- procedure
- attributes
- function value
- stored
- consistency
- 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
- 238000007689 inspection Methods 0.000 title claims 2
- 238000000034 method Methods 0.000 claims abstract description 69
- 230000000694 effects Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 101000772194 Homo sapiens Transthyretin Proteins 0.000 description 3
- 102100029290 Transthyretin Human genes 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はオブジェクトモジュール間にまたがる手続き参
照に用いられる引数、関数値の属性の整合性を検査する
整合性検査方式に関する。
照に用いられる引数、関数値の属性の整合性を検査する
整合性検査方式に関する。
オブジェクトモジエール間にまたがる手続き参照に用い
られる引数の属性の整合性を検査する方式としては、従
来、コンパイラにより参照側のソースプログラムのオブ
ジェクトモジュール中に実引数の属性に関する情報テー
ブル及び該情報テーブルを読込むルーチンを呼出すコー
ドを格納し、参照される側のソースプログラムのオブジ
ェクトモジュール中に仮引数の属性に関する情報テーブ
ル及び該情報テーブルを読込んでその内容と参照側のオ
ブジェクトモジュールから読込んだ情報テーブルの内容
とを比較し、整合性を検査するルーチンを呼出すコード
を格納しておき、プログラムの実行時にオブジェクトモ
ジュールに格納されているコードによって呼出されるル
ーチンにより整合性の検査を行なうものが提案されてい
る(特願昭60年第158515号)。
られる引数の属性の整合性を検査する方式としては、従
来、コンパイラにより参照側のソースプログラムのオブ
ジェクトモジュール中に実引数の属性に関する情報テー
ブル及び該情報テーブルを読込むルーチンを呼出すコー
ドを格納し、参照される側のソースプログラムのオブジ
ェクトモジュール中に仮引数の属性に関する情報テーブ
ル及び該情報テーブルを読込んでその内容と参照側のオ
ブジェクトモジュールから読込んだ情報テーブルの内容
とを比較し、整合性を検査するルーチンを呼出すコード
を格納しておき、プログラムの実行時にオブジェクトモ
ジュールに格納されているコードによって呼出されるル
ーチンにより整合性の検査を行なうものが提案されてい
る(特願昭60年第158515号)。
しかし、上述した従来例には、次のような問題点があっ
た。
た。
■ プログラムの実行時に整合性を検査するものである
から、実行時に通らなかったパスに関しては整合性が検
査されないこととなり、従って不正な手続き呼出しがあ
っても発見できない場合がある。
から、実行時に通らなかったパスに関しては整合性が検
査されないこととなり、従って不正な手続き呼出しがあ
っても発見できない場合がある。
■ オブジェクトモジュール中に整合性を検査するルー
チンを呼出すためのコードが組込まれており、プログラ
ムの実行時に常に整合性を検査するルーチンが起動され
るので、プログラムの実行時間が長くなる問題があると
共に整合性を検査するルーチンがなければオブジェクト
モジュールを実行できない問題がある。
チンを呼出すためのコードが組込まれており、プログラ
ムの実行時に常に整合性を検査するルーチンが起動され
るので、プログラムの実行時間が長くなる問題があると
共に整合性を検査するルーチンがなければオブジェクト
モジュールを実行できない問題がある。
本発明は前述の如き問題点を解決したものであり、その
目的は不正な手続き呼出しを確実に検出できるようにす
ると共にプログラムの実行時間を増加させることなく、
整合性を検査できるようにすることにある。
目的は不正な手続き呼出しを確実に検出できるようにす
ると共にプログラムの実行時間を増加させることなく、
整合性を検査できるようにすることにある。
本発明は前述の如き問題点を解決するため、オブジ″〜
エクトモジュール間にまたがる手続き参照に於ける整合
性検査方式に於いて、実引数の属性或いは返される関数
値の属性の内の少なくとも何れか一方を、参照する手続
きを含む手続き参照側のオブジェクトモジュールに格納
すると共に、仮引数の属性或いは返す関数値の属性の内
の少なくとも何れか一方を、参照される手続きの定義を
含む手続き定義側のオブジェクトモジュールに格納する
格納手段をコンパイラに設け、 前記格納手段により前記手続き参照側のオブジェクトモ
ジュール及び手続き定義側のオブジェクトモジュールに
格納された属性によって引数或いは関数値の属性を検査
する検査手段をリンカに設けたものである。
エクトモジュール間にまたがる手続き参照に於ける整合
性検査方式に於いて、実引数の属性或いは返される関数
値の属性の内の少なくとも何れか一方を、参照する手続
きを含む手続き参照側のオブジェクトモジュールに格納
すると共に、仮引数の属性或いは返す関数値の属性の内
の少なくとも何れか一方を、参照される手続きの定義を
含む手続き定義側のオブジェクトモジュールに格納する
格納手段をコンパイラに設け、 前記格納手段により前記手続き参照側のオブジェクトモ
ジュール及び手続き定義側のオブジェクトモジュールに
格納された属性によって引数或いは関数値の属性を検査
する検査手段をリンカに設けたものである。
引数、関数値の属性はコンパイラに設けられた格納手段
により手続き参照側及び手続き定義側のオブジェクトモ
ジュールに格納され、引数、関数値の属性の整合性の検
査は手続き参照側及び手続き定義側のオブジェクトモジ
ュールに格納された属性に基づいてリンカに設けられた
検査手段によって行なわれる。即ち、コンパイル時に引
数、関数値の属性がオブジェクトモジュールに格納され
、リンク時にオブジェクトモジュールに格納された属性
に基づいて整合性の検査が行なわれることになるので、
全ての手続き参照に関して整合性を検査することが可能
となり、また、整合性の検査によるプログラム実行時間
の増加を防止することが可能となる。
により手続き参照側及び手続き定義側のオブジェクトモ
ジュールに格納され、引数、関数値の属性の整合性の検
査は手続き参照側及び手続き定義側のオブジェクトモジ
ュールに格納された属性に基づいてリンカに設けられた
検査手段によって行なわれる。即ち、コンパイル時に引
数、関数値の属性がオブジェクトモジュールに格納され
、リンク時にオブジェクトモジュールに格納された属性
に基づいて整合性の検査が行なわれることになるので、
全ての手続き参照に関して整合性を検査することが可能
となり、また、整合性の検査によるプログラム実行時間
の増加を防止することが可能となる。
次に本発明の実施例について図面を参照して説明する。
第1図は本発明の実施例の構成図であり、手続き参照側
のソースプログラム1と、手続き定義側のソースプログ
ラム2と、コンパイラ3と、ソースプログラム1.2対
応のオブジェクトモジュール4,5と、リンカ6とを含
んでいる。
のソースプログラム1と、手続き定義側のソースプログ
ラム2と、コンパイラ3と、ソースプログラム1.2対
応のオブジェクトモジュール4,5と、リンカ6とを含
んでいる。
また、第2回はコンパイラ3の処理内容を示すフローチ
ャート、第3図はリンカ6の処理内容を示すフローチャ
ートであり、以下第2図、第3図を参照して第1図の動
作を説明する。
ャート、第3図はリンカ6の処理内容を示すフローチャ
ートであり、以下第2図、第3図を参照して第1図の動
作を説明する。
コンパイラ3は手続き参照側のソースプログラム1のコ
ンパイル処理時、手続き参照文(CALL A等)を読
込むと(第2図のステップAI) 、第4図に示す参照
手続き属性テーブルを作成し、これをソースプログラム
1のオブジェクトモジュール4中に格納する(ステップ
A2)。また、コンパイラ3は手続き定義側のソースプ
ログラム2のコンパイル処理時、手続き定義文(SUB
ROUTINE A等)を読込むと(第2図のステップ
B1)、第5図に示す定義手続き属性テーブルを作成し
、これをソースプログラム2のオブジェクトモジュール
5中に格納する(ステップB2)。
ンパイル処理時、手続き参照文(CALL A等)を読
込むと(第2図のステップAI) 、第4図に示す参照
手続き属性テーブルを作成し、これをソースプログラム
1のオブジェクトモジュール4中に格納する(ステップ
A2)。また、コンパイラ3は手続き定義側のソースプ
ログラム2のコンパイル処理時、手続き定義文(SUB
ROUTINE A等)を読込むと(第2図のステップ
B1)、第5図に示す定義手続き属性テーブルを作成し
、これをソースプログラム2のオブジェクトモジュール
5中に格納する(ステップB2)。
尚、第4図に於いて、ARG FLAGは引数の個数。
属性の整合性の検査を行なう場合にオンとされ、検査を
行なわない場合オフにされるフラグ、ARGCOUNT
は実引数の個数を示す情報、ARG ATTRI〜AR
G ATTRn(nは実引数の個数に等しい)は各実引
数それぞれの属性を示す情報、RET FLAGは手続
きが関数の場合であって且つ返される関数値の整合性を
検査する場合オンとされ、手続きが関数でないか或いは
検査を行なわない場合オフにされるフラグ、R1!T
ATTRは返される関数値の属性を示す情報である。ま
た、第5図において、PARAM FLAGは引数の個
数、属性の整合性の検査を行なう場合オンにされ、検査
を行なわない場合オフにされるフラグ、PARAM C
0UNTは仮引数の個数を示す情報、PARAM AT
TRI 〜PARAM ATTRn(nは仮引数の個数
に等しい)は各仮引数それぞれの属性を示す情報、VA
LUE FLAGは手続きが関数の場合であって且つ返
さ杵る関数値の整合性を検査する場合オンにされ、手続
きが関数でないか或いは検査を行なわない場合オフにさ
れるフラグ、VALUE ATTRは返す関数値の属性
を示す情報である。
行なわない場合オフにされるフラグ、ARGCOUNT
は実引数の個数を示す情報、ARG ATTRI〜AR
G ATTRn(nは実引数の個数に等しい)は各実引
数それぞれの属性を示す情報、RET FLAGは手続
きが関数の場合であって且つ返される関数値の整合性を
検査する場合オンとされ、手続きが関数でないか或いは
検査を行なわない場合オフにされるフラグ、R1!T
ATTRは返される関数値の属性を示す情報である。ま
た、第5図において、PARAM FLAGは引数の個
数、属性の整合性の検査を行なう場合オンにされ、検査
を行なわない場合オフにされるフラグ、PARAM C
0UNTは仮引数の個数を示す情報、PARAM AT
TRI 〜PARAM ATTRn(nは仮引数の個数
に等しい)は各仮引数それぞれの属性を示す情報、VA
LUE FLAGは手続きが関数の場合であって且つ返
さ杵る関数値の整合性を検査する場合オンにされ、手続
きが関数でないか或いは検査を行なわない場合オフにさ
れるフラグ、VALUE ATTRは返す関数値の属性
を示す情報である。
リンカ6はコンパイラ3によりコンパイルされたオブジ
ェクトモジエール4.5から1つのロードモジュールを
作成する際、参照側のオブジェクトモジュール4に格納
されている参照手続き属性テーブルを読込むと(第3図
のステップCI)、参照された手続きの定義を含む定義
側のオブジェクトモジュール5を検索し、オブジェクト
モジュール5に格納されている定義手続き属性テーブル
を読込む(ステップC2)0次いで、リンカ6は参照側
の手続き属性と定義側の手続き属性の整合性を引数及び
手続きが関数の場合に返される関数値の属性に関して、
それぞれ矛盾があるか否かを以下の手順で検査する。
ェクトモジエール4.5から1つのロードモジュールを
作成する際、参照側のオブジェクトモジュール4に格納
されている参照手続き属性テーブルを読込むと(第3図
のステップCI)、参照された手続きの定義を含む定義
側のオブジェクトモジュール5を検索し、オブジェクト
モジュール5に格納されている定義手続き属性テーブル
を読込む(ステップC2)0次いで、リンカ6は参照側
の手続き属性と定義側の手続き属性の整合性を引数及び
手続きが関数の場合に返される関数値の属性に関して、
それぞれ矛盾があるか否かを以下の手順で検査する。
リンカ6はステップCI、C2で読込んだ参照手続き属
性テーブル、定義手続き属性テーブルの引数の個数、属
性の整合性の検査を行なうか否かを示すフラグARG
FLAG、PARAM FLAGが共にオンであるか否
かを判断しくステップC3)、その判断結果がNOの場
合はステップC8に移行し、反対に判断結果がYESの
場合は、即ちフラグARG FLAG。
性テーブル、定義手続き属性テーブルの引数の個数、属
性の整合性の検査を行なうか否かを示すフラグARG
FLAG、PARAM FLAGが共にオンであるか否
かを判断しくステップC3)、その判断結果がNOの場
合はステップC8に移行し、反対に判断結果がYESの
場合は、即ちフラグARG FLAG。
PARAM FLAGが共に引数の個数、属性の整合性
の検査を行なうことを示している場合は、実引数の個数
と仮引数の個数とが一致しているか否かを参照手続き属
性テーブル、定義手続き属性テーブルの情報ARG C
0UNT 、 PARAM C0UNTに基づいて判断
する(ステップC4)。そして、ステップC4で実引数
と仮引数との個数が異なると判断した場合は、その旨を
エラーメツセージとして出力しくステップC5)、−敗
していると判断した場合は、参照手続き属性テーブル、
定義手続き属性テーブルの情報ARG ATTRi、
PARAM^TTRi(iは1からnまでの整数)に基
づいて対応する実引数と仮引数との属性が全て一致して
いるか否かを判断する(ステップC6)、そして、ステ
ップC6で何れかの属性が異なっていると判断した場合
は、その旨をエラーメツセージとして出力しくステップ
C7)、全て一致していると判断した場合はステップC
8の処理を行なう。
の検査を行なうことを示している場合は、実引数の個数
と仮引数の個数とが一致しているか否かを参照手続き属
性テーブル、定義手続き属性テーブルの情報ARG C
0UNT 、 PARAM C0UNTに基づいて判断
する(ステップC4)。そして、ステップC4で実引数
と仮引数との個数が異なると判断した場合は、その旨を
エラーメツセージとして出力しくステップC5)、−敗
していると判断した場合は、参照手続き属性テーブル、
定義手続き属性テーブルの情報ARG ATTRi、
PARAM^TTRi(iは1からnまでの整数)に基
づいて対応する実引数と仮引数との属性が全て一致して
いるか否かを判断する(ステップC6)、そして、ステ
ップC6で何れかの属性が異なっていると判断した場合
は、その旨をエラーメツセージとして出力しくステップ
C7)、全て一致していると判断した場合はステップC
8の処理を行なう。
ステップC8ではフラグRET FLAG、VALtl
E FLAGが共にオンであるか否かを判断する処理が
行なわれ、その判断結果がNoの場合は整合性検査処理
を終了し、判断結果がYESの場合、即ちフラグRET
FLAG、VALUE FLAGが共に関数値属性の整
合性を検査することを示している場合は参照手続き属性
テーブル、定義手続き属性テーブルの情I[IRET
ATTR。
E FLAGが共にオンであるか否かを判断する処理が
行なわれ、その判断結果がNoの場合は整合性検査処理
を終了し、判断結果がYESの場合、即ちフラグRET
FLAG、VALUE FLAGが共に関数値属性の整
合性を検査することを示している場合は参照手続き属性
テーブル、定義手続き属性テーブルの情I[IRET
ATTR。
VALUE ATTRに基づいて関数値属性の整合性の
検査を行なう (ステップC9)、そして、ステンブC
9で関数値属性が手続き参照側と手続き定義側とで異な
ると判断した場合は、その旨をエラーメソセージとして
出力する(ステップCl0) 。
検査を行なう (ステップC9)、そして、ステンブC
9で関数値属性が手続き参照側と手続き定義側とで異な
ると判断した場合は、その旨をエラーメソセージとして
出力する(ステップCl0) 。
尚、上述した実施例に於いては引数及び関数値の双方に
ついて属性を検査するようにしたが、何れか一方のみを
検査するようにしても良いことは勿論である。
ついて属性を検査するようにしたが、何れか一方のみを
検査するようにしても良いことは勿論である。
以上説明したように、本発明は、コンパイラに設けられ
た格納手段がオブジェクトモジュール中に格納した引数
、関数値の属性の整合性をリンカに設けられた検査手段
が検査するものであり、リンク時に引数、関数値の属性
の整合性が検査されるものであるから、引数、関数値の
属性の矛盾を検査可能な全ての手続き参照に関して検査
することができ、従って、プログラムの実行結果の不正
を未然に防ぐことができる効果がある。また、すンク時
に整合性の検査を行なうものであるから、プログラムの
実行時に整合性の検査を行なっていた従来例のように、
プログラムの実行時間が整合性の検査によって長くなる
ことがなくなり、また、整合性を検査するルーチンがな
くともプログラムを実行できる効果もある。
た格納手段がオブジェクトモジュール中に格納した引数
、関数値の属性の整合性をリンカに設けられた検査手段
が検査するものであり、リンク時に引数、関数値の属性
の整合性が検査されるものであるから、引数、関数値の
属性の矛盾を検査可能な全ての手続き参照に関して検査
することができ、従って、プログラムの実行結果の不正
を未然に防ぐことができる効果がある。また、すンク時
に整合性の検査を行なうものであるから、プログラムの
実行時に整合性の検査を行なっていた従来例のように、
プログラムの実行時間が整合性の検査によって長くなる
ことがなくなり、また、整合性を検査するルーチンがな
くともプログラムを実行できる効果もある。
第1図は本発明の実施例の構成図、
第2図はコンパイラ3の処理内容の一部を示すフローチ
ャート、 第3図はリンカ6の処理内容の一部を示すフローチャー
ト、 第4図は手続き参照側のオブジェクトモジエール4に格
納される参照手続き属性テーブルの構成例を示す図及び
、 第5図は手続き定義側のオブジェクトモジュール5に格
納される定義手続き属性テーブルの構成例を示す図であ
る。 図において、1.2・・・ソースプログラム、3・・・
コンパイラ、4,5・・・オブジェクトモジエール、6
・・・リンカ。
ャート、 第3図はリンカ6の処理内容の一部を示すフローチャー
ト、 第4図は手続き参照側のオブジェクトモジエール4に格
納される参照手続き属性テーブルの構成例を示す図及び
、 第5図は手続き定義側のオブジェクトモジュール5に格
納される定義手続き属性テーブルの構成例を示す図であ
る。 図において、1.2・・・ソースプログラム、3・・・
コンパイラ、4,5・・・オブジェクトモジエール、6
・・・リンカ。
Claims (1)
- 【特許請求の範囲】 オブジェクトモジュール間にまたがる手続き参照に於け
る整合性検査方式に於いて、実引数の属性或いは返され
る関数値の属性の内の少なくとも何れか一方を、参照す
る手続きを含む手続き参照側のオブジェクトモジュール
に格納すると共に、仮引数の属性或いは返す関数値の属
性の内の少なくとも何れか一方を、参照される手続きの
定義を含む手続き定義側のオブジェクトモジュールに格
納する格納手段をコンパイラに設け、 前記格納手段により前記手続き参照側のオブジェクトモ
ジュール及び手続き定義側のオブジェクトモジュールに
格納された属性によって引数或いは関数値の属性を検査
する検査手段をリンカに設けたことを特徴とする整合性
検査方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61294419A JPS63147232A (ja) | 1986-12-10 | 1986-12-10 | 整合性検査方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP61294419A JPS63147232A (ja) | 1986-12-10 | 1986-12-10 | 整合性検査方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPS63147232A true JPS63147232A (ja) | 1988-06-20 |
Family
ID=17807511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61294419A Pending JPS63147232A (ja) | 1986-12-10 | 1986-12-10 | 整合性検査方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS63147232A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02240729A (ja) * | 1989-03-14 | 1990-09-25 | Nec Corp | プログラム間連絡機能のパラメータ受け渡しにおける静的チェック方式 |
JPH03271935A (ja) * | 1990-03-20 | 1991-12-03 | Nec Corp | プログラム構成定義方式 |
JPH08249164A (ja) * | 1995-03-15 | 1996-09-27 | Nec Corp | 入力チェック方式 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60179847A (ja) * | 1984-02-27 | 1985-09-13 | Fujitsu Ltd | 実配列および仮配列間の整合性チエツク方式 |
-
1986
- 1986-12-10 JP JP61294419A patent/JPS63147232A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60179847A (ja) * | 1984-02-27 | 1985-09-13 | Fujitsu Ltd | 実配列および仮配列間の整合性チエツク方式 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02240729A (ja) * | 1989-03-14 | 1990-09-25 | Nec Corp | プログラム間連絡機能のパラメータ受け渡しにおける静的チェック方式 |
JPH03271935A (ja) * | 1990-03-20 | 1991-12-03 | Nec Corp | プログラム構成定義方式 |
JPH08249164A (ja) * | 1995-03-15 | 1996-09-27 | Nec Corp | 入力チェック方式 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669623B2 (en) | Method for detecting vulnerabilities in software | |
US7124060B1 (en) | Method for isolating a fault from error messages | |
US7284237B2 (en) | Testing flow control at test assertion level | |
US20050223361A1 (en) | Software testing based on changes in execution paths | |
US20020129306A1 (en) | Method and apparatus for verifying data local to a single thread | |
Leung et al. | Insights into testing and regression testing global variables | |
EP3495978B1 (en) | Method for detecting vulnerabilities in software | |
Dias et al. | Precise detection of atomicity violations | |
JPH03188535A (ja) | プログラム・エラー検出方法 | |
US20050114837A1 (en) | Language integrated unit testing | |
JPS63147232A (ja) | 整合性検査方式 | |
Charlton et al. | Formal reasoning about runtime code update | |
Yi et al. | SideTrack: generalizing dynamic atomicity analysis | |
JPH0736734A (ja) | アーギュメント値のチェック方法 | |
Saleh et al. | Anomaly detection in concurrent Java programs using dynamic data flow analysis | |
KR100331470B1 (ko) | 교환기 데이터베이스 무결성 보장 장치 및 방법 | |
Hundsdorfer et al. | DIRTS: Dependency Injection Aware Regression Test Selection | |
US20220027261A1 (en) | Method and device for operating fuzz testing of a program code | |
JPH01177165A (ja) | 配列の定義/引用関係検査方式 | |
JPH01205348A (ja) | プログラムデバッグ方式 | |
Widera | Data flow coverage for testing Erlang programs | |
JPH02115951A (ja) | 高級言語プログラム保守デバッグ方式 | |
JPS63317839A (ja) | プログラムデバッグ方法 | |
JPS6393044A (ja) | プログラム翻訳,編集結合方式 | |
JPH03263129A (ja) | コンパイラ・デバッガ方法 |