AbortedChanges

Summary

  1. [lld/mac] When handling @loader_path, use realpath() of symlinks (details)
  2. [lld/mac] Make framework symlinks in tests more realistic (details)
  3. Save/restore OuterTemplateParams in AbstractManglingParser::parseEncoding. (details)
Commit 0e399eb5273b13d37a70acaa7ad7291ee6273fb8 by thakis
[lld/mac] When handling @loader_path, use realpath() of symlinks

This is important for Frameworks, which are usually symlinks.

ld64 gets this right for @rpath that's replaced with @loader_path, but not for
bare @loader_path -- ld64's code calls realpath() in that case too, but ignores
the result.

ld64 somehow manages to find libbar1.dylib in the test without the
explicit `-rpath` in Foo1. I don't understand why or how. But this
change is a step forward and fixes an immediate problem I'm having,
so let's start with this :)

Differential Revision: https://reviews.llvm.org/D103990
The file was modifiedlld/MachO/InputFiles.cpp
The file was addedlld/test/MachO/link-search-at-loader-path-symlink.s
Commit bbe6f51b726f9d4265df4407736772dd68ac6f98 by thakis
[lld/mac] Make framework symlinks in tests more realistic

In a framework Foo.framework, Foo.framework/Foo is usually a relative
symbolic link to Foo.framework/Versions/Current/Foo,
and Foo.framework/Versions/Current is usually a relative symbolic
link to A.

Our tests used absolute symbolic links. Now they use relative symbolic links.

No behavior change, just makes the tests more representative of the real world.

(implicit-dylib.s omits the "Current" folder too, but I'm not changing that
here.)

Differential Revision: https://reviews.llvm.org/D103998
The file was modifiedlld/test/MachO/framework.s
The file was modifiedlld/test/MachO/implicit-dylibs.s
Commit c962491a41c3fbc6de50b4c109a67d21b2044d71 by justin.lebar
Save/restore OuterTemplateParams in AbstractManglingParser::parseEncoding.

Previously we were only saving plain TemplateParams.

Differential Revision: https://reviews.llvm.org/D103996
The file was modifiedlibcxxabi/test/test_demangle.pass.cpp
The file was modifiedlibcxxabi/src/demangle/ItaniumDemangle.h
The file was modifiedllvm/include/llvm/Demangle/ItaniumDemangle.h