X-Git-Url: https://git.siccegge.de//index.cgi?p=frida%2Ffrida.git;a=blobdiff_plain;f=src%2Fbindings%2FGuile.cxx;h=d4295c475411d2ae939c1dc0925c5f955938c200;hp=c452e7667dafc5225251274d99ca9782f929a5b2;hb=25c5224fd78d69d669d4f2722ffd2f512a65834e;hpb=914bc03c4ed200f495288d8483f4b9909368b4fd diff --git a/src/bindings/Guile.cxx b/src/bindings/Guile.cxx index c452e76..d4295c4 100644 --- a/src/bindings/Guile.cxx +++ b/src/bindings/Guile.cxx @@ -1,5 +1,6 @@ #include "Guile.hxx" #include "Config.hxx" +#include "core/Settings.hxx" namespace { SCM handler (void*, SCM tag, SCM throw_args) { @@ -8,18 +9,27 @@ namespace { } } -GuileInterpreter::GuileInterpreter() { +GuileInterpreter::GuileInterpreter() + : logger(log4cxx::Logger::getLogger("bindings.Guile")) { + + QString socketpath = Settings::get()->getRuntimeDirectory()->canonicalPath() + + "/frida." + QString::number(QCoreApplication::applicationPid(), 16) + ".geiser.sock"; + scm_init_guile(); + SCM scm_socketpath = scm_from_locale_string(socketpath.toStdString().c_str()); scm_c_use_module("system repl server"); - scm_call_0(scm_c_public_ref("system repl server", "spawn-server")); - scm_c_load_extension(CONFIG_LIBDIR "/frida/plugins/Interpreter/libguile-frida-binding", + SCM socket = scm_call_2(scm_c_public_ref("system repl server", "make-unix-domain-server-socket"), + scm_from_locale_keyword("path"), scm_socketpath); + scm_call_1(scm_c_public_ref("system repl server", "spawn-server"), socket); + scm_c_load_extension("libguile-frida-binding", "scm_init_frida_module"); guile_output_port = scm_open_output_string(); guile_error_port = scm_open_output_string(); scm_set_current_output_port(guile_output_port); scm_set_current_error_port(guile_error_port); + LOG4CXX_INFO(logger, "Initializing GUILE finished"); } int GuileInterpreter::evaluate(const std::string& command, @@ -52,5 +62,8 @@ int GuileInterpreter::loadFile(const std::string& filename, std::ostream& stdout, std::ostream& stderr, std::string& result) { + LOG4CXX_INFO(logger, "Loading file \"" << filename << "\""); scm_c_primitive_load(filename.c_str()); + LOG4CXX_INFO(logger, "Finished file \"" << filename << "\""); + return 0; }