This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC/PATCH] Fix `bfd_{get,set}_*' macros
- From: Pedro Alves <palves at redhat dot com>
- To: Sergio Durigan Junior <sergiodj at redhat dot com>, binutils at sourceware dot org, gdb-patches at sourceware dot org
- Date: Thu, 03 May 2012 17:00:45 +0100
- Subject: Re: [RFC/PATCH] Fix `bfd_{get,set}_*' macros
- References: <m3mx5pyjzq.fsf@redhat.com> <20120503075305.GJ635@bubble.grove.modra.org>
On 05/03/2012 08:53 AM, Alan Modra wrote:
> On Thu, May 03, 2012 at 01:19:21AM -0300, Sergio Durigan Junior wrote:
>> * 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'.
>
> The above is OK. You guessed wrongly for all the bfd args below,
> except in elf64-ppc.c. I suggest expanding the macros instead. I've
> noted the correct bfds below but IMO these macros serve no useful
> purpose.
#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_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)
Or replace with bfd_section_name, bfd_section_vma, etc. (making them
lvalues along the way) ?
If dropping the bfd argument, IMO, it's better to use the 'bfd_section'
prefix for bfd_section macros (like bfd_section_name, etc. above), rather
than 'bfd_get_', and leave the latter for macros/functions that really
take a struct bfd as "this". That'd mean
s/bfd_get_section_flags/bfd_section_flags/ for example.
But IMO, we shouldn't require Sérgio do this, unless he
wants to. His patch just fixes a handful of places to correctly
use the already years-old existing interface...
--
Pedro Alves