Open Quuxplusone opened 3 years ago
https://bugs.llvm.org/show_bug.cgi?id=50304 is an example bug (likely) caused by LLD not respecting an $ld$install_name
symbol.
I'll grab this if you don't mind.
I've almost implemented it already, have not sent for review yet.
Will do ~this week.
Attached tmp.diff
(3793 bytes, text/plain): sketch
_Bug 50304 has been marked as a duplicate of this bug._
(Let me know if you get busy and could use help here after all.)
This is almost done (we have had a few discussions with Jez, the initial bits will be sent for review very soon), sorry about the delay and thanks for the draft of your diff.
_Bug 50411 has been marked as a duplicate of this bug._
Just want to re-iterate that I'm really looking forward to having this fixed and that I'm more than happy to help with this if you're busy with other things.
Nico, have you tried the latest version ? I'm wondering if there is anything missing now, e.g. if we have a use case for other special symbols or not.
Attached tmp.diff
(1247 bytes, text/plain): hack to print unimplemented magic symbols
Attached unimpl.txt
(42566 bytes, text/plain): Missing $ld$ symbol support
I'll look at problem (1) since it's my bug from aeae3e0ba9061
(Also, this might be a good idea?
@@ -1033,8 +1033,10 @@ void DylibFile::handleLDPreviousSymbol(StringRef name,
StringRef originalName) {
std::tie(endVersion, name) = name.split('$');
std::tie(symbolName, rest) = name.split('$');
// TODO: ld64 contains some logic for non-empty symbolName as well.
- if (!symbolName.empty())
+ if (!symbolName.empty()) {
+ warn("non-empty symbol name, symbol '" + originalName + "' ignored");
return;
+ }
unsigned platform;
if (platformStr.getAsInteger(10, platform) ||
platform != static_cast<unsigned>(config->platform()))
)
(In reply to Nico Weber from comment #13)
> I'll look at problem (1) since it's my bug from aeae3e0ba9061
https://reviews.llvm.org/D103821
Looks like https://reviews.llvm.org/D103505 implemented some of these
tmp.diff
(3793 bytes, text/plain)tmp.diff
(1247 bytes, text/plain)unimpl.txt
(42566 bytes, text/plain)