diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-05-31 15:50:43 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-05-31 15:50:43 +0000 |
commit | 8c56fe3b2c753234beb6f58a81c8b96f008226ef (patch) | |
tree | d61ffb7018be1081e3bba89ba3e7c17338509259 /libelf/libelfP.h | |
parent | df72c45805a859891ed0dcb854ee766f8ebef372 (diff) | |
download | elfutils-8c56fe3b2c753234beb6f58a81c8b96f008226ef.tar.gz |
Handle as-needed options.
Diffstat (limited to 'libelf/libelfP.h')
-rw-r--r-- | libelf/libelfP.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/libelf/libelfP.h b/libelf/libelfP.h index 54158aeb..ed6b5f7f 100644 --- a/libelf/libelfP.h +++ b/libelf/libelfP.h @@ -1,5 +1,5 @@ /* Internal interfaces for libelf. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 Red Hat, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 Red Hat, Inc. This file is part of Red Hat elfutils. Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. @@ -546,8 +546,9 @@ extern uint32_t __libelf_crc32 (uint32_t crc, unsigned char *buf, size_t len) /* We often have to update a flag iff a value changed. Make this - convenient. */ -#define update_if_changed(var, exp, flag) \ + convenient. None of the parameters must have a side effect. */ +#ifdef __GNUC__ +# define update_if_changed(var, exp, flag) \ do { \ __typeof__ (var) *_var = &(var); \ __typeof__ (exp) _exp = (exp); \ @@ -557,5 +558,15 @@ extern uint32_t __libelf_crc32 (uint32_t crc, unsigned char *buf, size_t len) (flag) |= ELF_F_DIRTY; \ } \ } while (0) +#else +# define update_if_changed(var, exp, flag) \ + do { \ + if ((var) != (exp)) \ + { \ + (var) = (exp); \ + (flag) |= ELF_F_DIRTY; \ + } \ + } while (0) +#endif #endif /* libelfP.h */ |