Maybe this dicussion needs to be moved to a dev related forum.
As I'm one of the contributors to the AROS build system I am very interested in it though.
There's slightly more to C++ linkage than name mangling...
How, using nothing but a jsr style jump table library vector do you propose to enforce exception specifiers, for example? If a virtual function in your application throws an exception from within a library call (perfectly possible under the current libstdc++), is the amigaos shared library implementation expected to unwind the stack and properly invoke destructors for everything?
Isn't this problem orthogonal to linking ? Isn't it compile time and C++ ABI related ?
Of course you need to define a C++ ABI and you can't mix different ABIs in one program be they in static link libs, .so or .library files.
I'm not saying it's impossible to achieve but in the end, your library would likely end up deviating from amigaos shared library norms in order to offer the required features expected of the C++ standard library.
What is your definition of the norm. To me a .library has to following norm.
It has a Resident structure that points to the lib init code.
The init code adds the lib to the system list of libs.
The member of this list has a pointer to an LVO table.
3 slots have predefined meaning (OpenLib, CloseLib, ExpungeLib) and have to obey a certain calling convention.
And if you are going to deviate from the norm, then why bother? Static linking has no such problem. And really, that's all .so files do, except actual linking is deferred until runtime.
That the linking is not deferred to runtime is the reason I am a big proponent of amiga style shared libraries.
It's true that no compiler or other tool support exist ATM to do it.
This answers your own question and it's unlikely to change as long as gcc remains the compiler of choice.
It eventually will change (if I live long enough

)
There's more than just the vtables and even the stuff above to worry about. Templating and RTTI present other interesting problems.
Again are these not part of the C++ ABI and orthogonal to the linking step. I have to admit that the intimate knowledge of the inside of C++ compilers is when the STL was still developed by SGI. I haven't seen anything at that time with templating that would make it incompatible with amiga shared libraries. I don't know how RTTI is implemented internally so I can't comment on that.
What I in the end envision is that for each shared library you would get two files; for example for libstdc++: libstdc++.a and libstdc++.library. Only the .a file would not contain any real code but stub code to call the right LVO in the .library but for the compiler/linker it would obey all ABI conventions.
So, for your suggestion to work, you need to first build a new compiler and then implement your own complete runtime and STL for it.
It isn't exactly a cakewalk. Who is going to bother?
I'm already doing the C library in the ABI V1 branch of AROS. So C++ and the STL will be a minor things once I come to it

greets,
Staf.