xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Keir Fraser <keir.xen@gmail.com>
To: Jan Beulich <JBeulich@suse.com>, xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH] compiler.h adjustments
Date: Thu, 25 Oct 2012 05:17:43 -0700	[thread overview]
Message-ID: <CCAE7BF7.42761%keir.xen@gmail.com> (raw)
In-Reply-To: <508943FF02000078000A46FE@nat28.tlf.novell.com>

On 25/10/2012 04:51, "Jan Beulich" <JBeulich@suse.com> wrote:

> - replace __attribute_used__ with just __used
> - add __maybe_unused and explain the difference between the two
> - remove gcc 3.x specifics (as we don't support building with it
>   anymore; really for quite some time we didn't even support building
>   with the checked for minor versions)
> - remove left over __setup() from init.h (rather than adjusting it)
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Keir Fraser <keir@xen.org>

> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -41,7 +41,7 @@
>  #include <asm/early_printk.h>
>  #include "gic.h"
>  
> -static __attribute_used__ void init_done(void)
> +static __used void init_done(void)
>  {
>      free_init_memory();
>      startup_cpu_idle_loop();
> --- a/xen/include/xen/compiler.h
> +++ b/xen/include/xen/compiler.h
> @@ -1,7 +1,7 @@
>  #ifndef __LINUX_COMPILER_H
>  #define __LINUX_COMPILER_H
>  
> -#if !defined(__GNUC__) || (__GNUC__ < 3)
> +#if !defined(__GNUC__) || (__GNUC__ < 4)
>  #error Sorry, your compiler is too old/not recognized.
>  #endif
>  
> @@ -17,11 +17,11 @@
>  #ifdef __clang__
>  /* Clang can replace some vars with new automatic ones that go in .data;
>   * mark all explicit-segment vars 'used' to prevent that. */
> -#define __section(s)      __attribute_used__ __attribute__((__section__(s)))
> +#define __section(s)      __used __attribute__((__section__(s)))
>  #else
>  #define __section(s)      __attribute__((__section__(s)))
>  #endif
> -#define __used_section(s) __attribute_used__ __attribute__((__section__(s)))
> +#define __used_section(s) __used __attribute__((__section__(s)))
>  #define __text_section(s) __attribute__((__section__(s)))
>  
>  #ifdef INIT_SECTIONS_ONLY
> @@ -36,23 +36,23 @@
>  #define __attribute_pure__  __attribute__((pure))
>  #define __attribute_const__ __attribute__((__const__))
>  
> -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
> -#define __attribute_used__ __attribute__((__used__))
> -#else
> -#define __attribute_used__ __attribute__((__unused__))
> -#endif
> +/*
> + * The difference between the following two attributes is that __used is
> + * intended to be used in cases where a reference to an identifier may be
> + * invisible to the compiler (e.g. an inline assembly operand not listed
> + * in the asm()'s operands), preventing the compiler from eliminating the
> + * variable or function.
> + * __maybe_unused otoh is to be used to merely prevent warnings (e.g. when
> + * an identifier is used only inside a preprocessor conditional, yet putting
> + * its declaration/definition inside another conditional would harm code
> + * readability).
> + */
> +#define __used         __attribute__((__used__))
> +#define __maybe_unused __attribute__((__unused__))
>  
> -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
>  #define __must_check __attribute__((warn_unused_result))
> -#else
> -#define __must_check
> -#endif
>  
> -#if __GNUC__ > 3
>  #define offsetof(a,b) __builtin_offsetof(a,b)
> -#else
> -#define offsetof(a,b) ((unsigned long)&(((a *)0)->b))
> -#endif
>  
>  /* &a[0] degrades to a pointer: a different type from an array */
>  #define __must_be_array(a) \
> --- a/xen/include/xen/init.h
> +++ b/xen/include/xen/init.h
> @@ -114,9 +114,6 @@ extern struct kernel_param __setup_start
>      __kparam __setup_##_var = \
>          { __setup_str_##_var, OPT_STR, &_var, sizeof(_var) }
>  
> -/* Make sure obsolete cmdline params don't break the build. */
> -#define __setup(_name, _fn) static void * __attribute_used__ _dummy_##_fn =
> _fn
> -    
>  #endif /* __ASSEMBLY__ */
>  
>  #ifdef CONFIG_HOTPLUG
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

      reply	other threads:[~2012-10-25 12:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-25 11:51 [PATCH] compiler.h adjustments Jan Beulich
2012-10-25 12:17 ` Keir Fraser [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CCAE7BF7.42761%keir.xen@gmail.com \
    --to=keir.xen@gmail.com \
    --cc=JBeulich@suse.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).