Since wherever AP_DECLARE_MODULE is used we don't need the
APLOG_USE_MODULE part (ie. the static declaration of
aplog_module_index), that would possibly be better to use a new
AP_DEFINE_MODULE, simply as:

#define AP_DECLARE_MODULE(foo) \
    module AP_MODULE_DECLARE_DATA foo##_module

The attached patch (quite huge since it touches many modules) compiles
with no issue (with gcc which does no warn w/o the patch though).
No missing/undeclared aplog_module_index reported anywhere.

That's mainly (so to preserve the "legacy" AP_DECLARE_MODULE):

Index: include/http_config.h
===================================================================
--- include/http_config.h    (revision 1686298)
+++ include/http_config.h    (working copy)
@@ -427,6 +427,12 @@ struct module_struct {
     static int * const aplog_module_index = &(foo##_module.module_index)

 /**
+ * AP_DEFINE_MODULE is a convenience macro to define the module symbol.
+ */
+#define AP_DEFINE_MODULE(foo) \
+    module AP_MODULE_DECLARE_DATA foo##_module
+
+/**
  * AP_DECLARE_MODULE is a convenience macro that combines a call of
  * APLOG_USE_MODULE with the definition of the module symbol.
  *
@@ -434,8 +440,8 @@ struct module_struct {
  * APLOG_USE_MODULE should be used explicitly instead of AP_DECLARE_MODULE.
  */
 #define AP_DECLARE_MODULE(foo) \
-    APLOG_USE_MODULE(foo);                         \
-    module AP_MODULE_DECLARE_DATA foo##_module
+    APLOG_USE_MODULE(foo);     \
+    APLOG_DEFINE_MODULE(foo)

 /**
  * @defgroup ModuleInit Module structure initializers
--

with the remainder being "s/AP_DECLARE_MODULE/AP_DEFINE_MODULE/g" in
the modules...


On Thu, Jun 18, 2015 at 10:17 PM, Rainer Jung <rainer.j...@kippdata.de> wrote:
> Am 18.06.2015 um 21:54 schrieb Jeff Trawick:
>>
>> On Thu, Jun 18, 2015 at 3:03 PM, olli hauer <oha...@gmx.de
>> <mailto:oha...@gmx.de>> wrote:
>>
>>     On 2015-06-18 19:08, Jim Jagielski wrote:
>>     > Subj sez it all.
>>     >
>>
>>     I don't know if it is worth to report this, but the on 2.4.12. I
>>     don't see the following warnings
>>
>>
>> Are you using clang for both compiles?
>>
>> (I think I saw those for 2.4.12,13,14 on FreeBSD 10.1 + Clang.)
>
>
> At least technically they are correct. aplog_module_index is used only in
> APLOG_MODULE_INDEX and this macro is redefined in core.c to use a known
> constant instead (likely for performance reasons).
>
> And modules/http/http_core.c doesn't have any log statement which is
> probably the reason for not using aplog_module_index in that file.
>
> So those are expected. The warnings don't actually point to a real problem
> except for any warning always make one feel uncomfortable.
>
> The second warning could be silenced by adding a log statement.For the first
> I don't have an easy solution.
>
> Regards,
>
> Rainer
>
>
>>     Test build 2.4.15 (Last Changed Rev: 1686275)
>>
>>     --- core.lo ---
>>     core.c:5003:1: warning: unused variable 'aplog_module_index'
>>     [-Wunused-const-variable]
>>     AP_DECLARE_MODULE(core) = {
>>     ^
>>     /usr/ports/www/apache24/work/httpd-2.4.14/include/http_config.h:437:5:
>>     note: expanded from macro 'AP_DECLARE_MODULE'
>>          APLOG_USE_MODULE(foo);                         \
>>          ^
>>
>> /usr/ports/www/apache24/work/httpd-2.4.14/include/http_config.h:427:24:
>>     note: expanded from macro 'APLOG_USE_MODULE'
>>          static int * const aplog_module_index =
>>     &(foo##_module.module_index)
>>                             ^
>>     --- http_core.lo ---
>>     http_core.c:320:1: warning: unused variable 'aplog_module_index'
>>     [-Wunused-const-variable]
>>     AP_DECLARE_MODULE(http) = {
>>     ^
>>     /usr/ports/www/apache24/work/httpd-2.4.14/include/http_config.h:437:5:
>>     note: expanded from macro 'AP_DECLARE_MODULE'
>>          APLOG_USE_MODULE(foo);                         \
>>          ^
>>
>> /usr/ports/www/apache24/work/httpd-2.4.14/include/http_config.h:427:24:
>>     note: expanded from macro 'APLOG_USE_MODULE'
>>          static int * const aplog_module_index =
>>     &(foo##_module.module_index)
>>                             ^
>>     --- mod_buffer.slo ---
>>     ...

Attachment: httpd-2.4.x-AP_DEFINE_MODULE.patch
Description: application/download

Reply via email to