contrast-agent 3.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (500) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +5 -0
  3. data/.dockerignore +10 -0
  4. data/.gitignore +58 -0
  5. data/.gitmodules +6 -0
  6. data/.rspec +6 -0
  7. data/.simplecov +4 -0
  8. data/Gemfile +7 -0
  9. data/LICENSE.txt +12 -0
  10. data/Rakefile +15 -0
  11. data/exe/contrast_service +29 -0
  12. data/ext/build_funchook.rb +48 -0
  13. data/ext/cs__assess_active_record_named/cs__active_record_named.c +47 -0
  14. data/ext/cs__assess_active_record_named/cs__active_record_named.h +10 -0
  15. data/ext/cs__assess_active_record_named/extconf.rb +2 -0
  16. data/ext/cs__assess_array/cs__assess_array.c +38 -0
  17. data/ext/cs__assess_array/cs__assess_array.h +9 -0
  18. data/ext/cs__assess_array/extconf.rb +2 -0
  19. data/ext/cs__assess_basic_object/cs__assess_basic_object.c +50 -0
  20. data/ext/cs__assess_basic_object/cs__assess_basic_object.h +17 -0
  21. data/ext/cs__assess_basic_object/extconf.rb +2 -0
  22. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.c +86 -0
  23. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.h +34 -0
  24. data/ext/cs__assess_fiber_track/extconf.rb +2 -0
  25. data/ext/cs__assess_hash/cs__assess_hash.c +64 -0
  26. data/ext/cs__assess_hash/cs__assess_hash.h +24 -0
  27. data/ext/cs__assess_hash/extconf.rb +2 -0
  28. data/ext/cs__assess_kernel/cs__assess_kernel.c +36 -0
  29. data/ext/cs__assess_kernel/cs__assess_kernel.h +10 -0
  30. data/ext/cs__assess_kernel/extconf.rb +2 -0
  31. data/ext/cs__assess_marshal_module/cs__assess_marshal_module.c +47 -0
  32. data/ext/cs__assess_marshal_module/cs__assess_marshal_module.h +18 -0
  33. data/ext/cs__assess_marshal_module/extconf.rb +2 -0
  34. data/ext/cs__assess_module/cs__assess_module.c +78 -0
  35. data/ext/cs__assess_module/cs__assess_module.h +25 -0
  36. data/ext/cs__assess_module/extconf.rb +2 -0
  37. data/ext/cs__assess_regexp/cs__assess_regexp.c +48 -0
  38. data/ext/cs__assess_regexp/cs__assess_regexp.h +22 -0
  39. data/ext/cs__assess_regexp/extconf.rb +2 -0
  40. data/ext/cs__assess_regexp_track/cs__assess_regexp_track.c +63 -0
  41. data/ext/cs__assess_regexp_track/cs__assess_regexp_track.h +29 -0
  42. data/ext/cs__assess_regexp_track/extconf.rb +2 -0
  43. data/ext/cs__assess_string/cs__assess_string.c +38 -0
  44. data/ext/cs__assess_string/cs__assess_string.h +19 -0
  45. data/ext/cs__assess_string/extconf.rb +2 -0
  46. data/ext/cs__assess_string_interpolation26/cs__assess_string_interpolation26.c +31 -0
  47. data/ext/cs__assess_string_interpolation26/cs__assess_string_interpolation26.h +13 -0
  48. data/ext/cs__assess_string_interpolation26/extconf.rb +2 -0
  49. data/ext/cs__common/cs__common.c +60 -0
  50. data/ext/cs__common/cs__common.h +28 -0
  51. data/ext/cs__common/extconf.rb +20 -0
  52. data/ext/cs__contrast_patch/cs__contrast_patch.c +445 -0
  53. data/ext/cs__contrast_patch/cs__contrast_patch.h +196 -0
  54. data/ext/cs__contrast_patch/extconf.rb +2 -0
  55. data/ext/cs__protect_kernel/cs__protect_kernel.c +37 -0
  56. data/ext/cs__protect_kernel/cs__protect_kernel.h +11 -0
  57. data/ext/cs__protect_kernel/extconf.rb +2 -0
  58. data/ext/cs__scope/cs__scope.c +96 -0
  59. data/ext/cs__scope/cs__scope.h +33 -0
  60. data/ext/cs__scope/extconf.rb +2 -0
  61. data/ext/extconf_common.rb +49 -0
  62. data/funchook/LICENSE +360 -0
  63. data/funchook/Makefile +29 -0
  64. data/funchook/Makefile.in +29 -0
  65. data/funchook/README.md +121 -0
  66. data/funchook/appveyor.yml +42 -0
  67. data/funchook/autogen.sh +3 -0
  68. data/funchook/autom4te.cache/output.0 +4976 -0
  69. data/funchook/autom4te.cache/requests +78 -0
  70. data/funchook/autom4te.cache/traces.0 +364 -0
  71. data/funchook/config.guess +1530 -0
  72. data/funchook/config.log +490 -0
  73. data/funchook/config.status +1016 -0
  74. data/funchook/config.sub +1773 -0
  75. data/funchook/configure +4976 -0
  76. data/funchook/configure.ac +59 -0
  77. data/funchook/distorm/COPYING +26 -0
  78. data/funchook/distorm/MANIFEST +25 -0
  79. data/funchook/distorm/MANIFEST.in +4 -0
  80. data/funchook/distorm/README.md +12 -0
  81. data/funchook/distorm/disOps/disOps.py +795 -0
  82. data/funchook/distorm/disOps/x86db.py +404 -0
  83. data/funchook/distorm/disOps/x86header.py +247 -0
  84. data/funchook/distorm/disOps/x86sets.py +1664 -0
  85. data/funchook/distorm/examples/cs/TestdiStorm/Program.cs +79 -0
  86. data/funchook/distorm/examples/cs/TestdiStorm/Properties/AssemblyInfo.cs +36 -0
  87. data/funchook/distorm/examples/cs/TestdiStorm/TestdiStorm.csproj +69 -0
  88. data/funchook/distorm/examples/cs/distorm-net.sln +26 -0
  89. data/funchook/distorm/examples/cs/distorm-net/CodeInfo.cs +23 -0
  90. data/funchook/distorm/examples/cs/distorm-net/DecodedInst.cs +15 -0
  91. data/funchook/distorm/examples/cs/distorm-net/DecodedResult.cs +14 -0
  92. data/funchook/distorm/examples/cs/distorm-net/DecomposedInst.cs +36 -0
  93. data/funchook/distorm/examples/cs/distorm-net/DecomposedResult.cs +14 -0
  94. data/funchook/distorm/examples/cs/distorm-net/Opcodes.cs +1268 -0
  95. data/funchook/distorm/examples/cs/distorm-net/Opcodes.tt +37 -0
  96. data/funchook/distorm/examples/cs/distorm-net/Operand.cs +25 -0
  97. data/funchook/distorm/examples/cs/distorm-net/Properties/AssemblyInfo.cs +36 -0
  98. data/funchook/distorm/examples/cs/distorm-net/diStorm3.cs +411 -0
  99. data/funchook/distorm/examples/cs/distorm-net/distorm-net.csproj +80 -0
  100. data/funchook/distorm/examples/cs/readme +3 -0
  101. data/funchook/distorm/examples/ddk/README +48 -0
  102. data/funchook/distorm/examples/ddk/distorm.ini +11 -0
  103. data/funchook/distorm/examples/ddk/dummy.c +15 -0
  104. data/funchook/distorm/examples/ddk/main.c +91 -0
  105. data/funchook/distorm/examples/ddk/makefile +1 -0
  106. data/funchook/distorm/examples/ddk/sources +10 -0
  107. data/funchook/distorm/examples/java/Makefile +23 -0
  108. data/funchook/distorm/examples/java/distorm/src/Main.java +43 -0
  109. data/funchook/distorm/examples/java/distorm/src/diStorm3/CodeInfo.java +27 -0
  110. data/funchook/distorm/examples/java/distorm/src/diStorm3/DecodedInst.java +32 -0
  111. data/funchook/distorm/examples/java/distorm/src/diStorm3/DecodedResult.java +11 -0
  112. data/funchook/distorm/examples/java/distorm/src/diStorm3/DecomposedInst.java +89 -0
  113. data/funchook/distorm/examples/java/distorm/src/diStorm3/DecomposedResult.java +11 -0
  114. data/funchook/distorm/examples/java/distorm/src/diStorm3/OpcodeEnum.java +131 -0
  115. data/funchook/distorm/examples/java/distorm/src/diStorm3/Opcodes.java +1123 -0
  116. data/funchook/distorm/examples/java/distorm/src/diStorm3/Operand.java +24 -0
  117. data/funchook/distorm/examples/java/distorm/src/diStorm3/distorm3.java +41 -0
  118. data/funchook/distorm/examples/java/jdistorm.c +405 -0
  119. data/funchook/distorm/examples/java/jdistorm.h +40 -0
  120. data/funchook/distorm/examples/java/jdistorm.sln +20 -0
  121. data/funchook/distorm/examples/java/jdistorm.vcproj +208 -0
  122. data/funchook/distorm/examples/linux/Makefile +15 -0
  123. data/funchook/distorm/examples/linux/main.c +181 -0
  124. data/funchook/distorm/examples/tests/Makefile +15 -0
  125. data/funchook/distorm/examples/tests/main.cpp +42 -0
  126. data/funchook/distorm/examples/tests/main.py +66 -0
  127. data/funchook/distorm/examples/tests/test_distorm3.py +1672 -0
  128. data/funchook/distorm/examples/tests/tests.sln +20 -0
  129. data/funchook/distorm/examples/tests/tests.vcxproj +82 -0
  130. data/funchook/distorm/examples/tests/tests.vcxproj.filters +22 -0
  131. data/funchook/distorm/examples/win32/disasm.sln +25 -0
  132. data/funchook/distorm/examples/win32/disasm.vcxproj +201 -0
  133. data/funchook/distorm/examples/win32/disasm.vcxproj.filters +14 -0
  134. data/funchook/distorm/examples/win32/main.cpp +163 -0
  135. data/funchook/distorm/include/distorm.h +482 -0
  136. data/funchook/distorm/include/mnemonics.h +301 -0
  137. data/funchook/distorm/make/linux/Makefile +28 -0
  138. data/funchook/distorm/make/mac/Makefile +24 -0
  139. data/funchook/distorm/make/win32/cdistorm.vcxproj +239 -0
  140. data/funchook/distorm/make/win32/cdistorm.vcxproj.filters +80 -0
  141. data/funchook/distorm/make/win32/distorm.sln +25 -0
  142. data/funchook/distorm/make/win32/resource.h +14 -0
  143. data/funchook/distorm/make/win32/resource.rc +99 -0
  144. data/funchook/distorm/python/distorm3/__init__.py +957 -0
  145. data/funchook/distorm/python/distorm3/sample.py +51 -0
  146. data/funchook/distorm/setup.cfg +10 -0
  147. data/funchook/distorm/setup.py +266 -0
  148. data/funchook/distorm/src/config.h +169 -0
  149. data/funchook/distorm/src/decoder.c +641 -0
  150. data/funchook/distorm/src/decoder.h +33 -0
  151. data/funchook/distorm/src/distorm.c +413 -0
  152. data/funchook/distorm/src/instructions.c +597 -0
  153. data/funchook/distorm/src/instructions.h +463 -0
  154. data/funchook/distorm/src/insts.c +7939 -0
  155. data/funchook/distorm/src/insts.h +64 -0
  156. data/funchook/distorm/src/mnemonics.c +284 -0
  157. data/funchook/distorm/src/operands.c +1290 -0
  158. data/funchook/distorm/src/operands.h +28 -0
  159. data/funchook/distorm/src/prefix.c +368 -0
  160. data/funchook/distorm/src/prefix.h +64 -0
  161. data/funchook/distorm/src/textdefs.c +172 -0
  162. data/funchook/distorm/src/textdefs.h +57 -0
  163. data/funchook/distorm/src/wstring.c +47 -0
  164. data/funchook/distorm/src/wstring.h +35 -0
  165. data/funchook/distorm/src/x86defs.h +82 -0
  166. data/funchook/include/funchook.h +123 -0
  167. data/funchook/install-sh +527 -0
  168. data/funchook/src/Makefile +70 -0
  169. data/funchook/src/Makefile.in +70 -0
  170. data/funchook/src/__strerror.h +109 -0
  171. data/funchook/src/config.h +101 -0
  172. data/funchook/src/config.h.in +100 -0
  173. data/funchook/src/decoder.o +0 -0
  174. data/funchook/src/distorm.o +0 -0
  175. data/funchook/src/funchook.c +440 -0
  176. data/funchook/src/funchook.o +0 -0
  177. data/funchook/src/funchook_internal.h +155 -0
  178. data/funchook/src/funchook_io.c +182 -0
  179. data/funchook/src/funchook_io.h +64 -0
  180. data/funchook/src/funchook_io.o +0 -0
  181. data/funchook/src/funchook_syscall.S +134 -0
  182. data/funchook/src/funchook_syscall.o +0 -0
  183. data/funchook/src/funchook_unix.c +480 -0
  184. data/funchook/src/funchook_unix.o +0 -0
  185. data/funchook/src/funchook_windows.c +397 -0
  186. data/funchook/src/funchook_x86.c +622 -0
  187. data/funchook/src/funchook_x86.o +0 -0
  188. data/funchook/src/instructions.o +0 -0
  189. data/funchook/src/insts.o +0 -0
  190. data/funchook/src/libfunchook.so +0 -0
  191. data/funchook/src/mnemonics.o +0 -0
  192. data/funchook/src/operands.o +0 -0
  193. data/funchook/src/os_func.c +115 -0
  194. data/funchook/src/os_func.h +75 -0
  195. data/funchook/src/os_func.o +0 -0
  196. data/funchook/src/os_func_unix.c +94 -0
  197. data/funchook/src/os_func_unix.o +0 -0
  198. data/funchook/src/os_func_windows.c +32 -0
  199. data/funchook/src/prefix.o +0 -0
  200. data/funchook/src/printf_base.c +1688 -0
  201. data/funchook/src/printf_base.h +46 -0
  202. data/funchook/src/printf_base.o +0 -0
  203. data/funchook/src/textdefs.o +0 -0
  204. data/funchook/src/wstring.o +0 -0
  205. data/funchook/test/Makefile +43 -0
  206. data/funchook/test/Makefile.in +43 -0
  207. data/funchook/test/funchook_test +0 -0
  208. data/funchook/test/libfunchook_test.c +25 -0
  209. data/funchook/test/libfunchook_test.so +0 -0
  210. data/funchook/test/libfunchook_test2.c +18 -0
  211. data/funchook/test/suffix.list +600 -0
  212. data/funchook/test/test_main.c +430 -0
  213. data/funchook/test/test_main.o +0 -0
  214. data/funchook/test/x86_64_test.S +10 -0
  215. data/funchook/test/x86_64_test.o +0 -0
  216. data/funchook/test/x86_test.S +339 -0
  217. data/funchook/win32/config.h +1 -0
  218. data/funchook/win32/funchook.sln +52 -0
  219. data/funchook/win32/funchook.vcxproj +188 -0
  220. data/funchook/win32/funchook.vcxproj.filters +84 -0
  221. data/funchook/win32/funchook_test.vcxproj +170 -0
  222. data/funchook/win32/funchook_test.vcxproj.filters +22 -0
  223. data/funchook/win32/funchook_test_dll.vcxproj +184 -0
  224. data/funchook/win32/funchook_test_dll.vcxproj.filters +30 -0
  225. data/funchook/win32/funchook_test_exe.def +3 -0
  226. data/lib/contrast-agent.rb +8 -0
  227. data/lib/contrast.rb +57 -0
  228. data/lib/contrast/agent.rb +80 -0
  229. data/lib/contrast/agent/assess.rb +45 -0
  230. data/lib/contrast/agent/assess/adjusted_span.rb +25 -0
  231. data/lib/contrast/agent/assess/class_reverter.rb +82 -0
  232. data/lib/contrast/agent/assess/contrast_event.rb +398 -0
  233. data/lib/contrast/agent/assess/frozen_properties.rb +41 -0
  234. data/lib/contrast/agent/assess/insulator.rb +53 -0
  235. data/lib/contrast/agent/assess/policy/dynamic_source_factory.rb +78 -0
  236. data/lib/contrast/agent/assess/policy/patcher.rb +85 -0
  237. data/lib/contrast/agent/assess/policy/policy.rb +116 -0
  238. data/lib/contrast/agent/assess/policy/policy_node.rb +289 -0
  239. data/lib/contrast/agent/assess/policy/policy_scanner.rb +44 -0
  240. data/lib/contrast/agent/assess/policy/preshift.rb +94 -0
  241. data/lib/contrast/agent/assess/policy/propagation_method.rb +260 -0
  242. data/lib/contrast/agent/assess/policy/propagation_node.rb +127 -0
  243. data/lib/contrast/agent/assess/policy/propagator.rb +35 -0
  244. data/lib/contrast/agent/assess/policy/propagator/append.rb +54 -0
  245. data/lib/contrast/agent/assess/policy/propagator/base.rb +37 -0
  246. data/lib/contrast/agent/assess/policy/propagator/center.rb +73 -0
  247. data/lib/contrast/agent/assess/policy/propagator/custom.rb +36 -0
  248. data/lib/contrast/agent/assess/policy/propagator/database_write.rb +62 -0
  249. data/lib/contrast/agent/assess/policy/propagator/insert.rb +55 -0
  250. data/lib/contrast/agent/assess/policy/propagator/keep.rb +26 -0
  251. data/lib/contrast/agent/assess/policy/propagator/next.rb +42 -0
  252. data/lib/contrast/agent/assess/policy/propagator/prepend.rb +50 -0
  253. data/lib/contrast/agent/assess/policy/propagator/remove.rb +76 -0
  254. data/lib/contrast/agent/assess/policy/propagator/replace.rb +27 -0
  255. data/lib/contrast/agent/assess/policy/propagator/reverse.rb +38 -0
  256. data/lib/contrast/agent/assess/policy/propagator/select.rb +86 -0
  257. data/lib/contrast/agent/assess/policy/propagator/splat.rb +60 -0
  258. data/lib/contrast/agent/assess/policy/propagator/split.rb +49 -0
  259. data/lib/contrast/agent/assess/policy/propagator/substitution.rb +169 -0
  260. data/lib/contrast/agent/assess/policy/propagator/trim.rb +81 -0
  261. data/lib/contrast/agent/assess/policy/rewriter_patch.rb +79 -0
  262. data/lib/contrast/agent/assess/policy/source_method.rb +209 -0
  263. data/lib/contrast/agent/assess/policy/source_node.rb +62 -0
  264. data/lib/contrast/agent/assess/policy/trigger_method.rb +209 -0
  265. data/lib/contrast/agent/assess/policy/trigger_node.rb +198 -0
  266. data/lib/contrast/agent/assess/policy/trigger_validation/ssrf_validator.rb +77 -0
  267. data/lib/contrast/agent/assess/policy/trigger_validation/trigger_validation.rb +31 -0
  268. data/lib/contrast/agent/assess/policy/trigger_validation/xss_validator.rb +40 -0
  269. data/lib/contrast/agent/assess/properties.rb +392 -0
  270. data/lib/contrast/agent/assess/rule.rb +18 -0
  271. data/lib/contrast/agent/assess/rule/base.rb +72 -0
  272. data/lib/contrast/agent/assess/rule/csrf.rb +66 -0
  273. data/lib/contrast/agent/assess/rule/csrf/csrf_action.rb +28 -0
  274. data/lib/contrast/agent/assess/rule/csrf/csrf_applicator.rb +69 -0
  275. data/lib/contrast/agent/assess/rule/csrf/csrf_watcher.rb +132 -0
  276. data/lib/contrast/agent/assess/rule/provider.rb +21 -0
  277. data/lib/contrast/agent/assess/rule/provider/hardcoded_key.rb +62 -0
  278. data/lib/contrast/agent/assess/rule/provider/hardcoded_password.rb +73 -0
  279. data/lib/contrast/agent/assess/rule/provider/hardcoded_value_rule.rb +121 -0
  280. data/lib/contrast/agent/assess/rule/redos.rb +68 -0
  281. data/lib/contrast/agent/assess/rule/response_scanning_rule.rb +47 -0
  282. data/lib/contrast/agent/assess/rule/response_watcher.rb +36 -0
  283. data/lib/contrast/agent/assess/rule/watcher.rb +36 -0
  284. data/lib/contrast/agent/assess/tag.rb +151 -0
  285. data/lib/contrast/agent/at_exit_hook.rb +33 -0
  286. data/lib/contrast/agent/class_reopener.rb +195 -0
  287. data/lib/contrast/agent/deadzone/policy/deadzone_node.rb +26 -0
  288. data/lib/contrast/agent/deadzone/policy/policy.rb +57 -0
  289. data/lib/contrast/agent/disable_reaction.rb +24 -0
  290. data/lib/contrast/agent/exclusion_matcher.rb +190 -0
  291. data/lib/contrast/agent/feature_state.rb +379 -0
  292. data/lib/contrast/agent/inventory/policy/policy.rb +32 -0
  293. data/lib/contrast/agent/inventory/policy/trigger_node.rb +22 -0
  294. data/lib/contrast/agent/logger_manager.rb +116 -0
  295. data/lib/contrast/agent/middleware.rb +352 -0
  296. data/lib/contrast/agent/module_data.rb +16 -0
  297. data/lib/contrast/agent/patching/policy/after_load_patch.rb +37 -0
  298. data/lib/contrast/agent/patching/policy/after_load_patcher.rb +58 -0
  299. data/lib/contrast/agent/patching/policy/method_policy.rb +94 -0
  300. data/lib/contrast/agent/patching/policy/module_policy.rb +116 -0
  301. data/lib/contrast/agent/patching/policy/patch.rb +312 -0
  302. data/lib/contrast/agent/patching/policy/patch_status.rb +192 -0
  303. data/lib/contrast/agent/patching/policy/patcher.rb +310 -0
  304. data/lib/contrast/agent/patching/policy/policy.rb +138 -0
  305. data/lib/contrast/agent/patching/policy/policy_node.rb +80 -0
  306. data/lib/contrast/agent/patching/policy/policy_unpatcher.rb +28 -0
  307. data/lib/contrast/agent/patching/policy/trigger_node.rb +81 -0
  308. data/lib/contrast/agent/protect/policy/policy.rb +37 -0
  309. data/lib/contrast/agent/protect/policy/trigger_node.rb +23 -0
  310. data/lib/contrast/agent/protect/rule.rb +58 -0
  311. data/lib/contrast/agent/protect/rule/base.rb +300 -0
  312. data/lib/contrast/agent/protect/rule/base_service.rb +88 -0
  313. data/lib/contrast/agent/protect/rule/cmd_injection.rb +156 -0
  314. data/lib/contrast/agent/protect/rule/csrf.rb +118 -0
  315. data/lib/contrast/agent/protect/rule/csrf/csrf_evaluator.rb +103 -0
  316. data/lib/contrast/agent/protect/rule/csrf/csrf_token_injector.rb +85 -0
  317. data/lib/contrast/agent/protect/rule/default_scanner.rb +300 -0
  318. data/lib/contrast/agent/protect/rule/deserialization.rb +193 -0
  319. data/lib/contrast/agent/protect/rule/http_method_tampering.rb +80 -0
  320. data/lib/contrast/agent/protect/rule/no_sqli.rb +101 -0
  321. data/lib/contrast/agent/protect/rule/no_sqli/mongo_no_sql_scanner.rb +40 -0
  322. data/lib/contrast/agent/protect/rule/path_traversal.rb +143 -0
  323. data/lib/contrast/agent/protect/rule/sqli.rb +101 -0
  324. data/lib/contrast/agent/protect/rule/sqli/default_sql_scanner.rb +16 -0
  325. data/lib/contrast/agent/protect/rule/sqli/mysql_sql_scanner.rb +38 -0
  326. data/lib/contrast/agent/protect/rule/sqli/postgres_sql_scanner.rb +22 -0
  327. data/lib/contrast/agent/protect/rule/sqli/sqlite_sql_scanner.rb +19 -0
  328. data/lib/contrast/agent/protect/rule/unsafe_file_upload.rb +20 -0
  329. data/lib/contrast/agent/protect/rule/xss.rb +24 -0
  330. data/lib/contrast/agent/protect/rule/xxe.rb +120 -0
  331. data/lib/contrast/agent/protect/rule/xxe/entity_wrapper.rb +82 -0
  332. data/lib/contrast/agent/railtie.rb +30 -0
  333. data/lib/contrast/agent/reaction_processor.rb +47 -0
  334. data/lib/contrast/agent/request.rb +493 -0
  335. data/lib/contrast/agent/request_context.rb +225 -0
  336. data/lib/contrast/agent/require_state.rb +61 -0
  337. data/lib/contrast/agent/response.rb +215 -0
  338. data/lib/contrast/agent/rewriter.rb +244 -0
  339. data/lib/contrast/agent/scope.rb +28 -0
  340. data/lib/contrast/agent/service_heartbeat.rb +37 -0
  341. data/lib/contrast/agent/settings_state.rb +148 -0
  342. data/lib/contrast/agent/socket_client.rb +125 -0
  343. data/lib/contrast/agent/thread.rb +26 -0
  344. data/lib/contrast/agent/tracepoint_hook.rb +51 -0
  345. data/lib/contrast/agent/version.rb +8 -0
  346. data/lib/contrast/api.rb +17 -0
  347. data/lib/contrast/api/.gitkeep +0 -0
  348. data/lib/contrast/api/connection_status.rb +49 -0
  349. data/lib/contrast/api/socket.rb +43 -0
  350. data/lib/contrast/api/speedracer.rb +206 -0
  351. data/lib/contrast/api/tcp_socket.rb +31 -0
  352. data/lib/contrast/api/unix_socket.rb +25 -0
  353. data/lib/contrast/common_agent_configuration.rb +86 -0
  354. data/lib/contrast/components/agent.rb +85 -0
  355. data/lib/contrast/components/app_context.rb +188 -0
  356. data/lib/contrast/components/assess.rb +67 -0
  357. data/lib/contrast/components/config.rb +135 -0
  358. data/lib/contrast/components/contrast_service.rb +113 -0
  359. data/lib/contrast/components/heap_dump.rb +34 -0
  360. data/lib/contrast/components/interface.rb +178 -0
  361. data/lib/contrast/components/inventory.rb +23 -0
  362. data/lib/contrast/components/logger.rb +92 -0
  363. data/lib/contrast/components/protect.rb +38 -0
  364. data/lib/contrast/components/sampling.rb +41 -0
  365. data/lib/contrast/components/scope.rb +106 -0
  366. data/lib/contrast/components/settings.rb +140 -0
  367. data/lib/contrast/config.rb +33 -0
  368. data/lib/contrast/config/agent_configuration.rb +24 -0
  369. data/lib/contrast/config/application_configuration.rb +27 -0
  370. data/lib/contrast/config/assess_configuration.rb +22 -0
  371. data/lib/contrast/config/assess_rules_configuration.rb +18 -0
  372. data/lib/contrast/config/base_configuration.rb +105 -0
  373. data/lib/contrast/config/default_value.rb +16 -0
  374. data/lib/contrast/config/exception_configuration.rb +21 -0
  375. data/lib/contrast/config/heap_dump_configuration.rb +23 -0
  376. data/lib/contrast/config/inventory_configuration.rb +20 -0
  377. data/lib/contrast/config/logger_configuration.rb +20 -0
  378. data/lib/contrast/config/protect_configuration.rb +20 -0
  379. data/lib/contrast/config/protect_rule_configuration.rb +37 -0
  380. data/lib/contrast/config/protect_rules_configuration.rb +30 -0
  381. data/lib/contrast/config/root_configuration.rb +26 -0
  382. data/lib/contrast/config/ruby_configuration.rb +39 -0
  383. data/lib/contrast/config/sampling_configuration.rb +22 -0
  384. data/lib/contrast/config/server_configuration.rb +23 -0
  385. data/lib/contrast/config/service_configuration.rb +22 -0
  386. data/lib/contrast/configuration.rb +214 -0
  387. data/lib/contrast/core_extensions/assess.rb +51 -0
  388. data/lib/contrast/core_extensions/assess/array.rb +58 -0
  389. data/lib/contrast/core_extensions/assess/assess_extension.rb +145 -0
  390. data/lib/contrast/core_extensions/assess/basic_object.rb +15 -0
  391. data/lib/contrast/core_extensions/assess/erb.rb +42 -0
  392. data/lib/contrast/core_extensions/assess/exec_trigger.rb +48 -0
  393. data/lib/contrast/core_extensions/assess/fiber.rb +125 -0
  394. data/lib/contrast/core_extensions/assess/hash.rb +22 -0
  395. data/lib/contrast/core_extensions/assess/kernel.rb +95 -0
  396. data/lib/contrast/core_extensions/assess/module.rb +14 -0
  397. data/lib/contrast/core_extensions/assess/regexp.rb +206 -0
  398. data/lib/contrast/core_extensions/assess/string.rb +75 -0
  399. data/lib/contrast/core_extensions/assess/tilt_template_trigger.rb +73 -0
  400. data/lib/contrast/core_extensions/delegator.rb +14 -0
  401. data/lib/contrast/core_extensions/eval_trigger.rb +52 -0
  402. data/lib/contrast/core_extensions/inventory.rb +22 -0
  403. data/lib/contrast/core_extensions/inventory/datastores.rb +37 -0
  404. data/lib/contrast/core_extensions/module.rb +42 -0
  405. data/lib/contrast/core_extensions/object.rb +27 -0
  406. data/lib/contrast/core_extensions/protect.rb +20 -0
  407. data/lib/contrast/core_extensions/protect/applies_command_injection_rule.rb +70 -0
  408. data/lib/contrast/core_extensions/protect/applies_deserialization_rule.rb +58 -0
  409. data/lib/contrast/core_extensions/protect/applies_no_sqli_rule.rb +81 -0
  410. data/lib/contrast/core_extensions/protect/applies_path_traversal_rule.rb +119 -0
  411. data/lib/contrast/core_extensions/protect/applies_sqli_rule.rb +63 -0
  412. data/lib/contrast/core_extensions/protect/applies_xxe_rule.rb +141 -0
  413. data/lib/contrast/core_extensions/protect/kernel.rb +30 -0
  414. data/lib/contrast/core_extensions/protect/psych.rb +7 -0
  415. data/lib/contrast/core_extensions/thread.rb +31 -0
  416. data/lib/contrast/internal_exception.rb +8 -0
  417. data/lib/contrast/rails_extensions/assess/action_controller_inheritance.rb +48 -0
  418. data/lib/contrast/rails_extensions/assess/active_record.rb +32 -0
  419. data/lib/contrast/rails_extensions/assess/active_record_named.rb +61 -0
  420. data/lib/contrast/rails_extensions/assess/configuration.rb +26 -0
  421. data/lib/contrast/rails_extensions/buffer.rb +30 -0
  422. data/lib/contrast/rails_extensions/rack.rb +45 -0
  423. data/lib/contrast/security_exception.rb +14 -0
  424. data/lib/contrast/sinatra_extensions/assess/cookie.rb +26 -0
  425. data/lib/contrast/sinatra_extensions/inventory/sinatra_base.rb +59 -0
  426. data/lib/contrast/tasks/service.rb +95 -0
  427. data/lib/contrast/utils/assess/sampling_util.rb +96 -0
  428. data/lib/contrast/utils/assess/tracking_util.rb +39 -0
  429. data/lib/contrast/utils/boolean_util.rb +33 -0
  430. data/lib/contrast/utils/cache.rb +69 -0
  431. data/lib/contrast/utils/class_util.rb +58 -0
  432. data/lib/contrast/utils/comment_range.rb +19 -0
  433. data/lib/contrast/utils/data_store_util.rb +23 -0
  434. data/lib/contrast/utils/duck_utils.rb +58 -0
  435. data/lib/contrast/utils/env_configuration_item.rb +52 -0
  436. data/lib/contrast/utils/environment_util.rb +152 -0
  437. data/lib/contrast/utils/freeze_util.rb +36 -0
  438. data/lib/contrast/utils/gemfile_reader.rb +191 -0
  439. data/lib/contrast/utils/hash_digest.rb +148 -0
  440. data/lib/contrast/utils/heap_dump_util.rb +113 -0
  441. data/lib/contrast/utils/invalid_configuration_util.rb +88 -0
  442. data/lib/contrast/utils/inventory_util.rb +126 -0
  443. data/lib/contrast/utils/io_util.rb +61 -0
  444. data/lib/contrast/utils/object_share.rb +117 -0
  445. data/lib/contrast/utils/operating_environment.rb +38 -0
  446. data/lib/contrast/utils/os.rb +49 -0
  447. data/lib/contrast/utils/path_util.rb +151 -0
  448. data/lib/contrast/utils/performs_logging.rb +152 -0
  449. data/lib/contrast/utils/preflight_util.rb +13 -0
  450. data/lib/contrast/utils/prevent_serialization.rb +52 -0
  451. data/lib/contrast/utils/rack_assess_session_cookie.rb +104 -0
  452. data/lib/contrast/utils/rails_assess_configuration.rb +95 -0
  453. data/lib/contrast/utils/random_util.rb +22 -0
  454. data/lib/contrast/utils/resource_loader.rb +23 -0
  455. data/lib/contrast/utils/ruby_ast_rewriter.rb +74 -0
  456. data/lib/contrast/utils/scope_util.rb +99 -0
  457. data/lib/contrast/utils/service_response_util.rb +116 -0
  458. data/lib/contrast/utils/service_sender_util.rb +98 -0
  459. data/lib/contrast/utils/sha256_builder.rb +69 -0
  460. data/lib/contrast/utils/sinatra_helper.rb +49 -0
  461. data/lib/contrast/utils/stack_trace_utils.rb +209 -0
  462. data/lib/contrast/utils/string_utils.rb +72 -0
  463. data/lib/contrast/utils/tag_util.rb +139 -0
  464. data/lib/contrast/utils/thread_tracker.rb +54 -0
  465. data/lib/contrast/utils/timer.rb +78 -0
  466. data/resources/assess/policy.json +1673 -0
  467. data/resources/csrf/inject.js +44 -0
  468. data/resources/deadzone/policy.json +55 -0
  469. data/resources/factory-bot-spec/spec_helper.rb +30 -0
  470. data/resources/inventory/policy.json +110 -0
  471. data/resources/protect/policy.json +417 -0
  472. data/resources/rubocops/kernel/catch_cop.rb +37 -0
  473. data/resources/rubocops/kernel/require_cop.rb +37 -0
  474. data/resources/rubocops/kernel/require_relative_cop.rb +33 -0
  475. data/resources/rubocops/module/autoload_cop.rb +37 -0
  476. data/resources/rubocops/module/const_defined_cop.rb +37 -0
  477. data/resources/rubocops/module/const_get_cop.rb +37 -0
  478. data/resources/rubocops/module/const_set_cop.rb +37 -0
  479. data/resources/rubocops/module/constants_cop.rb +37 -0
  480. data/resources/rubocops/module/name_cop.rb +37 -0
  481. data/resources/rubocops/object/class_cop.rb +37 -0
  482. data/resources/rubocops/object/freeze_cop.rb +37 -0
  483. data/resources/rubocops/object/frozen_cop.rb +37 -0
  484. data/resources/rubocops/object/is_a_cop.rb +37 -0
  485. data/resources/rubocops/object/method_cop.rb +37 -0
  486. data/resources/rubocops/object/respond_to_cop.rb +37 -0
  487. data/resources/rubocops/object/singleton_class_cop.rb +37 -0
  488. data/resources/rubocops/regexp/spelling_cop.rb +44 -0
  489. data/resources/rubocops/thread/new_cop.rb +39 -0
  490. data/resources/ruby-spec/ancestors_spec.rb +70 -0
  491. data/resources/ruby-spec/modulo_spec.rb +831 -0
  492. data/resources/ruby-spec/parameters_spec.rb +261 -0
  493. data/resources/ruby-spec/ruby_spec_spec_helper.rb +35 -0
  494. data/resources/test_marker.txt +1 -0
  495. data/ruby-agent.gemspec +129 -0
  496. data/service_executables/.gitkeep +0 -0
  497. data/service_executables/VERSION +1 -0
  498. data/service_executables/linux/contrast-service +0 -0
  499. data/service_executables/mac/contrast-service +0 -0
  500. metadata +945 -0
@@ -0,0 +1,1773 @@
1
+ #! /bin/sh
2
+ # Configuration validation subroutine script.
3
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4
+ # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
5
+ # 2011, 2012 Free Software Foundation, Inc.
6
+
7
+ timestamp='2012-02-10'
8
+
9
+ # This file is (in principle) common to ALL GNU software.
10
+ # The presence of a machine in this file suggests that SOME GNU software
11
+ # can handle that machine. It does not imply ALL GNU software can.
12
+ #
13
+ # This file is free software; you can redistribute it and/or modify
14
+ # it under the terms of the GNU General Public License as published by
15
+ # the Free Software Foundation; either version 2 of the License, or
16
+ # (at your option) any later version.
17
+ #
18
+ # This program is distributed in the hope that it will be useful,
19
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
+ # GNU General Public License for more details.
22
+ #
23
+ # You should have received a copy of the GNU General Public License
24
+ # along with this program; if not, see <http://www.gnu.org/licenses/>.
25
+ #
26
+ # As a special exception to the GNU General Public License, if you
27
+ # distribute this file as part of a program that contains a
28
+ # configuration script generated by Autoconf, you may include it under
29
+ # the same distribution terms that you use for the rest of that program.
30
+
31
+
32
+ # Please send patches to <config-patches@gnu.org>. Submit a context
33
+ # diff and a properly formatted GNU ChangeLog entry.
34
+ #
35
+ # Configuration subroutine to validate and canonicalize a configuration type.
36
+ # Supply the specified configuration type as an argument.
37
+ # If it is invalid, we print an error message on stderr and exit with code 1.
38
+ # Otherwise, we print the canonical config type on stdout and succeed.
39
+
40
+ # You can get the latest version of this script from:
41
+ # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
42
+
43
+ # This file is supposed to be the same for all GNU packages
44
+ # and recognize all the CPU types, system types and aliases
45
+ # that are meaningful with *any* GNU software.
46
+ # Each package is responsible for reporting which valid configurations
47
+ # it does not support. The user should be able to distinguish
48
+ # a failure to support a valid configuration from a meaningless
49
+ # configuration.
50
+
51
+ # The goal of this file is to map all the various variations of a given
52
+ # machine specification into a single specification in the form:
53
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
54
+ # or in some cases, the newer four-part form:
55
+ # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
56
+ # It is wrong to echo any other type of specification.
57
+
58
+ me=`echo "$0" | sed -e 's,.*/,,'`
59
+
60
+ usage="\
61
+ Usage: $0 [OPTION] CPU-MFR-OPSYS
62
+ $0 [OPTION] ALIAS
63
+
64
+ Canonicalize a configuration name.
65
+
66
+ Operation modes:
67
+ -h, --help print this help, then exit
68
+ -t, --time-stamp print date of last modification, then exit
69
+ -v, --version print version number, then exit
70
+
71
+ Report bugs and patches to <config-patches@gnu.org>."
72
+
73
+ version="\
74
+ GNU config.sub ($timestamp)
75
+
76
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
77
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
78
+ Free Software Foundation, Inc.
79
+
80
+ This is free software; see the source for copying conditions. There is NO
81
+ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
82
+
83
+ help="
84
+ Try \`$me --help' for more information."
85
+
86
+ # Parse command line
87
+ while test $# -gt 0 ; do
88
+ case $1 in
89
+ --time-stamp | --time* | -t )
90
+ echo "$timestamp" ; exit ;;
91
+ --version | -v )
92
+ echo "$version" ; exit ;;
93
+ --help | --h* | -h )
94
+ echo "$usage"; exit ;;
95
+ -- ) # Stop option processing
96
+ shift; break ;;
97
+ - ) # Use stdin as input.
98
+ break ;;
99
+ -* )
100
+ echo "$me: invalid option $1$help"
101
+ exit 1 ;;
102
+
103
+ *local*)
104
+ # First pass through any local machine types.
105
+ echo $1
106
+ exit ;;
107
+
108
+ * )
109
+ break ;;
110
+ esac
111
+ done
112
+
113
+ case $# in
114
+ 0) echo "$me: missing argument$help" >&2
115
+ exit 1;;
116
+ 1) ;;
117
+ *) echo "$me: too many arguments$help" >&2
118
+ exit 1;;
119
+ esac
120
+
121
+ # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
122
+ # Here we must recognize all the valid KERNEL-OS combinations.
123
+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
124
+ case $maybe_os in
125
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
126
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
127
+ knetbsd*-gnu* | netbsd*-gnu* | \
128
+ kopensolaris*-gnu* | \
129
+ storm-chaos* | os2-emx* | rtmk-nova*)
130
+ os=-$maybe_os
131
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
132
+ ;;
133
+ android-linux)
134
+ os=-linux-android
135
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
136
+ ;;
137
+ *)
138
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
139
+ if [ $basic_machine != $1 ]
140
+ then os=`echo $1 | sed 's/.*-/-/'`
141
+ else os=; fi
142
+ ;;
143
+ esac
144
+
145
+ ### Let's recognize common machines as not being operating systems so
146
+ ### that things like config.sub decstation-3100 work. We also
147
+ ### recognize some manufacturers as not being operating systems, so we
148
+ ### can provide default operating systems below.
149
+ case $os in
150
+ -sun*os*)
151
+ # Prevent following clause from handling this invalid input.
152
+ ;;
153
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
154
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
155
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
156
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
157
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
158
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
159
+ -apple | -axis | -knuth | -cray | -microblaze)
160
+ os=
161
+ basic_machine=$1
162
+ ;;
163
+ -bluegene*)
164
+ os=-cnk
165
+ ;;
166
+ -sim | -cisco | -oki | -wec | -winbond)
167
+ os=
168
+ basic_machine=$1
169
+ ;;
170
+ -scout)
171
+ ;;
172
+ -wrs)
173
+ os=-vxworks
174
+ basic_machine=$1
175
+ ;;
176
+ -chorusos*)
177
+ os=-chorusos
178
+ basic_machine=$1
179
+ ;;
180
+ -chorusrdb)
181
+ os=-chorusrdb
182
+ basic_machine=$1
183
+ ;;
184
+ -hiux*)
185
+ os=-hiuxwe2
186
+ ;;
187
+ -sco6)
188
+ os=-sco5v6
189
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
190
+ ;;
191
+ -sco5)
192
+ os=-sco3.2v5
193
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
194
+ ;;
195
+ -sco4)
196
+ os=-sco3.2v4
197
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
198
+ ;;
199
+ -sco3.2.[4-9]*)
200
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
201
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
202
+ ;;
203
+ -sco3.2v[4-9]*)
204
+ # Don't forget version if it is 3.2v4 or newer.
205
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
206
+ ;;
207
+ -sco5v6*)
208
+ # Don't forget version if it is 3.2v4 or newer.
209
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
210
+ ;;
211
+ -sco*)
212
+ os=-sco3.2v2
213
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
214
+ ;;
215
+ -udk*)
216
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
217
+ ;;
218
+ -isc)
219
+ os=-isc2.2
220
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
221
+ ;;
222
+ -clix*)
223
+ basic_machine=clipper-intergraph
224
+ ;;
225
+ -isc*)
226
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
227
+ ;;
228
+ -lynx*)
229
+ os=-lynxos
230
+ ;;
231
+ -ptx*)
232
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
233
+ ;;
234
+ -windowsnt*)
235
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
236
+ ;;
237
+ -psos*)
238
+ os=-psos
239
+ ;;
240
+ -mint | -mint[0-9]*)
241
+ basic_machine=m68k-atari
242
+ os=-mint
243
+ ;;
244
+ esac
245
+
246
+ # Decode aliases for certain CPU-COMPANY combinations.
247
+ case $basic_machine in
248
+ # Recognize the basic CPU types without company name.
249
+ # Some are omitted here because they have special meanings below.
250
+ 1750a | 580 \
251
+ | a29k \
252
+ | aarch64 | aarch64_be \
253
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
254
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
255
+ | am33_2.0 \
256
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
257
+ | be32 | be64 \
258
+ | bfin \
259
+ | c4x | clipper \
260
+ | d10v | d30v | dlx | dsp16xx \
261
+ | epiphany \
262
+ | fido | fr30 | frv \
263
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
264
+ | hexagon \
265
+ | i370 | i860 | i960 | ia64 \
266
+ | ip2k | iq2000 \
267
+ | le32 | le64 \
268
+ | lm32 \
269
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
270
+ | maxq | mb | microblaze | mcore | mep | metag \
271
+ | mips | mipsbe | mipseb | mipsel | mipsle \
272
+ | mips16 \
273
+ | mips64 | mips64el \
274
+ | mips64octeon | mips64octeonel \
275
+ | mips64orion | mips64orionel \
276
+ | mips64r5900 | mips64r5900el \
277
+ | mips64vr | mips64vrel \
278
+ | mips64vr4100 | mips64vr4100el \
279
+ | mips64vr4300 | mips64vr4300el \
280
+ | mips64vr5000 | mips64vr5000el \
281
+ | mips64vr5900 | mips64vr5900el \
282
+ | mipsisa32 | mipsisa32el \
283
+ | mipsisa32r2 | mipsisa32r2el \
284
+ | mipsisa64 | mipsisa64el \
285
+ | mipsisa64r2 | mipsisa64r2el \
286
+ | mipsisa64sb1 | mipsisa64sb1el \
287
+ | mipsisa64sr71k | mipsisa64sr71kel \
288
+ | mipstx39 | mipstx39el \
289
+ | mn10200 | mn10300 \
290
+ | moxie \
291
+ | mt \
292
+ | msp430 \
293
+ | nds32 | nds32le | nds32be \
294
+ | nios | nios2 \
295
+ | ns16k | ns32k \
296
+ | open8 \
297
+ | or32 \
298
+ | pdp10 | pdp11 | pj | pjl \
299
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
300
+ | pyramid \
301
+ | rl78 | rx \
302
+ | score \
303
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
304
+ | sh64 | sh64le \
305
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
306
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
307
+ | spu \
308
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
309
+ | ubicom32 \
310
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
311
+ | we32k \
312
+ | x86 | xc16x | xstormy16 | xtensa \
313
+ | z8k | z80)
314
+ basic_machine=$basic_machine-unknown
315
+ ;;
316
+ c54x)
317
+ basic_machine=tic54x-unknown
318
+ ;;
319
+ c55x)
320
+ basic_machine=tic55x-unknown
321
+ ;;
322
+ c6x)
323
+ basic_machine=tic6x-unknown
324
+ ;;
325
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
326
+ basic_machine=$basic_machine-unknown
327
+ os=-none
328
+ ;;
329
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
330
+ ;;
331
+ ms1)
332
+ basic_machine=mt-unknown
333
+ ;;
334
+
335
+ strongarm | thumb | xscale)
336
+ basic_machine=arm-unknown
337
+ ;;
338
+ xgate)
339
+ basic_machine=$basic_machine-unknown
340
+ os=-none
341
+ ;;
342
+ xscaleeb)
343
+ basic_machine=armeb-unknown
344
+ ;;
345
+
346
+ xscaleel)
347
+ basic_machine=armel-unknown
348
+ ;;
349
+
350
+ # We use `pc' rather than `unknown'
351
+ # because (1) that's what they normally are, and
352
+ # (2) the word "unknown" tends to confuse beginning users.
353
+ i*86 | x86_64)
354
+ basic_machine=$basic_machine-pc
355
+ ;;
356
+ # Object if more than one company name word.
357
+ *-*-*)
358
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
359
+ exit 1
360
+ ;;
361
+ # Recognize the basic CPU types with company name.
362
+ 580-* \
363
+ | a29k-* \
364
+ | aarch64-* | aarch64_be-* \
365
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
366
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
367
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
368
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
369
+ | avr-* | avr32-* \
370
+ | be32-* | be64-* \
371
+ | bfin-* | bs2000-* \
372
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
373
+ | clipper-* | craynv-* | cydra-* \
374
+ | d10v-* | d30v-* | dlx-* \
375
+ | elxsi-* \
376
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
377
+ | h8300-* | h8500-* \
378
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
379
+ | hexagon-* \
380
+ | i*86-* | i860-* | i960-* | ia64-* \
381
+ | ip2k-* | iq2000-* \
382
+ | le32-* | le64-* \
383
+ | lm32-* \
384
+ | m32c-* | m32r-* | m32rle-* \
385
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
386
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
387
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
388
+ | mips16-* \
389
+ | mips64-* | mips64el-* \
390
+ | mips64octeon-* | mips64octeonel-* \
391
+ | mips64orion-* | mips64orionel-* \
392
+ | mips64r5900-* | mips64r5900el-* \
393
+ | mips64vr-* | mips64vrel-* \
394
+ | mips64vr4100-* | mips64vr4100el-* \
395
+ | mips64vr4300-* | mips64vr4300el-* \
396
+ | mips64vr5000-* | mips64vr5000el-* \
397
+ | mips64vr5900-* | mips64vr5900el-* \
398
+ | mipsisa32-* | mipsisa32el-* \
399
+ | mipsisa32r2-* | mipsisa32r2el-* \
400
+ | mipsisa64-* | mipsisa64el-* \
401
+ | mipsisa64r2-* | mipsisa64r2el-* \
402
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
403
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
404
+ | mipstx39-* | mipstx39el-* \
405
+ | mmix-* \
406
+ | mt-* \
407
+ | msp430-* \
408
+ | nds32-* | nds32le-* | nds32be-* \
409
+ | nios-* | nios2-* \
410
+ | none-* | np1-* | ns16k-* | ns32k-* \
411
+ | open8-* \
412
+ | orion-* \
413
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
414
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
415
+ | pyramid-* \
416
+ | rl78-* | romp-* | rs6000-* | rx-* \
417
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
418
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
419
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
420
+ | sparclite-* \
421
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
422
+ | tahoe-* \
423
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
424
+ | tile*-* \
425
+ | tron-* \
426
+ | ubicom32-* \
427
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
428
+ | vax-* \
429
+ | we32k-* \
430
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
431
+ | xstormy16-* | xtensa*-* \
432
+ | ymp-* \
433
+ | z8k-* | z80-*)
434
+ ;;
435
+ # Recognize the basic CPU types without company name, with glob match.
436
+ xtensa*)
437
+ basic_machine=$basic_machine-unknown
438
+ ;;
439
+ # Recognize the various machine names and aliases which stand
440
+ # for a CPU type and a company and sometimes even an OS.
441
+ 386bsd)
442
+ basic_machine=i386-unknown
443
+ os=-bsd
444
+ ;;
445
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
446
+ basic_machine=m68000-att
447
+ ;;
448
+ 3b*)
449
+ basic_machine=we32k-att
450
+ ;;
451
+ a29khif)
452
+ basic_machine=a29k-amd
453
+ os=-udi
454
+ ;;
455
+ abacus)
456
+ basic_machine=abacus-unknown
457
+ ;;
458
+ adobe68k)
459
+ basic_machine=m68010-adobe
460
+ os=-scout
461
+ ;;
462
+ alliant | fx80)
463
+ basic_machine=fx80-alliant
464
+ ;;
465
+ altos | altos3068)
466
+ basic_machine=m68k-altos
467
+ ;;
468
+ am29k)
469
+ basic_machine=a29k-none
470
+ os=-bsd
471
+ ;;
472
+ amd64)
473
+ basic_machine=x86_64-pc
474
+ ;;
475
+ amd64-*)
476
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
477
+ ;;
478
+ amdahl)
479
+ basic_machine=580-amdahl
480
+ os=-sysv
481
+ ;;
482
+ amiga | amiga-*)
483
+ basic_machine=m68k-unknown
484
+ ;;
485
+ amigaos | amigados)
486
+ basic_machine=m68k-unknown
487
+ os=-amigaos
488
+ ;;
489
+ amigaunix | amix)
490
+ basic_machine=m68k-unknown
491
+ os=-sysv4
492
+ ;;
493
+ apollo68)
494
+ basic_machine=m68k-apollo
495
+ os=-sysv
496
+ ;;
497
+ apollo68bsd)
498
+ basic_machine=m68k-apollo
499
+ os=-bsd
500
+ ;;
501
+ aros)
502
+ basic_machine=i386-pc
503
+ os=-aros
504
+ ;;
505
+ aux)
506
+ basic_machine=m68k-apple
507
+ os=-aux
508
+ ;;
509
+ balance)
510
+ basic_machine=ns32k-sequent
511
+ os=-dynix
512
+ ;;
513
+ blackfin)
514
+ basic_machine=bfin-unknown
515
+ os=-linux
516
+ ;;
517
+ blackfin-*)
518
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
519
+ os=-linux
520
+ ;;
521
+ bluegene*)
522
+ basic_machine=powerpc-ibm
523
+ os=-cnk
524
+ ;;
525
+ c54x-*)
526
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
527
+ ;;
528
+ c55x-*)
529
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
530
+ ;;
531
+ c6x-*)
532
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
533
+ ;;
534
+ c90)
535
+ basic_machine=c90-cray
536
+ os=-unicos
537
+ ;;
538
+ cegcc)
539
+ basic_machine=arm-unknown
540
+ os=-cegcc
541
+ ;;
542
+ convex-c1)
543
+ basic_machine=c1-convex
544
+ os=-bsd
545
+ ;;
546
+ convex-c2)
547
+ basic_machine=c2-convex
548
+ os=-bsd
549
+ ;;
550
+ convex-c32)
551
+ basic_machine=c32-convex
552
+ os=-bsd
553
+ ;;
554
+ convex-c34)
555
+ basic_machine=c34-convex
556
+ os=-bsd
557
+ ;;
558
+ convex-c38)
559
+ basic_machine=c38-convex
560
+ os=-bsd
561
+ ;;
562
+ cray | j90)
563
+ basic_machine=j90-cray
564
+ os=-unicos
565
+ ;;
566
+ craynv)
567
+ basic_machine=craynv-cray
568
+ os=-unicosmp
569
+ ;;
570
+ cr16 | cr16-*)
571
+ basic_machine=cr16-unknown
572
+ os=-elf
573
+ ;;
574
+ crds | unos)
575
+ basic_machine=m68k-crds
576
+ ;;
577
+ crisv32 | crisv32-* | etraxfs*)
578
+ basic_machine=crisv32-axis
579
+ ;;
580
+ cris | cris-* | etrax*)
581
+ basic_machine=cris-axis
582
+ ;;
583
+ crx)
584
+ basic_machine=crx-unknown
585
+ os=-elf
586
+ ;;
587
+ da30 | da30-*)
588
+ basic_machine=m68k-da30
589
+ ;;
590
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
591
+ basic_machine=mips-dec
592
+ ;;
593
+ decsystem10* | dec10*)
594
+ basic_machine=pdp10-dec
595
+ os=-tops10
596
+ ;;
597
+ decsystem20* | dec20*)
598
+ basic_machine=pdp10-dec
599
+ os=-tops20
600
+ ;;
601
+ delta | 3300 | motorola-3300 | motorola-delta \
602
+ | 3300-motorola | delta-motorola)
603
+ basic_machine=m68k-motorola
604
+ ;;
605
+ delta88)
606
+ basic_machine=m88k-motorola
607
+ os=-sysv3
608
+ ;;
609
+ dicos)
610
+ basic_machine=i686-pc
611
+ os=-dicos
612
+ ;;
613
+ djgpp)
614
+ basic_machine=i586-pc
615
+ os=-msdosdjgpp
616
+ ;;
617
+ dpx20 | dpx20-*)
618
+ basic_machine=rs6000-bull
619
+ os=-bosx
620
+ ;;
621
+ dpx2* | dpx2*-bull)
622
+ basic_machine=m68k-bull
623
+ os=-sysv3
624
+ ;;
625
+ ebmon29k)
626
+ basic_machine=a29k-amd
627
+ os=-ebmon
628
+ ;;
629
+ elxsi)
630
+ basic_machine=elxsi-elxsi
631
+ os=-bsd
632
+ ;;
633
+ encore | umax | mmax)
634
+ basic_machine=ns32k-encore
635
+ ;;
636
+ es1800 | OSE68k | ose68k | ose | OSE)
637
+ basic_machine=m68k-ericsson
638
+ os=-ose
639
+ ;;
640
+ fx2800)
641
+ basic_machine=i860-alliant
642
+ ;;
643
+ genix)
644
+ basic_machine=ns32k-ns
645
+ ;;
646
+ gmicro)
647
+ basic_machine=tron-gmicro
648
+ os=-sysv
649
+ ;;
650
+ go32)
651
+ basic_machine=i386-pc
652
+ os=-go32
653
+ ;;
654
+ h3050r* | hiux*)
655
+ basic_machine=hppa1.1-hitachi
656
+ os=-hiuxwe2
657
+ ;;
658
+ h8300hms)
659
+ basic_machine=h8300-hitachi
660
+ os=-hms
661
+ ;;
662
+ h8300xray)
663
+ basic_machine=h8300-hitachi
664
+ os=-xray
665
+ ;;
666
+ h8500hms)
667
+ basic_machine=h8500-hitachi
668
+ os=-hms
669
+ ;;
670
+ harris)
671
+ basic_machine=m88k-harris
672
+ os=-sysv3
673
+ ;;
674
+ hp300-*)
675
+ basic_machine=m68k-hp
676
+ ;;
677
+ hp300bsd)
678
+ basic_machine=m68k-hp
679
+ os=-bsd
680
+ ;;
681
+ hp300hpux)
682
+ basic_machine=m68k-hp
683
+ os=-hpux
684
+ ;;
685
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
686
+ basic_machine=hppa1.0-hp
687
+ ;;
688
+ hp9k2[0-9][0-9] | hp9k31[0-9])
689
+ basic_machine=m68000-hp
690
+ ;;
691
+ hp9k3[2-9][0-9])
692
+ basic_machine=m68k-hp
693
+ ;;
694
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
695
+ basic_machine=hppa1.0-hp
696
+ ;;
697
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
698
+ basic_machine=hppa1.1-hp
699
+ ;;
700
+ hp9k78[0-9] | hp78[0-9])
701
+ # FIXME: really hppa2.0-hp
702
+ basic_machine=hppa1.1-hp
703
+ ;;
704
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
705
+ # FIXME: really hppa2.0-hp
706
+ basic_machine=hppa1.1-hp
707
+ ;;
708
+ hp9k8[0-9][13679] | hp8[0-9][13679])
709
+ basic_machine=hppa1.1-hp
710
+ ;;
711
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
712
+ basic_machine=hppa1.0-hp
713
+ ;;
714
+ hppa-next)
715
+ os=-nextstep3
716
+ ;;
717
+ hppaosf)
718
+ basic_machine=hppa1.1-hp
719
+ os=-osf
720
+ ;;
721
+ hppro)
722
+ basic_machine=hppa1.1-hp
723
+ os=-proelf
724
+ ;;
725
+ i370-ibm* | ibm*)
726
+ basic_machine=i370-ibm
727
+ ;;
728
+ i*86v32)
729
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
730
+ os=-sysv32
731
+ ;;
732
+ i*86v4*)
733
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
734
+ os=-sysv4
735
+ ;;
736
+ i*86v)
737
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
738
+ os=-sysv
739
+ ;;
740
+ i*86sol2)
741
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
742
+ os=-solaris2
743
+ ;;
744
+ i386mach)
745
+ basic_machine=i386-mach
746
+ os=-mach
747
+ ;;
748
+ i386-vsta | vsta)
749
+ basic_machine=i386-unknown
750
+ os=-vsta
751
+ ;;
752
+ iris | iris4d)
753
+ basic_machine=mips-sgi
754
+ case $os in
755
+ -irix*)
756
+ ;;
757
+ *)
758
+ os=-irix4
759
+ ;;
760
+ esac
761
+ ;;
762
+ isi68 | isi)
763
+ basic_machine=m68k-isi
764
+ os=-sysv
765
+ ;;
766
+ m68knommu)
767
+ basic_machine=m68k-unknown
768
+ os=-linux
769
+ ;;
770
+ m68knommu-*)
771
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
772
+ os=-linux
773
+ ;;
774
+ m88k-omron*)
775
+ basic_machine=m88k-omron
776
+ ;;
777
+ magnum | m3230)
778
+ basic_machine=mips-mips
779
+ os=-sysv
780
+ ;;
781
+ merlin)
782
+ basic_machine=ns32k-utek
783
+ os=-sysv
784
+ ;;
785
+ microblaze)
786
+ basic_machine=microblaze-xilinx
787
+ ;;
788
+ mingw32)
789
+ basic_machine=i386-pc
790
+ os=-mingw32
791
+ ;;
792
+ mingw32ce)
793
+ basic_machine=arm-unknown
794
+ os=-mingw32ce
795
+ ;;
796
+ miniframe)
797
+ basic_machine=m68000-convergent
798
+ ;;
799
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
800
+ basic_machine=m68k-atari
801
+ os=-mint
802
+ ;;
803
+ mips3*-*)
804
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
805
+ ;;
806
+ mips3*)
807
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
808
+ ;;
809
+ monitor)
810
+ basic_machine=m68k-rom68k
811
+ os=-coff
812
+ ;;
813
+ morphos)
814
+ basic_machine=powerpc-unknown
815
+ os=-morphos
816
+ ;;
817
+ msdos)
818
+ basic_machine=i386-pc
819
+ os=-msdos
820
+ ;;
821
+ ms1-*)
822
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
823
+ ;;
824
+ msys)
825
+ basic_machine=i386-pc
826
+ os=-msys
827
+ ;;
828
+ mvs)
829
+ basic_machine=i370-ibm
830
+ os=-mvs
831
+ ;;
832
+ nacl)
833
+ basic_machine=le32-unknown
834
+ os=-nacl
835
+ ;;
836
+ ncr3000)
837
+ basic_machine=i486-ncr
838
+ os=-sysv4
839
+ ;;
840
+ netbsd386)
841
+ basic_machine=i386-unknown
842
+ os=-netbsd
843
+ ;;
844
+ netwinder)
845
+ basic_machine=armv4l-rebel
846
+ os=-linux
847
+ ;;
848
+ news | news700 | news800 | news900)
849
+ basic_machine=m68k-sony
850
+ os=-newsos
851
+ ;;
852
+ news1000)
853
+ basic_machine=m68030-sony
854
+ os=-newsos
855
+ ;;
856
+ news-3600 | risc-news)
857
+ basic_machine=mips-sony
858
+ os=-newsos
859
+ ;;
860
+ necv70)
861
+ basic_machine=v70-nec
862
+ os=-sysv
863
+ ;;
864
+ next | m*-next )
865
+ basic_machine=m68k-next
866
+ case $os in
867
+ -nextstep* )
868
+ ;;
869
+ -ns2*)
870
+ os=-nextstep2
871
+ ;;
872
+ *)
873
+ os=-nextstep3
874
+ ;;
875
+ esac
876
+ ;;
877
+ nh3000)
878
+ basic_machine=m68k-harris
879
+ os=-cxux
880
+ ;;
881
+ nh[45]000)
882
+ basic_machine=m88k-harris
883
+ os=-cxux
884
+ ;;
885
+ nindy960)
886
+ basic_machine=i960-intel
887
+ os=-nindy
888
+ ;;
889
+ mon960)
890
+ basic_machine=i960-intel
891
+ os=-mon960
892
+ ;;
893
+ nonstopux)
894
+ basic_machine=mips-compaq
895
+ os=-nonstopux
896
+ ;;
897
+ np1)
898
+ basic_machine=np1-gould
899
+ ;;
900
+ neo-tandem)
901
+ basic_machine=neo-tandem
902
+ ;;
903
+ nse-tandem)
904
+ basic_machine=nse-tandem
905
+ ;;
906
+ nsr-tandem)
907
+ basic_machine=nsr-tandem
908
+ ;;
909
+ op50n-* | op60c-*)
910
+ basic_machine=hppa1.1-oki
911
+ os=-proelf
912
+ ;;
913
+ openrisc | openrisc-*)
914
+ basic_machine=or32-unknown
915
+ ;;
916
+ os400)
917
+ basic_machine=powerpc-ibm
918
+ os=-os400
919
+ ;;
920
+ OSE68000 | ose68000)
921
+ basic_machine=m68000-ericsson
922
+ os=-ose
923
+ ;;
924
+ os68k)
925
+ basic_machine=m68k-none
926
+ os=-os68k
927
+ ;;
928
+ pa-hitachi)
929
+ basic_machine=hppa1.1-hitachi
930
+ os=-hiuxwe2
931
+ ;;
932
+ paragon)
933
+ basic_machine=i860-intel
934
+ os=-osf
935
+ ;;
936
+ parisc)
937
+ basic_machine=hppa-unknown
938
+ os=-linux
939
+ ;;
940
+ parisc-*)
941
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
942
+ os=-linux
943
+ ;;
944
+ pbd)
945
+ basic_machine=sparc-tti
946
+ ;;
947
+ pbb)
948
+ basic_machine=m68k-tti
949
+ ;;
950
+ pc532 | pc532-*)
951
+ basic_machine=ns32k-pc532
952
+ ;;
953
+ pc98)
954
+ basic_machine=i386-pc
955
+ ;;
956
+ pc98-*)
957
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
958
+ ;;
959
+ pentium | p5 | k5 | k6 | nexgen | viac3)
960
+ basic_machine=i586-pc
961
+ ;;
962
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
963
+ basic_machine=i686-pc
964
+ ;;
965
+ pentiumii | pentium2 | pentiumiii | pentium3)
966
+ basic_machine=i686-pc
967
+ ;;
968
+ pentium4)
969
+ basic_machine=i786-pc
970
+ ;;
971
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
972
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
973
+ ;;
974
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
975
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
976
+ ;;
977
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
978
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
979
+ ;;
980
+ pentium4-*)
981
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
982
+ ;;
983
+ pn)
984
+ basic_machine=pn-gould
985
+ ;;
986
+ power) basic_machine=power-ibm
987
+ ;;
988
+ ppc | ppcbe) basic_machine=powerpc-unknown
989
+ ;;
990
+ ppc-* | ppcbe-*)
991
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
992
+ ;;
993
+ ppcle | powerpclittle | ppc-le | powerpc-little)
994
+ basic_machine=powerpcle-unknown
995
+ ;;
996
+ ppcle-* | powerpclittle-*)
997
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
998
+ ;;
999
+ ppc64) basic_machine=powerpc64-unknown
1000
+ ;;
1001
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
1002
+ ;;
1003
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
1004
+ basic_machine=powerpc64le-unknown
1005
+ ;;
1006
+ ppc64le-* | powerpc64little-*)
1007
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
1008
+ ;;
1009
+ ps2)
1010
+ basic_machine=i386-ibm
1011
+ ;;
1012
+ pw32)
1013
+ basic_machine=i586-unknown
1014
+ os=-pw32
1015
+ ;;
1016
+ rdos)
1017
+ basic_machine=i386-pc
1018
+ os=-rdos
1019
+ ;;
1020
+ rom68k)
1021
+ basic_machine=m68k-rom68k
1022
+ os=-coff
1023
+ ;;
1024
+ rm[46]00)
1025
+ basic_machine=mips-siemens
1026
+ ;;
1027
+ rtpc | rtpc-*)
1028
+ basic_machine=romp-ibm
1029
+ ;;
1030
+ s390 | s390-*)
1031
+ basic_machine=s390-ibm
1032
+ ;;
1033
+ s390x | s390x-*)
1034
+ basic_machine=s390x-ibm
1035
+ ;;
1036
+ sa29200)
1037
+ basic_machine=a29k-amd
1038
+ os=-udi
1039
+ ;;
1040
+ sb1)
1041
+ basic_machine=mipsisa64sb1-unknown
1042
+ ;;
1043
+ sb1el)
1044
+ basic_machine=mipsisa64sb1el-unknown
1045
+ ;;
1046
+ sde)
1047
+ basic_machine=mipsisa32-sde
1048
+ os=-elf
1049
+ ;;
1050
+ sei)
1051
+ basic_machine=mips-sei
1052
+ os=-seiux
1053
+ ;;
1054
+ sequent)
1055
+ basic_machine=i386-sequent
1056
+ ;;
1057
+ sh)
1058
+ basic_machine=sh-hitachi
1059
+ os=-hms
1060
+ ;;
1061
+ sh5el)
1062
+ basic_machine=sh5le-unknown
1063
+ ;;
1064
+ sh64)
1065
+ basic_machine=sh64-unknown
1066
+ ;;
1067
+ sparclite-wrs | simso-wrs)
1068
+ basic_machine=sparclite-wrs
1069
+ os=-vxworks
1070
+ ;;
1071
+ sps7)
1072
+ basic_machine=m68k-bull
1073
+ os=-sysv2
1074
+ ;;
1075
+ spur)
1076
+ basic_machine=spur-unknown
1077
+ ;;
1078
+ st2000)
1079
+ basic_machine=m68k-tandem
1080
+ ;;
1081
+ stratus)
1082
+ basic_machine=i860-stratus
1083
+ os=-sysv4
1084
+ ;;
1085
+ strongarm-* | thumb-*)
1086
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
1087
+ ;;
1088
+ sun2)
1089
+ basic_machine=m68000-sun
1090
+ ;;
1091
+ sun2os3)
1092
+ basic_machine=m68000-sun
1093
+ os=-sunos3
1094
+ ;;
1095
+ sun2os4)
1096
+ basic_machine=m68000-sun
1097
+ os=-sunos4
1098
+ ;;
1099
+ sun3os3)
1100
+ basic_machine=m68k-sun
1101
+ os=-sunos3
1102
+ ;;
1103
+ sun3os4)
1104
+ basic_machine=m68k-sun
1105
+ os=-sunos4
1106
+ ;;
1107
+ sun4os3)
1108
+ basic_machine=sparc-sun
1109
+ os=-sunos3
1110
+ ;;
1111
+ sun4os4)
1112
+ basic_machine=sparc-sun
1113
+ os=-sunos4
1114
+ ;;
1115
+ sun4sol2)
1116
+ basic_machine=sparc-sun
1117
+ os=-solaris2
1118
+ ;;
1119
+ sun3 | sun3-*)
1120
+ basic_machine=m68k-sun
1121
+ ;;
1122
+ sun4)
1123
+ basic_machine=sparc-sun
1124
+ ;;
1125
+ sun386 | sun386i | roadrunner)
1126
+ basic_machine=i386-sun
1127
+ ;;
1128
+ sv1)
1129
+ basic_machine=sv1-cray
1130
+ os=-unicos
1131
+ ;;
1132
+ symmetry)
1133
+ basic_machine=i386-sequent
1134
+ os=-dynix
1135
+ ;;
1136
+ t3e)
1137
+ basic_machine=alphaev5-cray
1138
+ os=-unicos
1139
+ ;;
1140
+ t90)
1141
+ basic_machine=t90-cray
1142
+ os=-unicos
1143
+ ;;
1144
+ tile*)
1145
+ basic_machine=$basic_machine-unknown
1146
+ os=-linux-gnu
1147
+ ;;
1148
+ tx39)
1149
+ basic_machine=mipstx39-unknown
1150
+ ;;
1151
+ tx39el)
1152
+ basic_machine=mipstx39el-unknown
1153
+ ;;
1154
+ toad1)
1155
+ basic_machine=pdp10-xkl
1156
+ os=-tops20
1157
+ ;;
1158
+ tower | tower-32)
1159
+ basic_machine=m68k-ncr
1160
+ ;;
1161
+ tpf)
1162
+ basic_machine=s390x-ibm
1163
+ os=-tpf
1164
+ ;;
1165
+ udi29k)
1166
+ basic_machine=a29k-amd
1167
+ os=-udi
1168
+ ;;
1169
+ ultra3)
1170
+ basic_machine=a29k-nyu
1171
+ os=-sym1
1172
+ ;;
1173
+ v810 | necv810)
1174
+ basic_machine=v810-nec
1175
+ os=-none
1176
+ ;;
1177
+ vaxv)
1178
+ basic_machine=vax-dec
1179
+ os=-sysv
1180
+ ;;
1181
+ vms)
1182
+ basic_machine=vax-dec
1183
+ os=-vms
1184
+ ;;
1185
+ vpp*|vx|vx-*)
1186
+ basic_machine=f301-fujitsu
1187
+ ;;
1188
+ vxworks960)
1189
+ basic_machine=i960-wrs
1190
+ os=-vxworks
1191
+ ;;
1192
+ vxworks68)
1193
+ basic_machine=m68k-wrs
1194
+ os=-vxworks
1195
+ ;;
1196
+ vxworks29k)
1197
+ basic_machine=a29k-wrs
1198
+ os=-vxworks
1199
+ ;;
1200
+ w65*)
1201
+ basic_machine=w65-wdc
1202
+ os=-none
1203
+ ;;
1204
+ w89k-*)
1205
+ basic_machine=hppa1.1-winbond
1206
+ os=-proelf
1207
+ ;;
1208
+ xbox)
1209
+ basic_machine=i686-pc
1210
+ os=-mingw32
1211
+ ;;
1212
+ xps | xps100)
1213
+ basic_machine=xps100-honeywell
1214
+ ;;
1215
+ xscale-* | xscalee[bl]-*)
1216
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
1217
+ ;;
1218
+ ymp)
1219
+ basic_machine=ymp-cray
1220
+ os=-unicos
1221
+ ;;
1222
+ z8k-*-coff)
1223
+ basic_machine=z8k-unknown
1224
+ os=-sim
1225
+ ;;
1226
+ z80-*-coff)
1227
+ basic_machine=z80-unknown
1228
+ os=-sim
1229
+ ;;
1230
+ none)
1231
+ basic_machine=none-none
1232
+ os=-none
1233
+ ;;
1234
+
1235
+ # Here we handle the default manufacturer of certain CPU types. It is in
1236
+ # some cases the only manufacturer, in others, it is the most popular.
1237
+ w89k)
1238
+ basic_machine=hppa1.1-winbond
1239
+ ;;
1240
+ op50n)
1241
+ basic_machine=hppa1.1-oki
1242
+ ;;
1243
+ op60c)
1244
+ basic_machine=hppa1.1-oki
1245
+ ;;
1246
+ romp)
1247
+ basic_machine=romp-ibm
1248
+ ;;
1249
+ mmix)
1250
+ basic_machine=mmix-knuth
1251
+ ;;
1252
+ rs6000)
1253
+ basic_machine=rs6000-ibm
1254
+ ;;
1255
+ vax)
1256
+ basic_machine=vax-dec
1257
+ ;;
1258
+ pdp10)
1259
+ # there are many clones, so DEC is not a safe bet
1260
+ basic_machine=pdp10-unknown
1261
+ ;;
1262
+ pdp11)
1263
+ basic_machine=pdp11-dec
1264
+ ;;
1265
+ we32k)
1266
+ basic_machine=we32k-att
1267
+ ;;
1268
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
1269
+ basic_machine=sh-unknown
1270
+ ;;
1271
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
1272
+ basic_machine=sparc-sun
1273
+ ;;
1274
+ cydra)
1275
+ basic_machine=cydra-cydrome
1276
+ ;;
1277
+ orion)
1278
+ basic_machine=orion-highlevel
1279
+ ;;
1280
+ orion105)
1281
+ basic_machine=clipper-highlevel
1282
+ ;;
1283
+ mac | mpw | mac-mpw)
1284
+ basic_machine=m68k-apple
1285
+ ;;
1286
+ pmac | pmac-mpw)
1287
+ basic_machine=powerpc-apple
1288
+ ;;
1289
+ *-unknown)
1290
+ # Make sure to match an already-canonicalized machine name.
1291
+ ;;
1292
+ *)
1293
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
1294
+ exit 1
1295
+ ;;
1296
+ esac
1297
+
1298
+ # Here we canonicalize certain aliases for manufacturers.
1299
+ case $basic_machine in
1300
+ *-digital*)
1301
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
1302
+ ;;
1303
+ *-commodore*)
1304
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
1305
+ ;;
1306
+ *)
1307
+ ;;
1308
+ esac
1309
+
1310
+ # Decode manufacturer-specific aliases for certain operating systems.
1311
+
1312
+ if [ x"$os" != x"" ]
1313
+ then
1314
+ case $os in
1315
+ # First match some system type aliases
1316
+ # that might get confused with valid system types.
1317
+ # -solaris* is a basic system type, with this one exception.
1318
+ -auroraux)
1319
+ os=-auroraux
1320
+ ;;
1321
+ -solaris1 | -solaris1.*)
1322
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
1323
+ ;;
1324
+ -solaris)
1325
+ os=-solaris2
1326
+ ;;
1327
+ -svr4*)
1328
+ os=-sysv4
1329
+ ;;
1330
+ -unixware*)
1331
+ os=-sysv4.2uw
1332
+ ;;
1333
+ -gnu/linux*)
1334
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
1335
+ ;;
1336
+ # First accept the basic system types.
1337
+ # The portable systems comes first.
1338
+ # Each alternative MUST END IN A *, to match a version number.
1339
+ # -sysv* is not here because it comes later, after sysvr4.
1340
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
1341
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
1342
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
1343
+ | -sym* | -kopensolaris* \
1344
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
1345
+ | -aos* | -aros* \
1346
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
1347
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
1348
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
1349
+ | -openbsd* | -solidbsd* \
1350
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
1351
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
1352
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
1353
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
1354
+ | -chorusos* | -chorusrdb* | -cegcc* \
1355
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
1356
+ | -mingw32* | -linux-gnu* | -linux-android* \
1357
+ | -linux-newlib* | -linux-uclibc* \
1358
+ | -uxpv* | -beos* | -mpeix* | -udk* \
1359
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
1360
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
1361
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
1362
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
1363
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
1364
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
1365
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
1366
+ # Remember, each alternative MUST END IN *, to match a version number.
1367
+ ;;
1368
+ -qnx*)
1369
+ case $basic_machine in
1370
+ x86-* | i*86-*)
1371
+ ;;
1372
+ *)
1373
+ os=-nto$os
1374
+ ;;
1375
+ esac
1376
+ ;;
1377
+ -nto-qnx*)
1378
+ ;;
1379
+ -nto*)
1380
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
1381
+ ;;
1382
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
1383
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
1384
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
1385
+ ;;
1386
+ -mac*)
1387
+ os=`echo $os | sed -e 's|mac|macos|'`
1388
+ ;;
1389
+ -linux-dietlibc)
1390
+ os=-linux-dietlibc
1391
+ ;;
1392
+ -linux*)
1393
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
1394
+ ;;
1395
+ -sunos5*)
1396
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
1397
+ ;;
1398
+ -sunos6*)
1399
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
1400
+ ;;
1401
+ -opened*)
1402
+ os=-openedition
1403
+ ;;
1404
+ -os400*)
1405
+ os=-os400
1406
+ ;;
1407
+ -wince*)
1408
+ os=-wince
1409
+ ;;
1410
+ -osfrose*)
1411
+ os=-osfrose
1412
+ ;;
1413
+ -osf*)
1414
+ os=-osf
1415
+ ;;
1416
+ -utek*)
1417
+ os=-bsd
1418
+ ;;
1419
+ -dynix*)
1420
+ os=-bsd
1421
+ ;;
1422
+ -acis*)
1423
+ os=-aos
1424
+ ;;
1425
+ -atheos*)
1426
+ os=-atheos
1427
+ ;;
1428
+ -syllable*)
1429
+ os=-syllable
1430
+ ;;
1431
+ -386bsd)
1432
+ os=-bsd
1433
+ ;;
1434
+ -ctix* | -uts*)
1435
+ os=-sysv
1436
+ ;;
1437
+ -nova*)
1438
+ os=-rtmk-nova
1439
+ ;;
1440
+ -ns2 )
1441
+ os=-nextstep2
1442
+ ;;
1443
+ -nsk*)
1444
+ os=-nsk
1445
+ ;;
1446
+ # Preserve the version number of sinix5.
1447
+ -sinix5.*)
1448
+ os=`echo $os | sed -e 's|sinix|sysv|'`
1449
+ ;;
1450
+ -sinix*)
1451
+ os=-sysv4
1452
+ ;;
1453
+ -tpf*)
1454
+ os=-tpf
1455
+ ;;
1456
+ -triton*)
1457
+ os=-sysv3
1458
+ ;;
1459
+ -oss*)
1460
+ os=-sysv3
1461
+ ;;
1462
+ -svr4)
1463
+ os=-sysv4
1464
+ ;;
1465
+ -svr3)
1466
+ os=-sysv3
1467
+ ;;
1468
+ -sysvr4)
1469
+ os=-sysv4
1470
+ ;;
1471
+ # This must come after -sysvr4.
1472
+ -sysv*)
1473
+ ;;
1474
+ -ose*)
1475
+ os=-ose
1476
+ ;;
1477
+ -es1800*)
1478
+ os=-ose
1479
+ ;;
1480
+ -xenix)
1481
+ os=-xenix
1482
+ ;;
1483
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1484
+ os=-mint
1485
+ ;;
1486
+ -aros*)
1487
+ os=-aros
1488
+ ;;
1489
+ -kaos*)
1490
+ os=-kaos
1491
+ ;;
1492
+ -zvmoe)
1493
+ os=-zvmoe
1494
+ ;;
1495
+ -dicos*)
1496
+ os=-dicos
1497
+ ;;
1498
+ -nacl*)
1499
+ ;;
1500
+ -none)
1501
+ ;;
1502
+ *)
1503
+ # Get rid of the `-' at the beginning of $os.
1504
+ os=`echo $os | sed 's/[^-]*-//'`
1505
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
1506
+ exit 1
1507
+ ;;
1508
+ esac
1509
+ else
1510
+
1511
+ # Here we handle the default operating systems that come with various machines.
1512
+ # The value should be what the vendor currently ships out the door with their
1513
+ # machine or put another way, the most popular os provided with the machine.
1514
+
1515
+ # Note that if you're going to try to match "-MANUFACTURER" here (say,
1516
+ # "-sun"), then you have to tell the case statement up towards the top
1517
+ # that MANUFACTURER isn't an operating system. Otherwise, code above
1518
+ # will signal an error saying that MANUFACTURER isn't an operating
1519
+ # system, and we'll never get to this point.
1520
+
1521
+ case $basic_machine in
1522
+ score-*)
1523
+ os=-elf
1524
+ ;;
1525
+ spu-*)
1526
+ os=-elf
1527
+ ;;
1528
+ *-acorn)
1529
+ os=-riscix1.2
1530
+ ;;
1531
+ arm*-rebel)
1532
+ os=-linux
1533
+ ;;
1534
+ arm*-semi)
1535
+ os=-aout
1536
+ ;;
1537
+ c4x-* | tic4x-*)
1538
+ os=-coff
1539
+ ;;
1540
+ tic54x-*)
1541
+ os=-coff
1542
+ ;;
1543
+ tic55x-*)
1544
+ os=-coff
1545
+ ;;
1546
+ tic6x-*)
1547
+ os=-coff
1548
+ ;;
1549
+ # This must come before the *-dec entry.
1550
+ pdp10-*)
1551
+ os=-tops20
1552
+ ;;
1553
+ pdp11-*)
1554
+ os=-none
1555
+ ;;
1556
+ *-dec | vax-*)
1557
+ os=-ultrix4.2
1558
+ ;;
1559
+ m68*-apollo)
1560
+ os=-domain
1561
+ ;;
1562
+ i386-sun)
1563
+ os=-sunos4.0.2
1564
+ ;;
1565
+ m68000-sun)
1566
+ os=-sunos3
1567
+ ;;
1568
+ m68*-cisco)
1569
+ os=-aout
1570
+ ;;
1571
+ mep-*)
1572
+ os=-elf
1573
+ ;;
1574
+ mips*-cisco)
1575
+ os=-elf
1576
+ ;;
1577
+ mips*-*)
1578
+ os=-elf
1579
+ ;;
1580
+ or32-*)
1581
+ os=-coff
1582
+ ;;
1583
+ *-tti) # must be before sparc entry or we get the wrong os.
1584
+ os=-sysv3
1585
+ ;;
1586
+ sparc-* | *-sun)
1587
+ os=-sunos4.1.1
1588
+ ;;
1589
+ *-be)
1590
+ os=-beos
1591
+ ;;
1592
+ *-haiku)
1593
+ os=-haiku
1594
+ ;;
1595
+ *-ibm)
1596
+ os=-aix
1597
+ ;;
1598
+ *-knuth)
1599
+ os=-mmixware
1600
+ ;;
1601
+ *-wec)
1602
+ os=-proelf
1603
+ ;;
1604
+ *-winbond)
1605
+ os=-proelf
1606
+ ;;
1607
+ *-oki)
1608
+ os=-proelf
1609
+ ;;
1610
+ *-hp)
1611
+ os=-hpux
1612
+ ;;
1613
+ *-hitachi)
1614
+ os=-hiux
1615
+ ;;
1616
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
1617
+ os=-sysv
1618
+ ;;
1619
+ *-cbm)
1620
+ os=-amigaos
1621
+ ;;
1622
+ *-dg)
1623
+ os=-dgux
1624
+ ;;
1625
+ *-dolphin)
1626
+ os=-sysv3
1627
+ ;;
1628
+ m68k-ccur)
1629
+ os=-rtu
1630
+ ;;
1631
+ m88k-omron*)
1632
+ os=-luna
1633
+ ;;
1634
+ *-next )
1635
+ os=-nextstep
1636
+ ;;
1637
+ *-sequent)
1638
+ os=-ptx
1639
+ ;;
1640
+ *-crds)
1641
+ os=-unos
1642
+ ;;
1643
+ *-ns)
1644
+ os=-genix
1645
+ ;;
1646
+ i370-*)
1647
+ os=-mvs
1648
+ ;;
1649
+ *-next)
1650
+ os=-nextstep3
1651
+ ;;
1652
+ *-gould)
1653
+ os=-sysv
1654
+ ;;
1655
+ *-highlevel)
1656
+ os=-bsd
1657
+ ;;
1658
+ *-encore)
1659
+ os=-bsd
1660
+ ;;
1661
+ *-sgi)
1662
+ os=-irix
1663
+ ;;
1664
+ *-siemens)
1665
+ os=-sysv4
1666
+ ;;
1667
+ *-masscomp)
1668
+ os=-rtu
1669
+ ;;
1670
+ f30[01]-fujitsu | f700-fujitsu)
1671
+ os=-uxpv
1672
+ ;;
1673
+ *-rom68k)
1674
+ os=-coff
1675
+ ;;
1676
+ *-*bug)
1677
+ os=-coff
1678
+ ;;
1679
+ *-apple)
1680
+ os=-macos
1681
+ ;;
1682
+ *-atari*)
1683
+ os=-mint
1684
+ ;;
1685
+ *)
1686
+ os=-none
1687
+ ;;
1688
+ esac
1689
+ fi
1690
+
1691
+ # Here we handle the case where we know the os, and the CPU type, but not the
1692
+ # manufacturer. We pick the logical manufacturer.
1693
+ vendor=unknown
1694
+ case $basic_machine in
1695
+ *-unknown)
1696
+ case $os in
1697
+ -riscix*)
1698
+ vendor=acorn
1699
+ ;;
1700
+ -sunos*)
1701
+ vendor=sun
1702
+ ;;
1703
+ -cnk*|-aix*)
1704
+ vendor=ibm
1705
+ ;;
1706
+ -beos*)
1707
+ vendor=be
1708
+ ;;
1709
+ -hpux*)
1710
+ vendor=hp
1711
+ ;;
1712
+ -mpeix*)
1713
+ vendor=hp
1714
+ ;;
1715
+ -hiux*)
1716
+ vendor=hitachi
1717
+ ;;
1718
+ -unos*)
1719
+ vendor=crds
1720
+ ;;
1721
+ -dgux*)
1722
+ vendor=dg
1723
+ ;;
1724
+ -luna*)
1725
+ vendor=omron
1726
+ ;;
1727
+ -genix*)
1728
+ vendor=ns
1729
+ ;;
1730
+ -mvs* | -opened*)
1731
+ vendor=ibm
1732
+ ;;
1733
+ -os400*)
1734
+ vendor=ibm
1735
+ ;;
1736
+ -ptx*)
1737
+ vendor=sequent
1738
+ ;;
1739
+ -tpf*)
1740
+ vendor=ibm
1741
+ ;;
1742
+ -vxsim* | -vxworks* | -windiss*)
1743
+ vendor=wrs
1744
+ ;;
1745
+ -aux*)
1746
+ vendor=apple
1747
+ ;;
1748
+ -hms*)
1749
+ vendor=hitachi
1750
+ ;;
1751
+ -mpw* | -macos*)
1752
+ vendor=apple
1753
+ ;;
1754
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
1755
+ vendor=atari
1756
+ ;;
1757
+ -vos*)
1758
+ vendor=stratus
1759
+ ;;
1760
+ esac
1761
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
1762
+ ;;
1763
+ esac
1764
+
1765
+ echo $basic_machine$os
1766
+ exit
1767
+
1768
+ # Local variables:
1769
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
1770
+ # time-stamp-start: "timestamp='"
1771
+ # time-stamp-format: "%:y-%02m-%02d"
1772
+ # time-stamp-end: "'"
1773
+ # End: