unsoundness due to packed structs
ID0000719:
**This issue was created automatically from Mantis Issue 719. Further discussion may take place here.**
---
| **Id** | **Project** | **Category** | **View** | **Due Date** | **Updated** |
| --- | --- | --- | --- | --- | --- |
| ID0000719 | Frama-C | Kernel | public | 2011-02-13 | 2014-02-12 |
| | | | | | |
| --- | --- | --- | --- | --- | --- |
| **Reporter** | regehr | **Assigned To** | monate | **Resolution** | fixed |
| **Priority** | normal | **Severity** | minor | **Reproducibility** | always |
| **Platform** | - | **OS** | - | **OS Version** | - |
| **Product Version** | Frama-C Carbon-20110201 | **Target Version** | - | **Fixed in Version** | Frama-C Nitrogen-20111001 |
### Description :
Analyzing the attached program like this:
toplevel.opt -val -slevel 14 foo_pp.c
Gives output including this:
g_113.f0 ? {2240865284; }
.f1 ? {-540177875780372926; }
.f2 ? {-1; }
.f3 ? {0; }
.f4 ? {-1; }
.[bits 184 to 191] ? UNINITIALIZED
.f5 ? {-1; }
.f6 ? {-5796648127719171460; }
g_113 is of type S0 which is declared using the pack(1) pragma, which makes all fields 1-byte aligned, so there should be no padding.
Not packing the struct properly causes Frama-C to have an incorrect impression about its layout.
Perhaps a very strongly-worded warning should appear in the output if the pack pragma is encountered in a program, but not honored.
## Attachments
- [foo_pp.c](/uploads/2fd6cb0469a80ccfba34bd381e921237/foo_pp.c)
issue