[00/10] Patches for libsframe versioning and symbol versioning

Message ID 20230623044448.2617101-1-indu.bhagat@oracle.com
Headers
Series Patches for libsframe versioning and symbol versioning |

Message

Indu Bhagat June 23, 2023, 4:44 a.m. UTC
  Hi,

This patch set adds versioning support to libsframe, which is needed to manage
the upcoming ABI breaking changes (some of which are included in this
patchset).  It also adds symbol versioning for libsframe.  As the library is
still evolving, it will be better to add symbol versioning support now.

I would like some more eyes on this sort of thing, especially the three patches:

  [1/10] libsframe: add library versioning
  [3/10] libsframe: add symbol versioning
  [10/10] binutils/NEWS: add note about upcoming libsframe changes

Testing notes:
 - Regression tested various cross-builds on x86_64
 - try bot does not show any new failures
 - Build works on Solaris, mingw, cygwin
 - Also regression tested on a FreeBSD VM

Further details for the patch series:
The first release of the library (libsframe.so.0) had unversioned
symbols.  The next release of the library (libsframe.so.1) will have versioned
symbols with version node name LIBSFRAME_1.0.  As libsframe.so.0 ->
libsframe.so.1 indicates an ABI break, I realised that including the patches:

  [4/10] libsframe: update the semantics of sframe_fre_get_ra_offset
  [5/10] libsframe: update the semantics of sframe_fre_get_fp_offset

can be safely done.  My previous question to the mailing list, in hindsight,
was a moot point https://sourceware.org/pipermail/binutils/2023-June/127801.html.

After this patchset, I will proceed with further ABI changes, format bump to
SFrame version 2 and its related changes.

Thanks,

Indu Bhagat (10):
  libsframe: add library versioning
  libsframe: remove sframe_get_funcdesc_with_addr API
  libsframe: add symbol versioning
  libsframe: update the semantics of sframe_fre_get_ra_offset
  libsframe: update the semantics of sframe_fre_get_fp_offset
  libsframe: use uint32_t for fre_type and fde_type function args
  bfd: libsframe: use uint32_t for return type of sframe_calc_fre_type
  libsframe: use uint8_t instead of unsigned char for abi_arch
  libsframe: use uint8_t for return type of sframe_fre_get_base_reg_id
  binutils/NEWS: add note about upcoming libsframe changes

 bfd/elf-sframe.c          |   2 +-
 bfd/elfxx-x86.c           |   2 +-
 binutils/NEWS             |   6 +++
 include/sframe-api.h      |  21 ++++----
 libsframe/Makefile.am     |  15 ++++++
 libsframe/Makefile.in     |  14 +++++-
 libsframe/configure       |  63 ++++++++++++++++++++++-
 libsframe/configure.ac    |  28 +++++++++++
 libsframe/libsframe.ver   |  36 +++++++++++++
 libsframe/libtool-version |  30 +++++++++++
 libsframe/sframe-dump.c   |  20 +++++---
 libsframe/sframe.c        | 103 +++++++++++++++++++++++---------------
 12 files changed, 277 insertions(+), 63 deletions(-)
 create mode 100644 libsframe/libsframe.ver
 create mode 100644 libsframe/libtool-version
  

Comments

Indu Bhagat June 27, 2023, 7:59 p.m. UTC | #1
On 6/22/23 9:44 PM, Indu Bhagat via Binutils wrote:
> Hi,
> 
> This patch set adds versioning support to libsframe, which is needed to manage
> the upcoming ABI breaking changes (some of which are included in this
> patchset).  It also adds symbol versioning for libsframe.  As the library is
> still evolving, it will be better to add symbol versioning support now.
> 
> I would like some more eyes on this sort of thing, especially the three patches:
> 
>    [1/10] libsframe: add library versioning
>    [3/10] libsframe: add symbol versioning
>    [10/10] binutils/NEWS: add note about upcoming libsframe changes
> 
> Testing notes:
>   - Regression tested various cross-builds on x86_64
>   - try bot does not show any new failures
>   - Build works on Solaris, mingw, cygwin
>   - Also regression tested on a FreeBSD VM
> 

I have committed this series.  I added two further small patches. I sent 
the final version of the patches as COMMITTED to the list.

Thanks

> Further details for the patch series:
> The first release of the library (libsframe.so.0) had unversioned
> symbols.  The next release of the library (libsframe.so.1) will have versioned
> symbols with version node name LIBSFRAME_1.0.  As libsframe.so.0 ->
> libsframe.so.1 indicates an ABI break, I realised that including the patches:
> 
>    [4/10] libsframe: update the semantics of sframe_fre_get_ra_offset
>    [5/10] libsframe: update the semantics of sframe_fre_get_fp_offset
> 
> can be safely done.  My previous question to the mailing list, in hindsight,
> was a moot point https://sourceware.org/pipermail/binutils/2023-June/127801.html.
> 
> After this patchset, I will proceed with further ABI changes, format bump to
> SFrame version 2 and its related changes.
> 
> Thanks,
> 
> Indu Bhagat (10):
>    libsframe: add library versioning
>    libsframe: remove sframe_get_funcdesc_with_addr API
>    libsframe: add symbol versioning
>    libsframe: update the semantics of sframe_fre_get_ra_offset
>    libsframe: update the semantics of sframe_fre_get_fp_offset
>    libsframe: use uint32_t for fre_type and fde_type function args
>    bfd: libsframe: use uint32_t for return type of sframe_calc_fre_type
>    libsframe: use uint8_t instead of unsigned char for abi_arch
>    libsframe: use uint8_t for return type of sframe_fre_get_base_reg_id
>    binutils/NEWS: add note about upcoming libsframe changes
> 
>   bfd/elf-sframe.c          |   2 +-
>   bfd/elfxx-x86.c           |   2 +-
>   binutils/NEWS             |   6 +++
>   include/sframe-api.h      |  21 ++++----
>   libsframe/Makefile.am     |  15 ++++++
>   libsframe/Makefile.in     |  14 +++++-
>   libsframe/configure       |  63 ++++++++++++++++++++++-
>   libsframe/configure.ac    |  28 +++++++++++
>   libsframe/libsframe.ver   |  36 +++++++++++++
>   libsframe/libtool-version |  30 +++++++++++
>   libsframe/sframe-dump.c   |  20 +++++---
>   libsframe/sframe.c        | 103 +++++++++++++++++++++++---------------
>   12 files changed, 277 insertions(+), 63 deletions(-)
>   create mode 100644 libsframe/libsframe.ver
>   create mode 100644 libsframe/libtool-version
>