1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
From 3c8ac8643a0d7c3c3ce972c0a0685d9d1c9de9bc Mon Sep 17 00:00:00 2001
From: wzx <wuzx1226@qq.com>
Date: Thu, 27 Oct 2022 11:27:23 +0800
Subject: [PATCH] Add sw64 architecture
Add sw64 architecture in file config.guess config.sub installplatform lib/rpmrc.c macros.in rpmrc.in and tools/elfdeps.c to support sw64 architecture.
Signed-off-by: wzx <wuzx1226@qq.com>
---
build-aux/config.guess | 8 ++++++++
build-aux/config.sub | 1 +
installplatform | 6 ++++++
lib/rpmrc.c | 7 +++++++
macros.in | 1 +
rpmrc.in | 15 +++++++++++++++
tools/elfdeps.c | 1 +
7 files changed, 39 insertions(+)
diff --git a/build-aux/config.guess b/build-aux/config.guess
index c7f17e8..b67d636 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -976,6 +976,14 @@ EOF
UNAME_MACHINE=aarch64_be
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
+ sw_64:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ sw) UNAME_MACHINE=sw_64 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
+ echo "$UNAME_MACHINE"-sunway-linux-"$LIBC"
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
diff --git a/build-aux/config.sub b/build-aux/config.sub
index b51fb8c..84a8688 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1155,6 +1155,7 @@ case $cpu-$vendor in
case $cpu in
1750a | 580 \
| a29k \
+ | sw_64 \
| aarch64 | aarch64_be \
| abacus \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
diff --git a/installplatform b/installplatform
index ca490e0..2700199 100755
--- a/installplatform
+++ b/installplatform
@@ -108,6 +108,12 @@ for ARCH in noarch `grep ^arch_canon $RPMRC | cut -d: -f2`; do
CANONARCH=arm
CANONCOLOR=0
;;
+ sw_64*)
+ ISANAME=sw_64
+ ISABITS=64
+ CANONARCH=sw_64
+ CANONCOLOR=0
+ ;;
alpha*)
ISANAME=alpha
ISABITS=64
diff --git a/lib/rpmrc.c b/lib/rpmrc.c
index 120777c..5d9507d 100644
--- a/lib/rpmrc.c
+++ b/lib/rpmrc.c
@@ -1268,6 +1268,13 @@ static void defaultMachine(rpmrcCtx ctx, const char ** arch, const char ** os)
}
# endif
+# if defined(__GNUC__) && defined(__sw_64__)
+ {
+ strcpy(un.machine, "sw_64sw6b");
+ }
+# endif
+
+
# if defined(__linux__) && defined(__i386__)
{
char mclass = (char) (RPMClass() | '0');
diff --git a/macros.in b/macros.in
index 4dbf5b6..6722a74 100644
--- a/macros.in
+++ b/macros.in
@@ -1107,6 +1107,7 @@ package or when debugging this package.\
#------------------------------------------------------------------------------
# arch macro for all supported Alpha processors
%alpha alpha alphaev56 alphaev6 alphaev67
+%sw_64 sw_64 sw_64sw6b
#------------------------------------------------------------------------------
# arch macro for all supported PowerPC 64 processors
diff --git a/rpmrc.in b/rpmrc.in
index 3a48af4..8d70f91 100644
--- a/rpmrc.in
+++ b/rpmrc.in
@@ -25,6 +25,9 @@ optflags: x86_64 -O2 -g
optflags: amd64 -O2 -g
optflags: ia32e -O2 -g
+optflags: sw_64 -O2 -g -mieee
+optflags: sw_64sw6b -O2 -g -mieee -mtune=sw6b
+
optflags: alpha -O2 -g -mieee
optflags: alphaev5 -O2 -g -mieee -mtune=ev5
optflags: alphaev56 -O2 -g -mieee -mtune=ev56
@@ -112,6 +115,7 @@ optflags: riscv64 -O2 -g
archcolor: noarch 0
archcolor: i386 1
archcolor: alpha 2
+archcolor: sw_64 2
archcolor: sparc 1
archcolor: sparc64 2
archcolor: sparcv9 2
@@ -176,6 +180,9 @@ arch_canon: amd64: amd64 1
arch_canon: ia32e: ia32e 1
arch_canon: em64t: em64t 1
+arch_canon: sw_64: sw_64 2
+arch_canon: sw_64sw6b: sw_64sw6b 2
+
arch_canon: alpha: alpha 2
arch_canon: alphaev5: alphaev5 2
arch_canon: alphaev56: alphaev56 2
@@ -315,6 +322,9 @@ buildarchtranslate: i586: i386
buildarchtranslate: i486: i386
buildarchtranslate: i386: i386
+buildarchtranslate: sw_64: sw_64
+buildarchtranslate: sw_64sw6b: sw_64
+
buildarchtranslate: alphaev5: alpha
buildarchtranslate: alphaev56: alpha
buildarchtranslate: alphapca56: alpha
@@ -401,6 +411,8 @@ buildarchtranslate: riscv64: riscv64
#########################################/####################
# Architecture compatibility
+arch_compat: sw_64sw6b: sw_64
+arch_compat: sw_64: axp noarch
arch_compat: alphaev67: alphaev6
arch_compat: alphaev6: alphapca56
@@ -570,6 +582,9 @@ buildarch_compat: sparcv9: sparcv8
buildarch_compat: sparcv8: sparc
buildarch_compat: sparc: noarch
+buildarch_compat: sw_64sw6b: sw_64
+buildarch_compat: sw_64: noarch
+
buildarch_compat: alphaev67: alphaev6
buildarch_compat: alphaev6: alphapca56
buildarch_compat: alphapca56: alphaev56
diff --git a/tools/elfdeps.c b/tools/elfdeps.c
index d205935..590021b 100644
--- a/tools/elfdeps.c
+++ b/tools/elfdeps.c
@@ -85,6 +85,7 @@ static const char *mkmarker(GElf_Ehdr *ehdr)
if (ehdr->e_ident[EI_CLASS] == ELFCLASS64) {
switch (ehdr->e_machine) {
case EM_ALPHA:
+ case EM_SW_64:
case EM_FAKE_ALPHA:
/* alpha doesn't traditionally have 64bit markers */
break;
--
2.33.0
|