Skip to content

Update tracehash for libbfd API changes #207

Description

@shenki

These were removed in https://github.com/bminor/binutils-gdb/commit/fd3619828e94a24a92cddec42cbc0ab33352eeb4 which appears in v3.34.

The kernel did this to remain compatible:

commit 0ada120c883d4f1f6aafd01cf0fbb10d8bbba015
Author: Changbin Du <changbin.du@intel.com>
Date:   Wed Jan 29 01:59:38 2020

    perf: Make perf able to build with latest libbfd
    
    libbfd has changed the bfd_section_* macros to inline functions
    bfd_section_<field> since 2019-09-18. See below two commits:
      o http://www.sourceware.org/ml/gdb-cvs/2019-09/msg00064.html
      o https://www.sourceware.org/ml/gdb-cvs/2019-09/msg00072.html

However it's a mess of:

  • macros that were renamed
  • macros that changed the number of arguments
  • functions that changed the number of arguments

It might make sense to carry a patch in op-build to be compatible with the new version, and once all of the build environments are ready, commit that patch to move to the new API.

extracthash.c: In function ‘parse_traceinfo’:
extracthash.c:246:19: warning: implicit declaration of function ‘bfd_get_section_size’; did you mean ‘bfd_set_section_size’? [-Wimplicit-function-declaration]
  246 |     size_t size = bfd_get_section_size(s);
      |                   ^~~~~~~~~~~~~~~~~~~~
      |                   bfd_set_section_size
tracehash.c: In function ‘main’:
    MAKE       test GEN
./updatetargetxml.pl --hb=../../../../obj/genfiles/target_types_customize_src.xml \
	--common=../common/xmltohb/target_types.xml > ../../../../obj/genfiles/target_types_src.xml
tracehash.c:268:26: warning: passing argument 1 of ‘bfd_set_section_size’ from incompatible pointer type [-Wincompatible-pointer-types]
  268 |     bfd_set_section_size(outFile, hash_section, format_offset);
      |                          ^~~~~~~
      |                          |
      |                          bfd *
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1447:45: note: expected ‘asection *’ {aka ‘struct bfd_section *’} but argument is of type ‘bfd *’
 1447 | bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
      |                                   ~~~~~~~~~~^~~
tracehash.c:268:35: warning: passing argument 2 of ‘bfd_set_section_size’ makes integer from pointer without a cast [-Wint-conversion]
  268 |     bfd_set_section_size(outFile, hash_section, format_offset);
      |                                   ^~~~~~~~~~~~
      |                                   |
      |                                   asection * {aka struct bfd_section *}
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1447:64: note: expected ‘bfd_size_type’ {aka ‘long unsigned int’} but argument is of type ‘asection *’ {aka ‘struct bfd_section *’}
 1447 | bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
      |                                                  ~~~~~~~~~~~~~~^~~
tracehash.c:268:5: error: too many arguments to function ‘bfd_set_section_size’
  268 |     bfd_set_section_size(outFile, hash_section, format_offset);
      |     ^~~~~~~~~~~~~~~~~~~~
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1447:13: note: declared here
 1447 | bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
      |             ^~~~~~~~~~~~~~~~~~~~
../common/xmltohb/create_ekb_targattr.pl \
--fapi=../../../../obj/genfiles/fapiattrs.xml \
--attr=../../../../obj/genfiles/attribute_types_ekb.xml \
--targ=../../../../obj/genfiles/target_types_ekb.xml \
--default=../../../../obj/genfiles/attribute_customization.xml\

../common/xmltohb/create_ekb_targattr.pl \
--fapi=../../../../obj/genfiles/fapiattrs.xml \
--attr=../../../../obj/genfiles/attribute_types_ekb.xml \
--targ=../../../../obj/genfiles/target_types_ekb.xml \
--default=../../../../obj/genfiles/attribute_customization.xml\

tracehash.c: In function ‘fixup_groups’:
tracehash.c:337:9: warning: implicit declaration of function ‘bfd_get_section_flags’; did you mean ‘bfd_set_section_flags’? [-Wimplicit-function-declaration]
  337 |     if (bfd_get_section_flags(newFile, s) & SEC_GROUP)
      |         ^~~~~~~~~~~~~~~~~~~~~
      |         bfd_set_section_flags
    MAKE       test GEN
tracehash.c:351:28: warning: implicit declaration of function ‘bfd_get_section_size’; did you mean ‘bfd_set_section_size’? [-Wimplicit-function-declaration]
  351 |         for(size_t i=1;i<((bfd_get_section_size(s))/sizeof(uint32_t));
      |                            ^~~~~~~~~~~~~~~~~~~~
      |                            bfd_set_section_size
tracehash.c: In function ‘create_sections’:
tracehash.c:452:36: warning: passing argument 1 of ‘bfd_set_section_size’ from incompatible pointer type [-Wincompatible-pointer-types]
  452 |     CHECK_ERR(bfd_set_section_size(outFile, new_s, section_size));
      |                                    ^~~~~~~
      |                                    |
      |                                    bfd *
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1447:45: note: expected ‘asection *’ {aka ‘struct bfd_section *’} but argument is of type ‘bfd *’
 1447 | bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
      |                                   ~~~~~~~~~~^~~
tracehash.c:452:45: warning: passing argument 2 of ‘bfd_set_section_size’ makes integer from pointer without a cast [-Wint-conversion]
  452 |     CHECK_ERR(bfd_set_section_size(outFile, new_s, section_size));
      |                                             ^~~~~
      |                                             |
      |                                             asection * {aka struct bfd_section *}
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1447:64: note: expected ‘bfd_size_type’ {aka ‘long unsigned int’} but argument is of type ‘asection *’ {aka ‘struct bfd_section *’}
 1447 | bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
      |                                                  ~~~~~~~~~~~~~~^~~
tracehash.c:452:15: error: too many arguments to function ‘bfd_set_section_size’
  452 |     CHECK_ERR(bfd_set_section_size(outFile, new_s, section_size));
      |               ^~~~~~~~~~~~~~~~~~~~
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1447:13: note: declared here
 1447 | bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
      |             ^~~~~~~~~~~~~~~~~~~~
tracehash.c:453:67: warning: passing argument 1 of ‘bfd_section_vma’ from incompatible pointer type [-Wincompatible-pointer-types]
  453 |     CHECK_ERR(bfd_set_section_vma(outFile, new_s, bfd_section_vma(inFile, s)));
      |                                                                   ^~~~~~
      |                                                                   |
      |                                                                   bfd *
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1230:34: note: expected ‘const asection *’ {aka ‘const struct bfd_section *’} but argument is of type ‘bfd *’
 1230 | bfd_section_vma (const asection *sec)
      |                  ~~~~~~~~~~~~~~~~^~~
tracehash.c:453:51: error: too many arguments to function ‘bfd_section_vma’
  453 |     CHECK_ERR(bfd_set_section_vma(outFile, new_s, bfd_section_vma(inFile, s)));
      |                                                   ^~~~~~~~~~~~~~~
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1230:1: note: declared here
 1230 | bfd_section_vma (const asection *sec)
      | ^~~~~~~~~~~~~~~
tracehash.c:453:35: warning: passing argument 1 of ‘bfd_set_section_vma’ from incompatible pointer type [-Wincompatible-pointer-types]
  453 |     CHECK_ERR(bfd_set_section_vma(outFile, new_s, bfd_section_vma(inFile, s)));
      |                                   ^~~~~~~
      |                                   |
      |                                   bfd *
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1276:32: note: expected ‘asection *’ {aka ‘struct bfd_section *’} but argument is of type ‘bfd *’
 1276 | bfd_set_section_vma (asection *sec, bfd_vma val)
      |                      ~~~~~~~~~~^~~
tracehash.c:453:44: warning: passing argument 2 of ‘bfd_set_section_vma’ makes integer from pointer without a cast [-Wint-conversion]
  453 |     CHECK_ERR(bfd_set_section_vma(outFile, new_s, bfd_section_vma(inFile, s)));
      |                                            ^~~~~
      |                                            |
      |                                            asection * {aka struct bfd_section *}
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1276:45: note: expected ‘bfd_vma’ {aka ‘long unsigned int’} but argument is of type ‘asection *’ {aka ‘struct bfd_section *’}
 1276 | bfd_set_section_vma (asection *sec, bfd_vma val)
      |                                     ~~~~~~~~^~~
tracehash.c:453:15: error: too many arguments to function ‘bfd_set_section_vma’
  453 |     CHECK_ERR(bfd_set_section_vma(outFile, new_s, bfd_section_vma(inFile, s)));
      |               ^~~~~~~~~~~~~~~~~~~
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1276:1: note: declared here
 1276 | bfd_set_section_vma (asection *sec, bfd_vma val)
      | ^~~~~~~~~~~~~~~~~~~
tracehash.c:458:63: warning: passing argument 1 of ‘bfd_section_alignment’ from incompatible pointer type [-Wincompatible-pointer-types]
  458 |                                         bfd_section_alignment(inFile, s)));
      |                                                               ^~~~~~
      |                                                               |
      |                                                               bfd *
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1242:40: note: expected ‘const asection *’ {aka ‘const struct bfd_section *’} but argument is of type ‘bfd *’
 1242 | bfd_section_alignment (const asection *sec)
      |                        ~~~~~~~~~~~~~~~~^~~
tracehash.c:458:41: error: too many arguments to function ‘bfd_section_alignment’
  458 |                                         bfd_section_alignment(inFile, s)));
      |                                         ^~~~~~~~~~~~~~~~~~~~~
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1242:1: note: declared here
 1242 | bfd_section_alignment (const asection *sec)
      | ^~~~~~~~~~~~~~~~~~~~~
tracehash.c:457:41: warning: passing argument 1 of ‘bfd_set_section_alignment’ from incompatible pointer type [-Wincompatible-pointer-types]
  457 |     CHECK_ERR(bfd_set_section_alignment(outFile, new_s,
      |                                         ^~~~~~~
      |                                         |
      |                                         bfd *
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1291:38: note: expected ‘asection *’ {aka ‘struct bfd_section *’} but argument is of type ‘bfd *’
 1291 | bfd_set_section_alignment (asection *sec, unsigned int val)
      |                            ~~~~~~~~~~^~~
tracehash.c:457:50: warning: passing argument 2 of ‘bfd_set_section_alignment’ makes integer from pointer without a cast [-Wint-conversion]
  457 |     CHECK_ERR(bfd_set_section_alignment(outFile, new_s,
      |                                                  ^~~~~
      |                                                  |
      |                                                  asection * {aka struct bfd_section *}
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1291:56: note: expected ‘unsigned int’ but argument is of type ‘asection *’ {aka ‘struct bfd_section *’}
 1291 | bfd_set_section_alignment (asection *sec, unsigned int val)
      |                                           ~~~~~~~~~~~~~^~~
tracehash.c:457:15: error: too many arguments to function ‘bfd_set_section_alignment’
  457 |     CHECK_ERR(bfd_set_section_alignment(outFile, new_s,
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~
tracehash.c:114:15: note: in definition of macro ‘CHECK_ERR’
  114 |         if (!(i)) \
      |               ^
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1291:1: note: declared here
 1291 | bfd_set_section_alignment (asection *sec, unsigned int val)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~
tracehash.c: In function ‘create_hashstring_section’:
tracehash.c:731:27: warning: passing argument 1 of ‘bfd_set_section_flags’ from incompatible pointer type [-Wincompatible-pointer-types]
  731 |     bfd_set_section_flags(outFile, hash_section,
      |                           ^~~~~~~
      |                           |
      |                           bfd *
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1432:46: note: expected ‘asection *’ {aka ‘struct bfd_section *’} but argument is of type ‘bfd *’
 1432 | bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
      |                                    ~~~~~~~~~~^~~
tracehash.c:731:36: warning: passing argument 2 of ‘bfd_set_section_flags’ makes integer from pointer without a cast [-Wint-conversion]
  731 |     bfd_set_section_flags(outFile, hash_section,
      |                                    ^~~~~~~~~~~~
      |                                    |
      |                                    asection * {aka struct bfd_section *}
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1432:60: note: expected ‘flagword’ {aka ‘unsigned int’} but argument is of type ‘asection *’ {aka ‘struct bfd_section *’}
 1432 | bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
      |                                                   ~~~~~~~~~^~~~~
tracehash.c:731:5: error: too many arguments to function ‘bfd_set_section_flags’
  731 |     bfd_set_section_flags(outFile, hash_section,
      |     ^~~~~~~~~~~~~~~~~~~~~
In file included from tracehash.c:52:
/home/joel/dev/op-build/output/build/host-binutils-2.36.1/bfd/bfd.h:1432:13: note: declared here
 1432 | bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
      |             ^~~~~~~~~~~~~~~~~~~~~
make[8]: *** [makefile:46: tracehash] Error 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions