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 ответов

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

Та самая вставка: #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.

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта