lkml.org 
[lkml]   [2003]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] Use -fno-unit-at-a-time if gcc supports it
From
Date
Robert Love <rml@tech9.net> writes:

> On Fri, 2003-09-05 at 11:17, Andreas Jaeger wrote:
>
>
>> Since unit-at-a-time has better inlining heuristics the better way is
>> to add the used attribute - but that takes some time. The short-term
>> solution would be to add the compiler flag,
>
> Won't we get a linker error if a static symbol is used but
> optimized-away? It shouldn't be hard to fix the n linker errors that
> crop up.

Yes, we would get a linker error.

> And why are we using static symbols in inline assembly outside of the
> compilation scope?

Don't know.

> Anyhow, if it generates an error, this isn't hard to fix.

Just lots of places...

> Here is the start...
>
> Robert Love
>
>
> --- linux-rml/include/linux/compiler.h Fri Sep 5 11:57:56 2003
> +++ linux/include/linux/compiler.h Fri Sep 5 12:02:02 2003
> @@ -74,6 +74,19 @@
> #define __attribute_pure__ /* unimplemented */
> #endif
>
> +/*
> + * As of gcc 3.2, we can mark a function as 'used' and gcc will assume that,
> + * even if it does not find a reference to it in any compilation unit. We
> + * need this for gcc 3.4 and beyond, which can optimize on a program-wide
> + * scope, and not just one file at a time, to avoid static symbols being
> + * discarded.
> + */
> +#if (__GNUC__ == 3 && __GNUC_MINOR__ > 1) || __GNUC__ > 3
> +#define __attribute_used__ __attribute__((used))
> +#else
> +#define __attribute_used__ /* unimplemented */

In glibc we have for the else case:
# define __attribute_used__ __attribute__ ((__unused__))

This might reduce warnings about unused functions. But this change is
not critical IMO, so your patch looks fine!

> +#endif
> +
> /* This macro obfuscates arithmetic on a variable address so that gcc
> shouldn't recognize the original var, and make assumptions about it */
> #define RELOC_HIDE(ptr, off) \

Andreas
--
Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2005-03-22 13:48    [W:0.175 / U:0.552 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site