1 diff -ur rpm-4.15.1.orig/build/rpmfc.c rpm-4.15.1/build/rpmfc.c
2 --- rpm-4.15.1.orig/build/rpmfc.c 2019-12-29 14:07:19.877313873 +0100
3 +++ rpm-4.15.1/build/rpmfc.c 2019-12-29 13:47:23.183804165 +0100
6 { "ELF 32-bit", RPMFC_ELF32|RPMFC_INCLUDE },
7 { "ELF 64-bit", RPMFC_ELF64|RPMFC_INCLUDE },
8 +// { "ELF 32-bit", RPMFC_ELFX32|RPMFC_INCLUDE },
10 { "troff or preprocessor input", RPMFC_INCLUDE },
11 { "GNU Info", RPMFC_INCLUDE },
13 if (strstr(fmstr, fct->token) == NULL)
16 - fcolor |= fct->colors;
17 + // This is a nasty hack, but will have to do for now
18 + if ((fct->colors & RPMFC_ELF32) && (strstr(fmstr, "x86-64") != NULL))
19 + fcolor |= RPMFC_ELFX32|RPMFC_INCLUDE;
21 + fcolor |= fct->colors;
22 if (fcolor & RPMFC_INCLUDE)
25 diff -ur rpm-4.15.1.orig/build/rpmfc.h rpm-4.15.1/build/rpmfc.h
26 --- rpm-4.15.1.orig/build/rpmfc.h 2019-06-26 16:17:31.397985717 +0200
27 +++ rpm-4.15.1/build/rpmfc.h 2019-12-29 13:45:05.936980833 +0100
30 RPMFC_ELF32 = (1 << 0),
31 RPMFC_ELF64 = (1 << 1),
32 + RPMFC_ELFX32 = (1 << 2),
33 RPMFC_ELFMIPSN32 = (1 << 2),
34 -#define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFMIPSN32)
35 +#define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFX32|RPMFC_ELFMIPSN32)
36 /* (1 << 3) leaks into package headers, reserved */
38 RPMFC_WHITE = (1 << 29),
39 diff -ur rpm-4.15.1.orig/configure.ac rpm-4.15.1/configure.ac
40 --- rpm-4.15.1.orig/configure.ac 2019-12-29 14:07:19.813977936 +0100
41 +++ rpm-4.15.1/configure.ac 2019-12-29 14:27:41.381850928 +0100
43 host_os=`echo "${host_os}" | sed 's/-gnueabi$//'`
46 +if echo "$host_os" | grep '.*-gnux32' > /dev/null ; then
47 + host_os=`echo "${host_os}" | sed 's/-gnux32$//'`
49 if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
50 host_os=`echo "${host_os}" | sed 's/-gnu$//'`
52 diff -ur rpm-4.15.1.orig/include/rpm/rpmfc.h rpm-4.15.1/include/rpm/rpmfc.h
53 --- rpm-4.15.1.orig/include/rpm/rpmfc.h 2019-12-29 14:10:54.518828249 +0100
54 +++ rpm-4.15.1/include/rpm/rpmfc.h 2019-12-29 13:50:08.747881304 +0100
57 RPMFC_ELF32 = (1 << 0),
58 RPMFC_ELF64 = (1 << 1),
59 + RPMFC_ELFX32 = (1 << 2),
60 RPMFC_ELFMIPSN32 = (1 << 2),
61 -#define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFMIPSN32)
62 +#define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFX32|RPMFC_ELFMIPSN32)
63 /* (1 << 3) leaks into package headers, reserved */
65 RPMFC_WHITE = (1 << 29),
66 diff -ur rpm-4.15.1.orig/installplatform rpm-4.15.1/installplatform
67 --- rpm-4.15.1.orig/installplatform 2019-06-26 16:17:31.404985707 +0200
68 +++ rpm-4.15.1/installplatform 2019-12-29 14:52:09.331085139 +0100
71 ARCH_INSTALL_POST='%{nil}'
73 + TARGETCPU="%{_target_cpu}"
75 # XXX FIXME: incomplete and quite likely wrong too in places,
76 # consult various arch folks for correct names etc.
88 + RPMRC_GNU="${RPMRC_GNU}x32"
94 # skip architectures for which we dont have full config parameters
95 [ -z "$CANONARCH" ] && continue
97 - if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then
98 + if [ "$OS" = "linux" ] && [ "$CANONARCH" = "x86_64" ]; then
102 + if [ "$OS" = "linux" ] && [ "$CANONARCH" = "x32" ]; then
106 PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}"
107 [ -d $PPD ] || mkdir -p $PPD
110 -e "s,@RPMCANONARCH@,$CANONARCH,g" \
111 -e "s,@RPMCANONCOLOR@,$CANONCOLOR," \
112 -e "s,@RPMRC_GNU@,$RPMRC_GNU," \
113 + -e "s,@TARGETCPU@,$TARGETCPU," \
115 -e "s,@ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \
116 -e '/\${\w*:-/!s,\${,%{_,' \
117 diff -ur rpm-4.15.1.orig/platform.in rpm-4.15.1/platform.in
118 --- rpm-4.15.1.orig/platform.in 2019-11-13 10:19:29.371710954 +0100
119 +++ rpm-4.15.1/platform.in 2019-12-29 14:47:30.886959421 +0100
121 %_vendor @RPMCANONVENDOR@
124 -%_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}
125 +%_target_platform @TARGETCPU@-%{_vendor}-%{_target_os}%{?_gnu}
126 %optflags @RPMRC_OPTFLAGS@
128 %__isa_name @ISANAME@
129 diff -ur rpm-4.15.1.orig/rpmrc.in rpm-4.15.1/rpmrc.in
130 --- rpm-4.15.1.orig/rpmrc.in 2019-11-13 10:19:29.418711227 +0100
131 +++ rpm-4.15.1/rpmrc.in 2019-12-29 14:51:20.293119352 +0100
133 optflags: x86_64 -O2 -g
134 optflags: amd64 -O2 -g
135 optflags: ia32e -O2 -g
136 +optflags: x32 -O2 -g -mtune=generic -march=x86-64
138 optflags: alpha -O2 -g -mieee
139 optflags: alphaev5 -O2 -g -mieee -mtune=ev5
146 #############################################################
147 # Canonical arch names and numbers
150 arch_canon: amd64: amd64 1
151 arch_canon: ia32e: ia32e 1
152 arch_canon: em64t: em64t 1
153 +arch_canon: x32: x32 1
155 arch_canon: alpha: alpha 2
156 arch_canon: alphaev5: alphaev5 2
158 buildarchtranslate: amd64: x86_64
159 buildarchtranslate: ia32e: x86_64
161 +buildarchtranslate: x32: x32
163 buildarchtranslate: sh3: sh3
164 buildarchtranslate: sh4: sh4
165 buildarchtranslate: sh4a: sh4
167 arch_compat: amd64: x86_64 em64t athlon noarch
168 arch_compat: ia32e: x86_64 em64t athlon noarch
170 +arch_compat: x32: x32 noarch
172 arch_compat: sh3: noarch
173 arch_compat: sh4: noarch
174 arch_compat: sh4a: sh4
176 buildarch_compat: amd64: x86_64
177 buildarch_compat: ia32e: x86_64
179 +buildarch_compat: x32: noarch
181 buildarch_compat: sh3: noarch
182 buildarch_compat: sh4: noarch
183 buildarch_compat: sh4a: sh4
184 diff -ur rpm-4.15.1.orig/tools/elfdeps.c rpm-4.15.1/tools/elfdeps.c
185 --- rpm-4.15.1.orig/tools/elfdeps.c 2019-06-26 16:17:31.462985619 +0200
186 +++ rpm-4.15.1/tools/elfdeps.c 2019-12-29 14:22:05.339471071 +0100
191 + if ((ehdr->e_ident[EI_CLASS] == ELFCLASS32) && (ehdr->e_machine == EM_X86_64)) {
192 + marker = "(x32bit)";