Groups | Search | Server Info | Login | Register
Groups > comp.arch.embedded > #32463
| From | Grant Edwards <invalid@invalid.invalid> |
|---|---|
| Newsgroups | comp.arch.embedded |
| Subject | Re: arm-gcc, Cortex-M0+, uint64_t and alignment |
| Date | 2026-01-20 16:41 +0000 |
| Organization | PANIX Public Access Internet and UNIX, NYC |
| Message-ID | <10kob7m$qel$1@reader2.panix.com> (permalink) |
| References | <10kns7l$1733k$1@dont-email.me> <10ko98i$1bptj$1@dont-email.me> |
On 2026-01-20, David Brown <david.brown@hesbynett.no> wrote: > You can't reduce the alignment of a struct or its elements by adding an > __aligned_ attribute to the struct itself or any of its fields. The > best you can do on the struct itself is __attribute__((packed)). But > that can come with disadvantages, and inefficient use. Yep making a structure aligned is an excellent way to introduce subtle bugs that happen when somebody, somewhere passes a pointer to one of those structure fields to some library function. Somebody I used to work with was very fond of making all of his structures aligned (for no apparent reason). Then he would test his code on an X86 desktop machine. It worked fine because the X86 support unaligned accesses. Then he would move to an ARM target, and it would fail. Inevitably the cry "The compiler's broken!" would be heard, and I would have to explain to him for the Nth time about misaligned accesses on different ARM targets. Some of our targets generate a bus fault, some just silently read/write only part of the data. That same guy once insisted that with the 32-bit GCC compiler we were using "unsigned long variables work, but unsigned variables don't". So he was busily changing all of his "unsigned" variables to "unsigned long". I printed out the assembly generated for both cases showing that it was identical. He then insisted that the linker must be doing something to break unsigned integers. And then there was the time he decided that cross compiling on a single-core Linux host worked but compiling on a dual-core didn't. [Both cases using a single-threaded "make".] And the time he decided that he needed to upgrade a buch of the Ubuntu X11 libraries on the X86 host machine to fix a problem in the ARM target. -- Grant
Back to comp.arch.embedded | Previous | Next — Previous in thread | Next in thread | Find similar
arm-gcc, Cortex-M0+, uint64_t and alignment pozz <pozzugno@gmail.com> - 2026-01-20 13:26 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment David Brown <david.brown@hesbynett.no> - 2026-01-20 17:07 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment Grant Edwards <invalid@invalid.invalid> - 2026-01-20 16:41 +0000
Re: arm-gcc, Cortex-M0+, uint64_t and alignment pozz <pozzugno@gmail.com> - 2026-01-20 18:09 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment David Brown <david.brown@hesbynett.no> - 2026-01-20 18:44 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment pozz <pozzugno@gmail.com> - 2026-01-21 09:11 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment David Brown <david.brown@hesbynett.no> - 2026-01-21 10:02 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment pozz <pozzugno@gmail.com> - 2026-01-21 15:58 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment David Brown <david.brown@hesbynett.no> - 2026-01-21 17:13 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment pozz <pozzugno@gmail.com> - 2026-01-21 17:57 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment David Brown <david.brown@hesbynett.no> - 2026-01-22 10:03 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment Grant Edwards <invalid@invalid.invalid> - 2026-01-20 17:48 +0000
Re: arm-gcc, Cortex-M0+, uint64_t and alignment David Brown <david.brown@hesbynett.no> - 2026-01-20 18:41 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment Grant Edwards <invalid@invalid.invalid> - 2026-01-20 18:10 +0000
Re: arm-gcc, Cortex-M0+, uint64_t and alignment David Brown <david.brown@hesbynett.no> - 2026-01-20 22:32 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment Grant Edwards <invalid@invalid.invalid> - 2026-01-21 03:38 +0000
Re: arm-gcc, Cortex-M0+, uint64_t and alignment David Brown <david.brown@hesbynett.no> - 2026-01-21 08:54 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment pozz <pozzugno@gmail.com> - 2026-01-20 17:55 +0100
Re: arm-gcc, Cortex-M0+, uint64_t and alignment David Brown <david.brown@hesbynett.no> - 2026-01-20 22:24 +0100
csiph-web