[PATCH] D114841: [lld-macho] Fix duplicate symbols with relocatable objects
Vy Nguyen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 1 12:08:16 PST 2021
oontvoo added inline comments.
================
Comment at: lld/MachO/Driver.cpp:322-324
case file_magic::macho_object:
- newFile = make<ObjFile>(mbref, getModTime(path), "");
+ newFile = loadedObjects[path] = make<ObjFile>(mbref, getModTime(path), "");
break;
----------------
keith wrote:
> oontvoo wrote:
> > On a second thought, this is suspicious. Doesn't this mean `%lld foo.o foo.o ` wouldn't yield "duplicate symbols" error anymore?
> Yea I mentioned this with a top level comment as well, it does break the related test. I need to find a better heuristic for skipping these, since we only want to do it for LC_LINKER_OPTION's / duplicate -framework commands etc (not sure if the latter is handled today or not, especially as it conflicts with -framework foo -weak_framework foo etc).
>
> I was hoping to do this specifically in the LC_LINKER_OPTION logic to avoid changing things here, but the issue is the order of hitting those options vs the command line options depends on the order things are passed, so I couldn't rely on that.
Ah, I've missed the previous comments. Sorry!
In any case, I can think of a contrived example where you have the input obj files (standalone or in archives) containing no symbols but contributing to global ctors. In that case, wouldn't we want the side effect of these being loaded individually?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D114841/new/
https://reviews.llvm.org/D114841
More information about the llvm-commits
mailing list