1 From d4fd6975671477721936060771aa4d7d07fb0910 Mon Sep 17 00:00:00 2001
2 From: Werner Koch <wk@gnupg.org>
3 Date: Tue, 18 Sep 2018 14:54:08 +0200
4 Subject: [PATCH libgpg-error] syscfg: Support ARC CPUs and simplify aliasing
7 * src/mkheader.c (xmalloc): New.
8 (xstrdup): Implement using xmalloc.
9 (canon_host_triplet): Add supporr for arc CPU. Adjust alias table to
10 also alias *-pc-*. Rename ibm to unknown. Add internal arg. Add
12 (main): New mode to just print the canonicalized form.
13 * src/Makefile.am (lock_obj_pub): s/-(pc|ibm)-/-unknown/. Also rename
17 config.sub does no real aliasing and thus we would need to add several
18 vendors to the alising tables despite that this has no technical
19 meanding. Instead we now replace the vendor with "unknown" for the
20 4-part-"triplets". This change will make maintenace easier.
22 Signed-off-by: Werner Koch <wk@gnupg.org>
24 Upstream-Status: Backport [ http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgpg-error.git;a=commit;h=48c8f8ddfc80 ]
26 src/Makefile.am | 16 ++--
27 src/mkheader.c | 92 ++++++++++++++++---
28 ...-gnu.h => lock-obj-pub.i686-unknown-gnu.h} | 0
29 ... lock-obj-pub.i686-unknown-kfreebsd-gnu.h} | 0
30 ... => lock-obj-pub.i686-unknown-linux-gnu.h} | 0
31 ...=> lock-obj-pub.s390x-unknown-linux-gnu.h} | 0
32 ...ock-obj-pub.x86_64-unknown-kfreebsd-gnu.h} | 0
33 ...> lock-obj-pub.x86_64-unknown-linux-gnu.h} | 0
34 ...ock-obj-pub.x86_64-unknown-linux-gnux32.h} | 0
35 ... lock-obj-pub.x86_64-unknown-linux-musl.h} | 0
36 10 files changed, 85 insertions(+), 23 deletions(-)
37 rename src/syscfg/{lock-obj-pub.i686-pc-gnu.h => lock-obj-pub.i686-unknown-gnu.h} (100%)
38 rename src/syscfg/{lock-obj-pub.i686-pc-kfreebsd-gnu.h => lock-obj-pub.i686-unknown-kfreebsd-gnu.h} (100%)
39 rename src/syscfg/{lock-obj-pub.i686-pc-linux-gnu.h => lock-obj-pub.i686-unknown-linux-gnu.h} (100%)
40 rename src/syscfg/{lock-obj-pub.s390x-ibm-linux-gnu.h => lock-obj-pub.s390x-unknown-linux-gnu.h} (100%)
41 rename src/syscfg/{lock-obj-pub.x86_64-pc-kfreebsd-gnu.h => lock-obj-pub.x86_64-unknown-kfreebsd-gnu.h} (100%)
42 rename src/syscfg/{lock-obj-pub.x86_64-pc-linux-gnu.h => lock-obj-pub.x86_64-unknown-linux-gnu.h} (100%)
43 rename src/syscfg/{lock-obj-pub.x86_64-pc-linux-gnux32.h => lock-obj-pub.x86_64-unknown-linux-gnux32.h} (100%)
44 rename src/syscfg/{lock-obj-pub.x86_64-pc-linux-musl.h => lock-obj-pub.x86_64-unknown-linux-musl.h} (100%)
46 diff --git a/src/Makefile.am b/src/Makefile.am
47 index 42998e46a3bc..8ec582ef99fb 100644
50 @@ -52,9 +52,9 @@ lock_obj_pub = \
51 syscfg/lock-obj-pub.arm-apple-darwin.h \
52 syscfg/lock-obj-pub.hppa-unknown-linux-gnu.h \
53 syscfg/lock-obj-pub.i386-apple-darwin.h \
54 - syscfg/lock-obj-pub.i686-pc-gnu.h \
55 - syscfg/lock-obj-pub.i686-pc-kfreebsd-gnu.h \
56 - syscfg/lock-obj-pub.i686-pc-linux-gnu.h \
57 + syscfg/lock-obj-pub.i686-unknown-gnu.h \
58 + syscfg/lock-obj-pub.i686-unknown-kfreebsd-gnu.h \
59 + syscfg/lock-obj-pub.i686-unknown-linux-gnu.h \
60 syscfg/lock-obj-pub.m68k-unknown-linux-gnu.h \
61 syscfg/lock-obj-pub.mips-unknown-linux-gnu.h \
62 syscfg/lock-obj-pub.mips64el-unknown-linux-gnuabi64.h \
63 @@ -66,16 +66,16 @@ lock_obj_pub = \
64 syscfg/lock-obj-pub.powerpc64le-unknown-linux-gnu.h \
65 syscfg/lock-obj-pub.powerpc-unknown-linux-gnuspe.h \
66 syscfg/lock-obj-pub.riscv64-unknown-linux-gnu.h \
67 - syscfg/lock-obj-pub.s390x-ibm-linux-gnu.h \
68 + syscfg/lock-obj-pub.s390x-unknown-linux-gnu.h \
69 syscfg/lock-obj-pub.sh3-unknown-linux-gnu.h \
70 syscfg/lock-obj-pub.sh4-unknown-linux-gnu.h \
71 syscfg/lock-obj-pub.sparc-unknown-linux-gnu.h \
72 syscfg/lock-obj-pub.sparc64-unknown-linux-gnu.h \
73 syscfg/lock-obj-pub.x86_64-apple-darwin.h \
74 - syscfg/lock-obj-pub.x86_64-pc-kfreebsd-gnu.h \
75 - syscfg/lock-obj-pub.x86_64-pc-linux-gnu.h \
76 - syscfg/lock-obj-pub.x86_64-pc-linux-gnux32.h \
77 - syscfg/lock-obj-pub.x86_64-pc-linux-musl.h \
78 + syscfg/lock-obj-pub.x86_64-unknown-kfreebsd-gnu.h \
79 + syscfg/lock-obj-pub.x86_64-unknown-linux-gnu.h \
80 + syscfg/lock-obj-pub.x86_64-unknown-linux-gnux32.h \
81 + syscfg/lock-obj-pub.x86_64-unknown-linux-musl.h \
82 syscfg/lock-obj-pub.tilegx-unknown-linux-gnu.h \
83 syscfg/lock-obj-pub.ia64-unknown-linux-gnu.h \
84 syscfg/lock-obj-pub.mingw32.h
85 diff --git a/src/mkheader.c b/src/mkheader.c
86 index 2fc5fada66a4..7a38a1bec1a4 100644
89 @@ -51,17 +51,27 @@ xfree (void *a)
93 -xstrdup (const char *string)
97 - size_t len = strlen (string) + 1;
103 fputs (PGM ": out of core\n", stderr);
111 +xstrdup (const char *string)
114 + size_t len = strlen (string) + 1;
117 memcpy (p, string, len);
120 @@ -69,23 +79,31 @@ xstrdup (const char *string)
122 /* Return a malloced string with TRIPLET. If TRIPLET has an alias
123 return that instead. In general build-aux/config.sub should do the
124 - aliasing but some returned triplets are anyway identical and thus we
125 - use this function to map it to the canonical form. */
126 + aliasing but some returned triplets are anyway identical and thus
127 + we use this function to map it to the canonical form.
128 + NO_VENDOR_HACK is for internal use; caller must call with 0. */
130 -canon_host_triplet (const char *triplet)
131 +canon_host_triplet (const char *triplet, int no_vendor_hack)
137 - {"i486-pc-linux-gnu", "i686-pc-linux-gnu" },
138 + {"i486-pc-linux-gnu", "i686-unknown-linux-gnu" },
139 {"i586-pc-linux-gnu" },
140 - {"i486-pc-gnu", "i686-pc-gnu"},
141 + {"i686-pc-linux-gnu" },
142 + {"arc-oe-linux-uclibc" }, /* Other CPU but same struct. */
144 + {"i486-pc-gnu", "i686-unknown-gnu"},
146 - {"i486-pc-kfreebsd-gnu", "i686-pc-kfreebsd-gnu"},
149 + {"i486-pc-kfreebsd-gnu", "i686-unknown-kfreebsd-gnu"},
150 {"i586-pc-kfreebsd-gnu"},
151 + {"i686-pc-kfreebsd-gnu"},
153 - {"x86_64-pc-linux-gnuhardened1", "x86_64-pc-linux-gnu" },
154 + {"x86_64-pc-linux-gnuhardened1", "x86_64-unknown-linux-gnu" },
155 + {"x86_64-pc-linux-gnu" },
157 {"powerpc-unknown-linux-gnuspe", "powerpc-unknown-linux-gnu" },
159 @@ -98,6 +116,7 @@ canon_host_triplet (const char *triplet)
162 const char *lastalias = NULL;
165 for (i=0; tbl[i].name; i++)
167 @@ -110,6 +129,36 @@ canon_host_triplet (const char *triplet)
168 return xstrdup (lastalias);
171 + for (i=0, s=triplet; *s; s++)
174 + if (i > 2 && !no_vendor_hack)
176 + /* We have a 4 part "triplet": CPU-VENDOR-KERNEL-SYSTEM where
177 + * the last two parts replace the OS part of a real triplet.
178 + * The VENDOR part is then in general useless because
179 + * KERNEL-SYSTEM is specific enough. We now do a second pass by
180 + * replacing VENDOR with "unknown". */
182 + char *buf = xmalloc (strlen (triplet) + 7 + 1);
184 + for (p=buf,s=triplet,i=0; *s; s++)
187 + if (*s == '-' && ++i == 1)
189 + memcpy (p, "unknown-",8);
191 + for (s++; *s != '-'; s++)
196 + p = canon_host_triplet (buf, 1);
201 return xstrdup (triplet);
204 @@ -558,7 +607,7 @@ write_special (const char *fname, int lnr, const char *tag)
206 main (int argc, char **argv)
212 const char *fname, *s;
213 @@ -571,11 +620,22 @@ main (int argc, char **argv)
220 + /* Print just the canonicalized host triplet. */
221 + host_triplet = canon_host_triplet (argv[0], 0);
222 + printf ("%s\n", host_triplet);
225 + else if (argc == 6)
226 + ; /* Standard operation. */
230 " host_os host_triplet template.h config.h"
231 - " version version_number\n",
232 + " version version_number\n"
238 @@ -586,7 +646,7 @@ main (int argc, char **argv)
239 hdr_version = argv[4];
240 hdr_version_number = argv[5];
242 - host_triplet = canon_host_triplet (host_triplet_raw);
243 + host_triplet = canon_host_triplet (host_triplet_raw, 0);
245 srcdir = malloc (strlen (fname) + 2 + 1);
247 @@ -677,13 +737,15 @@ main (int argc, char **argv)
254 fprintf (stderr, PGM ": error writing to stdout: %s\n", strerror (errno));
262 xfree (host_triplet);
264 diff --git a/src/syscfg/lock-obj-pub.i686-pc-gnu.h b/src/syscfg/lock-obj-pub.i686-unknown-gnu.h
265 similarity index 100%
266 rename from src/syscfg/lock-obj-pub.i686-pc-gnu.h
267 rename to src/syscfg/lock-obj-pub.i686-unknown-gnu.h
268 diff --git a/src/syscfg/lock-obj-pub.i686-pc-kfreebsd-gnu.h b/src/syscfg/lock-obj-pub.i686-unknown-kfreebsd-gnu.h
269 similarity index 100%
270 rename from src/syscfg/lock-obj-pub.i686-pc-kfreebsd-gnu.h
271 rename to src/syscfg/lock-obj-pub.i686-unknown-kfreebsd-gnu.h
272 diff --git a/src/syscfg/lock-obj-pub.i686-pc-linux-gnu.h b/src/syscfg/lock-obj-pub.i686-unknown-linux-gnu.h
273 similarity index 100%
274 rename from src/syscfg/lock-obj-pub.i686-pc-linux-gnu.h
275 rename to src/syscfg/lock-obj-pub.i686-unknown-linux-gnu.h
276 diff --git a/src/syscfg/lock-obj-pub.s390x-ibm-linux-gnu.h b/src/syscfg/lock-obj-pub.s390x-unknown-linux-gnu.h
277 similarity index 100%
278 rename from src/syscfg/lock-obj-pub.s390x-ibm-linux-gnu.h
279 rename to src/syscfg/lock-obj-pub.s390x-unknown-linux-gnu.h
280 diff --git a/src/syscfg/lock-obj-pub.x86_64-pc-kfreebsd-gnu.h b/src/syscfg/lock-obj-pub.x86_64-unknown-kfreebsd-gnu.h
281 similarity index 100%
282 rename from src/syscfg/lock-obj-pub.x86_64-pc-kfreebsd-gnu.h
283 rename to src/syscfg/lock-obj-pub.x86_64-unknown-kfreebsd-gnu.h
284 diff --git a/src/syscfg/lock-obj-pub.x86_64-pc-linux-gnu.h b/src/syscfg/lock-obj-pub.x86_64-unknown-linux-gnu.h
285 similarity index 100%
286 rename from src/syscfg/lock-obj-pub.x86_64-pc-linux-gnu.h
287 rename to src/syscfg/lock-obj-pub.x86_64-unknown-linux-gnu.h
288 diff --git a/src/syscfg/lock-obj-pub.x86_64-pc-linux-gnux32.h b/src/syscfg/lock-obj-pub.x86_64-unknown-linux-gnux32.h
289 similarity index 100%
290 rename from src/syscfg/lock-obj-pub.x86_64-pc-linux-gnux32.h
291 rename to src/syscfg/lock-obj-pub.x86_64-unknown-linux-gnux32.h
292 diff --git a/src/syscfg/lock-obj-pub.x86_64-pc-linux-musl.h b/src/syscfg/lock-obj-pub.x86_64-unknown-linux-musl.h
293 similarity index 100%
294 rename from src/syscfg/lock-obj-pub.x86_64-pc-linux-musl.h
295 rename to src/syscfg/lock-obj-pub.x86_64-unknown-linux-musl.h