Code generated for demarshallers define and declare some types and functions. However these types and functions are also declared separately in other headers resulting in potential ABI mismatch if the different declarations do not match. Using a common header shared between generated code and code using these functions prevent potentially multiple different declarations. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- common/Makefile.am | 2 +- .../{client_demarshallers.h => demarshallers.h} | 16 ++++++++++------ common/meson.build | 2 +- python_modules/demarshal.py | 1 + tests/test-marshallers.c | 2 +- 5 files changed, 14 insertions(+), 9 deletions(-) rename common/{client_demarshallers.h => demarshallers.h} (62%) Changes since v1: - use a single header instead of 2; - add patches for spice-server and spice-gtk. diff --git a/common/Makefile.am b/common/Makefile.am index d8e30d1..da0d941 100644 --- a/common/Makefile.am +++ b/common/Makefile.am @@ -21,6 +21,7 @@ libspice_common_la_SOURCES = \ backtrace.h \ canvas_utils.c \ canvas_utils.h \ + demarshallers.h \ draw.h \ lines.c \ lines.h \ @@ -63,7 +64,6 @@ EXTRA_libspice_common_la_SOURCES = \ $(NULL) libspice_common_client_la_SOURCES = \ - client_demarshallers.h \ client_marshallers.h \ ssl_verify.c \ ssl_verify.h \ diff --git a/common/client_demarshallers.h b/common/demarshallers.h similarity index 62% rename from common/client_demarshallers.h rename to common/demarshallers.h index 43c7e7d..0accb62 100644 --- a/common/client_demarshallers.h +++ b/common/demarshallers.h @@ -14,8 +14,8 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, see <http://www.gnu.org/licenses/>. */ -#ifndef _H_DEMARSHAL -#define _H_DEMARSHAL +#ifndef COMMON_DEMARSHALLERS_H_ +#define COMMON_DEMARSHALLERS_H_ #include <stddef.h> #include <spice/macros.h> @@ -23,12 +23,16 @@ SPICE_BEGIN_DECLS typedef void (*message_destructor_t)(uint8_t *message); -typedef uint8_t * (*spice_parse_channel_func_t)(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, - size_t *size_out, message_destructor_t *free_message); +typedef uint8_t * (*spice_parse_channel_func_t)(uint8_t *message_start, uint8_t *message_end, + uint16_t message_type, int minor, + size_t *size_out, + message_destructor_t *free_message); -spice_parse_channel_func_t spice_get_server_channel_parser(uint32_t channel, unsigned int *max_message_type); +spice_parse_channel_func_t +spice_get_server_channel_parser(uint32_t channel, unsigned int *max_message_type); +spice_parse_channel_func_t +spice_get_client_channel_parser(uint32_t channel, unsigned int *max_message_type); SPICE_END_DECLS #endif - diff --git a/common/meson.build b/common/meson.build index 36ba43b..6ac55dc 100644 --- a/common/meson.build +++ b/common/meson.build @@ -6,6 +6,7 @@ spice_common_sources = [ 'backtrace.h', 'canvas_utils.c', 'canvas_utils.h', + 'demarshallers.h', 'draw.h', 'lines.c', 'lines.h', @@ -57,7 +58,6 @@ if spice_common_generate_client_code ] spice_common_client_sources = [ - 'client_demarshallers.h', 'client_marshallers.h', 'ssl_verify.c', 'ssl_verify.h', diff --git a/python_modules/demarshal.py b/python_modules/demarshal.py index 6fe3c66..36213b1 100644 --- a/python_modules/demarshal.py +++ b/python_modules/demarshal.py @@ -1229,6 +1229,7 @@ def write_includes(writer): writer.writeln("#include <spice/protocol.h>") writer.writeln("#include <spice/macros.h>") writer.writeln('#include <common/mem.h>') + writer.writeln('#include <common/demarshallers.h>') writer.newline() writer.writeln("#ifdef _MSC_VER") writer.writeln("#pragma warning(disable:4101)") diff --git a/tests/test-marshallers.c b/tests/test-marshallers.c index 02fbcd1..a70ac95 100644 --- a/tests/test-marshallers.c +++ b/tests/test-marshallers.c @@ -22,7 +22,7 @@ #include <string.h> #include <common/marshaller.h> -#include <common/client_demarshallers.h> +#include <common/demarshallers.h> #include "generated_test_enums.h" #include "generated_test_marshallers.h" -- 2.17.2 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel