# This file contains the list of architecture names in Debian's ‘sid’
# distribution.
#
# Architecture names are formed as a combination of the system name
# (from ostable) and CPU name (from cputable) after mapping from
# the Debian triplet (from triplettable). Support for new
# architectures in dpkg is added in those files, architecture names
# are only added to this file when added to the distribution.
#
# Column 1 is present for historical reasons only, and should be ignored.
# Column 2 contains the Debian name for the architecture, which is returned
# by ‘dpkg --print-architecture’.
# 
# <ignore>			<Debian name>
i486-linux-gnu			i386
ia64-linux-gnu			ia64
alpha-linux-gnu			alpha
x86_64-linux-gnu		amd64
arm-linux-gnu			arm
arm-linux-gnueabi		armel
hppa-linux-gnu			hppa
mips-linux-gnu			mips
mipsel-linux-gnu		mipsel
powerpc-linux-gnu		powerpc
s390-linux-gnu			s390
sparc-linux-gnu			sparc
i486-gnu			hurd-i386
i486-kfreebsd-gnu		kfreebsd-i386
x86_64-kfreebsd-gnu		kfreebsd-amd64
