Hallo,
auf meinem ARMv7 kriege ich zur Laufzeit einen alignment error, beim
Ausführen einer c/c++ mixed Library.
Die mixed Lib wird von einem C Programm genutzt.
In einer C-Datei der mixed Lib macht das folgende (vereinfachte)
Code-Stück Probleme:
1 | // foo.c
|
2 | void bar(){
|
3 |
|
4 | HEADER header = {.tag = tag, .size = 0};
|
5 | // HEADER header;
|
6 | // header.size = 0;
|
7 |
|
8 | printf("%i",header.size); // ERR
|
9 | }
|
Immer wenn ich auf header.size zugreifen möchte, wirft ARM einen
Alignment Error.
Die Art der Initialisierung macht keinen Unterschied.
Es scheint eher, dass g++ den ganzen HEADER-Kram wegschmeisst.
1 | // foo.h
|
2 | #ifdef __cplusplus
|
3 | extern "C" {
|
4 | #endif
|
5 |
|
6 | typedef struct {
|
7 | uint16_t tag;
|
8 | uint32_t size;
|
9 | } HEADER;
|