[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


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:

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


-- 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);

Reply to: