{"push_id":1290667104,"size":7,"distinct_size":1,"ref":"refs/heads/x86-lifter","head":"9ed340374fc2c8c06eaf60b35aa3ec79a95ab4ce","before":"f794a9273eaadd4e2d71f0b6e0b3545a1af26edf","commits":[{"sha":"c63e36b04f56ab9c22f812bceb9ddafcb8af3466","author":{"name":"Ivan Gotovchits","email":"8f2d911fba6fdb40ba80ca6ebb68bef5fa469288@ieee.org"},"message":"add dejagnu dependency (#538)\n\nAlthough the package is optional, we need to add it to opam/opam file,\r\nsince it includes a non-optional `make check` call. Another option would\r\nbe to make the `check` rule to check the presence of the dejagnu (that\r\nit already does), and ignore the testsuite, if it is not present. But,\r\nit looks like, that such option will only increase the entropy, so I\r\nwould better add the package as dependency.\r\n\r\nThis will resolve #537.","distinct":false,"url":"https://api.github.com/repos/feseal/bap/commits/c63e36b04f56ab9c22f812bceb9ddafcb8af3466"},{"sha":"d1badbaab0180d53d60fac792da249571faa0e9e","author":{"name":"Ivan Gotovchits","email":"8f2d911fba6fdb40ba80ca6ebb68bef5fa469288@ieee.org"},"message":"publish create/close functions for basic disasm (#540)\n\nPreviously a basic disassembler could be only accessed by `with_disasm`\r\nfunction, that is safe but not very versatile. There is at least one use\r\ncase, where the CPS style is not enough, as we may need to have a pool\r\nof disassemblers. For example in bap-server.\r\n\r\nThis PR adds this functions to the module interface, however they are\r\ndiscouraged, and `with_disasm` function should be considered whenever\r\nit is possible.","distinct":false,"url":"https://api.github.com/repos/feseal/bap/commits/d1badbaab0180d53d60fac792da249571faa0e9e"},{"sha":"50aedd7f287b554373a5ad8717cae8e059558c3d","author":{"name":"Ivan Gotovchits","email":"8f2d911fba6fdb40ba80ca6ebb68bef5fa469288@ieee.org"},"message":"move python bindings into separate repository (#541)\n\nThe new home for pythong bindings is bap-python.\r\n\r\nRationale, the bindings depends on optional components of bap, that were\r\nremoved from the main repo previously.","distinct":false,"url":"https://api.github.com/repos/feseal/bap/commits/50aedd7f287b554373a5ad8717cae8e059558c3d"},{"sha":"e687dba59ef8c16631acfdd3fdc7743dd77ae9db","author":{"name":"Ivan Gotovchits","email":"8f2d911fba6fdb40ba80ca6ebb68bef5fa469288@ieee.org"},"message":"Update to latest oasis (#542)\n\n* updated setup harness to latest oasis\r\n\r\n* fixed oasis version in opam.","distinct":false,"url":"https://api.github.com/repos/feseal/bap/commits/e687dba59ef8c16631acfdd3fdc7743dd77ae9db"},{"sha":"40c8db7ffab745e966cf75b959ea1479d0c77730","author":{"name":"Ivan Gotovchits","email":"8f2d911fba6fdb40ba80ca6ebb68bef5fa469288@ieee.org"},"message":"support code for the new python interface (#543)\n\nThe new python interface uses popen to run bap and dump project data in\r\nthe ADT format, that is readable from python. This simple approach\r\nallows to get a programmatic access from python to all the data, that\r\nwas discovered during the analysis. The following example, demostrates\r\nthe basics:\r\n\r\n```python\r\n>>> import bap\r\n>>> proj = bap.run('/bin/true', ['--symbolizer=ida'])\r\n>>> text = proj.sections['.text']\r\n>>> main = proj.program.subs.find('main')\r\n>>> entry = main.blks[0]\r\n>>> next = main.blks.find(entry.jmps[0].target.arg)\r\n```\r\n\r\nSee the corresponding repository for more documentation. It is\r\nrecommended to use ipython to explore the bindings, later we will create\r\na sphinx documentation.\r\n\r\nChanges:\r\n\r\n1. added ADT printers for the project data structure\r\n2. for consistency dashified all attributes that contained underscores\r\n3. removed subroutine-addr, insn-addr, block attributes, substituted\r\n   them all with the `address` attribute (as there is no need to\r\n   distinguish between instruction or subroutine or block address).\r\n4. removed few unecessary attributes, like `target-name` or\r\n   `subroutine-name`.\r\n\r\nNote: bap-python repository will be updated as soon, as this PR is\r\nmerged.","distinct":false,"url":"https://api.github.com/repos/feseal/bap/commits/40c8db7ffab745e966cf75b959ea1479d0c77730"},{"sha":"33e9e2ec66496e06dc1d0a280d21c86c43b75c6f","author":{"name":"Ivan Gotovchits","email":"8f2d911fba6fdb40ba80ca6ebb68bef5fa469288@ieee.org"},"message":"Llvm 3.8 (#546)\n\n* LLVM 3.8 support\r\n\r\n* LLVM SymbolSize\r\n\r\n* Smart pointer handling fix. Generic read symbol function. Temporary symbol info output.\r\n\r\n* clean up\r\n\r\n* memory struct: uint8_t* -> char*\r\n\r\n* llvm feature\r\n\r\n* oasis/llvm update\r\n\r\n* Eliminates unnecessary param in formerly overloaded create_image function\r\n\r\n* Few warning fixes etc (#489)\r\n\r\n* Improve warning messages to user\r\n\r\n* Suppress warning message on compilation\r\n\r\n* Prevent namespace collisions\r\n\r\n* Fix up opens, removing the unnecessaries\r\n\r\n* internal symbolizer shouldn't fail (#492)\r\n\r\nWhen a raw binary is passed, or when a light loader is used internal\r\nrooter and symbolizer are unable to provide any information. This is an\r\nexpected behavior for them and should not be treated as an error.\r\n\r\n* Config defaults (#494)\r\n\r\n* Let defaults be part of the converter\r\n\r\n* Update plugins to use the new converter\r\n\r\n* Remove unnecessarily specified defaults\r\n\r\n* Dont pre-fail\r\n\r\n* Dont use invalid_arg as default. Set more sane defaults.\r\n\r\n* More documentation\r\n\r\n* Make converter abstract\r\n\r\n* Prevent printer repeat\r\n\r\n* do not create empty symbolizer (#499)\r\n\r\nAs symbolizers will override each other with the latter having a\r\nprecedence on the former.\r\n\r\nThis fill fix #497.\r\n\r\n* Add doc_enum (#500)\r\n\r\n* remove symbols option from the frontend (#501)\r\n\r\nThere're several reasons:\r\n\r\n1. symbolizer and rooter are orthogonal\r\n2. there is no practical reason to restrict rooter, so the default\r\n   behavior is to say `--symbolizer=ida` without concertizing rooters,\r\n   i.e., to use all available information.\r\n3. with symbols option it is not possible to implement the all default\r\n   option for the rooter, so it will fix #496.\r\n4. the option is fragile and was broken most of its lifetime, mostly\r\n   because it breaks the SPOT rule.\r\n\r\n* Allow disabling certain plugins/features when enabling everything (#502)\r\n\r\n* Allow users to disable at ./configure time\r\n\r\n* Make POSIX compatible\r\n\r\n* FSI Benchmark disabled if IDA does not exist\r\n\r\n* Allow ./configure without params\r\n\r\n* Extending Config (#505)\r\n\r\n* Allow plugins to deprecate configuration options.\r\n\r\n* Allow synonyms to be specified\r\n\r\n* Add as_flag to allow param to have flag behaviour\r\n\r\n* Prevent warnings if user doesnt use param\r\n\r\n* Config plugins v2 (#504)\r\n\r\n* Update demangle plugin\r\n\r\n* Update x86 plugin\r\n\r\n* Update byteweight plugin\r\n\r\n* Update llvm plugin\r\n\r\n* Update print plugin\r\n\r\n* Update map-terms plugin\r\n\r\n* Update api plugin\r\n\r\n* Update phoenix plugin\r\n\r\n* Use synonyms for api\r\n\r\n* Deprecate the labels-with-* and favor labels-with=\r\n\r\n* Clearer code\r\n\r\n* llvm-config-3.8 --system-libs (#506)\r\n\r\n* Removed redundant param from objectfile_param constructor\r\n\r\n* get32PlusHeader image entry\r\n\r\n* Added function to dynamically downcast unique pointers\r\n\r\n* Added LLVM 3.4 plugin code\r\n\r\n* Fixed include guards in LLVM legacy header files\r\n\r\n* minor comment cleanup\r\n\r\n* OwningPtr binary fix\r\n\r\n* Binary smart pointer ownership fix\r\n\r\n* llvm-config-3.5+ flags support\r\n\r\n* updated .gitignore\r\n\r\n* one more .gitignore update\r\n\r\n* actual last .gitignore change -- don't ignore /configure\r\n\r\n* This commit fixes segmentation faults caused by PE32+ binaries\r\n\r\n* Initial working refactor for LLVM 3.8\r\n\r\n* Removed unnecessary COFFObjectFile code block pertaining to section RVA->VA\r\n\r\n* Updated legacy llvm binary code\r\n\r\n* Don't touch gitignore\r\n\r\n* don't commit autogenerated files\r\n\r\nthat are also ignored\r\n\r\n* try not to commit pure whitespace changes\r\n\r\nThey usually just clobbers the change making reviewer life harder.\r\nIf needed then make them as a separate commit.\r\n\r\n* use using declaration to relax the change\r\n\r\nThe only difference between `std::error_code` and\r\n`llvm::error_code` that we can observe is the name.\r\nSo we can make the impact of the change much less\r\npainful if we just use the `using` declaration.\r\n\r\n* reviewed `load_commands` function\r\n\r\nit must be removed\r\n\r\n* don't abuse using directives\r\n\r\n* a useless renaming\r\n\r\n* minor review comments\r\n\r\nthe rest of the `llvm_binary.hpp` is fine!\r\n\r\n* started the llvm_disasm review\r\n\r\nalso discarded noise changes\r\n\r\n* Initial fixup for LLVM 3.8 plugin\r\n\r\n* Initial #ifndefs for LLVM version specific code\r\n\r\n* Partially added LLVM 3.4 plugin code\r\n\r\n* Disasm backport for LLVM-3.4\r\n\r\n* Working for 3.4 and 3.8 LLVM\r\n\r\n* Code cleanup + refactor\r\n\r\n* Fixed 3.8 compilation\r\n\r\n* arch_ reverted to Triple::ArchType\r\n\r\n* Small fix + cleanup for 3.4 llvm\r\n\r\n* Added using-directives for #if-else blocks\r\n\r\n* Fixed #if-else indentation; added empty MemoryObject class for 3.8\r\n\r\n* memory representation abstraction\r\n\r\n* Fixed memory corruption issue\r\n\r\n* Working disasm for 3.8 using MemoryObject abstraction ... to be tested on 3.4\r\n\r\n* Added view abstraction to overcome llvm::MemoryObject limitation\r\n\r\n* bumped testsuite\r\n\r\n* use image base as segment offset\r\n\r\nin a previous version an entry point was used.\r\n\r\n* fix indentations\r\n\r\nSet up your favorite emacs to indent code correctly. We don't want\r\nchanges, that concern only whitespaces. So lets get rid of it as soon as\r\npossible.\r\n\r\nI've sent you the emacs configuration file. So make sure that you're\r\nusing it. If not, then make sure, that you have the following settings\r\nin your config:\r\n\r\n```lisp\r\n(setq c-default-style \"k&r\")\r\n(setq-default c-basic-offset 4)\r\n\r\n(set-variable 'parens-require-spaces nil)\r\n(set-variable 'c-cleanup-list\r\n              (quote (brace-else-brace\r\n                      brace-elseif-brace\r\n                      brace-catch-brace\r\n                      empty-defun-braces\r\n                      one-liner-defun\r\n                      scope-operator)))\r\n\r\n;; never use tabs for indenting, never ever, ever!\r\n(setq-default indent-tabs-mode nil)\r\n\r\n(add-hook\r\n 'c++-mode-hook\r\n '(lambda ()\r\n    (c-set-style \"stroustrup\")\r\n    (c-toggle-hungry-state)\r\n    (c-set-offset 'innamespace 0)))\r\n```\r\n\r\n* fix the entry point if needed\r\n\r\nread the manual carefully, I suspect, that we should add the base to it.\r\n\r\n* remove uneccessary utils namespace\r\n\r\nwe're not using it outside of the compilation unit, so why export\r\nit. Use anonymous namespace, this is a C++ way of making a function\r\nstatic.\r\n\r\n* fix error handling\r\n\r\nWe're in trouble with error handling. What we are doing currently will\r\nsoon explode and shoot off our essential parts. It is better to fix it\r\nsoon!\r\n\r\n* move to iterator_range\r\n\r\nmove `{sec,sym,seg}::read` functions to iterator_ranges. If the latter\r\nis not available on 3.4 then implement it (it is very easy). You can\r\njust pull it from 3.8, if you're not sure how.\r\n\r\n* use bap::memory to represent memory\r\n\r\nuse free function `view` implemented differently for each version to\r\nconvert it to a type expected by the disassembler.\r\n\r\n* Added value_or_default function\r\n\r\n* Removed llvm_binary_fail from create_image functions\r\n\r\n* Deleted value_or_default comment block.\r\n\r\n* Code cleanup\r\n\r\n* Debug output\r\n\r\n* FIX: COFF Symbol Sizes are incorrect using llvm::computeSymbolSizes()\r\n\r\n* Use COFFObjectFile::getImageBase() for PE32(+) binaries\r\n\r\n* Minor fix for 3.4 code in section namespace\r\n\r\n* Don't fail due to invalid symbol\r\n\r\n* Minor cleanup ...  nothing special\r\n\r\n* Initial working LLVM 3.8 (and only 3.8) plugin w/o ifdefs\r\n\r\n* Fix for COFF symbol reads.\\nllvm_binary_38.* added to oasis/llvm\r\n\r\n* Initial working 3.4 LLVM\r\n\r\n* Contains fixes for llvm_binary_34\r\n\r\n* Minor fixes for LLVM 3.4\r\n\r\n* Removed final #ifdef from section namespace for COFF files\r\n\r\n* Removed comment block\r\n\r\n* code cleanup\r\n\r\n* Code cleanup for 3.4 and 3.8\r\n\r\n* Small change to LLVM 3.4 code for simulating section_iterator_range\r\n\r\n* removed trash, fixed build configuration\r\n\r\n* made setup more robust to llvm versioning schemes","distinct":false,"url":"https://api.github.com/repos/feseal/bap/commits/33e9e2ec66496e06dc1d0a280d21c86c43b75c6f"},{"sha":"9ed340374fc2c8c06eaf60b35aa3ec79a95ab4ce","author":{"name":"feseal","email":"7bd72f7d993dc68438d5c44b206a948fe16b6898@yandex.ru"},"message":"Merge remote-tracking branch 'upstream/master' into x86-lifter","distinct":true,"url":"https://api.github.com/repos/feseal/bap/commits/9ed340374fc2c8c06eaf60b35aa3ec79a95ab4ce"}]}
{"actor":{"display_login":"feseal"}}