Date: Fri, 17 Jul 2015 17:53:23 -0500 From: Pedro Giffuni <pfg@FreeBSD.org> To: Peter Jeremy <peter@rulingia.com> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r285644 - head/contrib/sqlite3 Message-ID: <55A98763.1030705@FreeBSD.org> In-Reply-To: <20150717222631.GD36150@server.rulingia.com> References: <201507162207.t6GM7ECT009955@repo.freebsd.org> <20150717222631.GD36150@server.rulingia.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 07/17/15 17:26, Peter Jeremy wrote: > On 2015-Jul-16 22:07:14 +0000, "Pedro F. Giffuni" <pfg@FreeBSD.org> wrote: >> Log: > ... >> sqlite: clean a couple of invocations of memcpy(3) >> >> Found almost accidentally by our native gcc when enhanced with >> FORTIFY_SOURCE. > ... >> - memcpy((void *)&aHdr[1], (void *)&pWal->hdr, sizeof(WalIndexHdr)); >> + memcpy((void *)&aHdr[1], (const void *)&pWal->hdr, sizeof(WalIndexHdr)); >> walShmBarrier(pWal); >> - memcpy((void *)&aHdr[0], (void *)&pWal->hdr, sizeof(WalIndexHdr)); >> + memcpy((void *)&aHdr[0], (const void *)&pWal->hdr, sizeof(WalIndexHdr)); > If the compiler complained about that, the compiler is broken. The change was rather collateral (read cosmetical) to the real warning which remains unfixed. The compiler warning is this: ... ===> lib/libsqlite3 (obj,depend,all,install) cc1: warnings being treated as errors /scratch/tmp/pfg/head/lib/libsqlite3/../../contrib/sqlite3/sqlite3.c: In function 'walIndexWriteHdr': /scratch/tmp/pfg/head/lib/libsqlite3/../../contrib/sqlite3/sqlite3.c:49490: warning: passing argument 1 of 'memcpy' discards qualifiers from pointer target type /scratch/tmp/pfg/head/lib/libsqlite3/../../contrib/sqlite3/sqlite3.c:49492: warning: passing argument 1 of 'memcpy' discards qualifiers from pointer target type --- sqlite3.So --- *** [sqlite3.So] Error code 1 ... make[6]: stopped in /scratch/tmp/pfg/head/lib/libsqlite3 It only happens when using the experimental FORTIFY_SOURCE support [1], and it only happens with gcc (the base one is the only tested). Yes, I am suspecting a compiler bug but gcc has been really useful to find bugs in fortify_source. > 'const' > is a promise to the caller that the given parameter will not be modified > by the callee. There's no requirement that the passed argument be const. > As bde commented, the casts are all spurious. And since this is contrib'ed code I am not going through the code churn but upstream has been notified. Pedro. [1] https://reviews.freebsd.org/D3043
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?55A98763.1030705>