12077
Comment: add a link pointer for ia32 stack frame alignment
|
11975
plain ASCII minus in triplets to support copy/paste
|
Deletions are marked like this. | Additions are marked like this. |
Line 24: | Line 24: |
|| aarch64‑linux‑gnu || linux || ARMv8 || little || 64 || none || arm64 || aarch64 Linux Platform ABI || Procedure Call Standard for the ARM 64-bit Architecture<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055a/IHI0055A_aapcs64.pdf)>>, ELF for the ARM 64-bit Architecture<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0056a/IHI0056A_aaelf64.pdf)>> || || alpha‑linux‑gnu || linux || Alpha || little || 64 || EOL || alpha || glibc, Tru64 calling standard || Tru64 UNIX Calling Standard for Alpha Systems<<FootNote(http://www.openwatcom.org/ftp/devel/docs/alpha%20calling%20standard.pdf)>> || || arm‑linux‑gnu || linux || ARM || little || 32 || EOL || arm || Old ARM ABI (APCS). HW FPU expected with kernel emulation as fallback. DO NOT USE || ARM Procedure Call Standard (ARM DUI 0041 chapter 9)<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.dui0041c/BGBGFIDA.html)>>|| || arm‑linux‑gnueabi || linux || ARMv4t+ || little || 32 || released || armel || New ARM EABI (AAPCS), soft-float || Procedure Call Standard for the ARM Architecture (ARM IHI 0042D)<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042a/IHI0042A_aapcs.pdf)>> and ARM GNU/Linux ABI Supplement<<FootNote(https://sourcery.mentor.com/GNUToolchain/kbentry39)>> || || arm‑linux‑gnueabihf || linux || ARMv7+ || little || 32 || development || armhf || New ARM EABI (AAPCS), hard-float || AAPCS (ARM IHI 0042D)<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042a/IHI0042A_aapcs.pdf)>> and '''XXXXX (TBD)''' || || hppa‑linux‑gnu || linux || PA-RISC || big || 32 || EOL || hppa || PA-RISC Linux 32-bit ELF || parisc-linux toolchain documents<<FootNote(http://wiki.parisc-linux.org/ToolChain)>> || || i386‑gnu || Hurd || IA-32 || little || 32 || development || hurd-i386 || Hurd/ix86, 16-byte aligned stack || ia32 functions calls<<FootNote(http://refspecs.linuxbase.org/elf/abi386-4.pdf)>>, OS interface '''XXXXX''' undocumented || || i386‑linux‑gnu || linux || IA-32 || little || 32 || released || i386 || LSB IA32, 16-byte aligned stack || SCO Developer Specifications<<FootNote(http://www.sco.com/developers/devspecs/)>>, SysV ABI Intel386 Architecture Processor Supplement<<FootNote(http://refspecs.linuxbase.org/elf/abi386-4.pdf)>>, LSB Core-IA32<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-IA32/LSB-Core-IA32/elf-ia32.html)>>, LSB Bug 3268<<FootNote(https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=3268)>> || || ia64‑linux‑gnu || linux || IA-64 || little || 64 || released || ia64 || LSB IA64 || Intel Itanium SysV psABI<<FootNote(http://refspecs.linuxbase.org/elf/IA64-SysV-psABI.pdf)>>, LSB Core-IA64<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-IA64/LSB-Core-IA64/elf-ia64.html)>> || || i386‑kfreebsd‑gnu || FreeBSD || IA-32 || little || 32 || released || kfreebsd-i386 || [[Debian_GNU/kFreeBSD]] || '''XXXXX''' none I could find || || m68k‑linux‑gnu || linux || MC68000 || big || 32 || EOL || m68k || m68k SysV ABI || ISBN: 978-0138776633 || || mips‑linux‑gnu || linux || MIPS || big || 32 || released || mips || MIPS o32 ABI || SysV ABI MIPS Processor Supplement<<FootNote(http://refspecs.linuxbase.org/elf/mipsabi.pdf)>> || || mipsel‑linux‑gnu || linux || MIPS || little || 32 || released || mipsel || MIPS o32 ABI || SysV ABI MIPS Processor Supplement<<FootNote(http://refspecs.linuxbase.org/elf/mipsabi.pdf)>> || || mips64‑linux‑gnuabin32 || linux || MIPS64 || big || 32 || none || || MIPS n32 ABI || MIPSpro N32 ABI Handbook<<FootNote(http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf)>> || || mips64el‑linux‑gnuabin32 || linux || MIPS64 || little || 32 || none || || MIPS n32 ABI || MIPSpro N32 ABI Handbook<<FootNote(http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf)>> || || mips64‑linux‑gnuabi64 || linux || MIPS64 || big || 64 || none || || MIPS 64-bit ABI || MIPSpro N32 ABI Handbook<<FootNote(http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf)>> || || mips64el‑linux‑gnuabi64|| linux || MIPS64 || little || 64 || none || || MIPS 64-bit ABI || MIPSpro N32 ABI Handbook<<FootNote(http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf)>> || || powerpc‑linux‑gnu || linux || PowerPC || big || 32 || released || powerpc || LSB PPC32 || SysV ABI PowerPC Processor Supplement<<FootNote(http://refspecs.linux-foundation.org/elf/elfspec_ppc.pdf)>>, LSB Core-PPC32<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-PPC32/LSB-Core-PPC32/elf-ppc32.html)>> || || powerpc‑linux‑gnuspe || linux || PowerPC || big || 32 || development || powerpcspe || SYSV soft-float ABI, uses e500v2 SPE FPU (limited hw options) [[PowerPCSPEPort]] || Power 32-bit ABI Supplement 1.0 Linux<<FootNote(https://www.power.org/resources/downloads/Power-Arch-32-bit-ABI-supp-1.0.tgz)>> || || ppc64‑linux‑gnu || linux || PowerPC || big || 64 || development || ppc64 || LSB PPC64 || 64-bit PowerPC ELF ABI Supplement<<FootNote(http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html)>>, LSB Core-PPC64<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-PPC64/LSB-Core-PPC64/elf-ppc64.html)>> || || s390‑linux‑gnu || linux || System/390 || big || 32 || released || s390 || LSB S390 || S/390 ELF ABI Supplement<<FootNote(http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_s390.html)>>, LSB Core-S390<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-S390/LSB-Core-S390/elf-s390.html)>> || || s390x‑linux‑gnu || linux || z/Architecture || big || 64 || development || s390x || LSB S390X || zSeries ELF ABI Supplement<<FootNote(http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_zSeries.html)>>, LSB Core-S390X<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-S390X/LSB-Core-S390X/elf-s390x.html)>> || |
|| aarch64-linux-gnu || linux || ARMv8 || little || 64 || none || arm64 || aarch64 Linux Platform ABI || Procedure Call Standard for the ARM 64-bit Architecture<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055a/IHI0055A_aapcs64.pdf)>>, ELF for the ARM 64-bit Architecture<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0056a/IHI0056A_aaelf64.pdf)>> || || alpha-linux-gnu || linux || Alpha || little || 64 || EOL || alpha || glibc, Tru64 calling standard || Tru64 UNIX Calling Standard for Alpha Systems<<FootNote(http://www.openwatcom.org/ftp/devel/docs/alpha%20calling%20standard.pdf)>> || || arm-linux-gnu || linux || ARM || little || 32 || EOL || arm || Old ARM ABI (APCS). HW FPU expected with kernel emulation as fallback. DO NOT USE || ARM Procedure Call Standard (ARM DUI 0041 chapter 9)<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.dui0041c/BGBGFIDA.html)>>|| || arm-linux-gnueabi || linux || ARMv4t+ || little || 32 || released || armel || New ARM EABI (AAPCS), soft-float || Procedure Call Standard for the ARM Architecture (ARM IHI 0042D)<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042a/IHI0042A_aapcs.pdf)>> and ARM GNU/Linux ABI Supplement<<FootNote(https://sourcery.mentor.com/GNUToolchain/kbentry39)>> || || arm-linux-gnueabihf || linux || ARMv7+ || little || 32 || development || armhf || New ARM EABI (AAPCS), hard-float || AAPCS (ARM IHI 0042D)<<FootNote(http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042a/IHI0042A_aapcs.pdf)>> and '''XXXXX (TBD)''' || || hppa-linux-gnu || linux || PA-RISC || big || 32 || EOL || hppa || PA-RISC Linux 32-bit ELF || parisc-linux toolchain documents<<FootNote(http://wiki.parisc-linux.org/ToolChain)>> || || i386-gnu || Hurd || IA-32 || little || 32 || development || hurd-i386 || Hurd/ix86, 16-byte aligned stack || ia32 functions calls<<FootNote(http://refspecs.linuxbase.org/elf/abi386-4.pdf)>>, OS interface '''XXXXX''' undocumented || || i386-linux-gnu || linux || IA-32 || little || 32 || released || i386 || LSB IA32, 16-byte aligned stack || SCO Developer Specifications<<FootNote(http://www.sco.com/developers/devspecs/)>>, SysV ABI Intel386 Architecture Processor Supplement<<FootNote(http://refspecs.linuxbase.org/elf/abi386-4.pdf)>>, LSB Core-IA32<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-IA32/LSB-Core-IA32/elf-ia32.html)>>, LSB Bug 3268<<FootNote(https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=3268)>> || || ia64-linux-gnu || linux || IA-64 || little || 64 || released || ia64 || LSB IA64 || Intel Itanium SysV psABI<<FootNote(http://refspecs.linuxbase.org/elf/IA64-SysV-psABI.pdf)>>, LSB Core-IA64<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-IA64/LSB-Core-IA64/elf-ia64.html)>> || || i386-kfreebsd-gnu || FreeBSD || IA-32 || little || 32 || released || kfreebsd-i386 || [[Debian_GNU/kFreeBSD]] || '''XXXXX''' none I could find || || m68k-linux-gnu || linux || MC68000 || big || 32 || EOL || m68k || m68k SysV ABI || ISBN: 978-0138776633 || || mips-linux-gnu || linux || MIPS || big || 32 || released || mips || MIPS o32 ABI || SysV ABI MIPS Processor Supplement<<FootNote(http://refspecs.linuxbase.org/elf/mipsabi.pdf)>> || || mipsel-linux-gnu || linux || MIPS || little || 32 || released || mipsel || MIPS o32 ABI || SysV ABI MIPS Processor Supplement<<FootNote(http://refspecs.linuxbase.org/elf/mipsabi.pdf)>> || || mips64-linux-gnuabin32 || linux || MIPS64 || big || 32 || none || || MIPS n32 ABI || MIPSpro N32 ABI Handbook<<FootNote(http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf)>> || || mips64el-linux-gnuabin32 || linux || MIPS64 || little || 32 || none || || MIPS n32 ABI || MIPSpro N32 ABI Handbook<<FootNote(http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf)>> || || mips64-linux-gnuabi64 || linux || MIPS64 || big || 64 || none || || MIPS 64-bit ABI || MIPSpro N32 ABI Handbook<<FootNote(http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf)>> || || mips64el-linux-gnuabi64|| linux || MIPS64 || little || 64 || none || || MIPS 64-bit ABI || MIPSpro N32 ABI Handbook<<FootNote(http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf)>> || || powerpc-linux-gnu || linux || PowerPC || big || 32 || released || powerpc || LSB PPC32 || SysV ABI PowerPC Processor Supplement<<FootNote(http://refspecs.linux-foundation.org/elf/elfspec_ppc.pdf)>>, LSB Core-PPC32<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-PPC32/LSB-Core-PPC32/elf-ppc32.html)>> || || powerpc-linux-gnuspe || linux || PowerPC || big || 32 || development || powerpcspe || SYSV soft-float ABI, uses e500v2 SPE FPU (limited hw options) [[PowerPCSPEPort]] || Power 32-bit ABI Supplement 1.0 Linux<<FootNote(https://www.power.org/resources/downloads/Power-Arch-32-bit-ABI-supp-1.0.tgz)>> || || ppc64-linux-gnu || linux || PowerPC || big || 64 || development || ppc64 || LSB PPC64 || 64-bit PowerPC ELF ABI Supplement<<FootNote(http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html)>>, LSB Core-PPC64<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-PPC64/LSB-Core-PPC64/elf-ppc64.html)>> || || s390-linux-gnu || linux || System/390 || big || 32 || released || s390 || LSB S390 || S/390 ELF ABI Supplement<<FootNote(http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_s390.html)>>, LSB Core-S390<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-S390/LSB-Core-S390/elf-s390.html)>> || || s390x-linux-gnu || linux || z/Architecture || big || 64 || development || s390x || LSB S390X || zSeries ELF ABI Supplement<<FootNote(http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_zSeries.html)>>, LSB Core-S390X<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-S390X/LSB-Core-S390X/elf-s390x.html)>> || |
Line 47: | Line 47: |
|| sparc‑linux‑gnu || linux || SPARC || big || 32 || released || sparc || glibc Linux sparc32 || SysV ABI SPARC Processor Supplement<<FootNote(http://www.sparc.com/standards/psABI3rd.pdf)>> || || sparc64‑linux‑gnu || linux || SPARCv9+ || big || 64 || development || sparc64 || glibc, Linux sparc64 || SysV ABI SPARCv9 Processor Supplement (draft<<FootNote(http://www.sparc.com/standards/64.psabi.1.35.ps.Z)>> available online, can't find anything more concrete) || || x86_64‑kfreebsd‑gnu || FreeBSD || x86_64 || little || 64 || released || kfreebsd-amd64 || [[Debian_GNU/kFreeBSD]] || '''XXXXX''' none I could find || || x86_64‑linux‑gnu || linux || x86_64 || little || 64 || released || amd64 || LSB AMD64 || SysV ABI AMD64 Architecture Processor Supplement<<FootNote(http://x86-64.org/documentation/abi.pdf)>>, LSB Core-AMD64<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-AMD64/LSB-Core-AMD64/elf-amd64.html)>> || |
|| sparc-linux-gnu || linux || SPARC || big || 32 || released || sparc || glibc Linux sparc32 || SysV ABI SPARC Processor Supplement<<FootNote(http://www.sparc.com/standards/psABI3rd.pdf)>> || || sparc64-linux-gnu || linux || SPARCv9+ || big || 64 || development || sparc64 || glibc, Linux sparc64 || SysV ABI SPARCv9 Processor Supplement (draft<<FootNote(http://www.sparc.com/standards/64.psabi.1.35.ps.Z)>> available online, can't find anything more concrete) || || x86_64-kfreebsd-gnu || FreeBSD || x86_64 || little || 64 || released || kfreebsd-amd64 || [[Debian_GNU/kFreeBSD]] || '''XXXXX''' none I could find || || x86_64-linux-gnu || linux || x86_64 || little || 64 || released || amd64 || LSB AMD64 || SysV ABI AMD64 Architecture Processor Supplement<<FootNote(http://x86-64.org/documentation/abi.pdf)>>, LSB Core-AMD64<<FootNote(http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-AMD64/LSB-Core-AMD64/elf-amd64.html)>> || |
Multiarch Architecture Specifiers (Tuples)
This document describes the new schema for representing architecture ABIs as directory names, using normalized GNU triplets. The process to document the tuples in the Debian Policy and distribution independent standards is tracked in http://bugs.debian.org/664257.
The abandoned proposal can be found at Multiarch/TuplesAbandoned.
This page is part of the larger effort to implement Multiarch library handling on Linux. For more information about Multiarch, see Multiarch, https://wiki.ubuntu.com/MultiarchSpec.
Contents
The problem
Multiarch specifies a method of making libraries for multiple, mutually-incompatible architectures installable on a single filesystem in a manner that ensures the same binaries can be used without modification on any system. To accomplish this, we require unique identifiers for each architecture that identifies an incompatible set of libraries that we want to be co-installed. We want these identifiers to be specified in as vendor-neutral a manner as possible, to ensure we retain maximal binary compatibility across Linux distributions.
Why not use GNU triplets?
Earlier proposals for multiarch did use GNU triplets as the components of the library path. Proof-of-concept implementations ran into two distinct cases where GNU triplets could not be used effectively in a cross-distribution manner:
- On IA-32, the GNU triplet varies according to the precise instruction set being targeted: e.g., i486-linux-gnu, i586-linux-gnu i686-linux-gnu. Such triplets will be inconsistent over time within a single distribution as compiler defaults are changed, let alone between distributions.
Historical note: On ARM, the canonical GNU triplet for EABI systems, whether using hard-float or soft-float, was arm-linux-gnueabi, despite the fact that hard-float and soft-float libraries use different calling conventions and can't be intermixed. The advice given by upstream GCC developers was to use the vendor field in the GNU triplet to express this difference1; however, the vendor field is private by design, making this unreliable for cross-distribution use. Work finally succeeded to push the arm-linux-gnueabihf triplet upstream, but there may still be some broken packages around for a while.
Used solution
Use normalized GNU triplets for most tuples, and extend the GNU triplet when it is ambiguous.
multiarch name
syscall ABI
instruction set
endianness
wordsize
status in Debian
Debian architecture name
description
spec document(s)
aarch64-linux-gnu
linux
ARMv8
little
64
none
arm64
aarch64 Linux Platform ABI
Procedure Call Standard for the ARM 64-bit Architecture1, ELF for the ARM 64-bit Architecture2
alpha-linux-gnu
linux
Alpha
little
64
EOL
alpha
glibc, Tru64 calling standard
Tru64 UNIX Calling Standard for Alpha Systems3
arm-linux-gnu
linux
ARM
little
32
EOL
arm
Old ARM ABI (APCS). HW FPU expected with kernel emulation as fallback. DO NOT USE
ARM Procedure Call Standard (ARM DUI 0041 chapter 9)4
arm-linux-gnueabi
linux
ARMv4t+
little
32
released
armel
New ARM EABI (AAPCS), soft-float
Procedure Call Standard for the ARM Architecture (ARM IHI 0042D)5 and ARM GNU/Linux ABI Supplement6
arm-linux-gnueabihf
linux
ARMv7+
little
32
development
armhf
New ARM EABI (AAPCS), hard-float
AAPCS (ARM IHI 0042D)5 and XXXXX (TBD)
hppa-linux-gnu
linux
PA-RISC
big
32
EOL
hppa
PA-RISC Linux 32-bit ELF
parisc-linux toolchain documents7
i386-gnu
Hurd
IA-32
little
32
development
hurd-i386
Hurd/ix86, 16-byte aligned stack
ia32 functions calls8, OS interface XXXXX undocumented
i386-linux-gnu
linux
IA-32
little
32
released
i386
LSB IA32, 16-byte aligned stack
SCO Developer Specifications9, SysV ABI Intel386 Architecture Processor Supplement8, LSB Core-IA3210, LSB Bug 326811
ia64-linux-gnu
linux
IA-64
little
64
released
ia64
LSB IA64
i386-kfreebsd-gnu
FreeBSD
IA-32
little
32
released
kfreebsd-i386
XXXXX none I could find
m68k-linux-gnu
linux
MC68000
big
32
EOL
m68k
m68k SysV ABI
ISBN: 978-0138776633
mips-linux-gnu
linux
MIPS
big
32
released
mips
MIPS o32 ABI
SysV ABI MIPS Processor Supplement14
mipsel-linux-gnu
linux
MIPS
little
32
released
mipsel
MIPS o32 ABI
SysV ABI MIPS Processor Supplement14
mips64-linux-gnuabin32
linux
MIPS64
big
32
none
MIPS n32 ABI
MIPSpro N32 ABI Handbook15
mips64el-linux-gnuabin32
linux
MIPS64
little
32
none
MIPS n32 ABI
MIPSpro N32 ABI Handbook15
mips64-linux-gnuabi64
linux
MIPS64
big
64
none
MIPS 64-bit ABI
MIPSpro N32 ABI Handbook15
mips64el-linux-gnuabi64
linux
MIPS64
little
64
none
MIPS 64-bit ABI
MIPSpro N32 ABI Handbook15
powerpc-linux-gnu
linux
PowerPC
big
32
released
powerpc
LSB PPC32
powerpc-linux-gnuspe
linux
PowerPC
big
32
development
powerpcspe
SYSV soft-float ABI, uses e500v2 SPE FPU (limited hw options) PowerPCSPEPort
Power 32-bit ABI Supplement 1.0 Linux18
ppc64-linux-gnu
linux
PowerPC
big
64
development
ppc64
LSB PPC64
s390-linux-gnu
linux
System/390
big
32
released
s390
LSB S390
s390x-linux-gnu
linux
z/Architecture
big
64
development
s390x
LSB S390X
sh4-linux-gnu
linux
SH-4
little
32
development
sh4
glibc Linux SH-4 fpu/pervading double precision model
SH-4 Generic and Specific ABI25
sparc-linux-gnu
linux
SPARC
big
32
released
sparc
glibc Linux sparc32
SysV ABI SPARC Processor Supplement26
sparc64-linux-gnu
linux
SPARCv9+
big
64
development
sparc64
glibc, Linux sparc64
SysV ABI SPARCv9 Processor Supplement (draft27 available online, can't find anything more concrete)
x86_64-kfreebsd-gnu
FreeBSD
x86_64
little
64
released
kfreebsd-amd64
XXXXX none I could find
x86_64-linux-gnu
linux
x86_64
little
64
released
amd64
LSB AMD64
SysV ABI AMD64 Architecture Processor Supplement28, LSB Core-AMD6429
x86_64-linux-gnux32
linux
x86_64
little
32
none
x32
glibc Linux x32
x32-abi documents30
The status describes if the name is used in a (to be) released version of Debian and/or Ubuntu (release), if it is a new or abandoned port on Debian Ports (port), or if it's used as a name for a Debian gcc multilib configuration (biarch).
Supporting interfaces
- dpkg-architecture -qDEB_HOST_MULTIARCH (on dpkg based systems).
- gcc -print-multiarch (proposed patch; currently only available in Debian wheezy (unreleased), and in Ubuntu 11.10 (oneiric) or newer.
To avoid divergent embedded implementations of architecture->tuple mappings in every piece of software that wants to make use of these paths, a standard commandline tool that encapsulates this mapping should be provided, similar to the config.guess and config.sub tools that are a standard part of GNU autotools. We recommend a name of lsb_architecture for this tool.
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055a/IHI0055A_aapcs64.pdf (1)
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0056a/IHI0056A_aaelf64.pdf (2)
http://www.openwatcom.org/ftp/devel/docs/alpha%20calling%20standard.pdf (3)
http://infocenter.arm.com/help/topic/com.arm.doc.dui0041c/BGBGFIDA.html (4)
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042a/IHI0042A_aapcs.pdf (5 6)
http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-IA32/LSB-Core-IA32/elf-ia32.html (12)
https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=3268 (13)
http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-IA64/LSB-Core-IA64/elf-ia64.html (15)
http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf (18 19 20 21)
http://refspecs.linux-foundation.org/elf/elfspec_ppc.pdf (22)
http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-PPC32/LSB-Core-PPC32/elf-ppc32.html (23)
https://www.power.org/resources/downloads/Power-Arch-32-bit-ABI-supp-1.0.tgz (24)
http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html (25)
http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-PPC64/LSB-Core-PPC64/elf-ppc64.html (26)
http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_s390.html (27)
http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-S390/LSB-Core-S390/elf-s390.html (28)
http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_zSeries.html (29)
http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-S390X/LSB-Core-S390X/elf-s390x.html (30)
http://sg.renesas.com/support/downloads/download_results/C2003801-C2003900/sh4_000_top_abi_00013.jsp (registration required) (31)
http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-AMD64/LSB-Core-AMD64/elf-amd64.html (35)