From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4721 invoked by alias); 3 May 2012 04:19:50 -0000 Received: (qmail 4682 invoked by uid 22791); 3 May 2012 04:19:44 -0000 X-SWARE-Spam-Status: No, hits=-6.3 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,SPF_HELO_PASS,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 03 May 2012 04:19:28 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q434JSNJ021660 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 3 May 2012 00:19:28 -0400 Received: from psique (ovpn-112-58.phx2.redhat.com [10.3.112.58]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q434JMA6025048; Thu, 3 May 2012 00:19:24 -0400 From: Sergio Durigan Junior To: binutils@sourceware.org Cc: gdb-patches@sourceware.org, Pedro Alves Subject: [RFC/PATCH] Fix `bfd_{get,set}_*' macros X-URL: http://www.redhat.com Date: Thu, 03 May 2012 04:19:00 -0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-05/txt/msg00055.txt.bz2 Hi, As a part of an effort to enable `-Wunused-variable' on GDB build system, I would like to propose this "fix" to the following macros declared in bfd-in2.h: bfd_get_section_name bfd_get_section_vma bfd_get_section_lma bfd_get_section_alignment bfd_section_name bfd_section_size bfd_get_section_flags bfd_get_section_userdata Those macros don't need the first argument (`bfd'), but they still require it. However, you can pass anything there and GCC won't complain about it, because the argument is unused after all. So, while fixing GDB to support -Wunused-variable, I saw that there was a declaration of a `bfd *', which is used as a first argument to those macros. GCC started to complain about it (unused argument). There were two paths that I could follow: 1) Delete the declaration of `bfd *', so this: bfd *abfd = objfile->abfd; bfd_get_section_name (abfd, sec); Would become: bfd_get_section_name (objfile->abfd, sec); or 2) Fix the macros, so that they use the first argument in a safe way like `(void) bfd', thus silencing GCC warnings. After having tried the first option, Pedro asked me to actually fix the macros, so here is the patch to do this, along with small fixes through the code in order to adapt it. I am labeling this patch as RFC because I'm not sure I fixed the code in the right way. It wasn't clear to me which `bfd' to use in each situation, so I used my best judgement (which may not be good). As you will notice, I did not changed every bfd_*_section_* macro because some of them are used as lvalue (left side of assignment). I regtested the patch on Fedora 16 x86_64 with GDB, without regressions. Ok to apply? -- Sergio 2012-05-03 Sergio Durigan Junior * bfd-in2.h (bfd_get_section_name, bfd_get_section_vma, bfd_get_section_lma, bfd_get_section_alignment, bfd_section_name, bfd_section_size, bfd_get_section_flags, bfd_get_section_userdata): Rewrite macros in order to use the `bfd' argument. * elf-vxworks.c (elf_vxworks_finish_dynamic_entry): Pass proper `bfd' as the first argument for `bfd_get_section_alignment'. * elf32-arm.c (create_ifunc_sections): Likewise, for `bfd_set_section_alignment'. * elf32-m32r.c (m32r_elf_relocate_section): Likewise, for `bfd_get_section_name'. * elf32-microblaze.c (microblaze_elf_relocate_section): Likewise. * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise. (ppc_elf_relocate_section): Likewise. * elf64-mmix.c (mmix_final_link_relocate): Declaring proper `bfd' variable. * elf64-ppc.c (create_linkage_sections): Pass proper `bfd' as the first argument for `bfd_set_section_alignment'. --- bfd/bfd-in2.h | 17 +++++++++-------- bfd/elf-vxworks.c | 3 ++- bfd/elf32-arm.c | 4 ++-- bfd/elf32-m32r.c | 2 +- bfd/elf32-microblaze.c | 8 ++++---- bfd/elf32-ppc.c | 14 ++++++++------ bfd/elf64-mmix.c | 2 ++ bfd/elf64-ppc.c | 2 +- 8 files changed, 29 insertions(+), 23 deletions(-) diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 17dbbe1..86a65cc 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -280,18 +280,19 @@ alent; typedef struct bfd_section *sec_ptr; -#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0) -#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0) -#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0) -#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0) -#define bfd_section_name(bfd, ptr) ((ptr)->name) -#define bfd_section_size(bfd, ptr) ((ptr)->size) +#define bfd_get_section_name(bfd, ptr) ((void) bfd, (ptr)->name) +#define bfd_get_section_vma(bfd, ptr) ((void) bfd, (ptr)->vma) +#define bfd_get_section_lma(bfd, ptr) ((void) bfd, (ptr)->lma) +#define bfd_get_section_alignment(bfd, ptr) ((void) bfd, \ + (ptr)->alignment_power) +#define bfd_section_name(bfd, ptr) ((void) bfd, (ptr)->name) +#define bfd_section_size(bfd, ptr) ((void) bfd, (ptr)->size) #define bfd_get_section_size(ptr) ((ptr)->size) #define bfd_section_vma(bfd, ptr) ((ptr)->vma) #define bfd_section_lma(bfd, ptr) ((ptr)->lma) #define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power) -#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0) -#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata) +#define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags) +#define bfd_get_section_userdata(bfd, ptr) ((void) bfd, (ptr)->userdata) #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0) diff --git a/bfd/elf-vxworks.c b/bfd/elf-vxworks.c index 06edf8d..ebd8f2b 100644 --- a/bfd/elf-vxworks.c +++ b/bfd/elf-vxworks.c @@ -280,7 +280,8 @@ elf_vxworks_finish_dynamic_entry (bfd *output_bfd, Elf_Internal_Dyn *dyn) case DT_VX_WRS_TLS_DATA_ALIGN: sec = bfd_get_section_by_name (output_bfd, ".tls_data"); dyn->d_un.d_val - = (bfd_size_type)1 << bfd_get_section_alignment (abfd, sec); + = (bfd_size_type)1 << bfd_get_section_alignment (output_bfd, + sec); break; case DT_VX_WRS_TLS_VARS_START: diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index f5bad39..ae670f1 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -3258,7 +3258,7 @@ create_ifunc_sections (struct bfd_link_info *info) s = bfd_make_section_with_flags (dynobj, ".iplt", flags | SEC_READONLY | SEC_CODE); if (s == NULL - || !bfd_set_section_alignment (abfd, s, bed->plt_alignment)) + || !bfd_set_section_alignment (dynobj, s, bed->plt_alignment)) return FALSE; htab->root.iplt = s; } @@ -3268,7 +3268,7 @@ create_ifunc_sections (struct bfd_link_info *info) s = bfd_make_section_with_flags (dynobj, RELOC_SECTION (htab, ".iplt"), flags | SEC_READONLY); if (s == NULL - || !bfd_set_section_alignment (abfd, s, bed->s->log_file_align)) + || !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align)) return FALSE; htab->root.irelplt = s; } diff --git a/bfd/elf32-m32r.c b/bfd/elf32-m32r.c index 7ab7b60..4445e56 100644 --- a/bfd/elf32-m32r.c +++ b/bfd/elf32-m32r.c @@ -3007,7 +3007,7 @@ m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, const char *name; BFD_ASSERT (sec != NULL); - name = bfd_get_section_name (abfd, sec); + name = bfd_get_section_name (input_bfd, sec); if ( strcmp (name, ".sdata") == 0 || strcmp (name, ".sbss") == 0 diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c index a58f7b3..2d3183c 100644 --- a/bfd/elf32-microblaze.c +++ b/bfd/elf32-microblaze.c @@ -839,7 +839,7 @@ microblaze_elf_relocate_section (bfd *output_bfd, /* Only relocate if the symbol is defined. */ if (sec) { - name = bfd_get_section_name (abfd, sec); + name = bfd_get_section_name (input_bfd, sec); if (strcmp (name, ".sdata2") == 0 || strcmp (name, ".sbss2") == 0) @@ -868,7 +868,7 @@ microblaze_elf_relocate_section (bfd *output_bfd, bfd_get_filename (input_bfd), sym_name, microblaze_elf_howto_table[(int) r_type]->name, - bfd_get_section_name (abfd, sec)); + bfd_get_section_name (input_bfd, sec)); /*bfd_set_error (bfd_error_bad_value); ??? why? */ ret = FALSE; continue; @@ -884,7 +884,7 @@ microblaze_elf_relocate_section (bfd *output_bfd, /* Only relocate if the symbol is defined. */ if (sec) { - name = bfd_get_section_name (abfd, sec); + name = bfd_get_section_name (input_bfd, sec); if (strcmp (name, ".sdata") == 0 || strcmp (name, ".sbss") == 0) @@ -913,7 +913,7 @@ microblaze_elf_relocate_section (bfd *output_bfd, bfd_get_filename (input_bfd), sym_name, microblaze_elf_howto_table[(int) r_type]->name, - bfd_get_section_name (abfd, sec)); + bfd_get_section_name (input_bfd, sec)); /*bfd_set_error (bfd_error_bad_value); ??? why? */ ret = FALSE; continue; diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index ca6df26..de3e492 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -5867,7 +5867,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, { /* Strip these too. */ } - else if (CONST_STRNEQ (bfd_get_section_name (dynobj, s), ".rela")) + else if (CONST_STRNEQ (bfd_get_section_name (ibfd, s), ".rela")) { if (s->size != 0) { @@ -7886,8 +7886,10 @@ ppc_elf_relocate_section (bfd *output_bfd, unresolved_reloc = TRUE; break; } - BFD_ASSERT (strcmp (bfd_get_section_name (abfd, sec), ".got") == 0 - || strcmp (bfd_get_section_name (abfd, sec), ".cgot") == 0); + BFD_ASSERT (strcmp (bfd_get_section_name (input_bfd, sec), + ".got") == 0 + || strcmp (bfd_get_section_name (input_bfd, sec), + ".cgot") == 0); addend -= sec->output_section->vma + sec->output_offset + 0x8000; break; @@ -7937,7 +7939,7 @@ ppc_elf_relocate_section (bfd *output_bfd, } addend -= SYM_VAL (sda); - name = bfd_get_section_name (abfd, sec->output_section); + name = bfd_get_section_name (input_bfd, sec->output_section); if (! ((CONST_STRNEQ (name, ".sdata") && (name[6] == 0 || name[6] == '.')) || (CONST_STRNEQ (name, ".sbss") @@ -7969,7 +7971,7 @@ ppc_elf_relocate_section (bfd *output_bfd, } addend -= SYM_VAL (sda); - name = bfd_get_section_name (abfd, sec->output_section); + name = bfd_get_section_name (input_bfd, sec->output_section); if (! (CONST_STRNEQ (name, ".sdata2") || CONST_STRNEQ (name, ".sbss2"))) { @@ -7998,7 +8000,7 @@ ppc_elf_relocate_section (bfd *output_bfd, break; } - name = bfd_get_section_name (abfd, sec->output_section); + name = bfd_get_section_name (input_bfd, sec->output_section); if (((CONST_STRNEQ (name, ".sdata") && (name[6] == 0 || name[6] == '.')) || (CONST_STRNEQ (name, ".sbss") diff --git a/bfd/elf64-mmix.c b/bfd/elf64-mmix.c index fd5921a..4a33fba 100644 --- a/bfd/elf64-mmix.c +++ b/bfd/elf64-mmix.c @@ -1771,6 +1771,8 @@ mmix_final_link_relocate (reloc_howto_type *howto, asection *input_section, first_global = 255; else { + bfd *abfd = NULL; + first_global = bfd_get_section_vma (abfd, regsec) / 8; if (strcmp (bfd_get_section_name (symsec->owner, symsec), MMIX_REG_CONTENTS_SECTION_NAME) == 0) diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index 0d6dd99..7c7beb6 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -4245,7 +4245,7 @@ create_linkage_sections (bfd *dynobj, struct bfd_link_info *info) ".eh_frame", flags); if (htab->glink_eh_frame == NULL - || !bfd_set_section_alignment (abfd, htab->glink_eh_frame, 2)) + || !bfd_set_section_alignment (dynobj, htab->glink_eh_frame, 2)) return FALSE; } -- 1.7.7.6