On Thu, 27 Mar 2025 at 10:56, Basile Starynkevitch <basile@xxxxxxxxxxxxxxxxx> wrote: > > On Thu, 2025-03-27 at 10:49 +0000, Jonathan Wakely via Gcc-help wrote: > > On Thu, 27 Mar 2025 at 10:48, Tom Kacvinsky via Gcc-help > > <gcc-help@xxxxxxxxxxx> wrote: > > > > > > On Thu, Mar 27, 2025 at 6:28 AM Tom Kacvinsky <tkacvins@xxxxxxxxx> wrote: > > > > > > > Hi, > > > > > > > > I have a shared library that was built without linking to libstd++.so.6. > > > > The mangled named > > > > is _Z3St3absl. But I can't it resolved in the libraries I link against. > > > > Where does this symbol originate? > > > > > > > > > > Answering my own question - it's defined as a builtin. > > > > I don't think so, it's define in <bits/std_abs.h> like so: > > > > #ifndef __CORRECT_ISO_CPP_STDLIB_H_PROTO > > inline long > > abs(long __i) { return __builtin_labs(__i); } > > #endif > > > > So it's either provided by your C library (which is the case for > > Solaris, IIRC) or it's an inline function which should be define in > > every object file that uses it. > > On Linux computers with GCC you should use the --demangle option to GNU nm or > programmatically the <cxxabi.h> header with its abi::__cxa_demangle function > as documented on > https://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html > > For a concrete example see the RefPerSys GPL project in my signature (it should > become an inference engine). The question wasn't about demangling. The demangled name is std::abs(long) as given in the email Subject, so I assume Tom already knows that. (I also assume that _Z3St3absl was a typo and that _ZSt3absl was intended). > > Regards > > > > -- > Basile STARYNKEVITCH <basile@xxxxxxxxxxxxxxxxx> > 8 rue de la Faïencerie http://starynkevitch.net/Basile/ > 92340 Bourg-la-Reine https://github.com/bstarynk > France https://github.com/RefPerSys/RefPerSys