Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Nov 2019 14:09:24 +1100
From:      Dewayne Geraghty <dewaynegeraghty@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   Executable size difference between clang and gcc9
Message-ID:  <CAGnMC6ptpLNTHMXXYroV28WLN7dqLKYSL1jCsa=h5uZZmuLVZQ@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
 I noticed the executable a size difference between clang 8.0.1 and gcc
9.2.0 of a simple test code, build on FreeBSD12.1S (r353671M) below.:

Differences in object code seem reasonable:
# clang -O2 -march=haswell -flto -c "qdate.c"
-rw-r-----  1 root  wheel  3896  8 Nov 12:59 qdate.o

# gcc9 -O2 -march=haswell -flto -c "qdate.c" ; ls -l qdate.o a.out
-rw-r-----  1 root  wheel  5256  8 Nov 13:00 qdate.o

But the executable sizes?
# clang -O2 -march=haswell -flto "qdate.c" ; ls -l qdate.o a.out
-rwxr-x---  1 root  wheel  16360  8 Nov 13:10 a.out

# gcc9 -O2 -march=haswell -flto "qdate.c" ;ls -l qdate.o a.out
-rwxr-x---  1 root  wheel  8736  8 Nov 13:09 a.out

Is this size variation expected, and what is contributing to this
difference?
The executeables are the same size with/without lto; and both link to
/lib/libc
a.out:
        libc.so.7 => /lib/libc.so.7 (0x800647000)

*/* Sample code*/*







*#include <stdio.h>#include <sys/time.h>int main (int argc, char **argv)
{ struct timeval tv; gettimeofday(&tv, NULL); if (argc > 1)
printf("%ld.%ld\n",tv.tv_sec,tv.tv_usec); else printf("%ld\n",tv.tv_sec);}*
The verbose compile/link command is available at
http://www.heuristicsystems.com/FreeBSD-compiler/
contains: clang.lis gcc9.lis qdate.c

PS who said anything placing malware on the end of executables, at the
compilation step?  Really I'm not paranoid... :)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGnMC6ptpLNTHMXXYroV28WLN7dqLKYSL1jCsa=h5uZZmuLVZQ>