This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more infromation.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Structure alignment with GCC


I checked tha man page and couldn't find anything about a command line switch. Then I
checked /usr/doc/egcs-1.1.2/gcc/NEWS and found "-fpack-struct". I tried it on a command
line and it didn't complain. I have not checked the code it produces to see if it
actually works. The comment applies to GCC 2.7.0. Here's what it says:

A new option '-fpack-struct' was added to automatically pack all structure
members together without holes.

I apologize if I offended anyone with my previous reply, but it's one of those hot
buttons with me. In fact, here's another excerpt from GCC man page.

 -mwarn-passed-structs
              Warn when a function passes a struct as an argument
              or  result.   Structure-passing  conventions   have
              changed during the evolution of the C language, and
              are often the source of portability  problems.   By
              default, GCC issues no such warning.

Those PalmOS developers should be given a fair trial, then be taken out and shot.


Michael Sokolov wrote:

> gshubin <gshubin@wco.com> wrote:
>
> > Thanks, now I have a good example of why it is always a bad idea to use structures
> > for passing data. I usually use the example of inter-processor communication, but
> > now you have given me and example of inter-compiler communication [...]
>
> Unfortunately, you don't always get to choose. Sometimes GCC has no other
> choice but to mirror the ABI of some proprietary compiler in aspects like
> alignment and calling convention, however wrong it is. Consider PalmOS, for
> example. (It's a popular handheld embedded OS for the Motorola 68328 Dragonball
> chip.) It's designers were clearly assembly-phobiac C fans who wrote the whole
> OS in C, compiled it with one particular proprietary compiler, and effectively
> made that compiler's ABI, which apparently isn't even documented or formally
> set down anywhere, the de facto ABI for their OS. PalmOS has no traditional
> system calls or separation between the system and applications, instead OS
> routines in the ROM and application routines that application programmers write
> just freely call each other, and everything is built on the assumption that
> everything is written in C, with the C ABI being that of the proprietary
> compiler used to compile the OS. Ouch. This is the kind of stuff that no
> programmer should ever see in his/her worst nightmare. I don't recall even
> Microsoft doing something as bad. (But then I've had the fortune of complete
> isolation from Microsoft since early 1993, so I have no idea what else they've
> done since then.)
>
> As for PalmOS, there are patched versions of gcc 2.7.2.2 and 2.95.2 that mimic
> the right ABI, more or less. More or less because so far I haven't found any
> formal spec or in fact any documentation whatsoever for it, so it's all pure
> guesswork so far. This will surely make my life interesting in a perverse way
> when I get to integrating this stuff into the current GCC.
>
> --
> Michael Sokolov         Harhan Engineering Laboratory
> Public Service Agent    International Free Computing Task Force
>                         International Engineering and Science Task Force
>                         615 N GOOD LATIMER EXPY STE #4
>                         DALLAS TX 75204-5852 USA
>
> Phone: +1-214-824-7693 (Harhan Eng Lab office)
> E-mail: msokolov@ivan.Harhan.ORG (ARPA TCP/SMTP) (UUCP coming soon)
>
> ------
> Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
> Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com


------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]