In case of MIPS, GP-relative relocations always resolve to a definition in a regular input file, ignoring the one-definition rule. Such relocations are used to setup GP relative offsets in a function's prologue. So we, for example, should not attempt to create a dynamic relocation even if the target symbol is preemptible.
Fixes bug 27880.
From the description it looks like what you want is
static bool isPreemptible(const SymbolBody &B, RelExpr E) {
}
and use that in here instead of a plain Body.isPreemptible.