LINUX.ORG.RU

Сообщения surikon

 

BPF типы программ и helpers

Всем привет. Изучаю bpf с помощью libbpf.

#include "vmlinux.h"
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_core_read.h>

char LICENSE[] SEC("license") = "GPL";

SEC("tp/syscalls/sys_enter_execve")
int handle_tp(void *ctx)
{
 struct task_struct *task;
 task = (struct task_struct*)bpf_get_current_task();
 struct path p;
 p = BPF_CORE_READ(task, mm, exe_file, f_path);
 char path_exe[256];
 bpf_d_path(&p, path_exe, sizeof(path_exe));
 bpf_printk("TASK: %s", path_exe);

 return 0;
}

Есть такая программа, которая пытается вывести полный путь до файла из которого был создан процесс. Тип BPF программы tracepoint

sudo bpftool feature list_builtins helpers

В списке доступных helpers есть bpf_d_path, который должен сформировать строку с путем до файла. Но при попытке загрузить bpf-программу

unknown func bpf_d_path#147

( читать дальше... )

Как я понял, некоторые helpers доступны только для определенного типа программ BPF. Но я не могу найти информацию соответвие helpers типам программ. Также я не могу найти для типов программ какого типа будет контекст - т.е. входные параметры. Кто в курсе просвятите плиз.

  • 1.Не все helpers функции доступны для всех типов BPF-программ?
  • 2.Если не все helpers доступны - то как понять какие функции для конкретного типа BPF-программ доступны?
  • 3.Как узнать входные параметры для контретного типа bpf-программы?

 ,

surikon
()

Qt+mongocxx = undefined symbol: bson_as_relaxed_extended_json

Всем привет. В qt-проекте решил использовать mongodb. Установил с++ драйвер, как написано здесь http://mongocxx.org/mongocxx-v3/installation/ С использованием MNMLSTC/core

cmake -DCMAKE_BUILD_TYPE=Release -DBSONCXX_POLY_USE_MNMLSTC=1 -DCMAKE_INSTALL_PREFIX=/usr/local ..

Собрал и запустил тестовое приложение, которое предлагается. Все отработало успешно.

В рабочий QT проект, в main вставил это тестовое приложение

#include "reestr.h"
#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>

#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>
#include <QApplication>
#include <iostream>

int main(int argc, char *argv[])
{
    mongocxx::instance inst{};
    mongocxx::client conn{mongocxx::uri{}};

    bsoncxx::builder::stream::document document{};

    auto collection = conn["testdb"]["testcollection"];
    document << "hello" << "world";

    collection.insert_one(document.view());
    auto cursor = collection.find({});

    for (auto&& doc : cursor) {
        std::cout << bsoncxx::to_json(doc) << std::endl;
    }

    QApplication a(argc, argv);
    Reestr w;
    w.createActions();
    w.createMenu();
    w.show();

    return a.exec();
}

В QT проекте подключил либы

CONFIG += c++11 link_pkgconfig
PKGCONFIG += libmongocxx

Собрал

22:20:12: Running steps for project Overside...
22:20:12: Starting: "/usr/bin/make" clean
rm -f moc_reestr.cpp moc_settings.cpp
rm -f ui_reestr.h ui_settings.h
rm -f main.o reestr.o settings.o connectionsettings.o moc_reestr.o moc_settings.o
rm -f *~ core *.core
22:20:12: The process "/usr/bin/make" exited normally.
22:20:12: Configuration unchanged, skipping qmake step.
22:20:12: Starting: "/usr/bin/make" 
/usr/lib/x86_64-linux-gnu/qt5/bin/uic ../overside/reestr.ui -o ui_reestr.h
/usr/lib/x86_64-linux-gnu/qt5/bin/uic ../overside/settings.ui -o ui_settings.h
g++ -c -m64 -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../overside -I. -isystem /usr/local/include/mongocxx/v_noabi -isystem /usr/local/include/bsoncxx/v_noabi -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o main.o ../overside/main.cpp
g++ -c -m64 -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../overside -I. -isystem /usr/local/include/mongocxx/v_noabi -isystem /usr/local/include/bsoncxx/v_noabi -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o reestr.o ../overside/reestr.cpp
g++ -c -m64 -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../overside -I. -isystem /usr/local/include/mongocxx/v_noabi -isystem /usr/local/include/bsoncxx/v_noabi -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o settings.o ../overside/settings.cpp
g++ -c -m64 -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../overside -I. -isystem /usr/local/include/mongocxx/v_noabi -isystem /usr/local/include/bsoncxx/v_noabi -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o connectionsettings.o ../overside/connectionsettings.cpp
/usr/lib/x86_64-linux-gnu/qt5/bin/moc -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I/home/gustav/work/overside -I/usr/local/include/mongocxx/v_noabi -I/usr/local/include/bsoncxx/v_noabi -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/6 -I/usr/include/x86_64-linux-gnu/c++/6 -I/usr/include/c++/6/backward -I/usr/lib/gcc/x86_64-linux-gnu/6/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include ../overside/reestr.h -o moc_reestr.cpp
g++ -c -m64 -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../overside -I. -isystem /usr/local/include/mongocxx/v_noabi -isystem /usr/local/include/bsoncxx/v_noabi -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o moc_reestr.o moc_reestr.cpp
/usr/lib/x86_64-linux-gnu/qt5/bin/moc -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I/home/gustav/work/overside -I/usr/local/include/mongocxx/v_noabi -I/usr/local/include/bsoncxx/v_noabi -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/6 -I/usr/include/x86_64-linux-gnu/c++/6 -I/usr/include/c++/6/backward -I/usr/lib/gcc/x86_64-linux-gnu/6/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include ../overside/settings.h -o moc_settings.cpp
g++ -c -m64 -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../overside -I. -isystem /usr/local/include/mongocxx/v_noabi -isystem /usr/local/include/bsoncxx/v_noabi -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o moc_settings.o moc_settings.cpp
g++ -m64 -o Overside main.o reestr.o settings.o connectionsettings.o moc_reestr.o moc_settings.o   -L/usr/X11R6/lib64 -L/usr/local/lib -lmongocxx -lbsoncxx -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread 
22:20:19: The process "/usr/bin/make" exited normally.
22:20:19: Elapsed time: 00:07.

По выхлопу сборки видно что либы добавлены. А при запуске приложения получаю

symbol lookup error: /usr/local/lib/libbsoncxx.so._noabi: undefined symbol: bson_as_relaxed_extended_json

В чем проблема может быть?

 , ,

surikon
()

WebKitGtk без GUI

Всем привет. Использую WebKitGTK в своем приложении. Не знаю как с ним работать, чтобы не создавать окна с помощью gtkmm и не рисовать сраницу. Прошу пример работы, чтобы webkit просто, подгружал страницу, строил DOM, но без GUI.

 , ,

surikon
()

RSS подписка на новые темы