[DynInst_API:] [dyninst/dyninst] 7b17a1: Remove undefined FunctionBase constructors


Date: Tue, 08 Aug 2023 10:31:41 -0700
From: Tim Haines <noreply@xxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 7b17a1: Remove undefined FunctionBase constructors
  Branch: refs/heads/thaines/symtab_function_cleanup
  Home:   https://github.com/dyninst/dyninst
  Commit: 7b17a1c699d75595013fdeddce218ce36498aa56
      https://github.com/dyninst/dyninst/commit/7b17a1c699d75595013fdeddce218ce36498aa56
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  Remove undefined FunctionBase constructors

They were added by 5ed068167 in 2013, but never defined.


  Commit: 5e55b35a6bc1e34dda3fba6db673ca12b2eef718
      https://github.com/dyninst/dyninst/commit/5e55b35a6bc1e34dda3fba6db673ca12b2eef718
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  Make ~FunctionBase public

FunctionBase is intended to be derived from and thus derived types can
be deleted through pointers to base. This would cause UB in the current
state.

http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-dtor-virtual

  A base class destructor should be either public and virtual, or
protected and non-virtual


  Commit: 207319bcbf24d5106c16cffe51dc9895840916c5
      https://github.com/dyninst/dyninst/commit/207319bcbf24d5106c16cffe51dc9895840916c5
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  Make Function(Symbol *) public

It's awkward having it be protected and then friended so it can be used.
Just make it part of the API.


  Commit: a7f69b40b6c0cf534c755fad79af7bf3cb7c9b8d
      https://github.com/dyninst/dyninst/commit/a7f69b40b6c0cf534c755fad79af7bf3cb7c9b8d
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  Function should not export its interface.

These functions should override those in FunctionBase, but should not
define a new interface.


  Commit: aa2a200c33577522633130279962d8033fb66853
      https://github.com/dyninst/dyninst/commit/aa2a200c33577522633130279962d8033fb66853
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  Explicitly mark overridden members in Function


  Commit: 4a660b200f2a3b3f4b890601d589460a5b967537
      https://github.com/dyninst/dyninst/commit/4a660b200f2a3b3f4b890601d589460a5b967537
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  Make InlinedFunction(FunctionBase *) public

It's awkward having it be protected and then friended so it can be used.
Just make it part of the API.


  Commit: 57f7e8cf5715ace7ecaea2e19d9b937e226f24fb
      https://github.com/dyninst/dyninst/commit/57f7e8cf5715ace7ecaea2e19d9b937e226f24fb
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  Make ~InlinedFunction public

InlinedFunction is intended to be derived from and thus derived types
can be deleted through pointers to base. This would cause UB in the
current state.

http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-dtor-virtual

  A base class destructor should be either public and virtual, or
protected and non-virtual


  Commit: 091658ad80729e4b23a080d6c024503dc8f7b9f7
      https://github.com/dyninst/dyninst/commit/091658ad80729e4b23a080d6c024503dc8f7b9f7
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  Make InlinedFunction::getModule public

It's a pure virtual member in FunctionBase, so making it protected here
means that calls through a pointer to InlinedFunction could generate a
runtime error. gcc and clang seem to "do what I mean" even though it's
ill-formed. It also removes the astonishment that `getModule` isn't
accessible through the public interface even though it is required to be
there.

>From C++11 standard (n3242):

11 Member access control [class.access]

5. It should be noted that it is access to members and base classes that
is controlled, not their visibility. Names of members are still visible,
and implicit conversions to base classes are still considered, when
those members and base classes are inaccessible. The interpretation of a
given construct is established without regard to access control. If the
interpretation established makes use of inaccessible member names or
base classes, the construct is ill-formed.


  Commit: cad68ce5955b7f832bf68a437fb386a1dc962b4c
      https://github.com/dyninst/dyninst/commit/cad68ce5955b7f832bf68a437fb386a1dc962b4c
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  InlinedFunction should not export its interface.

These functions should override those in FunctionBase, but should not
define a new interface.


  Commit: 0e3a415c041fad43481aeda68dbe8aba036d8236
      https://github.com/dyninst/dyninst/commit/0e3a415c041fad43481aeda68dbe8aba036d8236
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2023-08-08 (Tue, 08 Aug 2023)

  Changed paths:
    M symtabAPI/h/Function.h

  Log Message:
  -----------
  Explicitly mark overridden members in InlinedFunction


Compare: https://github.com/dyninst/dyninst/compare/7b17a1c699d7%5E...0e3a415c041f
[← Prev in Thread] Current Thread [Next in Thread→]
  • [DynInst_API:] [dyninst/dyninst] 7b17a1: Remove undefined FunctionBase constructors, Tim Haines <=