gcc 11.x fixes 96/26496/2 12.90.1 12.91.0 12.92.0 12.93.0 13.93.0 marlin/12.90.1 marlin/12.91.0 marlin/12.92.0 marlin/12.93.0 marlin_12.90.1 marlin_12.91.0 marlin_12.92.0 marlin_12.93.0 needlefish/13.93.0 needlefish_13.93.0
authorScott Murray <scott.murray@konsulko.com>
Mon, 12 Jul 2021 19:51:18 +0000 (15:51 -0400)
committerScott Murray <scott.murray@konsulko.com>
Mon, 12 Jul 2021 20:48:08 +0000 (20:48 +0000)
commitc5c15f86d2eaaa5ac72f0ac00634a978326daae9
treedd23637a7c453c663e3070f67bcfbf1bfd8cdfc8
parent9a8aea1b682f522d7b278312b9bd85ed12fab820
gcc 11.x fixes

Changes for compiling with gcc 11.x:
- g++ now seems to instantiate duplicate entries for the set member
  function in the contextclass template class in binding-wrap.hpp.
  The use of a closure as a default argument value seems to be the
  culprit, as it seems there are longstanding issues with respect to
  using closures like that and resulting symbol names (i.e. the use
  of a closure isn't necessarily recognized as generating unique
  instantiations).  In theory, C++17 should explicitly allow this
  when the closure has no captures, but bumping up to -std=gnu++17
  did not fix the issue.  To avoid it, replace the closure usage
  with a private static member function.
- In afb-hook.c, tweaked the ignoring of the writev return code to
  make the stricter checking in gcc 11 happy.
- In decode_base64 in wrap-json.c, initialize u16 as gcc now seems
  to miss that it will be initialized on the first loop iteration.

Bug-AGL: SPEC-3819

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I8876db196b46cc35ecd2798e20d5ec3425df865e
include/afb/c++/binding-wrap.hpp
src/afb-hook.c
src/wrap-json.c