Binutils 2.34 porting notes/undefined reference to bfd get section *

From Gentoo Wiki
Jump to: navigation, search

The problem

Starting from binutils-2.34 macros to access section attributes changed slightly: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=fd3619828e94a24a92cddec42cbc0ab33352eeb4

Code like the following will fail to build:

  uintptr_t vma = (uintptr_t)bfd_get_section_vma(bfdh, section);
  uintptr_t sz = (uintptr_t)bfd_get_section_size(section);


 linux/bfd.c:125:36: warning: implicit declaration of function 'bfd_get_section_vma'; did you mean 'bfd_set_section_vma'? [-Wimplicit-function-declaration]
 125 |         uintptr_t vma = (uintptr_t)bfd_get_section_vma(bfdh, section);
     |                                    bfd_set_section_vma
 ld: bfd.c:(.text+0x4ff): undefined reference to `bfd_get_section_vma'

The fix

The fix is simple: just drop _get_ and bfdh parameters:

  uintptr_t vma = (uintptr_t)bfd_section_vma(section);
  uintptr_t sz = (uintptr_t)bfd_section_size(section);

Links and examples

- Upstream commit: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=fd3619828e94a24a92cddec42cbc0ab33352eeb4 - Example fix: bug #707846