Wireshark-dev: [Wireshark-dev] Missing wspython symbols

From: Jan Safranek <jsafrane@xxxxxxxxxx>
Date: Wed, 29 Aug 2012 10:51:58 +0200
Hi,

with latest wireshark-1.8.2, I noticed I get error messages on wireshark
or tshark startup:

/lib64/libwireshark.so.2: undefined symbol: py_create_dissector_handle

Digging a bit into compile process,  I found out that
py_create_dissector_handle is not mentioned in libwireshark.def and even
if it was there, it would be removed during compilation. Attached patch
fixes the problem for me.

I tried to understand bug
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6448, but I failed
to see how SVN rev. 39439 *adds* the python symbols to libwireshark.sym,
it can only remove them. Do I miss something?

Jan



TShark 1.8.2 (SVN Rev Unknown from unknown)

Copyright 1998-2012 Gerald Combs <gerald@xxxxxxxxxxxxx> and
contributors. This is free software; see the source for copying
conditions. There is NO warranty; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GLib 2.33.6, with libpcap, with libz 1.2.7, with
POSIX capabilities (Linux), with SMI 0.4.8, with c-ares 1.9.1, with Lua
5.1, with Python 2.7.3, with GnuTLS 2.12.20, with Gcrypt 1.5.0, with MIT
Kerberos, with GeoIP.

Running on Linux 3.5.0-1.fc18.x86_64, with locale en_US.UTF-8, with
libpcap version 1.3.0, with libz 1.2.7.

Built using gcc 4.7.1 20120813 (Red Hat 4.7.1-7).
tshark / wireshark shows
"/lib64/libwireshark.so.2: undefined symbol: py_create_dissector_handle"
on startup. This patch ensures that the python symbols are compiled in.

diff -up wireshark-1.8.2/epan/Makefile.am.orig wireshark-1.8.2/epan/Makefile.am
--- wireshark-1.8.2/epan/Makefile.am.orig	2012-08-29 09:39:06.860107175 +0200
+++ wireshark-1.8.2/epan/Makefile.am	2012-08-29 09:39:11.311137553 +0200
@@ -195,7 +195,7 @@ if !HAVE_PLUGINS
 def_sym_filter_symbols += /^register_all_wiretap_modules/ || /^register_all_plugin_tap_listeners/ || /^plugin_list/ {next;};
 endif
 
-if HAVE_LIBPY
+if !HAVE_LIBPY
 # If we're not building python, these symbols don't get built.
 # Keep them out of the symbol list.
 def_sym_filter_symbols += /^py_create_dissector_handle/ || /^py_dissector_args/  {next;};
diff -up wireshark-1.8.2/epan/libwireshark.def.old wireshark-1.8.2/epan/libwireshark.def
--- wireshark-1.8.2/epan/libwireshark.def.old	2012-08-29 10:15:28.136123323 +0200
+++ wireshark-1.8.2/epan/libwireshark.def	2012-08-29 10:18:28.905483905 +0200
@@ -1248,3 +1248,9 @@ xml_escape
 xml_get_attrib
 xml_get_cdata
 xml_get_tag
+py_create_dissector_handle
+py_dissector_args
+hf_register_info_add
+hf_register_info_create
+hf_register_info_destroy
+