https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117630

--- Comment #8 from R. Diez <rdiez-2006 at rd10 dot de> ---
I am not sure yet why generic_category_instance and system_category_instance
are not been discarded like they probably should.

I haven't found any way to make the linker say why it is pulling certain
symbols or object files. There does not seem to be an linker option in order to
build a symbol dependency graph or the like. So I am trying to manually locate
possible suspects.

I have always tried to avoid using std:string, because the COW behaviour is not
actually allowed in C++11, and my embedded targets do not have a lot of RAM, so
I ended up implementing my own separate COW string routines anyway.

But like I said, cow-stdexcept.cc turns up in my ELF, and it references
system_error.cc, probably automatically via that method declaration.

Is there a way to completely turn off these COW strings in GCC / libstdc++? So
that file cow-stdexcept.cc is not compiled at all. I did a quick search but did
not find any relevant hits.

If still feels wrong that a utility file like cow-stdexcept.cc suddenly defines
a member of class which is defined somewhere else. I heard that, just by
pulling an object file in, you could then pull static objects and the like
which you do not really need. I am not sure whether --gc-sections will always
be able to optimise everything away.

Reply via email to