123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- From 27b829ee701e29804216b3803fbaeb629be27491 Mon Sep 17 00:00:00 2001
- From: Nick Clifton <nickc@redhat.com>
- Date: Wed, 29 Jan 2014 13:46:39 +0000
- Subject: [PATCH] Following up on Tom's suggestion I am checking in a patch to
- replace the various bfd_xxx_set macros with static inline functions, so that
- we can avoid compile time warnings about comma expressions with unused
- values.
- * bfd-in.h (bfd_set_section_vma): Delete.
- (bfd_set_section_alignment): Delete.
- (bfd_set_section_userdata): Delete.
- (bfd_set_cacheable): Delete.
- * bfd.c (bfd_set_cacheable): New static inline function.
- * section.c (bfd_set_section_userdata): Likewise.
- (bfd_set_section_vma): Likewise.
- (bfd_set_section_alignment): Likewise.
- * bfd-in2.h: Regenerate.
- ---
- bfd/bfd-in.h | 5 -----
- bfd/bfd-in2.h | 41 +++++++++++++++++++++++++++++++++++------
- bfd/bfd.c | 8 ++++++++
- bfd/section.c | 26 ++++++++++++++++++++++++++
- 5 files changed, 81 insertions(+), 11 deletions(-)
- diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
- index 3afd71b..c7c5a7d 100644
- --- a/bfd/bfd-in.h
- +++ b/bfd/bfd-in.h
- @@ -292,9 +292,6 @@ typedef struct bfd_section *sec_ptr;
-
- #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
-
- -#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
- -#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
- -#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
- /* Find the address one past the end of SEC. */
- #define bfd_get_section_limit(bfd, sec) \
- (((bfd)->direction != write_direction && (sec)->rawsize != 0 \
- @@ -517,8 +514,6 @@ extern void warn_deprecated (const char *, const char *, int, const char *);
-
- #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
-
- -#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
- -
- extern bfd_boolean bfd_cache_close
- (bfd *abfd);
- /* NB: This declaration should match the autogenerated one in libbfd.h. */
- diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
- index 71996db..b5aeb40 100644
- --- a/bfd/bfd-in2.h
- +++ b/bfd/bfd-in2.h
- @@ -299,9 +299,6 @@ typedef struct bfd_section *sec_ptr;
-
- #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
-
- -#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
- -#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
- -#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
- /* Find the address one past the end of SEC. */
- #define bfd_get_section_limit(bfd, sec) \
- (((bfd)->direction != write_direction && (sec)->rawsize != 0 \
- @@ -524,8 +521,6 @@ extern void warn_deprecated (const char *, const char *, int, const char *);
-
- #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
-
- -#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
- -
- extern bfd_boolean bfd_cache_close
- (bfd *abfd);
- /* NB: This declaration should match the autogenerated one in libbfd.h. */
- @@ -1029,7 +1024,7 @@ bfd *bfd_openr (const char *filename, const char *target);
-
- bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
-
- -bfd *bfd_openstreamr (const char *, const char *, void *);
- +bfd *bfd_openstreamr (const char * filename, const char * target, void * stream);
-
- bfd *bfd_openr_iovec (const char *filename, const char *target,
- void *(*open_func) (struct bfd *nbfd,
- @@ -1596,6 +1591,32 @@ struct relax_table {
- int size;
- };
-
- +/* Note: the following are provided as inline functions rather than macros
- + because not all callers use the return value. A macro implementation
- + would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
- + compilers will complain about comma expressions that have no effect. */
- +static inline bfd_boolean
- +bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)
- +{
- + ptr->userdata = val;
- + return TRUE;
- +}
- +
- +static inline bfd_boolean
- +bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
- +{
- + ptr->vma = ptr->lma = val;
- + ptr->user_set_vma = TRUE;
- + return TRUE;
- +}
- +
- +static inline bfd_boolean
- +bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)
- +{
- + ptr->alignment_power = val;
- + return TRUE;
- +}
- +
- /* These sections are global, and are managed by BFD. The application
- and target back end are not permitted to change the values in
- these sections. */
- @@ -6415,6 +6436,14 @@ struct bfd
- unsigned int selective_search : 1;
- };
-
- +/* See note beside bfd_set_section_userdata. */
- +static inline bfd_boolean
- +bfd_set_cacheable (bfd * abfd, bfd_boolean val)
- +{
- + abfd->cacheable = val;
- + return TRUE;
- +}
- +
- typedef enum bfd_error
- {
- bfd_error_no_error = 0,
- diff --git a/bfd/bfd.c b/bfd/bfd.c
- index 8d0580c..2d174f3 100644
- --- a/bfd/bfd.c
- +++ b/bfd/bfd.c
- @@ -311,6 +311,14 @@ CODE_FRAGMENT
- . unsigned int selective_search : 1;
- .};
- .
- +.{* See note beside bfd_set_section_userdata. *}
- +.static inline bfd_boolean
- +.bfd_set_cacheable (bfd * abfd, bfd_boolean val)
- +.{
- +. abfd->cacheable = val;
- +. return TRUE;
- +.}
- +.
- */
-
- #include "sysdep.h"
- diff --git a/bfd/section.c b/bfd/section.c
- index fb19d8c..a661228 100644
- --- a/bfd/section.c
- +++ b/bfd/section.c
- @@ -542,6 +542,32 @@ CODE_FRAGMENT
- . int size;
- .};
- .
- +.{* Note: the following are provided as inline functions rather than macros
- +. because not all callers use the return value. A macro implementation
- +. would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
- +. compilers will complain about comma expressions that have no effect. *}
- +.static inline bfd_boolean
- +.bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)
- +.{
- +. ptr->userdata = val;
- +. return TRUE;
- +.}
- +.
- +.static inline bfd_boolean
- +.bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
- +.{
- +. ptr->vma = ptr->lma = val;
- +. ptr->user_set_vma = TRUE;
- +. return TRUE;
- +.}
- +.
- +.static inline bfd_boolean
- +.bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)
- +.{
- +. ptr->alignment_power = val;
- +. return TRUE;
- +.}
- +.
- .{* These sections are global, and are managed by BFD. The application
- . and target back end are not permitted to change the values in
- . these sections. *}
- --
- 2.1.4
|