215 похожих чатов

Добрый день, собираю для arm64 Получаю какую-то странную вещь в unwind: /src/backtrace.cc:

In function ‘void coro_unwcontext(unw_context_t*, coro_context*)’:
/src/backtrace.cc:365:3: warning: asm operand 2 probably doesn’t match constraints
365 | );
| ^
/src/backtrace.cc:365:3: error: impossible constraint in ‘asm’
В асм вставке меняю у третьего аргумента "i" на "rm" и все компилируется, НО
Будет ли оно работать? Как проверить?

12 ответов

5 просмотров
Игрь-Минеев Автор вопроса

Та самая вставка: #elif __aarch64__ __asm__ volatile( /* Save current context */ "\tsub x1, sp, #8 * 20\n" "\tstp x19, x20, [x1, #16 * 0]\n" "\tstp x21, x22, [x1, #16 * 1]\n" "\tstp x23, x24, [x1, #16 * 2]\n" "\tstp x25, x26, [x1, #16 * 3]\n" "\tstp x27, x28, [x1, #16 * 4]\n" "\tstp x29, x30, [x1, #16 * 5]\n" "\tstp d8, d9, [x1, #16 * 6]\n" "\tstp d10, d11, [x1, #16 * 7]\n" "\tstp d12, d13, [x1, #16 * 8]\n" "\tstp d14, d15, [x1, #16 * 9]\n" /* Restore target context */ "\tldr x2, [%1]\n" "\tldp x19, x20, [x2, #16 * 0]\n" "\tldp x21, x22, [x2, #16 * 1]\n" "\tldp x23, x24, [x2, #16 * 2]\n" "\tldp x25, x26, [x2, #16 * 3]\n" "\tldp x27, x28, [x2, #16 * 4]\n" "\tldp x29, x30, [x2, #16 * 5]\n" "\tldp d8, d9, [x2, #16 * 6]\n" "\tldp d10, d11, [x2, #16 * 7]\n" "\tldp d12, d13, [x2, #16 * 8]\n" "\tldp d14, d15, [x2, #16 * 9]\n" "\tmov sp, x2\n" /* Setup fisrst arg */ "\tmov x0, %0\n" "\tbl %2\n" /* Restore context (old sp in x0) */ "\tldp x19, x20, [x0, #16 * 0]\n" "\tldp x21, x22, [x0, #16 * 1]\n" "\tldp x23, x24, [x0, #16 * 2]\n" "\tldp x25, x26, [x0, #16 * 3]\n" "\tldp x27, x28, [x0, #16 * 4]\n" "\tldp x29, x30, [x0, #16 * 5]\n" "\tldp d8, d9, [x0, #16 * 6]\n" "\tldp d10, d11, [x0, #16 * 7]\n" "\tldp d12, d13, [x0, #16 * 8]\n" "\tldp d14, d15, [x0, #16 * 9]\n" "\tadd sp, x0, #8 * 20\n" : : "r" (unw_context), "r" (coro_ctx), "i" (unw_getcontext_f) : /*"lr", "r0", "r1", "ip" */ "x0", "x1", "x2", "x30" ); #endif Аргумент unw_getcontext_f "i" : An immediate integer operand (one with constant value) is allowed. This includes symbolic constants whose values will be known only at assembly time.

Здесь затрудняюсь сказать. Когда тестировали - так работало. Что там значит "i" уже не помню. Тестировать через вызов backtrace (fiber.backtrace())

"в-любой непонятной ситуации выключай backtrace" Добавьте -DENABLE_BACKTRACE=OFF в cmake

Это не интересно, с выключенными бэктрейсами компилируется 😊

А как packpack'у этот флаг скормить?

No Idea

А какая версия Tarantool и какой toolchain?

1.10.8.51 gcc 9.3 aarch64

https://gcc.gnu.org/onlinedocs/gcc/Simple-Constraints.html#Simple-Constraints Вот тут немного иной комментарий. > ‘i’ > > An immediate integer operand (one with constant value) is allowed. This includes symbolic constants whose values will be known only at assembly time or later. >

Игрь-Минеев Автор вопроса

Ровно то же что я и написал, нет?

В моем варианте at assembly time or later.

не, так нельзя

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Нужен пулл реквест с хаммингберд + асинкхттпклиент или хаммингберд + юрлсессия?
Karl {🌪️}{🐊} Shinobi
7
Всем привет. Поделитесь, пожалуйста, опытом. Есть форма, на которой имеется dbgrid и кнопки: добавить, редактировать, удалить. Если нет записей в dbgrid, то кнопки редактирова...
Евгений
5
может там как раз сжатие?
Дмитрий
7
Как структуру (из MSVC) в которой описаны битовые поля описать для fasm? Вот например это (fBinary...fDummy2 - это физически 1 DWORD): typedef struct _DCB { DWORD DCBlength;...
Евгений
3
type TExtensions<GExtender>=class function GetExtension<GEntityExtenderType>:GEntityExtenderType; end; function TExtensions<GExtender>.GetExtension<GEntityExtenderType...
zamtmn
9
Карта сайта