LINUX.ORG.RU

История изменений

Исправление kvpfs_2, (текущая версия) :

Не совсем понял в каком месте ошибка, но может дело в этом:

constexpr AppInfo appInfo __attribute__((section(".app_info"), used)) =
{
    0x0002,
    0x0001,
    "My Device",
    calcCrc32(&appInfo, offsetof(AppInfo, crc))
};

Какая-то дерьмовая идея инициализировать член структуры функцией от других членов тоё же структуры, при том что инициализация не завершена. Может разнести как-то?

struct AppInfo
{
    uint32_t signature;
    uint32_t version;
    char name[20];
};
constexpr AppInfo app_info_inst_0 {...};
constexpr uint32_t appInfo_crc_inst_0 = ...;

PS: я твой пример со своей calcCrc32() скомпилил, потом заменил bit_cast на __builtin_bit_cast, ошибок не было. Но поля лучше разнести

Исходная версия kvpfs_2, :

Не совсем понял в каком месте ошибка, но может дело в этом:

constexpr AppInfo appInfo __attribute__((section(".app_info"), used)) =
{
    0x0002,
    0x0001,
    "My Device",
    calcCrc32(&appInfo, offsetof(AppInfo, crc))
};

Какая-то дерьмовая идея инициализировать член структуры функцией от других членов тоё же структуры, при том что инициализация не завершена. Может разнести как-то?

struct AppInfo
{
    uint32_t signature;
    uint32_t version;
    char name[20];
};
constexpr AppInfo app_info_inst_0 {...};
constexpr uint32_t appInfo_crc_inst_0 = ...;