On 01/24/2018 04:37 PM, Yann Ylavic wrote:
> Hi Stefan,
>
> On Wed, Jan 24, 2018 at 3:39 PM, Stefan Eissing
> <[email protected]> wrote:
>>
>> ./configure --prefix=/home/sei/projects/httpd/h2fuzz/gen/apache
>> --enable-nghttp2-staticlib-deps
>> --with-nghttp2=/home/sei/projects/httpd/h2fuzz/gen/apache --with-mpm=event
>> --enable-unixd --disable-pie --enable-mods-static=few --enable-http2
>
> Did you "make distclean; ./buildconf" before?
>
>>
>> linker exits with:
>> httpd-trunk/server/mpm/event/event.c:2457: undefined reference to
>> `ap_queue_create'
>
> Hmm, can't reproduce (with distclean above).
> I'm surely missing something...
>
When I try to start httpd I get
Cannot load modules/mod_mpm_event.so into server:
/usr/src/apache/apache_trunk/modules/mod_mpm_event.so: undefined
symbol: ap_queue_info_wait_for_idler
And I compiled from a fresh checkout with
make extraclean ./buildconf;
I was able to fix this by
Index: server/mpm_fdqueue.c
===================================================================
--- server/mpm_fdqueue.c (revision 1822275)
+++ server/mpm_fdqueue.c (working copy)
@@ -145,7 +145,7 @@
}
}
-apr_status_t ap_queue_info_wait_for_idler(fd_queue_info_t *queue_info,
+AP_DECLARE(apr_status_t) ap_queue_info_wait_for_idler(fd_queue_info_t
*queue_info,
int *had_to_block)
{
apr_status_t rv;
Index: server/mpm_fdqueue.h MPM
===================================================================
--- server/mpm_fdqueue.h (revision 1822275)
+++ server/mpm_fdqueue.h (working copy)
@@ -51,7 +51,7 @@
apr_status_t ap_queue_info_set_idle(fd_queue_info_t *queue_info,
apr_pool_t *pool_to_recycle);
apr_status_t ap_queue_info_try_get_idler(fd_queue_info_t *queue_info);
-apr_status_t ap_queue_info_wait_for_idler(fd_queue_info_t *queue_info,
+AP_DECLARE(apr_status_t) ap_queue_info_wait_for_idler(fd_queue_info_t
*queue_info,
int *had_to_block);
apr_uint32_t ap_queue_info_num_idlers(fd_queue_info_t *queue_info);
apr_status_t ap_queue_info_term(fd_queue_info_t *queue_info);
and putting mpm_fdqueue.h in the include directory, but I guess this makes it
part of the public API which we wanted to
avoid.
I guess the other option is to link mpm_fdqueue.o into the MPM shared object,
but I guess I haven't found the correct
approach to do this. But this also means that we will have mpm_fdqueue.o in
every MPM shared object which might be
a little contrary to the goal of having things shared (at least not on binary
level).
Regards
RĂ¼diger