From: "Andreas Färber" <afaerber@suse.de>
To: Fam Zheng <famz@redhat.com>, qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Michael Tokarev <mjt@tls.msk.ru>,
agraf@suse.de, Stefan Weil <sw@weilnetz.de>
Subject: Re: [Qemu-devel] [PATCH v2] rules.mak: Force CFLAGS for all objects in DSO
Date: Tue, 12 May 2015 00:24:56 +0200 [thread overview]
Message-ID: <55512C38.3010207@suse.de> (raw)
In-Reply-To: <1430981715-31465-1-git-send-email-famz@redhat.com>
Am 07.05.2015 um 08:55 schrieb Fam Zheng:
> Because of the trick of process-archive-undefs, all .mo objects, even
> with --enable-modules, are dependencies of executables.
>
> This breaks CFLAGS propogation because the compiling of module object
> will happen too early before building for DSO.
>
> With GCC 5, the linking would fail because .o doesn't have -fPIC. Also,
> BUILD_DSO will be missed. (module-common.o will have it, so the stamp
> symbol was still liked in .so).
Did you mean "linked"?
Cheers,
Andreas
>
> Fix the problem by forcing the CFLAGS on individual .o-cflags during
> unnest-vars.
>
> Reported-by: Alexander Graf <agraf@suse.de>
> Signed-off-by: Fam Zheng <famz@redhat.com>
>
> ---
>
> v2: Simplify as Paolo suggested, while keeping the CFLAGS of
> module-common.o
> ---
> rules.mak | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/rules.mak b/rules.mak
> index 3a05627..aec27f8 100644
> --- a/rules.mak
> +++ b/rules.mak
> @@ -102,7 +102,8 @@ endif
> %.o: %.dtrace
> $(call quiet-command,dtrace -o $@ -G -s $<, " GEN $(TARGET_DIR)$@")
>
> -%$(DSOSUF): CFLAGS += -fPIC -DBUILD_DSO
> +DSO_OBJ_CFLAGS := -fPIC -DBUILD_DSO
> +module-common.o: CFLAGS += $(DSO_OBJ_CFLAGS)
> %$(DSOSUF): LDFLAGS += $(LDFLAGS_SHARED)
> %$(DSOSUF): %.mo
> $(call LINK,$^)
> @@ -351,6 +352,7 @@ define unnest-vars
> # For non-module build, add -m to -y
> $(if $(CONFIG_MODULES),
> $(foreach o,$($v),
> + $(eval $($o-objs): CFLAGS += $(DSO_OBJ_CFLAGS))
> $(eval $o: $($o-objs)))
> $(eval $(patsubst %-m,%-y,$v) += $($v))
> $(eval modules: $($v:%.mo=%$(DSOSUF))),
>
--
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Dilip Upmanyu, Graham Norton; HRB
21284 (AG Nürnberg)
next prev parent reply other threads:[~2015-05-11 22:25 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-07 6:55 [Qemu-devel] [PATCH v2] rules.mak: Force CFLAGS for all objects in DSO Fam Zheng
2015-05-11 22:24 ` Andreas Färber [this message]
2015-05-12 1:03 ` Fam Zheng
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=55512C38.3010207@suse.de \
--to=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=famz@redhat.com \
--cc=mjt@tls.msk.ru \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=sw@weilnetz.de \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.