{"push_id":1947522904,"size":13,"distinct_size":4,"ref":"refs/heads/check/pie-fix","head":"ffcd23501a3418a9d23cb29f937e9495e13421b4","before":"3bced2bb095f24672060c21c48530a7f5d414f09","commits":[{"sha":"5f2e7d6258a35be721a4b4069954af9dbfe2b751","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"mcount: Introduce mcount_arch_plthook_addr()\n\nThe mtd.plthook_addr is an (original) address in PLTGOT to be restored\nafter dynamic resolver sets the real address.  It needs to be set back\nto the address in order to trace PLT calls.\n\nBut adding single variable cannot support nested calls, and it can be a\nproblem in some cases.  Normally PLT original address can be calculated\nusing PLT index so add the mcount_arch_plthook_address() to get it in an\narch-specific way.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":false,"url":"https://api.github.com/repos/namhyung/uftrace/commits/5f2e7d6258a35be721a4b4069954af9dbfe2b751"},{"sha":"cea9476dc59d45d958dca5ddb644c1f4d91c8ad3","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"mcount: Implement mcount_arch_plthook_addr()\n\nEach arch knows how to restore PLT address to be hooked by uftrace.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":false,"url":"https://api.github.com/repos/namhyung/uftrace/commits/cea9476dc59d45d958dca5ddb644c1f4d91c8ad3"},{"sha":"6ef9641c66bb8be7ff443a4a6d91de8ce0f54c75","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"mcount: Eliminate plthook_guard\n\nThe plthook_guard is to prevent nested PLT calls since it had to keep an\noriginal PLT address to be restored.  However it doesn't need to keep\nthe address as it can be calculated using mcount_arch_plthook_addr().\nAs we already removed the plthook_addr member, let's remove\nplthook_guard as well.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":false,"url":"https://api.github.com/repos/namhyung/uftrace/commits/6ef9641c66bb8be7ff443a4a6d91de8ce0f54c75"},{"sha":"ffbfd59e59b5c2a9a020cf7054848cd8ca956360","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"mcount: Don't restore parent ip in rstacks on longjmp()\n\nThe manpage says that if a function calling setjmp returns before\ncalling longjmp, the behavior is undefined.  That means stackframe at\nthe time of longjmp should keep the frame of setjmp.\n\nAlso stacks below setjmp won't be used anymore.  So it doesn't need to\nrestore return (i.e. parent) address when calling longjmp.  In fact,\nrestoring return address caused a segfault on qemu which uses setjmp/\nlongjmp pair extensibly in coroutines.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":false,"url":"https://api.github.com/repos/namhyung/uftrace/commits/ffbfd59e59b5c2a9a020cf7054848cd8ca956360"},{"sha":"95e4ee6e34f2b52bd3ca66dfd57bd9c7db01c5cd","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"test: Make longjmp3 test case sane\n\nThe stackframe of setjmp should not be corrupted.  But returning from\nparent function (in this case, it was set()) will free stackframe so\nafter longjmp it will use the invalid stackframe.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":false,"url":"https://api.github.com/repos/namhyung/uftrace/commits/95e4ee6e34f2b52bd3ca66dfd57bd9c7db01c5cd"},{"sha":"7e3053d217fa49877bf122da34f254f8edf18622","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"test: Fix ucontext test case\n\nNow it allows nested PLT calls like in swapcontext() so the test case\nshould be changed.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":false,"url":"https://api.github.com/repos/namhyung/uftrace/commits/7e3053d217fa49877bf122da34f254f8edf18622"},{"sha":"9ff058d119b457af90515fc917fb39d7a41f82b9","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"test: Fix compiler warning on ARM\n\n  $ make test\n    CC       uftrace.ot\n  /home/namhyung/uftrace/uftrace.c: In function ‘func_option_parsing1’:\n  /home/namhyung/uftrace/uftrace.c:964:2: warning:\n      this decimal constant is unsigned only in ISO C90 [enabled by default]\n  /home/namhyung/uftrace/uftrace.c:964:2: warning:\n      this decimal constant is unsigned only in ISO C90 [enabled by default]\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":false,"url":"https://api.github.com/repos/namhyung/uftrace/commits/9ff058d119b457af90515fc917fb39d7a41f82b9"},{"sha":"51461715ca4f4c3396494a05a1cf238cef77afc6","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"test: Protect os.kill() with try-except\n\nThere might be a race between task exit vs kill.  And then runtest will\nfailed with 'No such process' error.  Ignore such error as it exited\nanyway.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":false,"url":"https://api.github.com/repos/namhyung/uftrace/commits/51461715ca4f4c3396494a05a1cf238cef77afc6"},{"sha":"83380b8ceb3c3a29041b52d84a640f9a4f2d099d","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"Merge branch 'longjmp-fix'\n\nTo support longjmp/setjmp properly, it needs to see the first argument\nto the functions to distinguish jmp_buf.  This is needed especially when\nmultiple setjmp/longmp pair are used.  It is reported that qemu makes\nuse of them quite frequently and uftrace failed to trace the qemu.\n\nIn addition, stack frame at the time of setjmp must be preserved at the\ntime of longjmp.  Otherwise it can cause an undefined behavior.  Update\nthe longjmp3 test case to preserve the stack frame.\n\nWhile at it, also fixes to handle nested PLT calls like in swapcontext()\n- qemu uses it for coroutine implementation - which prevents further\ncalls like setjmp/longjmp resulted in a failure.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":false,"url":"https://api.github.com/repos/namhyung/uftrace/commits/83380b8ceb3c3a29041b52d84a640f9a4f2d099d"},{"sha":"3efdb20784ad48dcfecf93d41936bef97349dbbb","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"arch/x86: Add __gmon_start__ in the skip symbols\n\nFor some reason, it makes the process stuck in the function when\nBIND-NOW is enabled.  Let's just skip it.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":true,"url":"https://api.github.com/repos/namhyung/uftrace/commits/3efdb20784ad48dcfecf93d41936bef97349dbbb"},{"sha":"780f43f75ff9dc6cd19b951f3a3b22d6ff8dc0f4","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"mcount: Handle PIE for X-ray dynamic tracing\n\nIt seems current clang generates a PIE for xray instrumented binary.\nThus it needs to update the function address based on the load address.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":true,"url":"https://api.github.com/repos/namhyung/uftrace/commits/780f43f75ff9dc6cd19b951f3a3b22d6ff8dc0f4"},{"sha":"60f6b3384220c3f1bc7daf2b0d763222d6713e12","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"arch/x86: Handle BIND-NOW binary with PLT\n\nIt seems some old version of gcc keeps PLT even with BIND-NOW.  In that\ncase, it can simply resolve address at the beginning and use that in the\nPLT hook code.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":true,"url":"https://api.github.com/repos/namhyung/uftrace/commits/60f6b3384220c3f1bc7daf2b0d763222d6713e12"},{"sha":"ffcd23501a3418a9d23cb29f937e9495e13421b4","author":{"name":"Namhyung Kim","email":"b7af351e2f66f7a190ae8e2228796f52469e31e4@gmail.com"},"message":"symbol: Check .plt.got when JMPREL is not found\n\nCurrent code assumes BIND-NOW changes PLT structure but it might keep\nthe original structure when using old toolchains.  So make it load from\nPLT first as usual and then falls back to .plt.got if not found.\n\nSplit try_load_dynsymtab_bindnow() for readability.\n\nSigned-off-by: Namhyung Kim <namhyung@gmail.com>","distinct":true,"url":"https://api.github.com/repos/namhyung/uftrace/commits/ffcd23501a3418a9d23cb29f937e9495e13421b4"}]}
{"actor":{"display_login":"namhyung"}}