Hi Thomas

On 2024-04-03 08:09:59 +0200, Thomas Orgis wrote:
> Hi again,
> 
> (after Easter hiatus … or rather xz backdoor meltdown?)
> 
> I had a stab at this, detecting a system that forces 64 bit offsets on
> a 32 bit base in configure. This is to ensure that you do not encounter
> the same symbol (like mpg123_tell() on two builds of the library on the
> same platform offering a differing ABI (32 or 64 bit argument or return
> value).
> 
> This is supposed to look like that:
> 
> $ CPPFLAGS=-D_FILE_OFFSET_BITS=64 ./configure
> […]
> checking switched off_t size... 8
> checking unswitched off_t size... 4
> checking size of off_t... 8
> configure: Detected system with enforced 64 bit offsets, dropping suffixless 
> symbols for uncryptic ABI breakage.
> checking if native off_t is already 64 bits... yes
> […]
>   default offsets ......... 64
>   explicit 64 bit offsets . no
>   forced 64 bit offsets ... yes
> […]
> 
> This removes the ambiguous symbols from libmpg123.so and libsyn123.so.
> With unchanged soversion, client code built for the earlier version
> before the off_t/time_t 64 bit switch will fall in two categories:
> 
> 1. Built with enabled large file support: Continues to work, no
>    breakage.
> 
> 2. Built without large file support: Will break early at runtime
>    linking stage.
> 
> There might be applications that just use API not affected by off_t
> changes and thus are fine either way.
> 
> Can you verify that the prospective 1.32.6 (named 1.32.6-dev) under
> 
>       http://mpg123.org/snapshot/mpg123-1.32.6-dev+20240403022201.tar.bz2
> 
> works fine in the debian build and meets expectations? I'd do a proper
> release of it soon, then.

Now I get the following on arm{hf,el}:

--- debian/libmpg123-0.symbols (libmpg123-0_1.32.6~dev+20240403022201-1_armhf)
+++ dpkg-gensymbolspYII3c       2024-04-03 09:52:12.863133592 +0000
@@ -8,8 +8,8 @@
  mpg123_current_decoder@Base 1.7.2
  mpg123_decode@Base 1.6.2
  mpg123_decode_frame64@Base 1.32.3
- mpg123_decode_frame@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_decode_frame_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_decode_frame@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_decode_frame_32@Base 1.13.7
  mpg123_decode_frame_64@Base 1.13.7
  mpg123_decoder@Base 1.6.2
  mpg123_decoders@Base 1.6.2
@@ -31,8 +31,8 @@
  mpg123_feature@Base 1.10.0
  mpg123_feed@Base 1.6.2
  mpg123_feedseek64@Base 1.32.3
- mpg123_feedseek@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_feedseek_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_feedseek@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_feedseek_32@Base 1.13.7
  mpg123_feedseek_64@Base 1.13.7
  mpg123_fmt2@Base 1.26.0
  mpg123_fmt@Base 1.6.2
@@ -45,18 +45,18 @@
  mpg123_format_none@Base 1.6.2
  mpg123_format_support@Base 1.6.2
  mpg123_framebyframe_decode64@Base 1.32.3
- mpg123_framebyframe_decode@Base 1.10.0
- (arch-bits=32|arch=!x32)mpg123_framebyframe_decode_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_framebyframe_decode@Base 1.10.0
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_framebyframe_decode_32@Base 1.13.7
  mpg123_framebyframe_decode_64@Base 1.13.7
  mpg123_framebyframe_next@Base 1.10.0
  mpg123_framedata@Base 1.14.0
  mpg123_framelength64@Base 1.32.3
- mpg123_framelength@Base 1.23.8
- (arch-bits=32|arch=!x32)mpg123_framelength_32@Base 1.23.8
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_framelength@Base 1.23.8
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_framelength_32@Base 1.23.8
  mpg123_framelength_64@Base 1.23.8
  mpg123_framepos64@Base 1.32.3
- mpg123_framepos@Base 1.14.0
- (arch-bits=32|arch=!x32)mpg123_framepos_32@Base 1.14.0
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_framepos@Base 1.14.0
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_framepos_32@Base 1.14.0
  mpg123_framepos_64@Base 1.14.0
  mpg123_free@Base 1.26.0
  mpg123_free_string@Base 1.6.2
@@ -77,16 +77,16 @@
  mpg123_id3@Base 1.6.2
  mpg123_id3_raw@Base 1.26.0
  mpg123_index64@Base 1.32.3
- mpg123_index@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_index_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_index@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_index_32@Base 1.13.7
  mpg123_index_64@Base 1.13.7
  mpg123_info2@Base 1.28.0
  mpg123_info@Base 1.6.2
  mpg123_init@Base 1.6.2
  mpg123_init_string@Base 1.6.2
  mpg123_length64@Base 1.32.3
- mpg123_length@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_length_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_length@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_length_32@Base 1.13.7
  mpg123_length_64@Base 1.13.7
  mpg123_libversion@Base 1.32.3
  mpg123_meta_check@Base 1.6.2
@@ -95,18 +95,18 @@
  mpg123_new@Base 1.6.2
  mpg123_new_pars@Base 1.6.2
  mpg123_new_string@Base 1.26.0
- mpg123_open@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_open_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_open@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_open_32@Base 1.13.7
  mpg123_open_64@Base 1.13.7
- mpg123_open_fd@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_open_fd_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_open_fd@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_open_fd_32@Base 1.13.7
  mpg123_open_fd_64@Base 1.13.7
  mpg123_open_feed@Base 1.6.2
- mpg123_open_fixed@Base 1.26.0
- (arch-bits=32|arch=!x32)mpg123_open_fixed_32@Base 1.26.0
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_open_fixed@Base 1.26.0
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_open_fixed_32@Base 1.26.0
  mpg123_open_fixed_64@Base 1.26.0
- mpg123_open_handle@Base 1.12.1
- (arch-bits=32|arch=!x32)mpg123_open_handle_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_open_handle@Base 1.12.1
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_open_handle_32@Base 1.13.7
  mpg123_open_handle_64@Base 1.13.7
  mpg123_outblock@Base 1.6.2
  mpg123_par2@Base 1.28.0
@@ -116,18 +116,18 @@
  mpg123_parnew@Base 1.6.2
  mpg123_plain_strerror@Base 1.6.2
  mpg123_position64@Base 1.32.3
- mpg123_position@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_position_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_position@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_position_32@Base 1.13.7
  mpg123_position_64@Base 1.13.7
  mpg123_rates@Base 1.6.2
  mpg123_read@Base 1.6.2
  mpg123_reader64@Base 1.32.3
  mpg123_replace_buffer@Base 1.6.2
- mpg123_replace_reader@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_replace_reader_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_replace_reader@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_replace_reader_32@Base 1.13.7
  mpg123_replace_reader_64@Base 1.13.7
- mpg123_replace_reader_handle@Base 1.12.1
- (arch-bits=32|arch=!x32)mpg123_replace_reader_handle_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_replace_reader_handle@Base 1.12.1
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_replace_reader_handle_32@Base 1.13.7
  mpg123_replace_reader_handle_64@Base 1.13.7
  mpg123_reset_eq@Base 1.6.2
  mpg123_resize_string@Base 1.6.2
@@ -135,20 +135,20 @@
  mpg123_same_string@Base 1.26.0
  mpg123_scan@Base 1.6.2
  mpg123_seek64@Base 1.32.3
- mpg123_seek@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_seek_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_seek@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_seek_32@Base 1.13.7
  mpg123_seek_64@Base 1.13.7
  mpg123_seek_frame64@Base 1.32.3
- mpg123_seek_frame@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_seek_frame_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_seek_frame@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_seek_frame_32@Base 1.13.7
  mpg123_seek_frame_64@Base 1.13.7
  mpg123_set_filesize64@Base 1.32.3
- mpg123_set_filesize@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_set_filesize_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_set_filesize@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_set_filesize_32@Base 1.13.7
  mpg123_set_filesize_64@Base 1.13.7
  mpg123_set_index64@Base 1.32.3
- mpg123_set_index@Base 1.10.0
- (arch-bits=32|arch=!x32)mpg123_set_index_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_set_index@Base 1.10.0
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_set_index_32@Base 1.13.7
  mpg123_set_index_64@Base 1.13.7
  mpg123_set_moreinfo@Base 1.26.0
  mpg123_set_string@Base 1.6.2
@@ -160,20 +160,20 @@
  mpg123_strlen@Base 1.13.7
  mpg123_supported_decoders@Base 1.6.2
  mpg123_tell64@Base 1.32.3
- mpg123_tell@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_tell_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_tell@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_tell_32@Base 1.13.7
  mpg123_tell_64@Base 1.13.7
  mpg123_tell_stream64@Base 1.32.3
- mpg123_tell_stream@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_tell_stream_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_tell_stream@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_tell_stream_32@Base 1.13.7
  mpg123_tell_stream_64@Base 1.13.7
  mpg123_tellframe64@Base 1.32.3
- mpg123_tellframe@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_tellframe_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_tellframe@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_tellframe_32@Base 1.13.7
  mpg123_tellframe_64@Base 1.13.7
  mpg123_timeframe64@Base 1.32.3
- mpg123_timeframe@Base 1.6.2
- (arch-bits=32|arch=!x32)mpg123_timeframe_32@Base 1.13.7
+#MISSING: 1.32.6~dev+20240403022201-1# mpg123_timeframe@Base 1.6.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)mpg123_timeframe_32@Base 1.13.7
  mpg123_timeframe_64@Base 1.13.7
  mpg123_tpf@Base 1.6.2
  mpg123_volume@Base 1.6.2
dpkg-gensymbols: error: some symbols or patterns disappeared in the symbols 
file: see diff output below
dpkg-gensymbols: warning: debian/libsyn123-0/DEBIAN/symbols doesn't match 
completely debian/libsyn123-0.symbols
--- debian/libsyn123-0.symbols (libsyn123-0_1.32.6~dev+20240403022201-1_armhf)
+++ dpkg-gensymbols0VudKK       2024-04-03 09:52:13.071134835 +0000
@@ -32,15 +32,15 @@
  syn123_resample_incount@Base 1.26.0
  syn123_resample_inexpect@Base 1.26.0
  syn123_resample_intotal64@Base 1.32.3
- syn123_resample_intotal@Base 1.26.2
- (arch-bits=32|arch=!x32)syn123_resample_intotal_32@Base 1.26.2
+#MISSING: 1.32.6~dev+20240403022201-1# syn123_resample_intotal@Base 1.26.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)syn123_resample_intotal_32@Base 1.26.2
  syn123_resample_intotal_64@Base 1.26.0
  syn123_resample_maxincount@Base 1.26.0
  syn123_resample_maxrate@Base 1.26.0
  syn123_resample_out@Base 1.32.3
  syn123_resample_total64@Base 1.32.3
- syn123_resample_total@Base 1.26.2
- (arch-bits=32|arch=!x32)syn123_resample_total_32@Base 1.26.2
+#MISSING: 1.32.6~dev+20240403022201-1# syn123_resample_total@Base 1.26.2
+#MISSING: 1.32.6~dev+20240403022201-1# 
(arch-bits=32|arch=!x32)syn123_resample_total_32@Base 1.26.2
  syn123_resample_total_64@Base 1.26.0
  syn123_setup_filter@Base 1.26.0
  syn123_setup_geiger@Base 1.26.0
dh_makeshlibs: error: failing due to earlier errors

>From your explanation above, this is what I expected. The builds on 64
bit architectures and i386 are unaffected.

> It's up to you (Debian) to decide what to do with binary package naming
> for the transition (it is your business anyway;-), but I feel strongly
> about the change to avoid an existing symbol changing ABI with subtle
> breakage.

If you feel strongly about this, I think the best option would be to
bump SONAME of the libraries upstream … but this can be done later
during the release cycle and we do the package rename for now to move
the transition along.

Cheers
-- 
Sebastian Ramacher

Reply via email to