2003-02-08 16:43:38

by Uwe Reimann

[permalink] [raw]
Subject: ENTRY-macro in linkage.h

Hi,

I'm currently porting linux to TI's TMS320C31. I'm using c4x-gcc, which
has a problem with the ENTRY-macro from linkage.h. c4x-gcc will accept
the generated .globl-directive only if it is preceded by whitescape.
Right know, gcc thinks I want to create a label called .globl. Any ideas
how to fix this without fixing gcc?

Regards, Uwe



2003-02-09 12:27:48

by Uwe Reimann

[permalink] [raw]
Subject: Re: ENTRY-macro in linkage.h

My problem is how to add the whitespace. The preprocessor seems to strip
it. Consider this (test.S):

#define ENTRY(X) \
.global X##; \
X##:

ENTRY(foo)
ENTRY(bar)

gcc -S test.S:

.global foo; foo:
.global bar; bar:

For c4x-gcc, this has to be like this:

.global foo
foo:
.global bar
bar:

Without the leading whitespace, .global is taken as a name of a label.
Without the newline before the labels, they are not recognized (taken as
comments).

How can I tell the preprocessor to emit spaces and newlines?

Alan Cox wrote:

>On Sat, 2003-02-08 at 16:51, Uwe Reimann wrote:
>
>
>>Hi,
>>
>>I'm currently porting linux to TI's TMS320C31. I'm using c4x-gcc, which
>>has a problem with the ENTRY-macro from linkage.h. c4x-gcc will accept
>>the generated .globl-directive only if it is preceded by whitescape.
>>Right know, gcc thinks I want to create a label called .globl. Any ideas
>>how to fix this without fixing gcc?
>>
>>
>
>I think every other port will probably be fine with the whitespace present
>so I guess add a space 8)
>
>
>
>
>


2003-02-09 16:01:57

by Roman Zippel

[permalink] [raw]
Subject: Re: ENTRY-macro in linkage.h

Hi,

On Sun, 9 Feb 2003, Uwe Reimann wrote:

> My problem is how to add the whitespace. The preprocessor seems to strip
> it. Consider this (test.S):
>
> #define ENTRY(X) \
> .global X##; \
> X##:
>
> ENTRY(foo)
> ENTRY(bar)
>
> gcc -S test.S:
>
> .global foo; foo:
> .global bar; bar:
>
> For c4x-gcc, this has to be like this:
>
> .global foo
> foo:
> .global bar
> bar:
>
> Without the leading whitespace, .global is taken as a name of a label.
> Without the newline before the labels, they are not recognized (taken as
> comments).

You don't have to use the ENTRY macro anymore, it was useful when kernel
could be in a.out format, so the underscore was automatically prepended to
the symbol.

bye, Roman