I applied a coverage analyzer to config.sub trying to find all the code paths that currently aren't being tested. (Did you know there are coverage analyzers for shell scripts? I was halfway expecting it to be impossible!)
In addition to many untested code paths, I found a bunch of bugs. This patch set adds test cases for many (not all) of the untested paths, and fixes all of the bugs for which I am relatively confident in the correct result. I've tried to split it up as logically as I can, but I may not have gotten it perfectly right. Almost all the bugs affect old systems that aren't in wide use anymore, so unfortunately I was not able to cross-check with the *actual* behavior of config.guess on these systems, only with my best guess of what config.guess would do. Thus I am not completely confident in many of these changes, and would appreciate careful review from people who remember these old systems (most of them appear to have been from the 1980s and early 1990s, before my time). zw Zack Weinberg (15): config.sub: testsuite: whitespace and sorting corrections. config.sub: disable shellcheck warning SC2162 globally. config.sub: flatten and sort long case-alternative lists config.sub: correct Bull DPX/2-[123]00 and DPX/20 canonical names. config.sub: consistently use sun as default vendor for solaris*. config.sub: accept knetbsd-gnu, netbsd-gnu, uclinux-gnu. config.sub: handle cNN-convex and convex-cNN shorthands correctly. config.sub: don’t override OS for c90-cray. config.sub: don’t override OS for blackfin, m68knommu, parisc. config.sub: normalize nextstep/openstep consistently. config.sub: remove two unreachable case clauses. config.sub: Treat i386-pc-rtmk-nova as a 4-part system name. config.sub: improve consistency of shorthands and X-Y partial names. config.sub: add missing CPUs, vendors, and OSes. config.sub: testsuite: add 121 more test cases. config.sub | 724 +++++++++++++++++++++++++++++--------- testsuite/config-sub.data | 251 ++++++++++++- 2 files changed, 789 insertions(+), 186 deletions(-) -- 2.43.2