{"action":"created","issue":{"url":"https://api.github.com/repos/aquynh/capstone/issues/1129","repository_url":"https://api.github.com/repos/aquynh/capstone","labels_url":"https://api.github.com/repos/aquynh/capstone/issues/1129/labels{/name}","comments_url":"https://api.github.com/repos/aquynh/capstone/issues/1129/comments","events_url":"https://api.github.com/repos/aquynh/capstone/issues/1129/events","html_url":"https://github.com/aquynh/capstone/issues/1129","id":320745579,"node_id":"MDU6SXNzdWUzMjA3NDU1Nzk=","number":1129,"title":"Failure disassembling 'endbr64' (x86 IBT feature)","user":{"login":"rupran","id":6428272,"node_id":"MDQ6VXNlcjY0MjgyNzI=","avatar_url":"https://avatars0.githubusercontent.com/u/6428272?v=4","gravatar_id":"","url":"https://api.github.com/users/rupran","html_url":"https://github.com/rupran","followers_url":"https://api.github.com/users/rupran/followers","following_url":"https://api.github.com/users/rupran/following{/other_user}","gists_url":"https://api.github.com/users/rupran/gists{/gist_id}","starred_url":"https://api.github.com/users/rupran/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rupran/subscriptions","organizations_url":"https://api.github.com/users/rupran/orgs","repos_url":"https://api.github.com/users/rupran/repos","events_url":"https://api.github.com/users/rupran/events{/privacy}","received_events_url":"https://api.github.com/users/rupran/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2018-05-07T09:59:32Z","updated_at":"2018-07-25T04:34:54Z","closed_at":"2018-07-25T04:34:54Z","author_association":"NONE","body":"Intel introduced new instructions for the protection of indirect branches, which make the processor fault if the target of an indirect jump is not an `endbr{32,64}` instruction. If the processor does not support Indirect Branch Tracking (IBT), the instruction is a `nop` (see [[0]], pages 15ff. and 130f.)\r\n\r\nThe instruction bytes for `endbr64` are `f3 0f 1e fa`, for `endbr32` they are `f3 0f 1e fb`.\r\n\r\nThe recently released Ubuntu 18.04 already compiles `libstdc++.so.6.0.25`, `libgcc_s.so.1`, `libtsan.so.0.0.0` and some more with support for these instructions which essentially means every function in the binaries starts with `endbr64`.\r\n\r\nCapstone currently fails when encountering these instructions (it returns an empty list of instructions), making it unusable for disassembly of those libraries. This happens on the `master` and `next` branches.\r\n\r\n[0]: https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf"},"comment":{"url":"https://api.github.com/repos/aquynh/capstone/issues/comments/407630435","html_url":"https://github.com/aquynh/capstone/issues/1129#issuecomment-407630435","issue_url":"https://api.github.com/repos/aquynh/capstone/issues/1129","id":407630435,"node_id":"MDEyOklzc3VlQ29tbWVudDQwNzYzMDQzNQ==","user":{"login":"aquynh","id":5965536,"node_id":"MDQ6VXNlcjU5NjU1MzY=","avatar_url":"https://avatars0.githubusercontent.com/u/5965536?v=4","gravatar_id":"","url":"https://api.github.com/users/aquynh","html_url":"https://github.com/aquynh","followers_url":"https://api.github.com/users/aquynh/followers","following_url":"https://api.github.com/users/aquynh/following{/other_user}","gists_url":"https://api.github.com/users/aquynh/gists{/gist_id}","starred_url":"https://api.github.com/users/aquynh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aquynh/subscriptions","organizations_url":"https://api.github.com/users/aquynh/orgs","repos_url":"https://api.github.com/users/aquynh/repos","events_url":"https://api.github.com/users/aquynh/events{/privacy}","received_events_url":"https://api.github.com/users/aquynh/received_events","type":"User","site_admin":false},"created_at":"2018-07-25T04:34:54Z","updated_at":"2018-07-25T04:34:54Z","author_association":"OWNER","body":"closed, thanks"}}
{"actor":{"display_login":"aquynh"}}