Giter Club home page Giter Club logo

e2k-ports's People

Contributors

ilyakurdyukov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

e2k-ports's Issues

glib2.0 + libdnf

Глянул патч для glib2.0, я так понял он добавляет возможность использовать всякие g_autoptr
в lcc
Однако вот пытаюсь собрать libdnf-0.70.0
и там лезет

lcc: "/home/omv/libdnf/BUILD/libdnf-0.70.0/libdnf/dnf-lock.cpp", line 226: error #254:
          type name is not allowed
      g_autoptr(GError) error_local = NULL;
                ^

lcc: "/home/omv/libdnf/BUILD/libdnf-0.70.0/libdnf/dnf-lock.cpp", line 226: error #20:
          identifier "g_autoptr" is undefined
      g_autoptr(GError) error_local = NULL;
      ^

в участках кода типа

static guint
dnf_lock_get_pid(DnfLock *lock, const gchar *filename, GError **error)
{
    gboolean ret;
    guint64 pid;
    gchar *endptr = NULL;
    g_autoptr(GError) error_local = NULL;
    g_autofree gchar *contents = NULL;

    g_return_val_if_fail(DNF_IS_LOCK(lock), FALSE);

    /* file doesn't exists */
    ret = g_file_test(filename, G_FILE_TEST_EXISTS);
    if (!ret) {
        g_set_error_literal(error,
                            DNF_ERROR,
                            DNF_ERROR_INTERNAL_ERROR,
                            "lock file not present");
        return 0;
    }

Можно подсказать куда копнуть тут? Проблема в glib2.0 или непосредственно в libdnf?

Пример упавшей сборки
https://file-store.rosalinux.ru/api/v1/file_stores/295646e84de0ec62a601993c58219e1509cd7b69

qt6 на Эльбрус ОС 7.1(e2k) не собирается.

Спасибо вам за патчи, многое помогает и собирается без проблем. Вот захотел qt6 т.к. много где требуется, а вот на Эльбрус ОС 7.1 с компилятором lcc 1.26.16. не собирается, что странно т.к. на Альте видимо всё отлично.

  • 1я ошибка. Смог решить просто закоментив 110 и 111 строку:
    lcc: "/root/dev/qtbase/build/include/QtGui/6.2.4/QtGui/qpa/../../../../../../src/gui/kernel/qplatformintegration.h", строка 111: ошибка #247:
    шаблон класса "QNativeInterface::Private::QInterfaceProxy" уже описан
    struct QInterfaceProxy : public QInterfaceProxyImp<R, I, func, Args...> {};

  • 2я ошибка. Не понял, как решить:
    lcc: "/root/dev/qtbase/src/gui/accessible/linux/qspi_constant_mappings.cpp", строка 80: ошибка #20:
    идентификатор "ATSPI_STATE_READ_ONLY" не определен
    setSpiStateBit(&spiState, ATSPI_STATE_READ_ONLY);

qt5 patch ломает сборку на других архитектурах

Попробовал применить патч для qt5
Ну и получаю ошибку сборки на aarch64

In file included from global/qt_pch.h:56:
../../include/QtCore/../../src/corelib/thread/qbasicatomic.h: In instantiation of 'class QBasicAtomicInteger<long int>':
../../include/QtCore/../../src/corelib/thread/qatomic.h:59:7:   required from 'class QAtomicInteger<long int>'
thread/qatomic.cpp:1754:1:   required from here
global/qglobal.h:121:63: error: static assertion failed: template parameter is an integral of a size not supported on this platform
  121 | #  define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)

oneTBB: assert isMallocInitialized()

Добрый день!

Первоначально я написал это в комментарии к коммиту, но чтобы там не затерялось, выношу в issue.

Проблема

+#ifdef __e2k__
+ // FIXME: many tests failing, first one is "conformance_join_node"
+ // internalPoolFree -> assert isMallocInitialized()
+ bool success = false;
+#else
bool success = dynamic_link(MALLOCLIB_NAME, MallocLinkTable, 4);
+#endif

может быть связана связана с инициализацией переменной mallocInitialized:
https://github.com/oneapi-src/oneTBB/blob/0815661e4c08e4fcaf772d31c1313c63d629a32e/src/tbbmalloc/frontend.cpp#L1944

Багрепорт: oneapi-src/oneTBB#558

Инициализация std::atomic<> с помощью {0} не потокобезопасна в C++11 и новее. Если инициализация и первое использование окажутся в разных потоках, то значение может быть перезаписано и будет ошибка.

Для Visual Studio помогает удаление {0}, но это тоже не совсем согласуется со стандартом (код с удаленным {0} проходит все тесты на GCC-7,8,9,10, Clang 10,11,12 и в соответствующих AppleClang).
В C++20 есть std::atomic_ref, но он поддерживается очень не всеми компиляторами.

webkit segfault

патч для webkit https://github.com/ilyakurdyukov/e2k-ports/blob/main/webkitgtk-2.34.3-e2k.patch
сегфолтит epiphany

bt full
проверил на разных версиях, каждый раз одна и та же ошибка

0x0000455563445920 in JSC::MarkedBlock::Handle::sweep(JSC::FreeList*) () from /usr/lib64/libjavascriptcoregtk-4.0.so.18
(gdb) bt full
#0  0x0000455563445920 in JSC::MarkedBlock::Handle::sweep(JSC::FreeList*) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#1  0x000045556336a360 in JSC::BlockDirectory::sweep() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#2  0x000045556344a458 in JSC::MarkedSpace::sweepBlocks() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#3  0x0000455563390780 in JSC::Heap::sweepSynchronously() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#4  0x00004555633a6f98 in JSC::Heap::finalize() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#5  0x00004555633a03d8 in JSC::Heap::handleNeedFinalize(unsigned int) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#6  0x00004555633a04f0 in JSC::Heap::handleNeedFinalize() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#7  0x000045556339d3b0 in JSC::Heap::finishChangingPhase(JSC::GCConductor) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#8  0x000045556339d190 in JSC::Heap::changePhase(JSC::GCConductor, JSC::CollectorPhase) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#9  0x000045556339b6b0 in JSC::Heap::runEndPhase(JSC::GCConductor) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#10 0x00004555633971d0 in JSC::Heap::runCurrentPhase(JSC::GCConductor, JSC::CurrentThreadState*) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#11 0x00004555633be380 in WTF::ScopedLambdaFunctor<void (JSC::CurrentThreadState&), JSC::Heap::collectInMutatorThread()::{lambda(JSC::CurrentThreadState&)#1}>::implFunction(void*, JSC::CurrentThreadState&) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#12 0x000045556342da48 in JSC::callWithCurrentThreadState(WTF::ScopedLambda<void (JSC::CurrentThreadState&)> const&) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#13 0x000045556339d808 in JSC::Heap::collectInMutatorThread() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#14 0x000045556339f838 in JSC::Heap::stopIfNecessarySlow(unsigned int) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#15 0x000045556339f5e8 in JSC::Heap::stopIfNecessarySlow() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#16 0x0000455563427218 in JSC::LocalAllocator::allocateSlowCase(JSC::Heap&, JSC::GCDeferralContext*, JSC::AllocationFailureMode) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#17 0x0000455562e58280 in void* JSC::tryAllocateCellHelper<JSC::JSFinalObject>(JSC::Heap&, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode) ()
    at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#18 0x00004555636541e8 in JSC::constructEmptyObject(JSC::JSGlobalObject*) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#19 0x00004555646d1118 in JSC::LiteralParser<char16_t>::parse(JSC::ParserState) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#20 0x0000455564477118 in JSC::JSONParse(JSC::JSGlobalObject*, WTF::String const&) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#21 0x000045555d9be650 in  () at /usr/lib64/libwebkit2gtk-4.0.so.37
#22 0x000045555d9bf2a0 in  () at /usr/lib64/libwebkit2gtk-4.0.so.37
#23 0x000045555a578380 in  () at /usr/lib64/libwebkit2gtk-4.0.so.37
#24 0x000045555a6fc3b8 in  () at /usr/lib64/libwebkit2gtk-4.0.so.37
#25 0x000045555a6fc8c8 in webkit_user_content_filter_store_save () at /usr/lib64/libwebkit2gtk-4.0.so.37
#26 0x000045555575e6d0 in  () at /usr/lib64/epiphany/libephymain.so
#27 0x0000455556c41d08 in  () at /usr/lib64/libgio-2.0.so.0
#28 0x00004555570aedf0 in  () at /usr/lib64/libglib-2.0.so.0
#29 0x00004555570a63c8 in  () at /usr/lib64/libglib-2.0.so.0
#30 0x00004555570a8d78 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#31 0x00004555570a9600 in  () at /usr/lib64/libglib-2.0.so.0
#32 0x00004555570a9868 in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#33 0x0000455556cefae8 in g_application_run () at /usr/lib64/libgio-2.0.so.0
#34 0x0000000000017930 in main ()

libffi - а как это вообще работает?

2 момента:

  1. https://github.com/ilyakurdyukov/e2k-ports/blob/main/libffi-3.4.2-e2k.patch#L128 - выделяем на стэке память и сразу выходим за границы куда-то ниже(?) по стэку. По логике у нас там как раз regs_t ret, но так ли это на самом деле? Нельзя выделить память под sizeof(regs_t) + 8 байт?
  2. https://github.com/ilyakurdyukov/e2k-ports/blob/main/libffi-3.4.2-e2k.patch#L128 - что вообще происходит при конвертации указателя на функцию, которая ничего не возвращает и никаких аргуметов не принимает, в функцию, которая возвращает указатель на структуру и принимает его же. По стандарту так вроде делать вообще нельзя, но возможно lcc это проглатывает? Просто при сборке с оптимизациями это иногда падает с SIGILL на https://github.com/ilyakurdyukov/e2k-ports/blob/main/libffi-3.4.2-e2k.patch#L180 , видимо что-то портится на стэке во время вызова самой функции. Без оптимизаций падений не замечено.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.