Index: lld/trunk/ELF/Relocations.cpp =================================================================== --- lld/trunk/ELF/Relocations.cpp +++ lld/trunk/ELF/Relocations.cpp @@ -453,7 +453,8 @@ return Expr; } if (Body.getVisibility() != STV_DEFAULT) { - error("cannot preempt symbol " + Body.getName()); + error(getLocation(S, RelOff) + ": cannot preempt symbol '" + + Body.getName() + "' previously defined in " + getFilename(Body.File)); return Expr; } if (Body.isObject()) { @@ -487,7 +488,8 @@ Body.NeedsCopyOrPltAddr = true; return toPlt(Expr); } - error("symbol " + Body.getName() + " is missing type"); + error("symbol '" + Body.getName() + "' defined in " + getFilename(Body.File) + + " is missing type"); return Expr; } Index: lld/trunk/test/ELF/copy-errors.s =================================================================== --- lld/trunk/test/ELF/copy-errors.s +++ lld/trunk/test/ELF/copy-errors.s @@ -9,7 +9,7 @@ call bar -// CHECK: cannot preempt symbol bar +// CHECK: {{.*}}.o (.text+0x1): cannot preempt symbol 'bar' previously defined in {{.*}}.so call zed -// CHECK: symbol zed is missing type +// CHECK: symbol 'zed' defined in {{.*}}.so is missing type