Hi all.
libdv is currently failing in i686 architectures, it could be dropped. Does anyone still need libdv-1686?
$ fedrq whatrequires libdv -F source dvgrab gstreamer1-plugins-good xawtv
Recent scratch f41 build: https://koji.fedoraproject.org/koji/taskinfo?taskID=114030172
RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=2261310
Regards.
On Sun, Feb 25, 2024 at 08:41:38PM +0100, Antonio T. sagitter wrote:
libdv is currently failing in i686 architectures, it could be dropped.
Ugh, why? The bug is not from upstream, but from the downstream libdv-pic.patch patch, and is on i686 only because those changes are in i686 specific code. Normally one wouldn't introduce these extra pointer arguments but instead just use proper PIC accesses to the symbol, e.g. you could compile extern unsigned char dv_quant_shifts[22][4]; int foo (void) { return dv_quant_shifts[0][0]; } with -O2 -m32 -march=i686 -fpic -S and see what is needed. Anyway, if it is done the way the patch does that, the assembly doesn't care that much what exact pointer it gets as long as it points to the dv_quant_shifts array. So one fix is change the +extern void _dv_quant_88_inverse_x86(dv_coeff_t *block,int qno,int klass, uint8_t *offset, uint8_t *shifts); line in the patch to +extern void _dv_quant_88_inverse_x86(dv_coeff_t *block,int qno,int klass, uint8_t *offset, uint8_t (*shifts)[4]); and yet another would be to change + _dv_quant_88_inverse_x86(mb->b[i].coeffs,mb->qno,mb->b[i].class_no,dv_quant_offset,dv_quant_shifts); and + _dv_quant_88_inverse_x86(bl->coeffs,mb->qno,bl->class_no,dv_quant_offset,dv_quant_shifts); lines in the patch to + _dv_quant_88_inverse_x86(mb->b[i].coeffs,mb->qno,mb->b[i].class_no,dv_quant_offset,(uint8_t *)dv_quant_shifts); and + _dv_quant_88_inverse_x86(bl->coeffs,mb->qno,bl->class_no,dv_quant_offset,(uint8_t *)dv_quant_shifts); Fixing this is less work than dropping it from one arch and dealing with the fallout.
Jakub