mirror of https://github.com/YosysHQ/nextpnr.git
Update pack.cc (#1685)
This fixes a memory issue. When you assign to base_iodelay_rules from itself, the LHS when you do `base_iodelay_rules[id_DELAYA] = base_iodelay_rules[id_DELAYB]`, can cause a heap allocation which possibly invalidates the memory of the RHS. This was found while running nextpnr under ASAN. It might be useful to add testing under libasan into CI.
This commit is contained in:
parent
c6b876fc85
commit
b8c350b3e4
|
|
@ -1232,10 +1232,12 @@ struct NexusPacker
|
|||
dict<IdString, XFormRule> base_iodelay_rules;
|
||||
base_iodelay_rules[id_DELAYB].new_type = id_IOLOGIC;
|
||||
|
||||
base_iodelay_rules[id_DELAYB].param_xform[id_DEL_VALUE] = ctx->id("DELAY.DEL_VALUE");
|
||||
base_iodelay_rules[id_DELAYB].param_xform[id_COARSE_DELAY] = ctx->id("DELAY.COARSE_DELAY");
|
||||
|
||||
base_iodelay_rules[id_DELAYA] = base_iodelay_rules[id_DELAYB];
|
||||
XFormRule delay_rule;
|
||||
delay_rule.param_xform[id_DEL_VALUE] = ctx->id("DELAY.DEL_VALUE");
|
||||
delay_rule.param_xform[id_COARSE_DELAY] = ctx->id("DELAY.COARSE_DELAY");
|
||||
|
||||
base_iodelay_rules[id_DELAYB] = delay_rule;
|
||||
base_iodelay_rules[id_DELAYA] = delay_rule;
|
||||
|
||||
base_iodelay_rules[id_DELAYA].param_xform[id_COARSE_DELAY_MODE] = ctx->id("DELAY.COARSE_DELAY_MODE");
|
||||
base_iodelay_rules[id_DELAYA].param_xform[id_EDGE_MONITOR] = ctx->id("DELAY.EDGE_MONITOR");
|
||||
|
|
|
|||
Loading…
Reference in New Issue