Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Remove some inappropriate uses of __attribute__((packed))
__attribute__((packed)) means "ignore all alignment requirements on members of this structure". This is useful if one needs to map onto a structure in memory that has misaligned fields on purpose, but those cases are extremely rare. The side effect of the attribute is that taking a pointer to any field longer than a single byte, and dereferencing that pointer, is unsound and may crash the program on architectures that care about memory alignment when reading/writing multibyte values. Newer GCC versions can detect some of those unsafe cases and produce a warning for it. This commit only removes those cases. However, most, if not all, uses of ((packed)) in HelenOS are unnecessary and a product of misunderstanding what the attribute actually does. A common misconception is that it is needed to avoid compiler adding arbitrary padding into the structure, but that is simply not true. There is exactly one correct memory layout for any C structure, because there must be one layout for binary interoperability to exist and the one everyone uses (except perhaps some goblin who just wants to break things for fun) is the trivial best layout possible with given constraints.
- Loading branch information
Showing
3 changed files
with
14 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters