Вопросы по теме 'abi'

Почему Mac ABI требует выравнивания стека по 16 байт для x86-32?
Я могу понять это требование для старых систем PPC RISC и даже для x86-64, но для старого проверенного x86? В этом случае стек необходимо выровнять только по 4-байтовым границам. Да, некоторые инструкции MMX / SSE требуют 16-байтового выравнивания,...
7236 просмотров

Создание библиотеки с обратно совместимым ABI, использующим Boost
Я работаю над определенной библиотекой C ++ (или более фреймворком). Я хочу сделать его обратно совместимым с предыдущими версиями, сохранив не только совместимость API, но и ABI (как это делает Qt). Я использую множество функций Boost, и мне...
7492 просмотров
schedule 15.05.2024

Общие библиотеки и компоновка в Linux (elf)
Я прочитал ветку Создание библиотеки с обратно совместимым ABI, которая использует Boost , и теперь я пытаюсь понять, как связать свои разделяемые библиотеки, чтобы поддерживать стабильный ABI и избегать проблем с мешающими символами. Я создал...
477 просмотров
schedule 12.01.2023

Какое состояние регистра по умолчанию при запуске программы (asm, linux)?
Когда программа запускается (linux, elf) - есть ли нули в eax , ebx и т.д. или может быть что угодно (я не делаю никаких вызовов и не использую внешние библиотеки)? На моей машине это действительно так, могу ли я использовать такое поведение при...
3934 просмотров
schedule 12.07.2022

Нарушает ли ABI изменение порядка общедоступных невиртуальных методов в автономном классе?
Нарушает ли ABI изменение порядка общедоступных невиртуальных не встроенных перегруженных методов в автономном классе? До: class MyFinalClass { public: // ... void doSomething(char c, int i, int n); void doSomething(char c, int i);...
354 просмотров
schedule 15.01.2024

В каких случаях компилятору C разрешено игнорировать соглашения о вызовах?
По понятным причинам компилятор C должен скомпилировать все функции, видимые извне для других разделяемых библиотек, чтобы они соответствовали соглашениям о вызовах платформы и другим требованиям ABI. Однако я узнал, что это не обязательно нужно...
152 просмотров

Есть ли у стандартного C++ ABI реальное снижение производительности?
Я думаю, что каждый профессиональный разработчик C++ знает, как сложно написать общую библиотеку на C++, которая работает в разных компиляторах. Это связано с тем, что C++ (и C) не имеет стандартного ABI. Основной причиной отсутствия ABI является...
327 просмотров
schedule 11.01.2023

Есть сигнатура для конкретного ABI в ELF или бинарном файле?
Мне нужно определить ABI, используемый для создания некоторых двоичных файлов, программ, динамических и статических библиотек. Я хотел бы спросить, есть ли свойство, тег или строка, которые я могу проверить с помощью какого-нибудь внешнего...
1050 просмотров
schedule 13.03.2023

rails ELF file OS ABI недействителен на сервере linux server
У меня проблемы с моим приложением rails, когда я пытаюсь запустить rake db:migrate на сервере (или, например, rails c), я получаю эту трассировку стека: рейк прерван! Ошибка загрузки:...
384 просмотров
schedule 16.04.2022

Несоответствие ошибки ссылки на юнит-тестирование Boost abi?
Я пытаюсь создать модульный тест с повышением, но компоновщик жалуется на отсутствующую функцию. Возьмите этот скелетный код #define BOOST_TEST_DYN_LINK #define BOOST_TEST_MAIN #include <boost/test/unit_test.hpp>...
2896 просмотров
schedule 06.12.2022

x86_64 ABI: проблема с разборкой
У меня есть следующий код на C: #include <stdio.h> int function(int a, int b) { int res = a + b; return res; } int main(){ function(1,2); exit(0); } Я компилирую его для x86-64 с помощью gcc 4.8.2 (под Ubuntu 14),...
119 просмотров
schedule 24.04.2024

Каковы последствия использования _GLIBCXX_CXX11_ABI для использования C++ ABI до версии 5.1 с функциями C++ 11/14?
Из руководства: В выпуске GCC 5.1 libstdc++ представил новую библиотеку ABI, которая включает новые реализации std::string и std::list. Эти изменения были необходимы для соответствия стандарту C++ 2011 года, который запрещает копирование...
767 просмотров
schedule 15.03.2023

Android NDK: Как собрать для ARM64-v8a с minimumSdkVersion = 19
У меня есть проект библиотеки Android, часть которого написана на C/C++ через Android NDK. Я хочу создать собственный код для всех архитектур. Если я устанавливаю minSdkVersion на 21, все работает нормально. но мне нужно иметь более низкий...
8977 просмотров
schedule 24.02.2023

Зачем в голой функции Rust лишние инструкции ASM?
Я оборачиваю низкоуровневый ABI в Rust, используя функцию naked . Вот мой код и соответствующая разборка #![feature(asm)] #![feature(naked_functions)] struct MyStruct { someVar: i64, // not important // ... } impl...
1092 просмотров
schedule 15.02.2023

Стабильность ABI для указателей на символы по сравнению с обычным поиском символов
Общий сценарий Используя dlsym(), я динамически загружаю надстройку общего объекта из моего основного потока. Я следую любому из этих двух способов. Путь А Передайте аддону структуру указателей на символы, чтобы он мог вызывать функции...
59 просмотров
schedule 17.08.2022

Win64 против System V ABI (x86_64): Win64 пропускает регистры?
Предположим, у нас есть функция C (или C++) со следующей сигнатурой: void foo(int64_t a, double b, int64_t c, double d); При компиляции в Linux, Mac или любой ОС, использующей System V ABI (x86_64), a и c передаются в регистрах rdi и...
430 просмотров
schedule 10.01.2023

clang - бесполезный push rax и pop rcx?
Сегодня, разбирая некоторые бинарники, которые я собрал ранее (clang x86_64), я наткнулся на кое-что [на первый взгляд] бесполезное. _baz: ## @baz .cfi_startproc ## BB#0: pushq %rax ; What? Ltmp7:...
166 просмотров
schedule 25.10.2022

Генерация нескольких Apk в соответствии с собственным ABI
Я создаю APK выпуска на основе ABI из-за размера APK для публикации в Play store . Итак, я начал сборку apk для ABI = armeabi-v7a , а затем построил ABI = x86 и ABI = areambi . так что мой градиент выглядит так приложение Gradle...
918 просмотров

Как C++ ABI справляется с RVO и NRVO?
Меня смущает то, как компилятор и компоновщик справляются с тем фактом, что требования к вызову er функции различаются в зависимости от того, использует ли функция RVO или NRVO. Это может быть мое недоразумение, но я предполагаю, что вообще без...
685 просмотров
schedule 10.03.2023

RTTI для виртуального наследования (без виртуальных функций)
Я заметил, что и Clang, и GCC генерируют информацию о типах для неполиморфных типов с виртуальным наследованием. Как я понял, по стандарту этого не требуется. Почему они это делают, и как это используется? Пример: #include <iostream>...
228 просмотров
schedule 25.01.2024