2 files changed, 49 insertions, 2 deletions
diff --git a/README.md b/README.md
index f96e02e..44e5f04 100644
--- a/README.md
+++ b/README.md
@@ -33,7 +33,8 @@ Then run `guix pull`.
### Synthesis
-- [python-pacfix]: PAC-learning-based program systhesizer
+- [python-pacfix]: PAC-learning-based program synthesizer
+- [taosc]: Makeshift binary patch generator
## Bugs
@@ -87,6 +88,7 @@ Then run `guix pull`.
[afl-dyninst]: https://trong.loang.net/~cnx/afl-dyninst/about
[e9patch]: https://github.com/GJDuck/e9patch
[python-pacfix]: https://github.com/hsh814/pacfix-python
+[taosc]: https://trong.loang.net/~cnx/taosc/about
[redhat-955808]: https://bugzilla.redhat.com/show_bug.cgi?id=955808
[jasper-d42b238]: https://blogs.gentoo.org/ago/2016/11/19/jasper-signed-integer-overflow-in-jas_image-c
[oss-sec-20161105-3]: https://www.openwall.com/lists/oss-security/2016/11/05/3
diff --git a/loftix/synthesis.scm b/loftix/synthesis.scm
index 83f3398..6912372 100644
--- a/loftix/synthesis.scm
+++ b/loftix/synthesis.scm
@@ -17,13 +17,23 @@
;;; along with Loftix. If not, see <http://www.gnu.org/licenses/>.
(define-module (loftix synthesis)
+ #:use-module (gnu packages debug)
+ #:use-module (gnu packages elf)
+ #:use-module (gnu packages instrumentation)
+ #:use-module (gnu packages m4)
+ #:use-module (gnu packages parallel)
+ #:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-xyz)
+ #:use-module (guix build-system gnu)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module ((guix licenses) #:prefix license:)
- #:use-module (guix packages))
+ #:use-module (guix packages)
+ #:use-module (loftix fuzzing)
+ #:use-module (loftix patching))
(define-public python-pacfix
(package
@@ -49,3 +59,38 @@
(description "Pacfix systhesizes predicate expressions for program repair
from values in possitive and negative examples using a PAC learning algorithm.")
(license license:expat)))
+
+(define-public taosc
+ (package
+ (name "taosc")
+ (version "0.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://trong.loang.net/~cnx/taosc/snapshot/taosc-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "08rjivhg3brx6n5jgxfwcqbwb3ranrvjxwrdbqd8pwrpfa5jhqy2"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:make-flags #~(list (string-append "PREFIX=" #$output))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'check)
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (wrap-program (search-input-file outputs "bin/taosc-synth")
+ `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))))))
+ #:validate-runpath? #f))
+ (native-inputs (list m4))
+ (inputs (list dyninst))
+ (propagated-inputs (list afl-dyninst aflplusplus
+ e9patch patchelf
+ python python-pacfix
+ parallel))
+ (synopsis "Emergency binary patcher")
+ (description "Taosc generates emergent fixes for binaries.")
+ (home-page "https://trong.loang.net/~cnx/taosc")
+ (license license:agpl3+)))
|