else if (object_64bit)
continue;
+#ifdef OBJ_ELF
/* Check for "call/jmp *mem", "push mem", "mov mem, %reg",
"movrs mem, %reg", "test %reg, mem" and "binop mem, %reg" where
binop is one of adc, add, and, cmp, or, sbb, sub, xor, or imul
}
}
else if (generate_relax_relocations
- || (i.rm.mode == 0 && i.rm.regmem == 5))
+ ? (!shared || i.rm.mode != 0 || i.rm.regmem != 5)
+ : (!shared && i.rm.mode == 0 && i.rm.regmem == 5))
fixP->fx_tcbit2 = 1;
}
+#endif
}
}
}
--- /dev/null
+#source: load4.s
+#as: --32 -mshared -mrelax-relocations=yes
+#ld: -Bsymbolic -shared -melf_i386
+#error: direct GOT relocation R_386_GOT32 against `foo' without base register can not be used when making a shared object
--- /dev/null
+#source: load5.s
+#as: --32 -mshared -mrelax-relocations=yes
+#ld: -Bsymbolic -shared -melf_i386
+#error: direct GOT relocation R_386_GOT32 against `foo' without base register can not be used when making a shared object