Wireshark mailing list archives
Re: Troubles with ASN generated code
From: Guy Harris <guy () alum mit edu>
Date: Fri, 19 May 2017 10:44:43 -0700
On May 19, 2017, at 9:38 AM, Jaap Keuter <jaap.keuter () xs4all nl> wrote:
So, this change https://code.wireshark.org/review/#/c/21708/ appears to make the buildbot happy, the GCC6 builds still fails with (3346fc9c83719bce26cca31fc4b5d9139ab56d76) In file included from ./asn1/q932/packet-q932-template.c:33:0: ./asn1/q932/packet-q932-exp.h:26:27: error: ‘q932_PresentedNumberUnscreened_vals’ defined but not used [-Werror=unused-const-variable=] ./asn1/q932/packet-q932-exp.h:18:27: error: ‘q932_PresentedNumberScreened_vals’ defined but not used [-Werror=unused-const-variable=] ./asn1/q932/packet-q932-exp.h:10:27: error: ‘q932_PresentedAddressUnscreened_vals’ defined but not used [-Werror=unused-const-variable=] ./asn1/q932/packet-q932-exp.h:2:27: error: ‘q932_PresentedAddressScreened_vals’ defined but not used [-Werror=unused-const-variable=]
GCC 6 is probably correct. *Defining* functions and data (except perhaps for inline functions) in a header file is generally Not The Right Thing To Do, because 1) if only one source file includes the header, and there's no reason for other files to include it, the very existence of the header is misleading, as it implies that the stuff in the header is stuff being exported from the file; 2) if more than one source file includes the header, you have multiple copies of the data or function, rather than sharing a single copy, which is arguably wasteful; 3) if more than one file includes the header, and not all of them use all of the data or functions, you have multiple copies of the data or function *and some of them are unused*, which is *definitely* wasteful. The only reason why you *might* want to do this for data is that, if you have a plugin module, and it has a data structure that points to one of the data structures mentioned in the header, the run-time loader on some platform you support might not do the load-time evaluation of the address of the structure required to make this work. For example, if libwireshark exports a value_string table, I'm not sure all the platforms we support would allow a plugin dissector to point to that value_string from one of its header fields. Given that we're already exporting value_string tables from libwireshark, either 1) it works on all platforms or 2) we're not doing the stuff that doesn't work so I wouldn't be opposed to doing with asn2wrs-generated dissectors the same way we do it for hand-written dissectors, i.e.: have the header file declare but *not* define the value_strings, and declare it with WS_DLL_PUBLIC rather than either static or extern; have the source files define the value strings, and define them with WS_DLL_PUBLIC_DEF. Any value_string that asn2wrs is not *absolutely certain* will be used only by one source file should *not* be made static and should *not* be defined in a header file. Any value string that asn2wrs *is* absolutely certain will be used only by one source file should be defined as static *in that source file*, *not* in a header file. ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- Troubles with ASN generated code Jaap Keuter (May 18)
- Re: Troubles with ASN generated code Guy Harris (May 18)
- Re: Troubles with ASN generated code Jaap Keuter (May 19)
- Re: Troubles with ASN generated code Guy Harris (May 19)
- Re: Troubles with ASN generated code Jaap Keuter (May 20)
- Re: Troubles with ASN generated code Graham Bloice (May 21)
- Re: Troubles with ASN generated code Guy Harris (May 21)
- Re: Troubles with ASN generated code Graham Bloice (May 21)
- Re: Troubles with ASN generated code Guy Harris (May 21)
- Re: Troubles with ASN generated code Graham Bloice (May 21)
- Re: Troubles with ASN generated code Graham Bloice (May 21)
- Re: Troubles with ASN generated code Guy Harris (May 19)