tcpdump mailing list archives

Re: {clang, gcc} X {i386, x86_64} building, and docker/travis


From: Guy Harris <gharris () sonic net>
Date: Thu, 22 Aug 2019 13:08:29 -0700

On Aug 18, 2019, at 12:52 PM, Francois-Xavier Le Bail <devel.fx.lebail () orange fr> wrote:

From my experience, it's not the same to build
with 1) compiler for arch i386 (e.g. debian packages xxx:i386)
than with 2) compiler for arch amd64 with -m32 option.

According to the GCC 9.2 manual:

        https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/x86-Options.html#x86-Options

there are the following -m options for x86 compilers that include x86-64 support:

        The -m32 option sets int, long, and pointer types to 32 bits, and generates code that runs on any i386 system.

        The -m64 option sets int to 32 bits and long and pointer types to 64 bits, and generates code for the x86-64 
architecture. For Darwin only the -m64 option also turns off the -fno-picand -mdynamic-no-pic options.

        The -mx32 option sets int, long, and pointer types to 32 bits, and generates code for the x86-64 architecture.

        The -m16 option is the same as -m32, except for that it outputs the .code16gcc assembly directive at the 
beginning of the assembly output so that the binary can run in 16-bit mode.

        The -miamcu option generates code which conforms to Intel MCU psABI. It requires the -m32 option to be turned 
on.

Perhaps the -m32 code generator in GCC for x86-64 behaves differently from the code generator in GCC for IA-32, rather 
than having the -m32 option invoking a GCC-for-IA-32 compiler.  GCC for other targets with 
64-bit-extension-from-32-bits ISAs also have flags that allow generating code for 32-bit or 64-bit targets, but not all 
have -m32 and -m64, for various reasons.
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers () lists tcpdump org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Current thread: