summaryrefslogtreecommitdiff
path: root/rpm-Add-sw64-architecture.patch
blob: e4e9fb0a44c05f989e493c18a5b74e1c4cd2042a (plain)
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