Segfault моделируя #embed на GCC 14C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Segfault моделируя #embed на GCC 14

Сообщение Anonymous »

У меня есть проект, который должен использовать GCC 14, который не имеет поддержки #embed. < /p>
Я попытался моделировать его следующим образом. < /p>
#include
#include

namespace {
namespace {
extern "C" {
extern std::byte const t1StartPtr[];
extern std::byte const t1EndPtr[];
}
asm(R"(
.section .rodata
.global t1StartPtr
.global t1EndPtr
.balign 8
t1StartPtr:
.incbin "/tmp/t1File.zip"
t1EndPtr:
)");
std::span t1 { t1StartPtr, t1EndPtr };
}

// Adding this reference makes the crash go away
//std::span const & t1ConstRef = t1;

namespace {
extern "C" {
extern std::byte const t2StartPtr[];
extern std::byte const t2EndPtr[];
}
asm(R"(
.section .rodata
.global t1StartPtr
.global t1EndPtr
.balign 8
t2StartPtr:
.incbin "/tmp/t2File.zip"
t2EndPtr:
)");
std::span t2 { t2StartPtr, t2EndPtr };
}

// Adding this reference makes the crash go away
//std::span const & t2ConstRef = t2;
}
< /code>
Все отлично подходят для первого файла, который я включаю. (очень вероятно), что я наткнулся на какое -то неопределенное поведение - особенно потому, что я смешиваю в встроенной сборке, но я не уверен, что именно неправильно. /> По словам, что std :: span правильно выровнен (они оба выровнены по границам 16 байтов) < /li>
Проверка (в отладчике), что _m_ptr в 2 -й промежутке записан. Исправьте проблему) Может ли кто -нибудь заметить то, что я делаю не так (конечно, я довольно слаб в своей встроенной сборке).

Подробнее здесь: https://stackoverflow.com/questions/797 ... -on-gcc-14
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»