Bug#878318: nyquist FTBFS with gcc 7: undefined references
Control: tags -1 patch Juhani Numminen kirjoitti 04.12.2017 klo 00:39: A FreeBSD bug from 2012 looks similar, there the fix was s|inline void|static inline void|.[1] That change entered upstream repository earlier in 2012.[2] Debian's version doesn't have it.[3] A patch is attached. Build was successful using cowbuilder, sid i386. Juhani Description: Fix FTBFS with gcc 7: undefined references Origin: https://sourceforge.net/p/nyquist/code/73/tree/trunk/nyquist/ffts/src/fftlib.c?diff=50d0ad1227184648a86e886f:72 Author: Roger B. DannenbergBug-Debian: https://bugs.debian.org/878318 Bug-FreeBSD: https://bugs.freebsd.org/174376 Last-Update: 2017-12-10 --- a/ffts/src/fftlib.c +++ b/ffts/src/fftlib.c @@ -1,6 +1,8 @@ /*** lower level fft stuff including routines called in fftext.c and fft2d.c ***/ +/* inline declarations modified by RBD for C99 compiler */ + #include "fftlib.h" #include #define MCACHE (11-(sizeof(float)/8)) // fft's with M bigger than this bust primary cache @@ -61,8 +63,8 @@ parts of ffts1 */ -inline void bitrevR2(float *ioptr, long M, short *BRLow); -inline void bitrevR2(float *ioptr, long M, short *BRLow){ +//inline void bitrevR2(float *ioptr, long M, short *BRLow); +static inline void bitrevR2(float *ioptr, long M, short *BRLow){ /*** bit reverse and first radix 2 stage of forward or inverse fft ***/ float f0r; float f0i; @@ -198,8 +200,8 @@ }; } -inline void fft2pt(float *ioptr); -inline void fft2pt(float *ioptr){ +//inline void fft2pt(float *ioptr); +static inline void fft2pt(float *ioptr){ /*** RADIX 2 fft ***/ float f0r, f0i, f1r, f1i; float t0r, t0i; @@ -229,8 +231,8 @@ } -inline void fft4pt(float *ioptr); -inline void fft4pt(float *ioptr){ +//inline void fft4pt(float *ioptr); +static inline void fft4pt(float *ioptr){ /*** RADIX 4 fft ***/ float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i; float t0r, t0i, t1r, t1i; @@ -284,8 +286,8 @@ ioptr[7] = f3i; } -inline void fft8pt(float *ioptr); -inline void fft8pt(float *ioptr){ +//inline void fft8pt(float *ioptr); +static inline void fft8pt(float *ioptr){ /*** RADIX 8 fft ***/ float w0r = 1.0/MYROOT2; /* cos(pi/4) */ float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i; @@ -403,8 +405,8 @@ ioptr[15] = f6i; } -inline void bfR2(float *ioptr, long M, long NDiffU); -inline void bfR2(float *ioptr, long M, long NDiffU){ +//inline void bfR2(float *ioptr, long M, long NDiffU); +static inline void bfR2(float *ioptr, long M, long NDiffU){ /*** 2nd radix 2 stage ***/ unsigned long pos; unsigned long posi; @@ -512,8 +514,8 @@ } } -inline void bfR4(float *ioptr, long M, long NDiffU); -inline void bfR4(float *ioptr, long M, long NDiffU){ +//inline void bfR4(float *ioptr, long M, long NDiffU); +static inline void bfR4(float *ioptr, long M, long NDiffU){ /*** 1 radix 4 stage ***/ unsigned long pos; unsigned long posi; @@ -721,8 +723,8 @@ } -inline void bfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt); -inline void bfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt){ +// inline void bfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt); +static inline void bfstages(float *ioptr, long M, float *Utbl, long Ustride, long NDiffU, long StageCnt){ /*** RADIX 8 Stages ***/ unsigned long pos; unsigned long posi; @@ -1125,8 +1127,8 @@ parts of iffts1 */ -inline void scbitrevR2(float *ioptr, long M, short *BRLow, float scale); -inline void scbitrevR2(float *ioptr, long M, short *BRLow, float scale){ +// inline void scbitrevR2(float *ioptr, long M, short *BRLow, float scale); +static inline void scbitrevR2(float *ioptr, long M, short *BRLow, float scale){ /*** scaled bit reverse and first radix 2 stage forward or inverse fft ***/ float f0r; float f0i; @@ -1262,8 +1264,8 @@ }; } -inline void ifft2pt(float *ioptr, float scale); -inline void ifft2pt(float *ioptr, float scale){ +//inline void ifft2pt(float *ioptr, float scale); +static inline void ifft2pt(float *ioptr, float scale){ /*** RADIX 2 ifft ***/ float f0r, f0i, f1r, f1i; float t0r, t0i; @@ -1292,8 +1294,8 @@ ioptr[3] = scale*f1i; } -inline void ifft4pt(float *ioptr, float scale); -inline void ifft4pt(float *ioptr, float scale){ +// inline void ifft4pt(float *ioptr, float scale); +static inline void ifft4pt(float *ioptr, float scale){ /*** RADIX 4 ifft ***/ float f0r, f0i, f1r, f1i, f2r, f2i, f3r, f3i; float t0r, t0i, t1r, t1i; @@ -1347,8 +1349,8 @@ ioptr[7] = scale*f3i; } -inline void ifft8pt(float *ioptr, float scale); -inline void ifft8pt(float *ioptr, float scale){ +//inline void ifft8pt(float *ioptr, float scale); +static inline void ifft8pt(float *ioptr, float scale){
Bug#878318: nyquist FTBFS with gcc 7: undefined references
On Thu, 12 Oct 2017 22:32:20 +0300 Adrian Bunkwrote: ffts/src/fftlib.o: In function `fftrecurs': fftlib.c:(.text+0xcf8): undefined reference to `bfstages' ffts/src/fftlib.o: In function `ffts1': fftlib.c:(.text+0x1441): undefined reference to `bfstages' ffts/src/fftlib.o: In function `ifftrecurs': fftlib.c:(.text+0x250a): undefined reference to `ibfstages' ffts/src/fftlib.o: In function `iffts1': fftlib.c:(.text+0x2d30): undefined reference to `ibfstages' ffts/src/fftlib.o: In function `.L186': fftlib.c:(.text+0x3cd2): undefined reference to `bfstages' ffts/src/fftlib.o: In function `riffts1': fftlib.c:(.text+0x4c5c): undefined reference to `ibfstages' A FreeBSD bug from 2012 looks similar, there the fix was s|inline void|static inline void|.[1] That change entered upstream repository earlier in 2012.[2] Debian's version doesn't have it.[3] Regards, Juhani https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=174376 https://sourceforge.net/p/nyquist/code/73/ https://sources.debian.org/src/nyquist/3.05-2.1/ffts/src/fftlib.c/#L64
Bug#878318: nyquist FTBFS with gcc 7: undefined references
Source: nyquist Version: 3.05-2.1 Severity: serious Tags: buster sid https://tests.reproducible-builds.org/debian/rb-pkg/unstable/i386/nyquist.html ... g++ xlisp/extern.o xlisp/xldmem.o xlisp/xlbfun.o xlisp/xlcont.o xlisp/xldbug.o xlisp/xleval.o xlisp/xlfio.o xlisp/xlftab.o xlisp/xlglob.o xlisp/xlimage.o xlisp/xlinit.o xlisp/xlio.o xlisp/xlisp.o xlisp/xljump.o xlisp/xllist.o xlisp/xlmath.o xlisp/xlobj.o xlisp/xlpp.o xlisp/xlprin.o xlisp/xlread.o xlisp/xlstr.o xlisp/xlsubr.o xlisp/xlsym.o xlisp/xlsys.o xlisp/path.o tran/abs.o tran/allpoles.o tran/alpass.o tran/alpasscv.o tran/alpassvv.o tran/amosc.o tran/areson.o tran/aresonvc.o tran/aresoncv.o tran/aresonvv.o tran/atone.o tran/atonev.o tran/biquadfilt.o tran/buzz.o tran/chase.o tran/clip.o tran/congen.o tran/const.o tran/coterm.o tran/delaycc.o tran/delaycv.o tran/eqbandvvv.o tran/exp.o tran/follow.o tran/fmosc.o tran/fromobject.o tran/fromarraystream.o tran/gate.o tran/ifft.o tran/instrclar.o tran/instrclarall.o tran/instrclarfreq.o tran/instrsax.o tran/instrsaxall.o tran/instrsaxfreq.o tran/integrate.o tran/log.o tran/lpreson.o tran/maxv.o tran/offset.o tran/oneshot.o tran/osc.o tran/partial.o tran/pluck.o tran/prod.o tran/pwl.o tran/quantize.o tran/recip.o tran/reson.o tran/resonvc.o tran/resoncv.o tran/resonvv.o tran/sampler.o tran/scale.o tran/shape.o tran/sine.o tran/siosc.o tran/slope.o tran/sqrt.o tran/tapf.o tran/tapv.o tran/tone.o tran/tonev.o tran/upsample.o tran/white.o tran/stkrev.o tran/stkpitshift.o tran/stkchorus.o tran/instrbow.o tran/instrbowedfreq.o tran/instrbanded.o tran/instrmandolin.o tran/instrsitar.o tran/instrmodalbar.o tran/instrflute.o tran/instrflutefreq.o tran/instrfluteall.o tran/fmfb.o tran/fmfbv.o cmt/cext.o cmt/cleanup.o cmt/cmdline.o cmt/cmtcmd.o cmt/moxc.o cmt/mem.o cmt/midifile.o cmt/midifns.o cmt/record.o cmt/seq.o cmt/seqmread.o cmt/seqmwrite.o cmt/seqread.o cmt/seqwrite.o cmt/tempomap.o cmt/timebase.o cmt/userio.o nyqsrc/debug.o nyqsrc/falloc.o nyqsrc/local.o nyqsrc/handlers.o nyqsrc/multiread.o nyqsrc/seqext.o nyqsrc/seqinterf.o nyqsrc/stats.o nyqsrc/ffilterkit.o nyqsrc/sliders.o nyqsrc/sound.o nyqsrc/add.o nyqsrc/avg. o nyqsrc/compose.o nyqsrc/convolve.o nyqsrc/downsample.o nyqsrc/fft.o nyqsrc/inverse.o nyqsrc/multiseq.o nyqsrc/resamp.o nyqsrc/resampv.o nyqsrc/samples.o nyqsrc/sndmax.o nyqsrc/sndread.o nyqsrc/sndseq.o nyqsrc/sndwritepa.o nyqsrc/yin.o nyqsrc/nyq-osc-server.o nyqsrc/trigger.o nyqsrc/lpanal.o nyqsrc/phasevocoder.o nyqsrc/pvshell.o nyqstk/src/Generator.o nyqstk/src/SineWave.o nyqstk/src/Function.o nyqstk/src/FileRead.o nyqstk/src/FileWvIn.o nyqstk/src/Effect.o nyqstk/src/Clarinet.o nyqstk/src/Delay.o nyqstk/src/DelayL.o nyqstk/src/Envelope.o nyqstk/src/Filter.o nyqstk/src/Instrmnt.o nyqstk/src/Noise.o nyqstk/src/OneZero.o nyqstk/src/ReedTable.o nyqstk/src/Saxofony.o nyqstk/src/Stk.o nyqstk/src/WaveLoop.o nyqstk/src/WvIn.o nyqstk/src/NRev.o nyqstk/src/JCRev.o nyqstk/src/PRCRev.o nyqstk/src/PitShift.o nyqstk/src/Chorus.o nyqstk/src/Bowed.o nyqstk/src/BowTable.o nyqstk/src/ADSR.o nyqstk/src/OnePole.o nyqstk/src/BiQuad.o nyqstk/src/BandedWG.o nyqstk/src/DelayA.o nyqstk/src/Mandolin.o nyq stk/src/PluckTwo.o nyqstk/src/Sitar.o nyqstk/src/ModalBar.o nyqstk/src/Modal.o nyqstk/src/Flute.o nyqstk/src/JetTable.o nyqstk/src/PoleZero.o nyqstk/stkinit.o nyqstk/instr.o nyqstk/stkint.o ffts/src/fftext.o ffts/src/fftlib.o ffts/src/matlib.o nyqsrc/sndfnint.o nyqsrc/seqfnint.o sys/unix/osstuff.o sys/unix/term.o -lsndfile -llo -lportaudio -lm -lpthread -lrt -o ny ffts/src/fftlib.o: In function `fftrecurs': fftlib.c:(.text+0xcf8): undefined reference to `bfstages' ffts/src/fftlib.o: In function `ffts1': fftlib.c:(.text+0x1441): undefined reference to `bfstages' ffts/src/fftlib.o: In function `ifftrecurs': fftlib.c:(.text+0x250a): undefined reference to `ibfstages' ffts/src/fftlib.o: In function `iffts1': fftlib.c:(.text+0x2d30): undefined reference to `ibfstages' ffts/src/fftlib.o: In function `.L186': fftlib.c:(.text+0x3cd2): undefined reference to `bfstages' ffts/src/fftlib.o: In function `riffts1': fftlib.c:(.text+0x4c5c): undefined reference to `ibfstages' collect2: error: ld returned 1 exit status Makefile:279: recipe for target 'ny' failed make[1]: *** [ny] Error 1