{"push_id":1015333062,"size":4,"distinct_size":4,"ref":"refs/heads/upstream","head":"bf81f082cdea83ea78671d961b59a38da0406e9a","before":"65231f415a9f69486b6d9890d4b736f5676aef11","commits":[{"sha":"5807ba83e498d87b52675376a81d2edfe6de098d","author":{"email":"f1b5a91d4d6ad523f2610114591c007e75d15084@maxrnd.com","name":"Mark Geisert"},"message":"Support profiling of multi-threaded apps.\n\nThis patch set modifies Cygwin's profiling support to sample PC values\nof all an app's threads, not just the main thread. There is no change\nto how profiling is requested: just compile and link the app with \"-pg\"\nas usual. The profiling info is dumped into file gmon.out as always.\n\nA new facility enabled via the environment variable GMON_OUT_PREFIX.\nThis facility is intended to match an undocumented Linux glibc feature.\nExporting the variable with a non-empty value such as \"foo\" causes the\nprofiling info to go to a file named foo.$pid instead of the default.\nWith that, both resulting processes of a fork() can have their profiling\ndata captured in separate files. gprof already knows how to accumulate\ndata from multiple files if they all pertain to the same app.\n\nThere is no change to the normal Cygwin execution paths if profiling is\nnot enabled. And when it is enabled, only the one profiling thread per\nprofiled app is doing more work than it used to.\n\n\t* include/sys/cygwin.h: Add CW_CYGHEAP_PROFTHR_ALL.\n\t* cygheap.cc (cygheap_profthr_all): New C-callable function that\n\truns cygheap's threadlist handing each pthread's thread handle in\n\tturn to profthr_byhandle().\n\t* external.cc (cygwin_internal): Add case CW_CYGHEAP_PROFTHR_ALL.\n\t* gmon.c (_mcleanup): Add support for multiple simultaneous\n\tgmon.out* files named via environment variable GMON_OUT_PREFIX.\n\t* gmon.h (struct gmonparam): Make state decl volatile.\n\t* mcount.c (_MCOUNT_DECL): Change stores into gmonparam.state to use\n\tInterlocked operations. Add #include \"winsup.h\", update commentary.\n\t* profil.c (profthr_byhandle): New function abstracting out the\n\tupdating of profile counters based on a thread handle.\n\t(profthr_func): Update to call profthr_byhandle() to sample the main\n\tthread then call cygheap_profthr_all() indirectly through\n\tcygwin_internal(CW_CYGHEAP_PROFTHR_ALL) to sample all other threads.\n\t(profile_off): Zero targthr to indicate profiling was turned off.\n\t(profile_on): Fix handle leak on failure path.\n\t(profile_child): New callback func to restart profiling in child\n\tprocess after a fork if the parent was being profiled.\n\t(profile_ctl): Call pthread_atfork() to set profile_child callback.\n\nSigned-off-by: Corinna Vinschen <corinna@vinschen.de>","distinct":true,"url":"https://api.github.com/repos/openrisc/newlib/commits/5807ba83e498d87b52675376a81d2edfe6de098d"},{"sha":"60fd26a4df17f14688d88bf6f454df9c0910d312","author":{"email":"c53e8bea82ed95590f82a8984eea9f8a6b206185@vinschen.de","name":"Corinna Vinschen"},"message":"Add release message for commit 5807ba83e498d87b52675376a81d2edfe6de098d\n\nSigned-off-by: Corinna Vinschen <corinna@vinschen.de>","distinct":true,"url":"https://api.github.com/repos/openrisc/newlib/commits/60fd26a4df17f14688d88bf6f454df9c0910d312"},{"sha":"2b174636e5b62dbb1c643f5976e5191a349da02e","author":{"email":"c53e8bea82ed95590f82a8984eea9f8a6b206185@vinschen.de","name":"Corinna Vinschen"},"message":"Add commit 5807ba83e release message to documentation\n\nSigned-off-by: Corinna Vinschen <corinna@vinschen.de>","distinct":true,"url":"https://api.github.com/repos/openrisc/newlib/commits/2b174636e5b62dbb1c643f5976e5191a349da02e"},{"sha":"bf81f082cdea83ea78671d961b59a38da0406e9a","author":{"email":"c53e8bea82ed95590f82a8984eea9f8a6b206185@vinschen.de","name":"Corinna Vinschen"},"message":"Add release message for commit 8b1ede3ce11d53292036aadfcfb6043df0235f9c\n\nSigned-off-by: Corinna Vinschen <corinna@vinschen.de>","distinct":true,"url":"https://api.github.com/repos/openrisc/newlib/commits/bf81f082cdea83ea78671d961b59a38da0406e9a"}]}