Package: libasound2 Version: 1.1.8-2 Followup-For: Bug #870396 Still exists… updated debdiff anbei.
Verified 1.1.8-2+x32.1 to work. -- System Information: Debian Release: bullseye/sid APT prefers unreleased APT policy: (500, 'unreleased'), (500, 'buildd-unstable'), (500, 'unstable'), (100, 'experimental') Architecture: x32 (x86_64) Foreign Architectures: i386, amd64 Kernel: Linux 5.2.0-3-amd64 (SMP w/4 CPU cores) Kernel taint flags: TAINT_FIRMWARE_WORKAROUND Locale: LANG=C, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=C (charmap=UTF-8) Shell: /bin/sh linked to /bin/lksh Init: sysvinit (via /sbin/init) Versions of packages libasound2:x32 depends on: ii libasound2-data 1.1.8-2 ii libc6 2.29-2 libasound2:x32 recommends no packages. Versions of packages libasound2:x32 suggests: pn libasound2-plugins <none> -- no debconf information
diff -Nru alsa-lib-1.1.8/debian/changelog alsa-lib-1.1.8/debian/changelog --- alsa-lib-1.1.8/debian/changelog 2019-10-11 12:44:01.000000000 +0200 +++ alsa-lib-1.1.8/debian/changelog 2019-10-17 19:52:52.000000000 +0200 @@ -1,3 +1,10 @@ +alsa-lib (1.1.8-2+x32.1) unreleased; urgency=high + + * Non-maintainer upload. + * Add patches fixing sound on x32. (Closes: #870396) + + -- Thorsten Glaser <t...@mirbsd.de> Thu, 17 Oct 2019 19:52:52 +0200 + alsa-lib (1.1.8-2) unstable; urgency=medium * Get rid of old, unused patches. diff -Nru alsa-lib-1.1.8/debian/patches/0009-fix-format-strings.patch alsa-lib-1.1.8/debian/patches/0009-fix-format-strings.patch --- alsa-lib-1.1.8/debian/patches/0009-fix-format-strings.patch 1970-01-01 01:00:00.000000000 +0100 +++ alsa-lib-1.1.8/debian/patches/0009-fix-format-strings.patch 2019-10-17 19:52:23.000000000 +0200 @@ -0,0 +1,73 @@ +# DP: fix long vs. long long confusion when there is a 64-bit time_t +# DP: on a 32-bit long system, such as all newer 32-bit architectures + +--- a/src/pcm/pcm.c ++++ b/src/pcm/pcm.c +@@ -2257,11 +2257,11 @@ int snd_pcm_status_dump(snd_pcm_status_t + { + assert(status); + snd_output_printf(out, " state : %s\n", snd_pcm_state_name((snd_pcm_state_t) status->state)); +- snd_output_printf(out, " trigger_time: %ld.%06ld\n", +- status->trigger_tstamp.tv_sec, +- status->trigger_tstamp.tv_nsec / 1000); +- snd_output_printf(out, " tstamp : %ld.%06ld\n", +- status->tstamp.tv_sec, status->tstamp.tv_nsec / 1000); ++ snd_output_printf(out, " trigger_time: %lld.%06ld\n", ++ (long long)status->trigger_tstamp.tv_sec, ++ (long)status->trigger_tstamp.tv_nsec / 1000L); ++ snd_output_printf(out, " tstamp : %lld.%06ld\n", ++ (long long)status->tstamp.tv_sec, (long)status->tstamp.tv_nsec / 1000L); + snd_output_printf(out, " delay : %ld\n", (long)status->delay); + snd_output_printf(out, " avail : %ld\n", (long)status->avail); + snd_output_printf(out, " avail_max : %ld\n", (long)status->avail_max); +--- a/test/latency.c ++++ b/test/latency.c +@@ -325,12 +325,12 @@ void setscheduler(void) + printf("!!!Scheduler set to Round Robin with priority %i FAILED!!!\n", sched_param.sched_priority); + } + +-long timediff(snd_timestamp_t t1, snd_timestamp_t t2) ++long long timediff(snd_timestamp_t t1, snd_timestamp_t t2) + { +- signed long l; ++ signed long long l; + + t1.tv_sec -= t2.tv_sec; +- l = (signed long) t1.tv_usec - (signed long) t2.tv_usec; ++ l = (signed long long) t1.tv_usec - (signed long long) t2.tv_usec; + if (l < 0) { + t1.tv_sec--; + l = 1000000 + l; +@@ -682,10 +682,10 @@ int main(int argc, char *argv[]) + snd_pcm_nonblock(phandle, !block ? 1 : 0); + if (ok) { + #if 1 +- printf("Playback time = %li.%i, Record time = %li.%i, diff = %li\n", +- p_tstamp.tv_sec, ++ printf("Playback time = %lli.%i, Record time = %lli.%i, diff = %lli\n", ++ (long long)p_tstamp.tv_sec, + (int)p_tstamp.tv_usec, +- c_tstamp.tv_sec, ++ (long long)c_tstamp.tv_sec, + (int)c_tstamp.tv_usec, + timediff(p_tstamp, c_tstamp)); + #endif +--- a/test/queue_timer.c ++++ b/test/queue_timer.c +@@ -99,11 +99,11 @@ main(int argc ATTRIBUTE_UNUSED, char **a + normalize(&diffdiff); + prevdiff = diff; + +- fprintf(stderr, " real time: %12ld sec %8ld usec\nqueue time: %12ld sec %8ld usec\n diff: %12ld sec %8ld usec\n diffdiff: %12ld sec %8ld usec\n", +- tv.tv_sec, tv.tv_usec, +- (long)rtime->tv_sec, (long)rtime->tv_nsec / 1000, +- diff.tv_sec, diff.tv_usec, +- (long)diffdiff.tv_sec, (long)diffdiff.tv_usec); ++ fprintf(stderr, " real time: %12lld sec %8ld usec\nqueue time: %12lld sec %8ld usec\n diff: %12lld sec %8ld usec\n diffdiff: %12lld sec %8ld usec\n", ++ (long long)tv.tv_sec, (long)tv.tv_usec, ++ (long long)rtime->tv_sec, (long)rtime->tv_nsec / 1000, ++ (long long)diff.tv_sec, (long)diff.tv_usec, ++ (long long)diffdiff.tv_sec, (long)diffdiff.tv_usec); + + if (diffdiff.tv_usec > 5000 || + diffdiff.tv_usec < -5000) { diff -Nru alsa-lib-1.1.8/debian/patches/0011-distinguish-x32-from-amd64.patch alsa-lib-1.1.8/debian/patches/0011-distinguish-x32-from-amd64.patch --- alsa-lib-1.1.8/debian/patches/0011-distinguish-x32-from-amd64.patch 1970-01-01 01:00:00.000000000 +0100 +++ alsa-lib-1.1.8/debian/patches/0011-distinguish-x32-from-amd64.patch 2019-10-17 19:52:23.000000000 +0200 @@ -0,0 +1,14 @@ +# DP: fix segmentation fault coming from this using amd64 assembly code +# DP: on x32 systems + +--- a/src/pcm/pcm_dmix.c ++++ b/src/pcm/pcm_dmix.c +@@ -145,7 +145,7 @@ static void dmix_server_free(snd_pcm_dir + #include "pcm_dmix_generic.c" + #if defined(__i386__) + #include "pcm_dmix_i386.c" +-#elif defined(__x86_64__) ++#elif defined(__x86_64__) && !defined(__ILP32__) + #include "pcm_dmix_x86_64.c" + #else + #ifndef DOC_HIDDEN diff -Nru alsa-lib-1.1.8/debian/patches/series alsa-lib-1.1.8/debian/patches/series --- alsa-lib-1.1.8/debian/patches/series 2019-10-11 12:11:55.000000000 +0200 +++ alsa-lib-1.1.8/debian/patches/series 2019-10-17 19:52:35.000000000 +0200 @@ -1,3 +1,5 @@ 0001-Enabled-extended-namehints-in-alsa.conf.patch 0002-Add-a-configuration-for-tegra-alc5632-based-cards.patch 0003-conf-ucm-sof-skl_hda_card-backport.patch +0009-fix-format-strings.patch +0011-distinguish-x32-from-amd64.patch