[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH 4/6] Makefile: introduce common-obj-m and bl
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [RFC PATCH 4/6] Makefile: introduce common-obj-m and block-obj-m for DSO |
Date: |
Thu, 05 Sep 2013 12:24:20 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8 |
On 09/05/2013 03:20 AM, Fam Zheng wrote:
> 1) %.o in $(common-obj-m) is compiled to %.o, with
> "QEMU_CFLAGS += -shared -fPIC". Then "linked" to %.mo, which is an
> incremental object with "ln -r". This step is for consistency with
> %.mod case and has no effect.
As a general rule, you should avoid ld -r unless you know exactly
what that implies for the given machine. This is the sort of thing
that's highly likely to work on x86 while failing elsewhere.
E.g. ARM and PPC ld would like to add trampolines for direct calls
to reach the PLT entry. If you create one object that's too large
then that's no longer possible.
E.g. MIPS and Alpha ld require that any one input object file
reference less than 64K worth of got entries. Every separate
object file can address its own 64K segment of the got. If you
combine too many objectsyou could overflow the got subsegments.
If our modules are small enough, we may never see any of these, but...
If you really require a single input file to ld for pattern matching
purposes, I highly recommend an ar file, and then use --whole-archive
to force the entire contents of the .a to be included. This preserves
the original translation-unit boundaries for ld.
r~
- [Qemu-devel] [RFC PATCH 0/6] Shared Library Module Support, Fam Zheng, 2013/09/05
- [Qemu-devel] [RFC PATCH 1/6] make.rule: fix $(obj) to a real relative path, Fam Zheng, 2013/09/05
- [Qemu-devel] [RFC PATCH 2/6] rule.mak: allow per object cflags and libs, Fam Zheng, 2013/09/05
- [Qemu-devel] [RFC PATCH 3/6] Makefile: define curl cflags and libs with object, Fam Zheng, 2013/09/05
- [Qemu-devel] [RFC PATCH 4/6] Makefile: introduce common-obj-m and block-obj-m for DSO, Fam Zheng, 2013/09/05
- Re: [Qemu-devel] [RFC PATCH 4/6] Makefile: introduce common-obj-m and block-obj-m for DSO,
Richard Henderson <=
- Re: [Qemu-devel] [RFC PATCH 4/6] Makefile: introduce common-obj-m and block-obj-m for DSO, Fam Zheng, 2013/09/06
- Re: [Qemu-devel] [RFC PATCH 4/6] Makefile: introduce common-obj-m and block-obj-m for DSO, Richard Henderson, 2013/09/06
- Re: [Qemu-devel] [RFC PATCH 4/6] Makefile: introduce common-obj-m and block-obj-m for DSO, Fam Zheng, 2013/09/06
[Qemu-devel] [RFC PATCH 5/6] module: load modules at start, Fam Zheng, 2013/09/05