mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Josiah Worcester <josiahw@gmail.com>
To: musl@lists.openwall.com, Rich Felker <dalias@libc.org>
Subject: Re: Having hard time adding to CFLAGS
Date: Thu, 22 Oct 2015 23:04:49 +0000	[thread overview]
Message-ID: <CAMAJcuCVmHqob6r9cF46jHGxxSkk4zE99JNpxsofCUqE-r-RvA@mail.gmail.com> (raw)
In-Reply-To: <CAK1hOcM2Tcdx3RRyYu8X55Ek9CrDZi7YENQs_3xj1mLb6-k2pA@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2689 bytes --]

On Thu, Oct 22, 2015 at 3:31 PM Denys Vlasenko <vda.linux@googlemail.com>
wrote:

> Let's say I need to add a gcc option to my musl build.
>
> configure says:
> ...
> Some influential environment variables:
>   CC                      C compiler command [detected]
>   CFLAGS                  C compiler flags [-Os -pipe ...]
>   CROSS_COMPILE           prefix for cross compiler and tools [none]
>   LIBCC                   compiler runtime library [detected
>
> So I try this, combining all possible ways of passing CFLAGS
> (past experience is that different projects do it differently).
>
> CFLAGS is in environment, and on both configure and make
> command lines:
>
> export CFLAGS="-falign-functions=1"    # for example
> ./configure CFLAGS="$CFLAGS"
> make CFLAGS="$CFLAGS"
>
> It does work, but resulting libc.so is twice as big:
>    text       data        bss        dec        hex    filename
>  564099       1944      11768     577811      8d113    musl.1/lib/libc.so
>  917805       2130      11736     931671      e3757    musl.2/lib/libc.so
>
> The cause is that gcc invocation for each .c file in both cases start
> normally:
>
> gcc -std=c99 -nostdinc -ffreestanding -fexcess-precision=standard
> -frounding-math -D_XOPEN_SOURCE=700 -I./arch/x86_64 -I./src/internal
> -I./include...
>
> but then, build without explicit CFLAGS use this:
>
> ... -Os -pipe -fomit-frame-pointer -fno-unwind-tables
> -fno-asynchronous-unwind-tables -Wa,--noexecstack
> -Werror=implicit-function-declaration -Werror=implicit-int
> -Werror=pointer-sign -Werror=pointer-arith -include vis.h  -fPIC
> -DSHARED -c -o src/aio/aio.lo src/aio/aio.c
>
> and one with CFLAGS loses these flags, in particular, it has no -Os
> and no -fPIC:
>
> ... -falign-functions=1 -c -o src/aio/aio.o src/aio/aio.c
>
> Evidently, my CFLAGS replaced needed flags instead of being added at the
> end.
>
> Can this be fixed? If user needs to use e.g. EXTRA_CFLAGS instead,
> please fix configure --help.
>

This appears to be an issue with how you're expecting CFLAGS to work. As
with almost anything with configure, all the optimization flags you want
need to be in CFLAGS. Normally, a program would have nothing in there
otherwise, so you'd be just getting the "-falign-functions=1" flag going to
GCC. If you want to optimize it, you would actually need CFLAGS="-Os ...".

As for the "no -fPIC", I believe you're looking at the build for two
different objects. musl's build system builds both a static and shared
library, and the line you pasted there is the one that it uses for the
static library's objects. You could tell if it was intended to go into a
shared object because it would have a ".lo" suffix instead.

[-- Attachment #2: Type: text/html, Size: 3319 bytes --]

  reply	other threads:[~2015-10-22 23:04 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-22 22:31 Denys Vlasenko
2015-10-22 23:04 ` Josiah Worcester [this message]
2015-10-23  0:13   ` Denys Vlasenko
2015-10-22 23:23 ` Szabolcs Nagy
2015-10-23  3:02   ` Rich Felker
2015-10-23  4:09     ` Rich Felker
2015-10-23  4:53       ` Denys Vlasenko
2015-10-23  5:16         ` Rich Felker
2015-10-23  6:47           ` Denys Vlasenko
2015-10-24 19:37             ` Rich Felker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAMAJcuCVmHqob6r9cF46jHGxxSkk4zE99JNpxsofCUqE-r-RvA@mail.gmail.com \
    --to=josiahw@gmail.com \
    --cc=dalias@libc.org \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).