登録番号 sdbin3-0071
登録日 1996/10/15
報告者 吉田 敦
症状 identifierへの関連を持たないdeclaratorが存在する.
以下のプログラムを解析してみるとdeclarator“x = 3”からidentifier“x”への関連が存在しない.
extern宣言のdeclarator“x” からidentifier“x”への関連は存在する.
extern int x;
struct foo { int x; };
int x = 3;
コメント Sapid-2.499の時点で解決済み.
状態 解決済み
登録番号 sdbin3-0072
登録日 1996/10/28
報告者 福安 直樹
症状 ヘッダファイル内でenumで宣言された識別子に関するバグ.
複数ファイルでそのヘッダファイルをインクルードしている場合,sdb3で2番目以降に解析された ファイル中の式によって参照されていると,その式と識別子の間の参照関係ident ref が生成され ない.
具体的には,
= enum.h ===============================
enum { a, b, c };
========================================
= main.c ===============================
#include "enum.h"
void main() {
a;
}
========================================
= dummy.c ==============================
#include "enum.h"
void dummy() {
a;
}
========================================
を“sdb3 -o enum main.c dummy.c”によって解析すると,dummy.cの中の式“a” から参照関係 ident refが生成されない.
コメント sdb4ではファイル毎に解析を行なうためこの問題は起こらない.
コメント sdb4では問題ない.
状態 解決済み
登録番号 SAT-0073
登録日 1996/12/07
報告者 山本 晋一郎
症状 多バイトコードを用いているソースプログラムにおいて,ソースプログラム上の位置がずれる.
変更日 1996/12/07
変更者 寺澤 真人 状態 暫定的に解決済み
コメント コードがEUCの場合に対応した.EUC以外のコードには未対応である.この問題は,XSDA, SBRなど,他のTcl/Tkを用いているツールでも発生する.
登録番号 mkSpec3-0074
登録日 1997/01/22
報告者 林 和宏
症状 mkSpec3において以下のファイルの仕様書を作成すると,local変数に対する型が正常に生成されない.
int main() {
int (*f)();
int (*x)[1];
} 結果:
\localvar{f}{int ()*}
\localvar{x}{int [1]*}
コメント SpdStrを使うことによって,変数fについては解決可能と思われる.
状態 未解決
登録番号 SpdStr-0075
登録日 1997/01/22
報告者 林 和宏
症状 spdStrTesterにおいて以下のファイルを再構成すると,local変数に対する型が正常に生成されない.
int main() {
int (*x)[1];
} 結果:
int main() {
int *x[1];
}
状態 解決済み(1997/01/26, ver. 1.381)
コメント SDBは“int *x[];”と“int (*x)[];”を識別可能である.
登録番号 sdbin4-0076
登録日 1997/01/30
報告者 吉田 敦
症状 関数定義において,関数名を括弧で囲うとerror(SEGV)になる.
int (func)(int x) {
return x;
} 状態 未解決
コメント このような書き方にお目に掛かることも少ないですが,P.J.Plaugerの”The Standard C Library”
に出てくるprogramは,このような書き方をしています.これは,上記の関数定義の前に
#define func(x) (x)
と,マクロ定義しても影響を出さないためだそうです.
登録番号 sdblink4-0077
登録日 1997/03/30
報告者 福安 直樹
症状 2つ以上のファイルで同じtypedefおよびtypedefされた型による宣言が存在すると,sdbopt4の 誤った最適化によって,typedefされた型のidentifierおよびこのidentifierに張られはずの関連 がなくなる.この症状は,ver. 1.421以降で現れる.
具体的には,
=== foo.h =========
typedef int FOO;
FOO foo;
===================
=== a.c ===========
#include "foo.h"
===================
=== b.c ===========
#include "foo.h"
===================
に対して再構成すると,
===================
typedef int ;
;
===================
となる.
状態 解決済み(1997/04/14, ver. 1.450)
コメント 考えてみれば,再構成でfooが出ないのも不思議ですね.fooについて,ちょっと見てみたとこ ろでは,オブジェクトは存在しているし,関連も正しく存在しているようでした.fooが出ないのは SpdStrの問題かも.
登録番号 sdbin3-0078
登録日 1997/04/07
報告者 福安 直樹 症状 以下のプログラム
void a(int (*f)(int)) {
(*f)(0);
} を解すると,
STAR cast_expr: No type description pointer type となる.ただし,
void a(int (*f)()) {
(*f)(0);
}
と関数aの引数にfの引数の型を指定しない場合や,fが仮引数でない場合には問題が起こらない.
コメント 「4.4BSD-Liteを対象としたSapid-1.358の品質評価」で原因不明とされていた関数ポインタの バグについてもこれと同様と思われる.
コメント Sapid-2.499の時点で解決済み.
状態 解決済み
登録番号 sdbin3-0079
登録日 1997/04/11
報告者 山本 晋一郎
症状 以下のプログラムで,NULL POINTER READ が起こる.
typedef struct _fn {
void (*fn)(void);
} FN ;
void test(void) {
puts("test():");
}
void main(void) {
FN fp;
fp.fn = test;
fp.fn();
}
状態 解決済み(1997/05/23, ver. 2.8)
登録番号 mkPIDB4-0080
登録日 1997/04/12
報告者 山本 晋一郎
症状 以下のプログラムをsdb3で処理すると Error: Not find macID 26.?
sdb3: Error in /usr/local/Sapid/bin/mkPIDB4 となる.
#define A 0
#define B 100
#if 0
#define A 50
#endif
#define B 1 void foo() {
B;
}
状態 解決済み(1997/04/24, ver. 1.467)