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

Ian Lance Taylor <ian at airs dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-05-26
                 CC|                            |ian at airs dot com
     Ever confirmed|0                           |1

--- Comment #3 from Ian Lance Taylor <ian at airs dot com> ---
I do see a failure when I run the program.  For me the error is happening when
running the global constructors.  The global constructor Dummy::Dummy is
running before the main program's split-stack global constructor.  Dummy::Dummy
is a global constructor in the shared library.  It runs after the shared
library split-stack global constructor, but before the main program split-stack
global constructor.  Unfortunately, it calls the main program
__splitstack_makecontext.  That is because __splitstack_makecontext and friends
have default visibility rather than hidden; see the visibility attribute
settings near the top of libgcc/generic-morestack.c.

Basically, with the current implementation, a global constructor in a shared
library cannot call __splitstack_makecontext.

One possible fix might to use some sort of pthread_once call to let
__splitstack_makecontext, and possibly other functions with default visibility,
initialize static_pagesize and use_guard_page.

Reply via email to