Wireshark mailing list archives

Re: Having the buildbot build Wireshark 64-bit for Mac OS X (was Re: [Wireshark-bugs] [Bug 4115] 32-bit Wireshark crashes while opening large trace files)


From: Guy Harris <guy () alum mit edu>
Date: Tue, 27 Apr 2010 13:05:33 -0700


On Apr 27, 2010, at 12:37 PM, Jeff Morriss wrote:

Guy Harris wrote:
On Apr 27, 2010, at 11:36 AM, Jeff Morriss wrote:

Given that the MacOS buildbot (at least the Intel one) is so fast, would 
it make sense to also build a 64-bit version of Wireshark?

As long as we make sure it works on Leopard before we offer it to Leopard users.

Well, yes :-).

I guess I had assumed that most of the developers were using 64-bit, it 
was just a question of what is being built by the buildbot.

I don't know how many of the developers using OS X are using Tiger, Leopard, Snow Leopard, or earlier releases, but, 
unless they've made an effort to build 64-bit, only the developers using Snow Leopard are using 64-bit (unless they 
have 32-bit-only machines, i.e. Intel Core Duo or Core Solo, rather than Core 2 or Core i[0-9] or the later Xeons).

Ah, so MacOS doesn't have, say, "/usr/lib/" and "/usr/lib64/" for 32- 
and 64-bit libraries?

Nope:

        $ file /usr/lib/libpcap.dylib
        /usr/lib/libpcap.dylib: Mach-O universal binary with 3 architectures
        /usr/lib/libpcap.dylib (for architecture x86_64):       Mach-O 64-bit dynamically linked shared library x86_64
        /usr/lib/libpcap.dylib (for architecture i386): Mach-O dynamically linked shared library i386
        /usr/lib/libpcap.dylib (for architecture ppc7400):      Mach-O dynamically linked shared library ppc

That's *the* libpcap for both 32-bit and 64-bit binaries (as well as for PowerPC binaries run under the Rosetta 
binary-to-binary translator, although, in the particular case of libpcap, that wouldn't work - Rosetta doesn't support 
BPF ioctls).

Mac OS X uses the "fat binary" mechanism from NeXTStEP:

        http://en.wikipedia.org/wiki/Fat_binary

(at least according to the article, originally called "multi-architecture binaries", now called "universal binaries", 
but with the tool to manipulate them called "lipo", I suspect the notion of fatness is in there and was probably in 
there from Day One...) to handle 32-bit vs. 64-bit as well as PowerPC vs. x86 (as the article notes, it was originally 
put there for 68k vs. x86, to support both NeXT's hardware and NeXTStEP-on-PCs).

Or is this because we're shipping glib, not using one from the OS?

If OS X shipped with GLib, Apple would have to build it fat too.

But: would the header files have to be different?  Linux and Solaris 
seem get away with one set of header files for both the 32- and 64-bit 
libraries.

I'm not sure how they handle 32-bit vs. 64-bit GLib, given that the 64-bit /usr/local/lib/glib-2.0/include/glibconfig.h 
installed on my machine has #defines and typedefs such as

        typedef signed long gint64;
        typedef unsigned long guint64;

        #define G_GINT64_CONSTANT(val)  (val##L)
        #define G_GUINT64_CONSTANT(val) (val##UL)
        #define G_GINT64_MODIFIER "l"
        #define G_GINT64_FORMAT "li"
        #define G_GUINT64_FORMAT "lu"

        #define GLIB_SIZEOF_VOID_P 8
        #define GLIB_SIZEOF_LONG   8
        #define GLIB_SIZEOF_SIZE_T 8

in it.  Those would work in 64-bit mode, but not in 32-bit mode.  The 32-bit versions of *some* of them would probably 
work in 64-bit mode:

        typedef signed long long gint64;
        typedef unsigned long long guint64;

        #define G_GINT64_CONSTANT(val)  (val##LL)
        #define G_GUINT64_CONSTANT(val) (val##ULL)
        #define G_GINT64_MODIFIER "ll"
        #define G_GINT64_FORMAT "lli"
        #define G_GUINT64_FORMAT "llu"

but you couldn't handle the GLIB_SIZEOF_ definitions without #ifdefs.  They might either manually, or with a tool that 
makes "fat" versions of header files given two different versions of the header file for different platforms, do it 
with #ifdefs, or they might have different include directories for 32-bit and 64-bit.  OS X doesn't support different 
include directories for 32-bit and 64-bit, so that option isn't open to OS X.
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe


Current thread: