View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005302 | libmicrohttpd | compliance | public | 2018-03-23 16:30 | 2018-03-23 22:52 |
Reporter | silvioprog | Assigned To | Christian Grothoff | ||
Priority | none | Severity | minor | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Product Version | Git master | ||||
Fixed in Version | 0.9.59 | ||||
Summary | 0005302: MHD does not compile when the compiler is configured to be more strict (gcc/clang) | ||||
Description | Hello. From my build folder, I've configured the environment using some custom options as below: ../configure --enable-static=yes --enable-shared=no --enable-https=no --enable-asserts=no --enable-coverage=no --disable-httpupgrade --disable-doc --disable-examples --disable-curl after, I've tried to compile the library passing some gcc/clang options I use in my project: make CFLAGS="-Wall -Werror -Wextra -Wdeclaration-after-statement -Wstrict-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wpadded" however, I've got the following warnings (converted to errors by -Werror): [snip] libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../../src/microhttpd -I../.. -I../../../src/include -I../../../src/microhttpd -DBUILDING_MHD_LIB=1 -fvisibility=hidden -pthread -Wall -Werror -Wextra -Wdeclaration-after-statement -Wstrict-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wpadded -MT libmicrohttpd_la-connection.lo -MD -MP -MF .deps/libmicrohttpd_la-connection.Tpo -c ../../../src/microhttpd/connection.c -o libmicrohttpd_la-connection.o In file included from ../../../src/microhttpd/internal.h:32:0, from ../../../src/microhttpd/connection.c:28: ../../../src/include/microhttpd.h:1506:12: error: padding struct to align ‘value’ [-Werror=padded] intptr_t value; ^ In file included from ../../../src/microhttpd/connection.c:28:0: ../../../src/microhttpd/internal.h:242:1: error: padding struct size to alignment boundary [-Werror=padded] }; ^ ../../../src/microhttpd/internal.h:282:1: error: padding struct size to alignment boundary [-Werror=padded] }; ^ ../../../src/microhttpd/internal.h:385:1: error: padding struct size to alignment boundary [-Werror=padded] }; ^ ../../../src/microhttpd/internal.h:718:9: error: padding struct to align ‘read_buffer’ [-Werror=padded] char *read_buffer; ^ ../../../src/microhttpd/internal.h:816:10: error: padding struct to align ‘continue_message_write_offset’ [-Werror=padded] size_t continue_message_write_offset; ^ ../../../src/microhttpd/internal.h:827:10: error: padding struct to align ‘last_activity’ [-Werror=padded] time_t last_activity; ^ ../../../src/microhttpd/internal.h:852:14: error: padding struct to align ‘socket_fd’ [-Werror=padded] MHD_socket socket_fd; ^ ../../../src/microhttpd/internal.h:888:23: error: padding struct to align ‘epoll_state’ [-Werror=padded] enum MHD_EpollState epoll_state; ^ ../../../src/microhttpd/internal.h:922:12: error: padding struct to align ‘current_chunk_size’ [-Werror=padded] uint64_t current_chunk_size; ^ ../../../src/microhttpd/internal.h:987:7: error: padding struct to align ‘suspended_dummy’ [-Werror=padded] int suspended_dummy; ^ ../../../src/microhttpd/internal.h:993:1: error: padding struct size to alignment boundary [-Werror=padded] }; ^ ../../../src/microhttpd/internal.h:1440:25: error: padding struct to align ‘pid’ [-Werror=padded] MHD_thread_handle_ID_ pid; ^ ../../../src/microhttpd/internal.h:1500:19: error: padding struct to align ‘itc’ [-Werror=padded] struct MHD_itc_ itc; ^ ../../../src/microhttpd/internal.h:1542:16: error: padding struct to align ‘connections’ [-Werror=padded] unsigned int connections; ^ ../../../src/microhttpd/internal.h:1553:10: error: padding struct to align ‘connection_timeout’ [-Werror=padded] time_t connection_timeout; ^ ../../../src/microhttpd/internal.h:1574:7: error: padding struct to align ‘strict_for_client’ [-Werror=padded] int strict_for_client; ^ ../../../src/microhttpd/internal.h:1694:1: error: padding struct size to alignment boundary [-Werror=padded] }; ^ ../../../src/microhttpd/connection.c: In function ‘socket_start_extra_buffering’: ../../../src/microhttpd/connection.c:500:3: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] const MHD_SCKT_OPT_BOOL_ on_val = 1; ^ cc1: all warnings being treated as errors Makefile:1196: recipe for target 'libmicrohttpd_la-connection.lo' failed make[3]: *** [libmicrohttpd_la-connection.lo] Error 1 make[3]: Leaving directory '/home/silvioprog/dev/git/libmicrohttpd/build/src/microhttpd' Makefile:445: recipe for target 'all-recursive' failed make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory '/home/silvioprog/dev/git/libmicrohttpd/build/src' Makefile:571: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/home/silvioprog/dev/git/libmicrohttpd/build' Makefile:478: recipe for target 'all' failed make: *** [all] Error 2 | ||||
Additional Information | I fixed it in my local copy in a draft, however I'm not sure about its ABI compatibility, so I'm going to refactore my changes and attach a patch showing them. | ||||
Tags | No tags attached. | ||||
|
We will not fix padding warnings. Those are very silly, and "fixing" them will just cause other problems. Do not use those compiler settings. |
|
Sorry for reopening, but there is another error in the list:[snip] ../../../src/microhttpd/connection.c: In function ‘socket_start_extra_buffering’: ../../../src/microhttpd/connection.c:500:3: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] const MHD_SCKT_OPT_BOOL_ on_val = 1; ^ IMHO it should be fixed. The errors regarding padding should be fixed just using gcc/clang attributes, so any project that uses MHD could use any compiler preferences. WDYT? |
|
I am against cluttering code against absolutely stupid compiler warnings/settings. As for the ISO c90 warning, 090ee9e6..62121567 fixes it. |
Date Modified | Username | Field | Change |
---|---|---|---|
2018-03-23 16:30 | silvioprog | New Issue | |
2018-03-23 22:20 | Christian Grothoff | Note Added: 0012892 | |
2018-03-23 22:20 | Christian Grothoff | Assigned To | => Christian Grothoff |
2018-03-23 22:20 | Christian Grothoff | Priority | normal => none |
2018-03-23 22:20 | Christian Grothoff | Reproducibility | have not tried => always |
2018-03-23 22:20 | Christian Grothoff | Status | new => closed |
2018-03-23 22:20 | Christian Grothoff | Resolution | open => won't fix |
2018-03-23 22:20 | Christian Grothoff | Category | other => compliance |
2018-03-23 22:20 | Christian Grothoff | Fixed in Version | => 0.9.59 |
2018-03-23 22:20 | Christian Grothoff | Target Version | Git master => |
2018-03-23 22:43 | silvioprog | Assigned To | Christian Grothoff => |
2018-03-23 22:43 | silvioprog | Status | closed => feedback |
2018-03-23 22:43 | silvioprog | Resolution | won't fix => reopened |
2018-03-23 22:43 | silvioprog | Note Added: 0012895 | |
2018-03-23 22:52 | Christian Grothoff | Note Added: 0012896 | |
2018-03-23 22:52 | Christian Grothoff | Assigned To | => Christian Grothoff |
2018-03-23 22:52 | Christian Grothoff | Status | feedback => closed |
2018-03-23 22:52 | Christian Grothoff | Resolution | reopened => fixed |