JPH03100730A - 高級言語による緊急修正データ作成処理方法 - Google Patents

高級言語による緊急修正データ作成処理方法

Info

Publication number
JPH03100730A
JPH03100730A JP23822189A JP23822189A JPH03100730A JP H03100730 A JPH03100730 A JP H03100730A JP 23822189 A JP23822189 A JP 23822189A JP 23822189 A JP23822189 A JP 23822189A JP H03100730 A JPH03100730 A JP H03100730A
Authority
JP
Japan
Prior art keywords
load module
old
modification
new
language
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP23822189A
Other languages
English (en)
Inventor
Kenji Nakazato
仲里 賢治
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP23822189A priority Critical patent/JPH03100730A/ja
Publication of JPH03100730A publication Critical patent/JPH03100730A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概要〕 ソフトウェア障害の原因となるプログラムミスなどを、
ロードモジュールレベルで修正するための緊急修正デー
タを1機械語などの知識がない場合でも簡単に作成でき
るようにした高級言語によるv!急急止正データ作成処
理方法関し。
高級言語プログラムのロードモジュールレベルでの修正
を、高級言語で行うことができるようにすることを目的
とし。
修正すべき高級言語ソースプログラムの行番号と修正種
別とを含む修正履歴情報と、修正対象となる旧ロードモ
ジュールと、高級言語で記述した修正後のプログラムか
ら生成した新ロードモジュールとを用い、修正履歴情報
から得た行番号をもとに、旧ロードモジュールの対応す
るアドレスと。
新ロードモジュールの対応するアドレスとを対比し、修
正種別に従った機械語レベルの緊急修正データを生゛成
するように構成する。
〔産業上の利用分野〕
本発明は、ソフトウェア障害の原因となるプログラムミ
スなどを、ロードモジュールレベルで修正するための緊
2.修正データを1機械語などの知識がない場合でも闇
単に作成できるようにした高級言語による緊急修正デー
タ作成処理方法に関する。
〔従来の技術〕
ユーザに提供したソフトウェア製品などに、プログラム
ミスなどがあり、それを修正する場合には1通常、記憶
媒体などの関係から、ロードモジュールそのもの全体を
置き換えるのではなく9機械語を含む2進(16進)デ
ータで記述された緊急修正データを作成し、その緊急修
正データを。
ユーザ先のロードモジニールに適用することにより、修
正を施す、すなわち1間違い箇所を含む命令などを、い
わゆるパッチによって、正しい命令およびデータに6部
分的に書き換えることを行う。
従来、ソフトウェア製品を、C言語その他の高級言語で
開発した場合でも、ロードモジュールでは1機械語レベ
ルになっているので、緊急修正データを作成するときに
は1機械語レベル(ロードモジュールレベル)で作成す
る必要があった。
例えば、C言語のソースプログラムは、コンパイル時に
は、−旦アセンブラ言語に展開され、その後 @If!
i梧に翻訳されるが、プログラムをロードモジュールレ
ベルで修正しようとする場合、アセンブルリストなどを
もとに、修正場所のアドレスを求め、それから2機械語
の2進データによる修正データを作成しなければならな
かった。
(発明が解決しようとする課題〕 従来方法では、ソースプログラムが高級言語で記述され
ていても5機械語レベルで修正するしか方法がなかった
ので、開発者は、高級言語だけでなく、アセンブラ言語
や機械語まで精通していなければならず、また1機械語
を熟知していても。
修正誤りが生じやすいので、新たなソフトウェア障害が
発生したりすることがあるという問題があった。
本発明は上記問題点の解決を図り、高級言語プログラム
のロードモジュールレベルでの修正を。
高級言語で行うことができるようにし、簡単に誤りなく
緊急修正データを作成することができるようにすること
を目的としている。
(課題を解決するための手段〕 第1図は本発明の原理説明図である。
第1図において、10はソースプログラム修正処理、1
1は高級言語による新ソースプログラム。
12は新ソースプログラム11を機械語に翻訳するコン
パイル処理、13は修正前の旧ロードモジュール、14
はソースレベルで修正が施された新ロードモジュール、
15は修正箇所の行番号と修正種別に関する情報を持つ
修正履歴情報、16は緊急修正データ作成処理、17は
ロードモジュールの修正箇所を部分的に書き換えるため
のアドレス情報と機械語の修正内容などからなる緊急修
正データ、18はw!急急止正データ1フ適用する修正
情報反映処理、19は修正対象となるユーザ所有ロード
モジュールを表す。
旧ロードモジュール13は、ユーザ所有ロードモジュー
ル19と同じ内容である。これにエラーがあった場合、
エディタなどによるソースプログラム修正処理10によ
り、まずソース修正を行って、新ソースプログラム11
を作成し、これをコンパイル処理12によって、翻訳す
ることにより。
新ロードモジュール14を作成する。
また、ソースプログラム修正処理1oの出力または手入
力により作成した修正履歴情報15を用意しておく。
この用意ができたならば、旧ロードモジエール13、新
ロードモジュール14および修正履歴情報15を指定し
て、緊急修正データ作成処理16を起動する。
緊急修正データ作成処理16は、修正履歴情報15を参
照することにより、各修正履歴情報15の変更/削除/
挿入といった修正種別を判定する。
そして、修正種別に応じて、各行番号に対応する旧ロー
ドモジュール13および新ロードモジュール14のアド
レスを対比し、修正箇所を求め、新ロードモジュール1
4の内容と、旧ロードモジュール13の内容との相違部
分を抽出することにより、緊急修正データ17を作成す
る。
緊急修正データ17は、書き換えるべき場所を示すロー
ドモジュール内相対アドレスと、修正内容とからなるデ
ータである。緊急修正データ17が作成できたならば、
それを、修正情報反映処理18により、ユーザ所有ロー
ドモジュール19に対して適用する。
上記ソースプログラム修正処理10.コンパイル処理1
2.修正情報反映処理1日についての処理は、従来と同
様であり、既存のツールを用いることができる。
〔作用〕
従来技術では、旧ロードモジエール13のソースプログ
ラムまたは新ソースプログラム11を。
コンパイル(アセンブルなども含む)したときのリスト
をもとに1人間が修正箇所のアドレスおよび修正内容を
調べて、緊急修正データ17を作成しなければならなか
った。
本発明では、緊急修正データ作成処理16により、新ソ
ースプログラム11から生成した新ロードモジュール1
4と旧ロードモジュール13とを修正履歴情報15をも
とに比較し、緊急修正データ17を自動生成するので、
アセンブラ言語や機械語を習得しなくても、緊急修正デ
ータ17を作成する作業を行うことができる。
〔実施例〕
第2図は本発明に関連するロードモジュールの形式を説
明するための図、第3図は本発明の一実施例に係る処理
概要図、第4図は本発明の一実施例に係る変更処理の例
、第5図は本発明の一実施例に係る削除処理の例、第6
図は本発明の一実施例に係る挿入処理の例、第7図は本
発明を適用した具体例の説明図を示す。
旧ロードモジュール13および新ロードモジュール14
の形式は1例えば第2図に示す(イ)。
(ロ)のようになっている。旧ロードモジュール13も
新ロードモジュール14も同様であるので。
旧ロードモジュール13について説明する。
あらかじめ旧ロードモジュール13内または他の領域内
のアドレスが既知の場所に、空き領域であるパンチ域1
3−1を確保しておく、このパッチ域13−1は、修正
データの機械語が1元の機械語部分から溢れるときに、
その機械語等の設定に使用される。
また、コンパイル時のオプションなどにより。
行番号テーブル13−2を作成しておく、この行番号テ
ーブル13−2は、ソースプログラムの各行番号と、そ
の行番号のソースから生成された部分のロードモジュー
ル内アドレス(addr 1 、・・・addr n・
・・)との対応情報を持つ。
なお これらの形式については、従来から周知であるの
で、ここでの説明はこの程度にとどめる。
第1図に示す緊2、修正データ作成処理16では。
第3図に示す処理を行う。
指定された修正履歴情報15をルコードずつ取り出す、
その修正履歴情報15の修正種別を判定し、変更であれ
ば「変更処理」、−削除であれば「削除処理」、挿入で
あれば「挿入処理Jを実行する。これらの処理を、修正
履歴情報15のレコードがなくなるまで繰り返す。
これらの処理で、修正履歴情報15の行番号情報は、第
2図に示す行番号テーブル13−2または14−2によ
り、ロードモジュールのアドレスに変換する。各修正種
別による処理の概要は、以下のとおりである。
(i)変更処理 修正箇所の元のデータ長と新しいデータ長とを比較する
0元のデータ長が新データ長より大きい場合1元データ
を新データに置き換え、残り部分をN0P(ノーオペレ
ーション)命令にする緊急修正データを作成する。
新データ長のほうが1元のデータ長より大きい場合1元
データをパンチ域へのジャンプ命令に置き換え、新デー
タをパッチ域へ配置する緊象、修正データを作成する。
(ii )削除処理 元データをNOPにする緊急修正データを作成する。
(in)挿入処理 挿入直後のデータをパッチ域へのジャンプ命令に置き換
え、挿入データと挿入直後のデータをパッチ域に配置す
る9M急急止正データ作成する。
第4図ないし第6図は9以上の各処理の詳細を示したも
のである。以下の説明では9行番号nに対応する旧ロー
ドモジュールのアドレスを旧addrnとし9行番号n
に対応する新ロードモジュールのアドレスを新addr
 nとして説明する。
第3図(i)に示す変更処理は、第4図に示す(a)〜
(C)のように行われる。
(a)(旧addr n+1 − 旧addrn)と(
新addr n+1 − 新addr n )との大小
を比較する。前者が後者よりも大きいか等しい場合、処
理(ロ)を実行し、そうでない場合、処理(C)を実行
する。
(b)(1)新addr nから新addr n+1ま
でのデータを。
旧addr nから旧addr n+1までのデータと
置き換える。
(2)次に、旧addr nから旧addr n+1ま
での残りをNOPにする。
(C) (1)旧addr nから旧addr n+1
までのデータを。
パッチ域へのジャンプ命令に置き換える。
(2)新addr nから新addr n+1までのデ
ータを。
パッチ域へ格納する。
(3)旧addr n+1へのジャンプ命令を、パッチ
域へ格納する。
第3図(ii )に示す削除処理は、第5図に示すよう
に行われる。
旧addr nから旧addr n+1までのデータを
NOPにする。
第3図(i)に示す挿入処理は、第6図に示すように行
われる。
(1)  旧addr nから旧addr n+1まで
のデータを、パッチ域へのジャンプ命令に置き換える。
(2)新addr nから新addr n+1までのデ
ータを、パッチ域へ格納する。
(3)旧addr nから旧addr n+1までのデ
ータを、パッチ域へ格納する。
(4)旧addr n+1へのジャンプ命令を、パッチ
域へ格納する。
次に、C言語で記述されたソースプログラムから生成さ
れたロードモジュールを修正する例を。
第7図に示す具体例に従って説明する。
第7図に示す旧ソースプログラム30のようにプログラ
ムが記述されていたとする。これをコンパイルすること
により、旧ロードモジエール13が得られる。ここでは
、パッチ域が、旧ロードモジュール13の100バイト
目から始まるように確保されている。
ここで、旧ソースプログラム30の1行目を変更し、2
行目に新しい命令を挿入する修正が必要になったとする
。開発者は、新ソースプログラム11のように、ソース
プログラム上でその修正を行う、これをコンパイルする
ことにより、新ロードモジュール14が得られる。
また、1行目を変更し、2行目に挿入を行ったことを示
す修正履歴情報15を用意する。
これらから、緊急修正データ作成処理16により、緊急
修正データ17を自動的に作成する0wi急修正デーデ
ー7におけるデータは、実際には。
16進数などによる機械語で表されるが、ここでは、説
明を簡単にするため9元のソースの記述で表している。
パッチ域へのジャンプ命令は1例えば、関数呼び出しの
形式をとる0本例では、Aという関数を呼び出す形式で
表している。
この緊急修正データ17を適用することにより。
修正後のロードモジュール31が得られる。
この修正されたプログラムの処理は1次のようになって
いる。
■ lに0を代入する。
■ Aの間数呼び出しにより、パッチ域ヘジャンプする
■ iに1を加算する。
■ jにOを代入する。
■ 第3行目(20バイト目)に制御を戻す。
■ kにjの値を代入する。
C言語を例に説明したが、他の高級言語で記述されたプ
ログラムにも、同様に本発明を適用することが可能であ
る。
〔発明の効果] 以上説明したように2本発明によれば、高級言語プログ
ラムのロードモジュールレベルでの修正が、高級言語で
できるので、プログラム修正時の手間が大幅に改善され
る。また、修正ミスなどが少なくなるので、信幀性が向
上する。
【図面の簡単な説明】
第1図は本発明の原理説明図。 第2図は本発明に関連するロードモジュールの形式を説
明するための図。 第3図は本発明の一実施例に係る処理概要図。 第4図は本発明の一実施例に係る変更処理の例。 第5図は本発明の一実施例に係る削除処理の例。 第6図は本発明の一実施例に係る挿入処理の例。 第7図は本発明を適用した具体例の説明図を示す。 図中、10はソースプログラム修正処理、11は新ソー
スプログラム、12はコンパイル処理。 13は旧ロードモジュール、14は新ロードモジュール
、15は修正履歴情報、16は緊急修正データ作成処理
、17は緊急修正データ、1Bは修正情報反映処理、1
9はユーザ所有ロードモジュールを表す。

Claims (1)

  1. 【特許請求の範囲】 高級言語で記述されたプログラムを、ロードモジュール
    レベルで修正する計算機システムにおける緊急修正デー
    タ作成処理方法において。 修正すべき高級言語ソースプログラムの行番号と修正種
    別とを含む修正履歴情報(15)と、修正対象となる旧
    ロードモジュール(13)と、高級言語で記述した修正
    後のプログラムから生成した新ロードモジュール(14
    )とを用い、修正履歴情報から得た行番号をもとに、旧
    ロードモジュールの対応するアドレスと、新ロードモジ
    ュールの対応するアドレスとを対比し、修正種別に従っ
    た機械語レベルの緊急修正データを生成する(16)こ
    とを特徴とする高級言語による緊急修正データ作成処理
    方法。
JP23822189A 1989-09-13 1989-09-13 高級言語による緊急修正データ作成処理方法 Pending JPH03100730A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23822189A JPH03100730A (ja) 1989-09-13 1989-09-13 高級言語による緊急修正データ作成処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23822189A JPH03100730A (ja) 1989-09-13 1989-09-13 高級言語による緊急修正データ作成処理方法

Publications (1)

Publication Number Publication Date
JPH03100730A true JPH03100730A (ja) 1991-04-25

Family

ID=17026950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23822189A Pending JPH03100730A (ja) 1989-09-13 1989-09-13 高級言語による緊急修正データ作成処理方法

Country Status (1)

Country Link
JP (1) JPH03100730A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011028321A (ja) * 2009-07-21 2011-02-10 Mitsubishi Electric Corp 差分情報生成装置、差分情報生成方法および差分情報生成プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011028321A (ja) * 2009-07-21 2011-02-10 Mitsubishi Electric Corp 差分情報生成装置、差分情報生成方法および差分情報生成プログラム

Similar Documents

Publication Publication Date Title
US5701487A (en) Method and apparatus for displaying locations of errors detected inside software macro calls
US5815714A (en) Embedded debug commands in a source file
US20040098402A1 (en) System and method for common code generation
JPH02201652A (ja) プログラム・ソース・コードを変換するシステム
JPH01306923A (ja) 異種言語間連絡方式
US5826088A (en) System for protecting computer software written in interpreted language
US6314564B1 (en) Method for resolving arbitrarily complex expressions at link-time
JPH04245545A (ja) マルチ・ユーザ仮想計算機システム構成方法およびマルチ・ユーザ仮想計算機システム
JPH03100730A (ja) 高級言語による緊急修正データ作成処理方法
JPH05173844A (ja) コーディングミス修正方式
JPS5856148A (ja) プログラム修正処理方式
JP3596570B2 (ja) クラスの主記憶装置への配置方法
EP0194822A2 (en) Methods of and apparatus for compiling high-level language statements into low-level language instruction sets
JPH03156641A (ja) コンパイル処理方式
Rottmann MIKADO-a system for computer aided microprogram design
JPH0385639A (ja) プログラム言語翻訳機
JPS6326730A (ja) プログラム修正方式
JPH0695868A (ja) ソフトウェア管理方式
Philippot The Simula approach to living software
JPH03186933A (ja) 言語処理システムのシンボル処理方式
JPH0792754B2 (ja) アセンブル装置
Cowling et al. MICROSIM as a teaching aid
JPH04248624A (ja) プログラム変換処理装置
JPH04270422A (ja) プリコンパイル処理方式
JPH0944347A (ja) エラー知識ベース作成装置