Details
-
Bug
-
Status: Closed
-
Major - P3
-
Resolution: Done
-
None
-
None
-
None
Description
If _FORTIFY_SOURCE=2 is defined in the compilation environment, the WiredTiger sources fail to compile:
In file included from src/third_party/wiredtiger/src/async/async_op.c:9:
|
In file included from src/third_party/wiredtiger/src/include/wt_internal.h:379:
|
src/third_party/wiredtiger/src/include/os_fstream.i:55:14: error: no member named '__printf_chk' in
|
'struct __wt_fstream'
|
return (fs->printf(session, fs, fmt, ap));
|
~~ ^
|
/usr/include/x86_64-linux-gnu/bits/stdio2.h:108:3: note: expanded from macro 'printf'
|
__printf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
|
^
|
In file included from src/third_party/wiredtiger/src/async/async_worker.c:9:
|
In file included from src/third_party/wiredtiger/src/include/wt_internal.h:379:
|
src/third_party/wiredtiger/src/include/os_fstream.i:55:14: error: no member named '__printf_chk' in
|
'struct __wt_fstream'
|
return (fs->printf(session, fs, fmt, ap));
|
~~ ^
|
/usr/include/x86_64-linux-gnu/bits/stdio2.h:108:3: note: expanded from macro 'printf'
|
__printf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
|
^
|
1 error generated.
|
This happens because when _FORTIFY_SOURCE is defined on a glibc environment, printf becomes a macro.
Note that this is legal under the standard, see http://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html
The names of all library types, macros, variables and functions that come from the ISO C standard are reserved unconditionally.
Attachments
Issue Links
- is depended on by
-
SERVER-23911 Add _FORTIFY_SOURCE=2 when building on glibc platforms
-
- Closed
-
- links to