1 diff -ur rpm-4.16.1.2/build/rpmfc.c rpm-4.16.1.2.x32/build/rpmfc.c
2 --- rpm-4.16.1.2/build/rpmfc.c 2021-03-21 21:51:28.231530270 +0100
3 +++ rpm-4.16.1.2.x32/build/rpmfc.c 2021-03-21 21:50:04.127398387 +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 @@ -1147,7 +1152,10 @@
29 - color = RPMFC_ELF32;
30 + if (ehdr.e_machine == EM_X86_64)
31 + color = RPMFC_ELFX32;
33 + color = RPMFC_ELF32;
37 diff -ur rpm-4.16.1.2/build/rpmfc.h rpm-4.16.1.2.x32/build/rpmfc.h
38 --- rpm-4.16.1.2/build/rpmfc.h 2020-05-28 12:04:25.011136544 +0200
39 +++ rpm-4.16.1.2.x32/build/rpmfc.h 2021-03-21 21:50:04.127398387 +0100
42 RPMFC_ELF32 = (1 << 0),
43 RPMFC_ELF64 = (1 << 1),
44 + RPMFC_ELFX32 = (1 << 2),
45 RPMFC_ELFMIPSN32 = (1 << 2),
46 -#define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFMIPSN32)
47 +#define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64|RPMFC_ELFX32|RPMFC_ELFMIPSN32)
48 /* (1 << 3) leaks into package headers, reserved */
50 RPMFC_WHITE = (1 << 29),
51 diff -ur rpm-4.16.1.2/configure.ac rpm-4.16.1.2.x32/configure.ac
52 --- rpm-4.16.1.2/configure.ac 2021-03-21 21:51:28.221530479 +0100
53 +++ rpm-4.16.1.2.x32/configure.ac 2021-03-21 21:50:04.127398387 +0100
55 if echo "$host_os" | grep '.*-gnu' > /dev/null ; then
56 host_os=`echo "${host_os}" | sed 's/-gnu$//'`
58 +if echo "$host_os" | grep '.*-gnux32' > /dev/null ; then
59 + host_os=`echo "${host_os}" | sed 's/-gnux32$//'`
64 host_os_exact="${host_os}"
65 diff -ur rpm-4.16.1.2/installplatform rpm-4.16.1.2.x32/installplatform
66 --- rpm-4.16.1.2/installplatform 2020-05-28 12:04:25.027136631 +0200
67 +++ rpm-4.16.1.2.x32/installplatform 2021-03-21 21:51:47.671145954 +0100
70 ARCH_INSTALL_POST='%{nil}'
72 + TARGETCPU="%{_target_cpu}"
76 # XXX FIXME: incomplete and quite likely wrong too in places,
77 # consult various arch folks for correct names etc.
97 # skip architectures for which we dont have full config parameters
98 [ -z "$CANONARCH" ] && continue
100 - if [ "$OS" = "linux" ] && [ "$CANONCOLOR" = 3 ]; then
101 + if [ "$OS" = "linux" ] && ( [ "$CANONCOLOR" = 3 ] || [ "$CANONARCH" = "x86_64" ] ); then
105 + if [ "$OS" = "linux" ] && [ "$CANONARCH" = "x32" ]; then
109 PPD="${DESTDIR}/${platformdir}/${ARCH}-${OS}"
110 [ -d $PPD ] || mkdir -p $PPD
113 | sed -e "s,@RPMRC_OPTFLAGS@,$RPMRC_OPTFLAGS," \
114 -e "s,@RPMCANONARCH@,$CANONARCH,g" \
115 -e "s,@RPMCANONCOLOR@,$CANONCOLOR," \
116 + -e "s,@RPMPREFERCOLOR@,${PREFERCOLOR:+%_prefer_color\\t$PREFERCOLOR}," \
117 -e "s,@RPMRC_GNU@,$RPMRC_GNU," \
118 + -e "s,@TARGET_ABI@,${APPEND_TARGET_ABI:+%{?_gnu\}}," \
119 + -e "s,@TARGETCPU@,$TARGETCPU," \
121 -e "s,@ARCH_INSTALL_POST@,$ARCH_INSTALL_POST," \
122 -e '/\${\w*:-/!s,\${,%{_,' \
123 diff -ur rpm-4.16.1.2/platform.in rpm-4.16.1.2.x32/platform.in
124 --- rpm-4.16.1.2/platform.in 2020-05-28 12:04:25.047136741 +0200
125 +++ rpm-4.16.1.2.x32/platform.in 2021-03-21 21:51:47.671145954 +0100
127 %_vendor @RPMCANONVENDOR@
130 -%_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}
131 +%_target_platform @TARGETCPU@-%{_vendor}-%{_target_os}@TARGET_ABI@
132 %optflags @RPMRC_OPTFLAGS@
134 %__isa_name @ISANAME@
138 %_transaction_color @RPMCANONCOLOR@
141 #==============================================================================
142 # ---- configure macros.
143 diff -ur rpm-4.16.1.2/rpmrc.in rpm-4.16.1.2.x32/rpmrc.in
144 --- rpm-4.16.1.2/rpmrc.in 2020-05-28 12:04:25.075136894 +0200
145 +++ rpm-4.16.1.2.x32/rpmrc.in 2021-03-21 21:50:04.127398387 +0100
147 optflags: x86_64 -O2 -g
148 optflags: amd64 -O2 -g
149 optflags: ia32e -O2 -g
150 +optflags: x32 -O2 -g -mtune=generic -march=x86-64
152 optflags: alpha -O2 -g -mieee
153 optflags: alphaev5 -O2 -g -mieee -mtune=ev5
160 #############################################################
161 # Canonical arch names and numbers
164 arch_canon: amd64: amd64 1
165 arch_canon: ia32e: ia32e 1
166 arch_canon: em64t: em64t 1
167 +arch_canon: x32: x32 1
169 arch_canon: alpha: alpha 2
170 arch_canon: alphaev5: alphaev5 2
172 buildarchtranslate: amd64: x86_64
173 buildarchtranslate: ia32e: x86_64
175 +buildarchtranslate: x32: x32
177 buildarchtranslate: sh3: sh3
178 buildarchtranslate: sh4: sh4
179 buildarchtranslate: sh4a: sh4
180 @@ -486,10 +492,12 @@
182 arch_compat: ia64: noarch
184 -arch_compat: x86_64: amd64 em64t athlon noarch
185 +arch_compat: x86_64: amd64 em64t athlon x32 noarch
186 arch_compat: amd64: x86_64 em64t athlon noarch
187 arch_compat: ia32e: x86_64 em64t athlon noarch
189 +arch_compat: x32: x32 x86_64 noarch
191 arch_compat: sh3: noarch
192 arch_compat: sh4: noarch
193 arch_compat: sh4a: sh4
195 buildarch_compat: amd64: x86_64
196 buildarch_compat: ia32e: x86_64
198 +buildarch_compat: x32: noarch
200 buildarch_compat: sh3: noarch
201 buildarch_compat: sh4: noarch
202 buildarch_compat: sh4a: sh4
203 diff -ur rpm-4.16.1.2/tools/elfdeps.c rpm-4.16.1.2.x32/tools/elfdeps.c
204 --- rpm-4.16.1.2/tools/elfdeps.c 2020-05-28 12:04:25.084136944 +0200
205 +++ rpm-4.16.1.2.x32/tools/elfdeps.c 2021-03-21 21:50:04.127398387 +0100
210 + if ((ehdr->e_ident[EI_CLASS] == ELFCLASS32) && (ehdr->e_machine == EM_X86_64)) {
211 + marker = "(x32bit)";