x86_64: Fix segfault for global data
When offsetted addresses of global non-static data are computed multiple times in the same statement the x86_64 backend uses gen_gotpcrel with offset, which implements an add insn on the register given. load() uses the R member of the to-be-loaded value, which doesn't yet have a reg assigned in all cases. So use the register we're supposed to load the value into as that register.
This commit is contained in:
@ -414,7 +414,7 @@ void load(int r, SValue *sv)
|
||||
} else {
|
||||
orex(1,0,r,0x8b);
|
||||
o(0x05 + REG_VALUE(r) * 8); /* mov xx(%rip), r */
|
||||
gen_gotpcrel(fr, sv->sym, fc);
|
||||
gen_gotpcrel(r, sv->sym, fc);
|
||||
}
|
||||
#endif
|
||||
} else if (is64_type(ft)) {
|
||||
|
||||
Reference in New Issue
Block a user