--- /dev/null
+diff -urN rpm-4.3.org/build/parseSpec.c rpm-4.3/build/parseSpec.c
+--- rpm-4.3.org/build/parseSpec.c 2003-11-16 11:30:21.000000000 +0100
++++ rpm-4.3/build/parseSpec.c 2003-11-16 13:53:07.000000000 +0100
+@@ -194,6 +194,16 @@
+ }
+ /*@=boundswrite@*/
+
++static const char *getAlternateArch(const char *arch)
++{
++ const char *alternate_arch = NULL;
++ if (! strncmp("x86_64", arch, sizeof("x86_64")-1))
++ alternate_arch = "amd64";
++ else if (! strncmp("amd64", arch, sizeof("amd64")-1))
++ alternate_arch = "x86_64";
++ return alternate_arch;
++}
++
+ /*@-boundswrite@*/
+ int readLine(Spec spec, int strip)
+ {
+@@ -282,13 +292,15 @@
+ match = 0;
+ } else if (! strncmp("%ifarch", s, sizeof("%ifarch")-1)) {
+ const char *arch = rpmExpand("%{_target_cpu}", NULL);
++ const char *alternate_arch = getAlternateArch(arch);
+ s += 7;
+- match = matchTok(arch, s);
++ match = matchTok(arch, s) || (alternate_arch && matchTok(alternate_arch, s));
+ arch = _free(arch);
+ } else if (! strncmp("%ifnarch", s, sizeof("%ifnarch")-1)) {
+ const char *arch = rpmExpand("%{_target_cpu}", NULL);
++ const char *alternate_arch = getAlternateArch(arch);
+ s += 8;
+- match = !matchTok(arch, s);
++ match = !matchTok(arch, s) && (!alternate_arch || !matchTok(alternate_arch, s));
+ arch = _free(arch);
+ } else if (! strncmp("%ifos", s, sizeof("%ifos")-1)) {
+ const char *os = rpmExpand("%{_target_os}", NULL);
+diff -urN rpm-4.3.org/installplatform rpm-4.3/installplatform
+--- rpm-4.3.org/installplatform 2003-01-10 17:18:55.000000000 +0100
++++ rpm-4.3/installplatform 2003-11-16 13:59:30.000000000 +0100
+@@ -34,6 +34,7 @@
+ alpha*) SUBSTS='s_alpha_alpha_ s_alpha_alphaev5_ s_alpha_alphaev56_ s_alpha_alphapca56_ s_alpha_alphaev6_ s_alpha_alphaev67_' ;;
+ sparc*) SUBSTS='s_sparc\(64\|v9\)_sparc_ s_sparc64_sparcv9_;s_sparc\([^v]\|$\)_sparcv9\1_ s_sparcv9_sparc64_;s_sparc\([^6]\|$\)_sparc64\1_' ;;
+ powerpc*|ppc*) SUBSTS='s_ppc64_ppc_ s_ppc\([^6]\|$\)_ppc64\1_' ;;
++ x86_64*|amd64*) SUBSTS="s/${arch}/x86_64/ s/${arch}/amd64/" ;;
+ s390*) SUBSTS='s_s390x_s390_ s_s390\([^x]\|$\)_s390x\1_' ;;
+ *) SUBSTS=y___ ;;
+ esac
+@@ -66,7 +67,7 @@
+ ppc-linux) MULTILIBNO=1 ;;
+ ppc64-linux) LIB=lib64; MULTILIBNO=2 ;;
+ i?86-linux|athlon-linux) MULTILIBNO=1 ;;
+- x86_64-linux) LIB=lib64; MULTILIBNO=2 ;;
++ x86_64-linux|amd64-linux) LIB=lib64; MULTILIBNO=2 ;;
+ esac
+
+ if [ -n "$MULTILIBNO" ]; then
+diff -urN rpm-4.3.org/lib/rpmrc.c rpm-4.3/lib/rpmrc.c
+--- rpm-4.3.org/lib/rpmrc.c 2003-11-16 11:30:21.000000000 +0100
++++ rpm-4.3/lib/rpmrc.c 2003-11-16 13:50:56.000000000 +0100
+@@ -1278,6 +1278,13 @@
+ }
+ # endif
+
++# if defined(__linux__) && defined(__amd64__)
++ {
++ /* Defaults to amd64 if compiler supports __amd64__ */
++ strcpy(un.machine, "amd64");
++ }
++# endif
++
+ # if defined(__linux__) && defined(__powerpc__)
+ {
+ unsigned pvr = 0;
+diff -urN rpm-4.3.org/rpmrc.in rpm-4.3/rpmrc.in
+--- rpm-4.3.org/rpmrc.in 2003-11-16 11:30:21.000000000 +0100
++++ rpm-4.3/rpmrc.in 2003-11-16 13:56:25.000000000 +0100
+@@ -18,7 +18,8 @@
+ optflags: i686 -O2 -march=i686%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i686: %{specflags_i686}}}
+ optflags: athlon -O2 -march=athlon%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_athlon: %{specflags_athlon}}}
+ optflags: ia64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia64: %{specflags_ia64}}}
+-optflags: x86_64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_x86_64: %{specflags_x86_64}}}
++optflags: x86_64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_x86_64: %{specflags_x86_64}} %{?specflags_amd64: %{specflags_amd64}}
++optflags: amd64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_x86_64: %{specflags_x86_64}} %{?specflags_amd64: %{specflags_amd64}}
+
+ optflags: alpha -O2 -mieee%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}}
+ optflags: alphaev5 -O2 -mieee -mcpu=ev5%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev5: %{specflags_alphaev5}}}
+@@ -71,6 +72,7 @@
+ arch_canon: i486: i486 1
+ arch_canon: i386: i386 1
+ arch_canon: x86_64: x86_64 1
++arch_canon: amd64: amd64 1
+
+ arch_canon: alpha: alpha 2
+ arch_canon: alphaev5: alphaev5 2
+@@ -201,7 +203,8 @@
+
+ buildarchtranslate: ia64: ia64
+
+-buildarchtranslate: x86_64: x86_64
++buildarchtranslate: amd64: amd64
++buildarchtranslate: x86_64: amd64
+
+ #############################################################
+ # Architecture compatibility
+@@ -270,6 +273,7 @@
+
+ arch_compat: ia64: i686 noarch
+
++arch_compat: amd64: x86_64
+ arch_compat: x86_64: athlon noarch
+
+ os_compat: IRIX64: IRIX
+@@ -299,6 +303,7 @@
+ os_compat: BSD_OS: bsdi
+ os_compat: bsdi4.0: bsdi
+
++buildarch_compat: amd64: noarch
+ buildarch_compat: ia64: noarch
+
+ buildarch_compat: athlon: i686