Differences between revisions 48 and 49
Revision 48 as of 2012-05-11 03:44:05
Size: 12077
Editor: ?JonathanNieder
Comment: add a link pointer for ia32 stack frame alignment
Revision 49 as of 2012-05-15 02:00:04
Size: 11975
Editor: ?JonathanNieder
Comment: 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)>> ||
 || i386gnu || 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)>> ||
 || i386kfreebsdgnu || 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_64kfreebsdgnu || 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.

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

    endian­ness

    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

    Intel Itanium SysV psABI12, LSB Core-IA6413

    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 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

    SysV ABI PowerPC Processor Supplement16, LSB Core-PPC3217

    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

    64-bit PowerPC ELF ABI Supplement19, LSB Core-PPC6420

    s390-linux-gnu

    linux

    System/390

    big

    32

    released

    s390

    LSB S390

    S/390 ELF ABI Supplement21, LSB Core-S39022

    s390x-linux-gnu

    linux

    z/Architecture

    big

    64

    development

    s390x

    LSB S390X

    zSeries ELF ABI Supplement23, LSB Core-S390X24

    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

    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 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.

  1. http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055a/IHI0055A_aapcs64.pdf (1)

  2. http://infocenter.arm.com/help/topic/com.arm.doc.ihi0056a/IHI0056A_aaelf64.pdf (2)

  3. http://www.openwatcom.org/ftp/devel/docs/alpha%20calling%20standard.pdf (3)

  4. http://infocenter.arm.com/help/topic/com.arm.doc.dui0041c/BGBGFIDA.html (4)

  5. http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042a/IHI0042A_aapcs.pdf (5 6)

  6. https://sourcery.mentor.com/GNUToolchain/kbentry39 (7)

  7. http://wiki.parisc-linux.org/ToolChain (8)

  8. http://refspecs.linuxbase.org/elf/abi386-4.pdf (9 10)

  9. http://www.sco.com/developers/devspecs/ (11)

  10. http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-IA32/LSB-Core-IA32/elf-ia32.html (12)

  11. https://lsbbugs.linuxfoundation.org/show_bug.cgi?id=3268 (13)

  12. http://refspecs.linuxbase.org/elf/IA64-SysV-psABI.pdf (14)

  13. http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-IA64/LSB-Core-IA64/elf-ia64.html (15)

  14. http://refspecs.linuxbase.org/elf/mipsabi.pdf (16 17)

  15. http://techpubs.sgi.com/library/manuals/2000/007-2816-005/pdf/007-2816-005.pdf (18 19 20 21)

  16. http://refspecs.linux-foundation.org/elf/elfspec_ppc.pdf (22)

  17. http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-PPC32/LSB-Core-PPC32/elf-ppc32.html (23)

  18. https://www.power.org/resources/downloads/Power-Arch-32-bit-ABI-supp-1.0.tgz (24)

  19. http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html (25)

  20. http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-PPC64/LSB-Core-PPC64/elf-ppc64.html (26)

  21. http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_s390.html (27)

  22. http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-S390/LSB-Core-S390/elf-s390.html (28)

  23. http://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_zSeries.html (29)

  24. http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-S390X/LSB-Core-S390X/elf-s390x.html (30)

  25. http://sg.renesas.com/support/downloads/download_results/C2003801-C2003900/sh4_000_top_abi_00013.jsp (registration required) (31)

  26. http://www.sparc.com/standards/psABI3rd.pdf (32)

  27. http://www.sparc.com/standards/64.psabi.1.35.ps.Z (33)

  28. http://x86-64.org/documentation/abi.pdf (34)

  29. http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-AMD64/LSB-Core-AMD64/elf-amd64.html (35)

  30. https://sites.google.com/site/x32abi/ (36)