This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


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

Re: A final solution. (Was Re: kernel-2.2.1-undefined references.)




On Fri, 12 Feb 1999, Paul Derbyshire wrote:
> 4: An __attribute__ ((always)) or __attribute__ ((once)) that is
>    recursive or otherwise uninlinable generates an error, regardless
>    of -Winline.
> 
> Now, does this look like it'll make everybody happy?

I would be happy with this.

> The address-of-label is just used to generate displayed information? That
> simplifies things a lot.

Yes. And I realize that people don't like that, but the fact is that the
sane way of doing the same thing (and that wouldn't have been bitten by
the current problem in the first place) was to use the gcc intrisic
__builtin_return_address() inside the panic printout. That would have been
the right way of implementing the debugging (the panic printout just
prints out who called it), but it doesn't work correctly in most versions
of gcc, which is why we instead ended up using this really stupid code
snippet:

		__label_ l;
	l:
		skb_under_panic(.., &&l);

which triggered the problem with newer versions of egcs.

>			 If the address is only taken right at the label
> itself, then it seems reasonable to make an inline __attribute__ ((always))
> label and label address situation work like this:

Agreed. That would work beautifully, and I wouldn't have to think that the
egcs people are just trying to make it difficult to do something
reasonable. 

		Linus



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