[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#672411: gcc-4.7: Inlining error in combination with FORTIFY_SOURCE



Package: gcc-4.7
Version: 4.7.0-8
Severity: normal

Hello,

this bug reports originates from #667406 in v4l-utils.

I've attached a minimal testcase for the bug. Maybe it's related to
upstream bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33763

Problem description:
libv4l provides a preloadable library that intercepts calls like
open, open64, etc. 
The library provides the open and open64 symbols. The replacement
open64 function tries to call the replacement open function with
somewhat changed arguments. But this code fails to compile with:

inlining failed in call to always_inline ‘open’: function not inlinable

this is due to the declaration of the libc open() in fcntl2.h which has a
always inline attibute.

Full source can be found here:
http://git.linuxtv.org/v4l-utils.git/blob/HEAD:/lib/libv4l2/v4l2convert.c

Is this a compilier bug? Without the FORTIFY_SOURCE define the error is
gone.

Thanks,
Gregor

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-2-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages gcc-4.7 depends on:
ii  binutils      2.22-6
ii  cpp-4.7       4.7.0-8
ii  gcc-4.7-base  4.7.0-8
ii  libc6         2.13-27
ii  libgcc1       1:4.7.0-8
ii  libgmp10      2:5.0.4+dfsg-1
ii  libgomp1      4.7.0-8
ii  libitm1       4.7.0-8
ii  libmpc2       0.9-4
ii  libmpfr4      3.1.0-4
ii  libquadmath0  4.7.0-8
ii  zlib1g        1:1.2.6.dfsg-2

Versions of packages gcc-4.7 recommends:
ii  libc6-dev  2.13-27

Versions of packages gcc-4.7 suggests:
pn  binutils-gold        <none>
pn  gcc-4.7-doc          <none>
pn  gcc-4.7-locales      <none>
pn  gcc-4.7-multilib     <none>
pn  libgcc1-dbg          <none>
pn  libgomp1-dbg         <none>
pn  libitm1-dbg          <none>
pn  libmudflap0-4.7-dev  <none>
pn  libmudflap0-dbg      <none>
pn  libquadmath0-dbg     <none>

-- no debconf information
/*
gcc-4.7 -c testcase.c -O2 -D_FORTIFY_SOURCE=2
*/

#include <fcntl.h>

int open(const char *file, int oflag, ...)
{
	return -1;
}

#ifdef linux
int open64(const char *file, int oflag, ...)
{
	return open(file, oflag);
}
#endif

Reply to: