This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC/PATCH] Fix `bfd_{get,set}_*' macros


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]