> In other words, the program is linked with two distinct versions of func2(), which exist simultaneously! One version is statically used by func1() from inside the sharedlibrary where func1 is used by main. The second version (myfunc1.o) is however is now used by main but does **not** replace the version used internally by func1() inside the shared library (even if mylib.so also exports the symbol for "func2", this export is not used when linking main because you've specified myfunc2.o **before** mylib.so when linking main).
Which is part of concern "First" in my response to Luiz earlier in this thread, to which you responded with "I disagree". I still do not know what exactly you disagree with, because you never answered my follow-on questions specifically enough.
You might also want to experiment with concern "Second".