Compiling assembler file with ppc_405-gcc

Wolfgang Denk wd at denx.de
Mon Jun 14 20:24:12 EST 2004


In message <85E6ED5B5EC32F439702305CC417E12D9E2A7D at email.3il.fr> you wrote:
>
>   --> I've included in this file:
>          #include <linux/config.h>
>          #include <asm/processor.h>
>          #include <asm/cache.h>
>          #include <asm-ppc/ppc_asm.h>
>          #include "ppcbslit.h"
>
>          [ppcbslit.h is a file which is supposed to contain a lot of
> #define
>           that I need in many files of my project. At the beggining of
> this
>           file, I have included:
>               #include <stdio.h>
>               #include <string.h>
>               #include <sys/types.h>
>               #include <sys/stat.h>
>               #include <fcntl.h>
>               #include <sys/ioctl.h>
>               #include <unistd.h>
>               #include <linux/ctype.h>                      ]

You should NOT include standard C header files in a assembler program!

assembler != C

> Results:
> ========
>    --> I don't know why but the #include of my assembler file are now
>        considered (a compilation option maybe... -x assembler??)

This is because your file now has a ".S" suffix instead  of  ".s"  as
before. Read the GCC manual about details!

>    --> But now there is the following problem ; I got hundreds of
> errors.
>        I report below a little part of them:
> /opt/hardhat/devkit/ppc/405/target/usr/include/stdio.h: Assembler
> messages:
> /opt/hardhat/devkit/ppc/405/target/usr/include/stdio.h:30: Error:
> Unrecognized opcode: `__begin_decls'
> /home/jgarcia/Desktop/kernel/ssc/StdLib/local/stddef.h:201: Error:
> Unrecognized opcode: `typedef'
> /opt/hardhat/devkit/ppc/405/target/usr/include/bits/stat.h:38: Error:
> Unrecognized opcode: `__dev_t'
> /home/jgarcia/Desktop/kernel/ssc/basic/services/include/ppcbslit.h:164:
> Error: Unrecognized opcode: `int'
> /opt/hardhat/devkit/ppc/405/target/usr/include/unistd.h:688: Error:
> Unrecognized opcode: `extern'

This is because you include C header files in assember code. You must
not do that.

>   --> I found a way to prevent those errors... I put all my #define that
> I need in my assembler file. But you'll understand that it's a very
> restrictive way of programming and I'd like to find a better solution
> cause I'm talkin' about a hundred of #define...so...

If you have the C includes in one of your private header  files,  you
can put a "#ifndef __ASSEMBLY__" / "#endif" around them.

Otherwise just clean up your code and don't use  C  headers  in  your
assembler file.

Best regards,

Wolfgang Denk

--
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-4596-87  Fax: (+49)-8142-4596-88  Email: wd at denx.de
Landing: a controlled mid-air collision with a planet.

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list