Alexey Khoroshilov wrote:
And why blast worked well without aspectator? What is the difference?
BLAST works well without aspectator because of original preprocessed source code doesn't contain explicit designator's constants in initialization:
static const struct ieee80211_regdomain rtl_regdom_11 = {
.n_reg_rules = 1,
.alpha2 = "99",
.reg_rules = {
{ .freq_range.start_freq_khz = ((2412-10) * 1000), .freq_range.end_freq_khz = ((2462+10) * 1000), .freq_range.max_bandwidth_khz = ((40) * 1000), .power_rule.max_antenna_gain = ((0) * 100), .power_rule.max_eirp = ((20) * 100), .flags = 0, },
}
};
static const struct ieee80211_regdomain rtl_regdom_12_13 = {
.n_reg_rules = 2,
.alpha2 = "99",
.reg_rules = {
{ .freq_range.start_freq_khz = ((2412-10) * 1000), .freq_range.end_freq_khz = ((2462+10) * 1000), .freq_range.max_bandwidth_khz = ((40) * 1000), .power_rule.max_antenna_gain = ((0) * 100), .power_rule.max_eirp = ((20) * 100), .flags = 0, },
{ .freq_range.start_freq_khz = ((2467-10) * 1000), .freq_range.end_freq_khz = ((2472+10) * 1000), .freq_range.max_bandwidth_khz = ((40) * 1000), .power_rule.max_antenna_gain = ((0) * 100), .power_rule.max_eirp = ((20) * 100), .flags = NL80211_RRF_PASSIVE_SCAN, },
}
};
But if there will be explicit designator's constants in original code then BLAST will fail.
Temporarily workaround at the level of CIF is to omit designator's constants if they are (0, 1, 2, ...). But I consider such the workaround to be very bad, since it's hard to implement (CIF isn't intended for such things) and it doesn't solve the problem in general.
I guess 2 things should be done:
- We should investigate why BLAST doesn't fail when it has one file with parsing errors (most likely with other kinds of errors too) as input and fails when it has several files at least one of which has parsing errors.
- We should fix CIL or report CIL developers since CIL doesn't parse correct programs. For us this means that it can build incorrect program model that will lead to tricky failures (e.g. with using advanced pointer analysis).