Russell King writes: > > As fas as I can tell, the AAPCS document (v2.03 7th Oct 2005) requires > > that a simple "struct foo { unsigned char c; };" should have both size > > and alignment equal to 1, but gcc makes them both 4. Do you have any > > information about why gcc is doing this on ARM/Linux? Is there an accurate > > ABI document for ARM/Linux somewhere? > > That's the new EABI, which is a major change to the existing ABI which > the kernel and all of userspace is currently built using. > > The old ABI has it's roots in 1993 when the kernel and userland was > initially built using an ANSI C compiler, and the work being done to > port GCC was to make it compliant with that version of the ABI. This > ABI is documented only in dead-tree form. > > Due to lack of manpower on the Linux side (iow, more or less just me) > this became the ABI of the early ARM Linux a.out toolchain. At that > time, I did not consider this to be a problem - it wasn't a problem > as far as the kernel was concerned. > > When ELF came along, other folk worked on the toolchain, but they stuck > with that ABI - you could not transition between the a.out ABI to the > ELF ABI without breaking the kernel - structure layouts would change. > > Hence, this is the existing ABI we have. Changing the padding or > alignment of structures changes the kernel ABI, making it incompatible > with current userland.
OK, thanks for this info. It means that GCC is the definitive authority on calling conventions and data layouts, not the AAPCS; I wasn't aware of that before. (My interest in this issue comes from working on a port of a functional programming language's JIT compiler and runtime system to XScale.) /Mikael ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel