{"push_id":1398419833,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"81323af362fc053dbea0758ca1e02d9af82c0da6","before":"aa0c77bc7367bedaa6dfc2cc131efe413e5a9030","commits":[{"sha":"81323af362fc053dbea0758ca1e02d9af82c0da6","author":{"name":"Evgeniy Stepanov","email":"5917b5d2d3cebba631dd1b8b48bd84b1ab51d427@gmail.com"},"message":"[cfi] Implement cfi-icall using inline assembly.\n\nThe current implementation is emitting a global constant that happens\nto evaluate to the same bytes + relocation as a jump instruction on\nX86. This does not work for PIE executables and shared libraries\nthough, because we end up with a wrong relocation type. And it has no\nchance of working on ARM/AArch64 which use different relocation types\nfor jump instructions (R_ARM_JUMP24) that is never generated for\ndata.\n\nThis change replaces the constant with module-level inline assembly\nfollowed by a hidden declaration of the jump table. Works fine for\nARM/AArch64, but has some drawbacks.\n* Extra symbols are added to the static symbol table, which inflate\nthe size of the unstripped binary a little. Stripped binaries are not\naffected. This happens because jump table declarations must be\nexternal (because their body is in the inline asm).\n* Original functions that were anonymous are now named\n<original name>.cfi, and it affects symbolization sometimes. This is\nnecessary because the only user of these functions is the (inline\nasm) jump table, so they had to be added to @llvm.used, which does\nnot allow unnamed functions.\n\ngit-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286611 91177308-0d34-0410-b5e6-96231b3b80d8","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm/commits/81323af362fc053dbea0758ca1e02d9af82c0da6"}]}
{"actor":{"display_login":"chapuni"}}