|
| 1 | +2.5.0 |
| 2 | +===== |
| 3 | + |
| 4 | +### Features |
| 5 | +- #1390 adds the flattening pass to the library interface |
| 6 | +- #1389 adds `insn-code` to the `Theory.Semantics` clas |
| 7 | +- #1394 adds the `Bitvec.modular` function |
| 8 | +- #1395 adds LLVM 13/14 compatibility |
| 9 | +- #1408 adds support for mips64el target |
| 10 | +- #1409 adds the `--print-missing` option to print unlifed instructions |
| 11 | +- #1410 adds several new Primus Lisp primitives and new instructions |
| 12 | +- #1428 adds the monad choice interface to the knowledge base |
| 13 | +- #1429 refines the `Theory.Target.matches` and adds the `matching` function |
| 14 | +- #1434 adds arm unpredicated BL instruction |
| 15 | +- #1444 adds the x86/amd64 plt corrector component to the Primus base system |
| 16 | +- #1445 updates the `Sub.compute_liveness` function to handle SSA form |
| 17 | +- #1446 provides the new liveness analysis |
| 18 | +- #1452 implements pcode floating-point and special operators |
| 19 | +- #1457 adds optional `join` for `Knowledge.Domain.mapping` |
| 20 | +- #1461 enables v8.{1,2,3,4,5,6}a revisions for the aarch64 target |
| 21 | +- #1464 adds arbitrary-precision loopless clz and popcount to Primus Lisp |
| 22 | +- #1460 adds compatibility with Core_kernel >= 0.15 |
| 23 | +- #1466 adds semantics for the x86 SSE floating-point instructions |
| 24 | +- #1469 adds the jump destination addresses/names to the assembly output |
| 25 | +- #1458 adds more aarch64 instructions |
| 26 | +- #1473 adds an `--arm-features` command-line option |
| 27 | +- #1476 implements the naming scheme for interrupts |
| 28 | +- #1479 reifies external subroutines and intrinsics into I |
| 29 | +- #1482 enables BIR subroutines without an explicit return |
| 30 | +- #1481 enables disabling the patterns plugin |
| 31 | +- #1483 implements floating-point intrinsic subroutines |
| 32 | +- #1488 adds compatibility with OCaml 4.14 and Core v0.15 |
| 33 | +- #1489 adds some missing functionality to Primus Lisp POSIX |
| 34 | +- #1490 adds some missing C POSIX APIs |
| 35 | +- #1492 makes bit-twiddling operations easier to read and analyze |
| 36 | +- #1493 adds smart constructors and destructors to the C types library |
| 37 | +- #1491 adds semantics for the x86-64 `popq` instruction |
| 38 | +- #1497 extends the C.Abi library |
| 39 | +- #1498 adds the extended lvalue assignment to Primus Interpreter |
| 40 | +- #1499 makes BIL smart constructors smart |
| 41 | +- #1500 makes argument passing well-typed |
| 42 | +- #1503 reimplements C types printing functions |
| 43 | +- #1504 extends the demanglers library to the new targets infrastructure |
| 44 | +- #1505 rewrites x86 abi using the new infrastructure |
| 45 | +- #1511 implements some missing Thumb instructions |
| 46 | +- #1513 implements the x86_64 padd instructions |
| 47 | +- #1515 allows target overriding |
| 48 | +- #1516 adds armv8 BFM instructions |
| 49 | +- #1517 publishes Theory.Target.nicknames and extends Primus Contexts |
| 50 | +- #1519 extends Core Theory with target registration and lookup |
| 51 | +- #1520 adds the high-level calling convention specification language |
| 52 | +- #1521 reimplements x86 targets using the new infrastructure |
| 53 | +- #1522 reimplements ARM ABI and target specification |
| 54 | +- #1523 rewrites mips targets and abi |
| 55 | +- #1524 adds C data type layout |
| 56 | +- #1525 adds the pass by reference argument passing method |
| 57 | +- #1526 restructures powerpc targets and reimplements ppc32 eabi |
| 58 | +- #1529 makes the ABI processors usable programmatically |
| 59 | + |
| 60 | +### Bug Fixes |
| 61 | +- #1391 fixes ARM/Thumb `movt` semantics |
| 62 | +- #1396 fixes the path plugin loader path handling |
| 63 | +- #1414 fixes the pc value in pc-relative thumb ldr |
| 64 | +- #1420 fixes the low-level Disasm_expert.Basic.create function |
| 65 | +- #1421 fixes the core-theory plugin semantics tags |
| 66 | +- #1426 fixes arm predication |
| 67 | +- #1438 reads correctly unqualified system names |
| 68 | +- #1439 fixes a bug in the KB update function, adds new functions |
| 69 | +- #1448 fixes an accidental dependency on the bap-traces internal module |
| 70 | +- #1449 fixes unconditional pop with return in thumb |
| 71 | +- #1455 fixes register assignments in p-code semantics |
| 72 | +- #1462 fixes the `cast-signed` Primus Lisp primitive |
| 73 | +- #1463 fixes the arithmetic modulus in Primus Lisp primitives |
| 74 | +- #1465 fixes handling of `jmp term`s in the flatten pass |
| 75 | +- #1467 fixes a sporadic internal error in the cache garbage collector |
| 76 | +- #1468 fixes the relocation symbolizer incorrect handling of intrinsics |
| 77 | +- #1458 fixes aarch64 bitmask immediate encoding |
| 78 | +- #1486 fixes type unification on binary operation application |
| 79 | +- #1485 fixes little-endian MIPS disassembling |
| 80 | +- #1494 fixes the encoding of the comparison operators |
| 81 | +- #1496 fixes registers allocation in the abi specification DSL |
| 82 | +- #1502 fixes the bitvector order function |
| 83 | +- #1528 fixes armv4t name that was missing the arm prefix |
| 84 | + |
| 85 | + |
| 86 | +### Tooling |
| 87 | +- #1393 improves the Primus Lisp documentation generator |
| 88 | +- #1397 fixes the macOS CI build |
| 89 | +- #1399 updates the url of the testing repo to use the encrypted version |
| 90 | +- #1432 updates the docker image |
| 91 | +- #1435 selects specific llvm components for linking |
| 92 | +- #1447 updates to the git+https in the dockerfiles |
| 93 | +- #1470 corrects linking of Unix library in configure |
| 94 | +- #1478 fixes the opam/opam dev-repo protocol which broke the release action |
| 95 | +- #1480 adds an automation to build a docker image for the latest release |
| 96 | +- #1514 adds the mmap dependency |
| 97 | + |
| 98 | + |
| 99 | +### Improvements |
| 100 | +- #1386 adds missing ARM target ABI information |
| 101 | +- #1388 adds aliasing information for x86 |
| 102 | +- #1392 adds an option to directly use ogre files as a loader |
| 103 | +- #1398 provides the assembly string as a promise (removes #undefined) |
| 104 | +- #1400 improves the computation of the instruction properties |
| 105 | +- #1401 improves the KB.Value merge operation |
| 106 | +- #1402 moves promises and theories into the core-theory plugin |
| 107 | +- #1403 moves knowledge base rules from the library to the plugin |
| 108 | +- #1404 improves the peformance of the byte patterns matcher (1/3) |
| 109 | +- #1405 improves the performance of bitvectors (2/3) |
| 110 | +- #1411 [optimization] do not store empty objects in the knowledge base |
| 111 | +- #1412 updates the KB version number and adds a few more microoptimizations |
| 112 | +- #1413 updates bap to latest OCaml, switches to newer bitstrings |
| 113 | +- #1415 switches to patricia trees in the KB implementation |
| 114 | +- #1416 Reimplements x86 bitscan and popcnt |
| 115 | +- #1418 uses the builtin clz function from base, instead of the custom one |
| 116 | +- #1417 relaxes the speculative disassembler constraints |
| 117 | +- #1419 allows bapbuild to work when bap and other defaults are not present |
| 118 | +- #1422 relaxes interpreters to allow ill-typed operations |
| 119 | +- #1425 applies ARM modified immediate (MIC) decoding in more places |
| 120 | +- #1423 reimplements clz using the branchless/loopless algorithm |
| 121 | +- #1427 removes unnecessary units from the knowledge base |
| 122 | +- #1430 refines and extends target definitions |
| 123 | +- #1431 partially upgrades byteweight to work with the modern bap |
| 124 | +- #1441 uses Allen's Interval Algebra in the KB.Value merge implementation |
| 125 | +- #1442 wraps proposals into with_empty and adds more guards |
| 126 | +- #1443 adds subinstruction contraction to improve the ghidra lifter output |
| 127 | +- #1433 adds mode events to traces |
| 128 | +- #1450 hushes bil lifters |
| 129 | +- #1451 removes falls-through from unconditional branches in IR reification |
| 130 | +- #1454 improves the setw function used |
| 131 | +- #1456 removes Thumb2 branches from the legacy ARM lifter |
| 132 | +- #1471 uses function starts as the entires when building the symtab |
| 133 | +- #1472 improves disassembler performance |
| 134 | +- #1475 unifies name generation for IR subroutines |
| 135 | +- #1477 removes the special Primus Lisp primitive |
| 136 | +- #1484 disables byteweight |
| 137 | +- #1487 reduces memory footprint |
| 138 | +- #1501 makes all C data type sizes a multitude of their alignment |
| 139 | +- #1506 optimizes encoding computation for x86 |
| 140 | +- #1510 adds an example on how to create a monad transformer stack (#1354) |
| 141 | +- #1518 uses signed casts for promoting arguments |
| 142 | +- #1530 turns x86 endbr instructions into nops |
| 143 | +- #1531 adds patterns to recognize certain x86 endbr as function starts |
| 144 | +- #1532 improves the main subroutine discovery within glibc runtime |
| 145 | +- #1535 prevents knowledge conflicts on mangled names |
| 146 | + |
1 | 147 | 2.4.0
|
2 | 148 | =====
|
3 | 149 |
|
|
0 commit comments