* [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header
@ 2012-10-23 20:32 Peter Seebach
2012-10-23 20:32 ` [PATCH 1/1] insane.bbclass and friends: Fix sanity checks and multlib headers for n32 Peter Seebach
2012-10-23 20:49 ` [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header Saul Wold
0 siblings, 2 replies; 5+ messages in thread
From: Peter Seebach @ 2012-10-23 20:32 UTC (permalink / raw)
To: openembedded-core
The multilib_header fixup has code in the generated header to handle
n32, but doesn't detect n32 headers. Meanwhile, insane.bclass rejects
n32 binaries for being 32-bit binaries in a mips64 build. Solution: Use
an ABI suffix, and check for it in appropriate places.
Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
The following changes since commit 754ddbf1c57e6b9d0650498538840effebe4f7a2:
Ross Burton (1):
libical: remove
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib seebs/mips64
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=seebs/mips64
Peter Seebach (1):
insane.bbclass and friends: Fix sanity checks and multlib headers for
n32
meta/classes/insane.bbclass | 4 +++
meta/classes/multilib_header.bbclass | 32 +++++++++++++++++--------
meta/conf/machine/include/mips/arch-mips.inc | 1 +
3 files changed, 27 insertions(+), 10 deletions(-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/1] insane.bbclass and friends: Fix sanity checks and multlib headers for n32
2012-10-23 20:32 [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header Peter Seebach
@ 2012-10-23 20:32 ` Peter Seebach
2012-10-23 20:49 ` [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header Saul Wold
1 sibling, 0 replies; 5+ messages in thread
From: Peter Seebach @ 2012-10-23 20:32 UTC (permalink / raw)
To: openembedded-core
The n32 architecture is odd, in that it's a mips64 ABI which happens
to be 32-bit. To handle this, we need something in the environment
which can be used to distinguish it. The obvious place to stash this
is the ABI suffix, so we use "n32" as an ABI suffix. This allows
a couple of improved checks:
1. In insane.bbclass, we can use "linux-gnun32" to discern that it's
okay for a mips64 binary to be a 32-bit binary in some cases.
2. In multilib_header, we can check for the n32 ABI, and use a distinct
value.
Note that the multilib header wrapper already has n32 hooks in it, there
was just nothing creating -n32 header variants.
Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
---
meta/classes/insane.bbclass | 4 +++
| 32 +++++++++++++++++--------
meta/conf/machine/include/mips/arch-mips.inc | 1 +
3 files changed, 27 insertions(+), 10 deletions(-)
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 29b122e..2dc9ba3 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -105,6 +105,10 @@ def package_qa_get_machine_dict():
"linux-gnux32" : {
"x86_64": (62, 0, 0, True, 32),
},
+ "linux-gnun32" : {
+ "mips64": ( 8, 0, 0, False, 32),
+ "mipsel64": ( 8, 0, 0, True, 32),
+ },
}
--git a/meta/classes/multilib_header.bbclass b/meta/classes/multilib_header.bbclass
index 867bce4..639ed4b 100644
--- a/meta/classes/multilib_header.bbclass
+++ b/meta/classes/multilib_header.bbclass
@@ -1,16 +1,29 @@
inherit siteinfo
-# If applicable on the architecture, this routine will rename the header and add
-# a unique identifier to the name for the ABI/bitsize that is being used. A wrapper will
-# be generated for the architecture that knows how to call all of the ABI variants for that
-# given architecture.
-#
-# TODO: mips64 n32 is not yet recognized in this code
-# when that is identified the name of the wrapped item should be "n32" and appropriately
-# determined int he if coding...
+# If applicable on the architecture, this routine will rename the header and
+# add a unique identifier to the name for the ABI/bitsize that is being used.
+# A wrapper will be generated for the architecture that knows how to call
+# all of the ABI variants for that given architecture.
#
oe_multilib_header() {
- # Do nothing on ARM, only one ABI is supported at once
+ # We use
+ # For ARM: We don't support multilib builds.
+ # For MIPS: "n32" is a special case, which needs to be
+ # distinct from both 64-bit and 32-bit.
+ case ${TARGET_ARCH} in
+ arm*) return
+ ;;
+ mips*) case "${MIPSPKGSFX_ABI}" in
+ "-n32")
+ ident=n32
+ ;;
+ *)
+ ident=${SITEINFO_BITS}
+ ;;
+ esac
+ ;;
+ *) ident=${SITEINFO_BITS}
+ esac
if echo ${TARGET_ARCH} | grep -q arm; then
return
fi
@@ -20,7 +33,6 @@ oe_multilib_header() {
continue
fi
stem=$(echo $each_header | sed 's#\.h$##')
- ident=${SITEINFO_BITS}
# if mips64/n32 set ident to n32
mv ${D}/${includedir}/$each_header ${D}/${includedir}/${stem}-${ident}.h
diff --git a/meta/conf/machine/include/mips/arch-mips.inc b/meta/conf/machine/include/mips/arch-mips.inc
index 9f12920..c390ff9 100644
--- a/meta/conf/machine/include/mips/arch-mips.inc
+++ b/meta/conf/machine/include/mips/arch-mips.inc
@@ -17,6 +17,7 @@ TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "o32", "-mabi=32", "", d)}
TUNEVALID[n32] = "MIPS64 n32 ABI"
TUNECONFLICTS[n32] = "o32 n64"
+ABIEXTENSION .= "${@bb.utils.contains("TUNE_FEATURES", "n32", "n32", "" ,d)}"
TUNE_CCARGS += "${@bb.utils.contains("TUNE_FEATURES", "n32", "-mabi=n32", "", d)}"
TUNEVALID[n64] = "MIPS64 n64 ABI"
--
1.7.0.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header
2012-10-23 20:32 [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header Peter Seebach
2012-10-23 20:32 ` [PATCH 1/1] insane.bbclass and friends: Fix sanity checks and multlib headers for n32 Peter Seebach
@ 2012-10-23 20:49 ` Saul Wold
2012-10-23 20:53 ` Peter Seebach
2012-10-23 21:47 ` Peter Seebach
1 sibling, 2 replies; 5+ messages in thread
From: Saul Wold @ 2012-10-23 20:49 UTC (permalink / raw)
To: Peter Seebach; +Cc: openembedded-core
On 10/23/2012 01:32 PM, Peter Seebach wrote:
> The multilib_header fixup has code in the generated header to handle
> n32, but doesn't detect n32 headers. Meanwhile, insane.bclass rejects
> n32 binaries for being 32-bit binaries in a mips64 build. Solution: Use
> an ABI suffix, and check for it in appropriate places.
>
How can I build test this, the same way as x32?
Sau!
> Signed-off-by: Peter Seebach <peter.seebach@windriver.com>
>
> The following changes since commit 754ddbf1c57e6b9d0650498538840effebe4f7a2:
> Ross Burton (1):
> libical: remove
>
> are available in the git repository at:
>
> git://git.yoctoproject.org/poky-contrib seebs/mips64
> http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=seebs/mips64
>
> Peter Seebach (1):
> insane.bbclass and friends: Fix sanity checks and multlib headers for
> n32
>
> meta/classes/insane.bbclass | 4 +++
> meta/classes/multilib_header.bbclass | 32 +++++++++++++++++--------
> meta/conf/machine/include/mips/arch-mips.inc | 1 +
> 3 files changed, 27 insertions(+), 10 deletions(-)
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header
2012-10-23 20:49 ` [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header Saul Wold
@ 2012-10-23 20:53 ` Peter Seebach
2012-10-23 21:47 ` Peter Seebach
1 sibling, 0 replies; 5+ messages in thread
From: Peter Seebach @ 2012-10-23 20:53 UTC (permalink / raw)
To: Saul Wold; +Cc: openembedded-core
On Tue, 23 Oct 2012 13:49:46 -0700
Saul Wold <sgw@linux.intel.com> wrote:
> How can I build test this, the same way as x32?
I am ... not entirely sure how you'd do it in the absence of an
n32 target. Our binary prebuilt toolchain uses n32 for one of the
Octeon parts.
I think any tuning that uses n32 should illustrate the failure modes in
the previous setup, which are:
1. First thing you build that has target binaries errors out with QA
checks because you're making 32-bit binaries for mips64.
2. Anything that wants ncurses ends up thinking that ncurses.h doesn't
exist because ncurses.h is a symlink to curses.h, and curses.h is
renamed to curses-64.h, but the #include magic in the wrapper looks for
curses-n32.h.
-s
--
Listen, get this. Nobody with a good compiler needs to be justified.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header
2012-10-23 20:49 ` [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header Saul Wold
2012-10-23 20:53 ` Peter Seebach
@ 2012-10-23 21:47 ` Peter Seebach
1 sibling, 0 replies; 5+ messages in thread
From: Peter Seebach @ 2012-10-23 21:47 UTC (permalink / raw)
To: Saul Wold; +Cc: openembedded-core
On Tue, 23 Oct 2012 13:49:46 -0700
Saul Wold <sgw@linux.intel.com> wrote:
> On 10/23/2012 01:32 PM, Peter Seebach wrote:
> > The multilib_header fixup has code in the generated header to handle
> > n32, but doesn't detect n32 headers. Meanwhile, insane.bclass
> > rejects n32 binaries for being 32-bit binaries in a mips64 build.
> > Solution: Use an ABI suffix, and check for it in appropriate places.
> >
>
> How can I build test this, the same way as x32?
And to save you trouble, I don't know how it passed my first test build,
because it obviously fails now on glib. Solution seems to be:
+++ b/meta/classes/siteinfo.bbclass
@@ -50,6 +50,7 @@ def siteinfo_data(d):
"linux": "common-linux common-glibc",
"linux-gnu": "common-linux common-glibc",
"linux-gnux32": "common-linux common-glibc",
+ "linux-gnun32": "common-linux common-glibc",
so I'll retest with that and resubmit.
-s
--
Listen, get this. Nobody with a good compiler needs to be justified.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-10-23 22:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-23 20:32 [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header Peter Seebach
2012-10-23 20:32 ` [PATCH 1/1] insane.bbclass and friends: Fix sanity checks and multlib headers for n32 Peter Seebach
2012-10-23 20:49 ` [PATCH 0/1] Make n32 survive insane.bbclass and multilib_header Saul Wold
2012-10-23 20:53 ` Peter Seebach
2012-10-23 21:47 ` Peter Seebach
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox