[Fwd: mod_dtcl-0.12.0_1 failed on amd64 8-exp]
Mikhail T.
mi+thun at aldan.algebra.com
Sun Jul 26 16:31:54 UTC 2009
Pav Lucistnik написав(ла):
...
apache_cookie.So(.text+0x0): In function `ap_os_is_path_absolute':
: multiple definition of `ap_os_is_path_absolute'
tcl_commands.So(.text+0x0): first defined here
Apache attempts to make the function -- ap_os_is_path_absolute --
inlined, wherever possible. From ${LOCALBASE}/include/apache/os.h:
#if !defined(INLINE) && defined(USE_GNU_INLINE)
/* Compiler supports inline, so include the inlineable functions as
* part of the header
*/
#define INLINE extern ap_inline
INLINE int ap_os_is_path_absolute(const char *file);
#include "os-inline.c"
#else
/* Compiler does not support inline, so prototype the inlineable
functions
* as normal
*/
extern int ap_os_is_path_absolute(const char *file);
#endif
Apparently, something misfires on the 8.0 (amd64-only?) and the
os-inline.c is included, but the function remains non-inlined. As a
result, everybody, who includes the <apache/os.h> gets a full
(non-inlined) definition of the function. This is really up for Apache@
people to investigate/fix, I think...
Considering, that all of the possible C-compilers available on FreeBSD
support the "inline" keyword properly, the simplest solution, probably,
is to untangle the ifdef-mess and just always use "inline" --
unconditionally.
As an alternative, I can try to add a "-DINLINE=inline" to the CFLAGS in
the port, but it seems like a cludge -- currently the CFLAGS are derived
from the output of ``apxs -q CFLAGS CFLAGS_SHLIB'', which is how things
should be, shouldn't they?
Yours,
-mi
More information about the freebsd-apache
mailing list