script_core 0.2.2 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +41 -45
  3. data/.travis.yml +2 -1
  4. data/Gemfile +3 -3
  5. data/README.md +7 -1
  6. data/bootstrap.sh +2 -2
  7. data/ext/enterprise_script_service/libseccomp/.travis.yml +24 -12
  8. data/ext/enterprise_script_service/libseccomp/CHANGELOG +32 -0
  9. data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
  10. data/ext/enterprise_script_service/libseccomp/CREDITS +11 -0
  11. data/ext/enterprise_script_service/libseccomp/README.md +21 -1
  12. data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
  13. data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
  14. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
  15. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
  16. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
  17. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
  18. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
  19. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
  20. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
  21. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
  22. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
  23. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
  24. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
  25. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
  26. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
  27. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
  28. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
  29. data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +19 -0
  30. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
  31. data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
  32. data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
  33. data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
  34. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
  35. data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
  36. data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
  37. data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
  38. data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
  39. data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
  40. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
  41. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
  42. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
  43. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
  44. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
  45. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
  46. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
  47. data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
  48. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
  49. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
  50. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
  51. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
  52. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
  53. data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
  54. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
  55. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
  56. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
  57. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
  58. data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
  59. data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
  60. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
  61. data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
  62. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
  63. data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
  64. data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
  65. data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
  66. data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
  67. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
  68. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
  69. data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
  70. data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
  71. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
  72. data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
  73. data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
  74. data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
  75. data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
  76. data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
  77. data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
  78. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +10 -2
  79. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
  80. data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
  81. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
  82. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
  83. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +4 -3
  84. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
  85. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
  86. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
  87. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
  88. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
  89. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
  90. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
  91. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
  92. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
  93. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
  94. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
  95. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
  96. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
  97. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
  98. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
  99. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
  100. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
  101. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
  102. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
  103. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
  104. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
  105. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
  106. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
  107. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
  108. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
  109. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
  110. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
  111. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
  112. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
  113. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
  114. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
  115. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
  116. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
  117. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
  118. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
  119. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
  120. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
  121. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
  122. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
  123. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
  124. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
  125. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
  126. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
  127. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +34 -10
  128. data/ext/enterprise_script_service/libseccomp/tests/regression +10 -3
  129. data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
  130. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
  131. data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
  132. data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
  133. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
  134. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +4 -0
  135. data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
  136. data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
  137. data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +106 -0
  138. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +51 -0
  139. data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +24 -0
  140. data/ext/enterprise_script_service/mruby/.gitignore +3 -0
  141. data/ext/enterprise_script_service/mruby/.travis.yml +6 -9
  142. data/ext/enterprise_script_service/mruby/AUTHORS +1 -0
  143. data/ext/enterprise_script_service/mruby/Doxyfile +1 -1
  144. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  145. data/ext/enterprise_script_service/mruby/README.md +6 -2
  146. data/ext/enterprise_script_service/mruby/appveyor.yml +9 -12
  147. data/ext/enterprise_script_service/mruby/appveyor_config.rb +9 -0
  148. data/ext/enterprise_script_service/mruby/build_config.rb +6 -6
  149. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +6 -2
  150. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  151. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +4 -8
  152. data/ext/enterprise_script_service/mruby/doc/limitations.md +10 -10
  153. data/ext/enterprise_script_service/mruby/doc/opcode.md +108 -95
  154. data/ext/enterprise_script_service/mruby/examples/targets/build_config_ArduinoDue.rb +2 -2
  155. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelEdison.rb +2 -2
  156. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelGalileo.rb +2 -2
  157. data/ext/enterprise_script_service/mruby/examples/targets/build_config_RX630.rb +2 -2
  158. data/ext/enterprise_script_service/mruby/examples/targets/build_config_chipKITMax32.rb +2 -2
  159. data/ext/enterprise_script_service/mruby/examples/targets/build_config_dreamcast_shelf.rb +108 -0
  160. data/ext/enterprise_script_service/mruby/include/mrbconf.h +10 -7
  161. data/ext/enterprise_script_service/mruby/include/mruby.h +24 -9
  162. data/ext/enterprise_script_service/mruby/include/mruby/array.h +4 -0
  163. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +11 -2
  164. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +0 -10
  165. data/ext/enterprise_script_service/mruby/include/mruby/common.h +10 -0
  166. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +11 -3
  167. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +1 -17
  168. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +10 -0
  169. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
  170. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +23 -5
  171. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +1 -0
  172. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +3 -2
  173. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +13 -8
  174. data/ext/enterprise_script_service/mruby/include/mruby/string.h +2 -1
  175. data/ext/enterprise_script_service/mruby/include/mruby/value.h +32 -41
  176. data/ext/enterprise_script_service/mruby/include/mruby/version.h +4 -4
  177. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +2 -30
  178. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +21 -46
  179. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +9 -0
  180. data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
  181. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +7 -0
  182. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +0 -31
  183. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -8
  184. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
  185. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +5 -2
  186. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +0 -1
  187. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +5 -1
  188. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +7 -3
  189. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +24 -21
  190. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +0 -1
  191. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +6 -2
  192. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
  193. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +6 -1
  194. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +76 -48
  195. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +107 -32
  196. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13153 -0
  197. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +13 -15
  198. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
  199. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +1 -2
  200. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
  201. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +3 -214
  202. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
  203. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +1 -2
  204. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +1 -3
  205. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +3 -4
  206. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
  207. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
  208. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
  209. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +7 -12
  210. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +77 -32
  211. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +18 -36
  212. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +324 -122
  213. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +18 -12
  214. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +32 -0
  215. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +57 -49
  216. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +6 -8
  217. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +15 -17
  218. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +9 -0
  219. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +4 -5
  220. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +3 -12
  221. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +0 -1
  222. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +113 -10
  223. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +6 -3
  224. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +2 -2
  225. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +1 -3
  226. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +1 -3
  227. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +9 -9
  228. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +1 -1
  229. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
  230. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
  231. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +62 -25
  232. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +5 -23
  233. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +4 -5
  234. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +5 -11
  235. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +1 -1
  236. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +1 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +11 -15
  238. data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
  239. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -3
  240. data/ext/enterprise_script_service/mruby/src/array.c +25 -11
  241. data/ext/enterprise_script_service/mruby/src/backtrace.c +2 -2
  242. data/ext/enterprise_script_service/mruby/src/class.c +48 -32
  243. data/ext/enterprise_script_service/mruby/src/codedump.c +4 -0
  244. data/ext/enterprise_script_service/mruby/src/debug.c +8 -5
  245. data/ext/enterprise_script_service/mruby/src/dump.c +3 -65
  246. data/ext/enterprise_script_service/mruby/src/error.c +58 -7
  247. data/ext/enterprise_script_service/mruby/src/etc.c +13 -5
  248. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +98 -21
  249. data/ext/enterprise_script_service/mruby/src/gc.c +15 -280
  250. data/ext/enterprise_script_service/mruby/src/hash.c +13 -21
  251. data/ext/enterprise_script_service/mruby/src/kernel.c +6 -9
  252. data/ext/enterprise_script_service/mruby/src/load.c +56 -30
  253. data/ext/enterprise_script_service/mruby/src/numeric.c +50 -70
  254. data/ext/enterprise_script_service/mruby/src/object.c +23 -5
  255. data/ext/enterprise_script_service/mruby/src/print.c +27 -3
  256. data/ext/enterprise_script_service/mruby/src/proc.c +26 -7
  257. data/ext/enterprise_script_service/mruby/src/range.c +4 -12
  258. data/ext/enterprise_script_service/mruby/src/state.c +34 -11
  259. data/ext/enterprise_script_service/mruby/src/string.c +93 -56
  260. data/ext/enterprise_script_service/mruby/src/symbol.c +13 -12
  261. data/ext/enterprise_script_service/mruby/src/vm.c +48 -53
  262. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +19 -22
  263. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +1 -1
  264. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
  265. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +3 -3
  266. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +6 -6
  267. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +8 -8
  268. data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
  269. data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
  270. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  271. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +15 -24
  272. data/ext/enterprise_script_service/mruby/travis_config.rb +0 -14
  273. data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
  274. data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
  275. data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
  276. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
  277. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
  278. data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
  279. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
  280. data/ext/enterprise_script_service/msgpack/README.md +3 -2
  281. data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
  282. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
  283. data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
  284. data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
  285. data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
  286. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
  287. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
  288. data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
  289. data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
  290. data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
  291. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
  292. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
  293. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
  294. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
  295. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
  296. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
  297. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
  298. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
  299. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
  300. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
  301. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
  302. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
  303. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
  304. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  305. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
  306. data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
  307. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
  308. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
  309. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
  310. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
  311. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
  312. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
  313. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
  314. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
  315. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
  316. data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
  317. data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
  318. data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
  319. data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
  320. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
  321. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
  322. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
  323. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
  324. data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
  325. data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
  326. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
  327. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
  328. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
  329. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
  330. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
  331. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
  332. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
  333. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
  334. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
  335. data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
  336. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
  337. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
  338. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
  339. data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
  340. data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
  341. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
  342. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
  343. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
  344. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
  345. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
  346. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
  347. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
  348. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
  349. data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
  350. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
  351. data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
  352. data/lib/script_core/engine.rb +24 -5
  353. data/lib/script_core/executable.rb +4 -3
  354. data/lib/script_core/result.rb +1 -5
  355. data/lib/script_core/service_channel.rb +1 -0
  356. data/lib/script_core/version.rb +1 -1
  357. data/lib/tasks/script_core.rake +3 -1
  358. data/script_core.gemspec +2 -2
  359. data/spec/dummy/app/lib/script_engine.rb +64 -5
  360. metadata +68 -30
  361. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
  362. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
  363. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
  364. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
  365. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
  366. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
  367. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
  368. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
  369. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
  370. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
  371. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
  372. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
  373. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
  374. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
  375. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
  376. data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -6,27 +6,8 @@
6
6
  #ifndef _ARCH_S390X_H
7
7
  #define _ARCH_S390X_H
8
8
 
9
- #include <inttypes.h>
10
-
11
9
  #include "arch.h"
12
- #include "db.h"
13
- #include "system.h"
14
-
15
- #define s390x_arg_count_max 6
16
-
17
- extern const struct arch_def arch_def_s390x;
18
- #define s390x_arg_offset(x) (offsetof(struct seccomp_data, args[x]))
19
-
20
- #define s390x_arg_offset_lo(x) (s390x_arg_offset(x) + 4)
21
- #define s390x_arg_offset_hi(x) (s390x_arg_offset(x))
22
-
23
- int s390x_syscall_resolve_name(const char *name);
24
- const char *s390x_syscall_resolve_num(int num);
25
-
26
- const struct arch_syscall_def *s390x_syscall_iterate(unsigned int spot);
27
-
28
- int s390x_syscall_rewrite(int *syscall);
29
10
 
30
- int s390x_rule_add(struct db_filter *db, struct db_api_rule_list *rule);
11
+ ARCH_DECL(s390x)
31
12
 
32
13
  #endif
@@ -39,8 +39,10 @@
39
39
  #include "arch-mips64n32.h"
40
40
  #include "arch-aarch64.h"
41
41
  #include "arch-parisc.h"
42
+ #include "arch-parisc64.h"
42
43
  #include "arch-ppc.h"
43
44
  #include "arch-ppc64.h"
45
+ #include "arch-riscv64.h"
44
46
  #include "arch-s390.h"
45
47
  #include "arch-s390x.h"
46
48
 
@@ -117,9 +119,11 @@ int main(int argc, char *argv[])
117
119
  sys = mips64n32_syscall_iterate(iter);
118
120
  break;
119
121
  case SCMP_ARCH_PARISC:
120
- case SCMP_ARCH_PARISC64:
121
122
  sys = parisc_syscall_iterate(iter);
122
123
  break;
124
+ case SCMP_ARCH_PARISC64:
125
+ sys = parisc64_syscall_iterate(iter);
126
+ break;
123
127
  case SCMP_ARCH_PPC:
124
128
  sys = ppc_syscall_iterate(iter);
125
129
  break;
@@ -127,6 +131,9 @@ int main(int argc, char *argv[])
127
131
  case SCMP_ARCH_PPC64LE:
128
132
  sys = ppc64_syscall_iterate(iter);
129
133
  break;
134
+ case SCMP_ARCH_RISCV64:
135
+ sys = riscv64_syscall_iterate(iter);
136
+ break;
130
137
  case SCMP_ARCH_S390:
131
138
  sys = s390_syscall_iterate(iter);
132
139
  break;
@@ -4,6 +4,8 @@
4
4
  # libseccomp syscall validation script
5
5
  #
6
6
  # Copyright (c) 2014 Red Hat <pmoore@redhat.com>
7
+ # Copyright (c) 2020 Cisco Systems, Inc. <pmoore2@cisco.com>
8
+ #
7
9
  # Author: Paul Moore <paul@paul-moore.com>
8
10
  #
9
11
 
@@ -57,17 +59,38 @@ function verify_deps() {
57
59
  #
58
60
  function usage() {
59
61
  cat << EOF
60
- usage: arch-syscall-validate [-h] [-a <arch>] <kernel_directory>
62
+ usage: arch-syscall-validate [-h] [-c] [-a <arch>] <kernel_directory>
61
63
 
62
64
  libseccomp syscall validation script
63
65
  optional arguments:
64
66
  -h show this help message and exit
65
67
  -a architecture
66
68
  -l output the library's syscall definitions
67
- -s output the system's syscall definitions
69
+ -s output the kernel's syscall definitions
70
+ -c generate a CSV of the kernel's syscall definitions
68
71
  EOF
69
72
  }
70
73
 
74
+ #
75
+ # Dump the kernel version
76
+ #
77
+ # Arguments:
78
+ # 1 path to the kernel source
79
+ #
80
+ # Dump the kernel's version information to stdout.
81
+ #
82
+ function kernel_version() {
83
+ local maj=$(cat $1/Makefile | \
84
+ grep "^VERSION =" | awk -F "= " '{ print $2 }')
85
+ local min=$(cat $1/Makefile | \
86
+ grep "^PATCHLEVEL =" | awk -F "= " '{ print $2 }')
87
+ local sub=$(cat $1/Makefile | \
88
+ grep "^SUBLEVEL =" | awk -F "= " '{ print $2 }')
89
+ local xtr=$(cat $1/Makefile | \
90
+ grep "^EXTRAVERSION =" | awk -F "= " '{ print $2 }')
91
+ echo "${maj}.${min}.${sub}${xtr}"
92
+ }
93
+
71
94
  #
72
95
  # Dump the library syscall table for a given architecture
73
96
  #
@@ -84,7 +107,58 @@ function dump_lib_arch() {
84
107
  [[ -z $1 ]] && return
85
108
 
86
109
  [[ -n $2 ]] && offset_str="-o $2"
87
- $LIB_SYS_DUMP -a $1 $offset_str | sed -e '/[^\t]\+\t-[0-9]\+/d' | sort
110
+ $LIB_SYS_DUMP -a $1 $offset_str | sed 's/\t/,/' | sort
111
+ }
112
+
113
+ #
114
+ # Mangle the library pseudo syscall values
115
+ #
116
+ # Arguments:
117
+ # 1 architecture
118
+ #
119
+ # Mangle the supplied pseudo syscall to match the system values
120
+ #
121
+ function mangle_lib_syscall() {
122
+ local sed_filter=""
123
+
124
+ sed_filter+='s/accept4,-118/accept4,364/;'
125
+ sed_filter+='s/bind,-102/bind,361/;'
126
+ sed_filter+='s/connect,-103/connect,362/;'
127
+ sed_filter+='s/getpeername,-107/getpeername,368/;'
128
+ sed_filter+='s/getsockname,-106/getsockname,367/;'
129
+ sed_filter+='s/getsockopt,-115/getsockopt,365/;'
130
+ sed_filter+='s/listen,-104/listen,363/;'
131
+ sed_filter+='s/msgctl,-214/msgctl,402/;'
132
+ sed_filter+='s/msgget,-213/msgget,399/;'
133
+ sed_filter+='s/msgrcv,-212/msgrcv,401/;'
134
+ sed_filter+='s/msgsnd,-211/msgsnd,400/;'
135
+ sed_filter+='s/recvfrom,-112/recvfrom,371/;'
136
+ sed_filter+='s/recvmsg,-117/recvmsg,372/;'
137
+ sed_filter+='s/semctl,-203/semctl,394/;'
138
+ sed_filter+='s/semget,-202/semget,393/;'
139
+ sed_filter+='s/sendmsg,-116/sendmsg,370/;'
140
+ sed_filter+='s/sendto,-111/sendto,369/;'
141
+ sed_filter+='s/setsockopt,-114/setsockopt,366/;'
142
+ sed_filter+='s/shmat,-221/shmat,397/;'
143
+ sed_filter+='s/shmctl,-224/shmctl,396/;'
144
+ sed_filter+='s/shmdt,-222/shmdt,398/;'
145
+ sed_filter+='s/shmget,-223/shmget,395/;'
146
+ sed_filter+='s/shutdown,-113/shutdown,373/;'
147
+ sed_filter+='s/socket,-101/socket,359/;'
148
+ sed_filter+='s/socketpair,-108/socketpair,360/;'
149
+
150
+ case $1 in
151
+ s390|s390x)
152
+ sed_filter+='s/recvmmsg,-119/recvmmsg,357/;'
153
+ sed_filter+='s/sendmmsg,-120/sendmmsg,358/;'
154
+ ;;
155
+ *)
156
+ sed_filter+='s/recvmmsg,-119/recvmmsg,337/;'
157
+ sed_filter+='s/sendmmsg,-120/sendmmsg,345/;'
158
+ ;;
159
+ esac
160
+
161
+ sed $sed_filter | sed '/,-[0-9]\+$/d'
88
162
  }
89
163
 
90
164
  #
@@ -97,7 +171,7 @@ function dump_lib_arch() {
97
171
  #
98
172
  function dump_sys_x86() {
99
173
  cat $1/arch/x86/entry/syscalls/syscall_32.tbl | \
100
- grep -v "^#" | awk '{ print $3"\t"$1 }' | sed '/^[ \t]*$/d' | \
174
+ grep -v "^#" | awk '{ print $3","$1 }' | \
101
175
  sort
102
176
  }
103
177
 
@@ -107,7 +181,7 @@ function dump_sys_x86() {
107
181
  # Dump the library's syscall table to stdout.
108
182
  #
109
183
  function dump_lib_x86() {
110
- dump_lib_arch x86
184
+ dump_lib_arch x86 | mangle_lib_syscall x86
111
185
  }
112
186
 
113
187
  #
@@ -120,8 +194,8 @@ function dump_lib_x86() {
120
194
  #
121
195
  function dump_sys_x86_64() {
122
196
  cat $1/arch/x86/entry/syscalls/syscall_64.tbl | \
123
- grep -v "^#" | awk '{ print $2,$3,$1 }' | sed -e '/^x32/d' | \
124
- awk '{ print $2"\t"$3 }' | sed '/^[ \t]*$/d' | sort
197
+ grep -v "^#" | sed '/^$/d' | awk '{ print $2,$3,$1 }' | \
198
+ sed '/^x32/d' | awk '{ print $2","$3 }' | sort
125
199
  }
126
200
 
127
201
  #
@@ -130,7 +204,7 @@ function dump_sys_x86_64() {
130
204
  # Dump the library's syscall table to stdout.
131
205
  #
132
206
  function dump_lib_x86_64() {
133
- dump_lib_arch x86_64
207
+ dump_lib_arch x86_64 | mangle_lib_syscall x86_64
134
208
  }
135
209
 
136
210
  #
@@ -143,8 +217,8 @@ function dump_lib_x86_64() {
143
217
  #
144
218
  function dump_sys_x32() {
145
219
  cat $1/arch/x86/entry/syscalls/syscall_64.tbl | \
146
- grep -v "^#" | awk '{ print $2,$3,$1 }' | sed -e '/^64/d' | \
147
- awk '{ print $2"\t"$3 }' | sed '/^[ \t]*$/d' | sort
220
+ grep -v "^#" | sed '/^$/d' | awk '{ print $2,$3,$1 }' | \
221
+ sed '/^64/d' | awk '{ print $2","$3 }' | sort
148
222
  }
149
223
 
150
224
  #
@@ -153,8 +227,7 @@ function dump_sys_x32() {
153
227
  # Dump the library's syscall table to stdout.
154
228
  #
155
229
  function dump_lib_x32() {
156
- # 1073741824 == 0x40000000
157
- dump_lib_arch x32 1073741824
230
+ dump_lib_arch x32 | mangle_lib_syscall x32
158
231
  }
159
232
 
160
233
  #
@@ -167,12 +240,13 @@ function dump_lib_x32() {
167
240
  #
168
241
  function dump_sys_arm() {
169
242
  cat $1/arch/arm/tools/syscall.tbl | grep -v "^#" | \
170
- sed -ne "/[0-9]\+[ \t]\+\(common\|eabi\)/p" | \
171
- awk '{ print $3"\t"$1 }' | sort | (cat -; \
243
+ sed -n "/[0-9]\+[ \t]\+\(common\|eabi\)/p" | \
244
+ awk '{ print $3","$1 }' | sort | (cat -; \
172
245
  (cat $1/arch/arm/include/uapi/asm/unistd.h | \
173
- grep "^#define __ARM_NR_" | grep -v "^#define __ARM_NR_BASE" | \
174
- sed -e 's/#define __ARM_NR_\([a-z0-9_]*\)[ \t]\+(__ARM_NR_BASE+\(.*\))/\1 983040 + \2/' | \
175
- awk '{ print $1"\t"$2+$4 }')) | sort
246
+ grep "^#define __ARM_NR_" | \
247
+ grep -v "^#define __ARM_NR_BASE" | \
248
+ sed 's/#define __ARM_NR_\([a-z0-9_]*\)[ \t]\+(__ARM_NR_BASE+\(.*\))/\1 983040 + \2/' | \
249
+ awk '{ print $1","$2+$4 }')) | sort
176
250
  }
177
251
 
178
252
  #
@@ -182,7 +256,8 @@ function dump_sys_arm() {
182
256
  #
183
257
  function dump_lib_arm() {
184
258
  # NOTE: arm_sync_file_range() and sync_file_range2() share values
185
- dump_lib_arch arm | sed -e '/sync_file_range2[ \t]\+341/d'
259
+ dump_lib_arch arm | sed '/sync_file_range2,\+341/d' | \
260
+ mangle_lib_syscall arm
186
261
  }
187
262
 
188
263
  #
@@ -194,28 +269,31 @@ function dump_lib_arm() {
194
269
  # Dump the architecture's syscall table to stdout.
195
270
  #
196
271
  function dump_sys_aarch64() {
272
+ local sed_filter=""
273
+
274
+ sed_filter+='s/__NR3264_statfs/43/;'
275
+ sed_filter+='s/__NR3264_ftruncate/46/;'
276
+ sed_filter+='s/__NR3264_truncate/45/;'
277
+ sed_filter+='s/__NR3264_lseek/62/;'
278
+ sed_filter+='s/__NR3264_sendfile/71/;'
279
+ sed_filter+='s/__NR3264_fstatat/79/;'
280
+ sed_filter+='s/__NR3264_fstatfs/44/;'
281
+ sed_filter+='s/__NR3264_fcntl/25/;'
282
+ sed_filter+='s/__NR3264_fadvise64/223/;'
283
+ sed_filter+='s/__NR3264_mmap/222/;'
284
+ sed_filter+='s/__NR3264_fstat/80/;'
285
+ sed_filter+='s/__NR3264_lstat/1039/;'
286
+ sed_filter+='s/__NR3264_stat/1038/;'
287
+
197
288
  gcc -E -dM -I$1/include/uapi \
198
289
  -D__BITS_PER_LONG=64 -D__ARCH_WANT_RENAMEAT \
199
290
  -D__ARCH_WANT_NEW_STAT \
200
- $1/include/uapi/asm-generic/unistd.h | \
291
+ $1/arch/arm64/include/uapi/asm/unistd.h | \
201
292
  grep "^#define __NR_" | \
202
- sed -e '/__NR_syscalls/d' | \
203
- sed -e '/__NR_arch_specific_syscall/d' | \
204
- sed -e 's/#define[ \t]\+__NR_\([^ \t]\+\)[ \t]\+\(.*\)/\1\t\2/' | \
205
- sed -e 's/__NR3264_statfs/43/' | \
206
- sed -e 's/__NR3264_ftruncate/46/' | \
207
- sed -e 's/__NR3264_truncate/45/' | \
208
- sed -e 's/__NR3264_lseek/62/' | \
209
- sed -e 's/__NR3264_sendfile/71/' | \
210
- sed -e 's/__NR3264_fstatat/79/' | \
211
- sed -e 's/__NR3264_fstatfs/44/' | \
212
- sed -e 's/__NR3264_fcntl/25/' | \
213
- sed -e 's/__NR3264_fadvise64/223/' | \
214
- sed -e 's/__NR3264_mmap/222/' | \
215
- sed -e 's/__NR3264_fstat/80/' | \
216
- sed -e 's/__NR3264_lstat/1039/' | \
217
- sed -e 's/__NR3264_stat/1038/' | \
218
- sort
293
+ sed '/__NR_syscalls/d' | \
294
+ sed '/__NR_arch_specific_syscall/d' | \
295
+ sed 's/#define[ \t]\+__NR_\([^ \t]\+\)[ \t]\+\(.*\)/\1,\2/' | \
296
+ sed $sed_filter | sort
219
297
  }
220
298
 
221
299
  #
@@ -224,7 +302,7 @@ function dump_sys_aarch64() {
224
302
  # Dump the library's syscall table to stdout.
225
303
  #
226
304
  function dump_lib_aarch64() {
227
- dump_lib_arch aarch64
305
+ dump_lib_arch aarch64 | mangle_lib_syscall aarch64
228
306
  }
229
307
 
230
308
  #
@@ -236,23 +314,11 @@ function dump_lib_aarch64() {
236
314
  # Dump the architecture's syscall table to stdout.
237
315
  #
238
316
  function dump_sys_mips() {
239
- pushd $1 2>&1 > /dev/null
240
- make ARCH=mips archheaders
241
- popd 2>&1 > /dev/null
242
- # _MIPS_SIM values:
243
- # _MIPS_SIM_ABI32 == 1
244
- # _MIPS_SIM_NABI32 == 2
245
- # _MIPS_SIM_ABI64 == 3
246
- gcc -E -dM -I$1/arch/mips/include/uapi -I$1/arch/mips/include/generated/uapi -D_MIPS_SIM=1 $1/arch/mips/include/uapi/asm/unistd.h | \
247
- grep "^#define __NR_" | \
248
- grep -v "^#define __NR_O32_" | \
249
- grep -v "^#define __NR_N32_" | \
250
- grep -v "^#define __NR_64_" | \
251
- grep -v "^#define __NR_Linux" | \
252
- grep -v "^#define __NR_unused" | \
253
- grep -v "^#define __NR_reserved" | \
254
- sed -e 's/#define[ \t]\+__NR_\([^ \t]\+\)[ \t]\+(__NR_Linux[ \t]*+[ \t]*\([0-9]\+\)).*/\1\t\2/' | \
255
- sort
317
+ cat $1/arch/mips/kernel/syscalls/syscall_o32.tbl | \
318
+ grep -v "^#" | \
319
+ sed -e '/[ \t]\+reserved[0-9]\+[ \t]\+/d;' | \
320
+ sed -e '/[ \t]\+unused[0-9]\+[ \t]\+/d;' | \
321
+ awk '{ print $3","$1 }' | sort
256
322
  }
257
323
 
258
324
  #
@@ -261,7 +327,7 @@ function dump_sys_mips() {
261
327
  # Dump the library's syscall table to stdout.
262
328
  #
263
329
  function dump_lib_mips() {
264
- dump_lib_arch mips 4000
330
+ dump_lib_arch mips | mangle_lib_syscall mips
265
331
  }
266
332
 
267
333
  #
@@ -273,23 +339,11 @@ function dump_lib_mips() {
273
339
  # Dump the architecture's syscall table to stdout.
274
340
  #
275
341
  function dump_sys_mips64() {
276
- pushd $1 2>&1 > /dev/null
277
- make ARCH=mips archheaders
278
- popd 2>&1 > /dev/null
279
- # _MIPS_SIM values:
280
- # _MIPS_SIM_ABI32 == 1
281
- # _MIPS_SIM_NABI32 == 2
282
- # _MIPS_SIM_ABI64 == 3
283
- gcc -E -dM -I$1/arch/mips/include/uapi -I$1/arch/mips/include/generated/uapi -D_MIPS_SIM=3 $1/arch/mips/include/uapi/asm/unistd.h | \
284
- grep "^#define __NR_" | \
285
- grep -v "^#define __NR_O32_" | \
286
- grep -v "^#define __NR_N32_" | \
287
- grep -v "^#define __NR_64_" | \
288
- grep -v "^#define __NR_Linux" | \
289
- grep -v "^#define __NR_unused" | \
290
- grep -v "^#define __NR_reserved" | \
291
- sed -e 's/#define[ \t]\+__NR_\([^ \t]\+\)[ \t]\+(__NR_Linux[ \t]*+[ \t]*\([0-9]\+\)).*/\1\t\2/' | \
292
- sort
342
+ cat $1/arch/mips/kernel/syscalls/syscall_n64.tbl | \
343
+ grep -v "^#" | \
344
+ sed -e '/[ \t]\+reserved[0-9]\+[ \t]\+/d;' | \
345
+ sed -e '/[ \t]\+unused[0-9]\+[ \t]\+/d;' | \
346
+ awk '{ print $3","$1 }' | sort
293
347
  }
294
348
 
295
349
  #
@@ -298,7 +352,7 @@ function dump_sys_mips64() {
298
352
  # Dump the library's syscall table to stdout.
299
353
  #
300
354
  function dump_lib_mips64() {
301
- dump_lib_arch mips64 5000
355
+ dump_lib_arch mips64 | mangle_lib_syscall mips64
302
356
  }
303
357
 
304
358
  #
@@ -310,23 +364,11 @@ function dump_lib_mips64() {
310
364
  # Dump the architecture's syscall table to stdout.
311
365
  #
312
366
  function dump_sys_mips64n32() {
313
- pushd $1 2>&1 > /dev/null
314
- make ARCH=mips archheaders
315
- popd 2>&1 > /dev/null
316
- # _MIPS_SIM values:
317
- # _MIPS_SIM_ABI32 == 1
318
- # _MIPS_SIM_NABI32 == 2
319
- # _MIPS_SIM_ABI64 == 3
320
- gcc -E -dM -I$1/arch/mips/include/uapi -I$1/arch/mips/include/generated/uapi -D_MIPS_SIM=2 $1/arch/mips/include/uapi/asm/unistd.h | \
321
- grep "^#define __NR_" | \
322
- grep -v "^#define __NR_O32_" | \
323
- grep -v "^#define __NR_N32_" | \
324
- grep -v "^#define __NR_64_" | \
325
- grep -v "^#define __NR_Linux" | \
326
- grep -v "^#define __NR_unused" | \
327
- grep -v "^#define __NR_reserved" | \
328
- sed -e 's/#define[ \t]\+__NR_\([^ \t]\+\)[ \t]\+(__NR_Linux[ \t]*+[ \t]*\([0-9]\+\)).*/\1\t\2/' | \
329
- sort
367
+ cat $1/arch/mips/kernel/syscalls/syscall_n32.tbl | \
368
+ grep -v "^#" | \
369
+ sed -e '/[ \t]\+reserved[0-9]\+[ \t]\+/d;' | \
370
+ sed -e '/[ \t]\+unused[0-9]\+[ \t]\+/d;' | \
371
+ awk '{ print $3","$1 }' | sort
330
372
  }
331
373
 
332
374
  #
@@ -335,7 +377,57 @@ function dump_sys_mips64n32() {
335
377
  # Dump the library's syscall table to stdout.
336
378
  #
337
379
  function dump_lib_mips64n32() {
338
- dump_lib_arch mips64n32 6000
380
+ dump_lib_arch mips64n32 | mangle_lib_syscall mips64n32
381
+ }
382
+
383
+ #
384
+ # Dump the parisc system syscall table
385
+ #
386
+ # Arguments:
387
+ # 1 path to the kernel source
388
+ #
389
+ # Dump the architecture's syscall table to stdout.
390
+ #
391
+ function dump_sys_parisc() {
392
+ cat $1/arch/parisc/kernel/syscalls/syscall.tbl | \
393
+ grep -v "^#" | \
394
+ sed -n "/[0-9]\+[ \t]\+\(common\|32\)/p" | \
395
+ awk '{ print $3","$1 }' | \
396
+ sort
397
+ }
398
+
399
+ #
400
+ # Dump the parisc library syscall table
401
+ #
402
+ # Dump the library's syscall table to stdout.
403
+ #
404
+ function dump_lib_parisc() {
405
+ dump_lib_arch parisc | mangle_lib_syscall parisc
406
+ }
407
+
408
+ #
409
+ # Dump the parisc64 system syscall table
410
+ #
411
+ # Arguments:
412
+ # 1 path to the kernel source
413
+ #
414
+ # Dump the architecture's syscall table to stdout.
415
+ #
416
+ function dump_sys_parisc64() {
417
+ cat $1/arch/parisc/kernel/syscalls/syscall.tbl | \
418
+ grep -v "^#" | \
419
+ sed -n "/[0-9]\+[ \t]\+\(common\|64\)/p" | \
420
+ awk '{ print $3","$1 }' | \
421
+ sort
422
+ }
423
+
424
+ #
425
+ # Dump the parisc64 library syscall table
426
+ #
427
+ # Dump the library's syscall table to stdout.
428
+ #
429
+ function dump_lib_parisc64() {
430
+ dump_lib_arch parisc64 | mangle_lib_syscall parisc64
339
431
  }
340
432
 
341
433
  #
@@ -349,11 +441,7 @@ function dump_lib_mips64n32() {
349
441
  function dump_sys_ppc() {
350
442
  cat $1/arch/powerpc/kernel/syscalls/syscall.tbl | grep -v "^#" | \
351
443
  sed -ne "/[0-9]\+[ \t]\+\(common\|nospu\|32\)/p" | \
352
- awk '{ print $3"\t"$1 }' | sort | (cat -; \
353
- (cat $1/arch/powerpc/include/uapi/asm/unistd.h | \
354
- grep "^#define __PPC_NR_" | grep -v "^#define __PPC_NR_BASE" | \
355
- sed -e 's/#define _PPC_NR_\([a-z0-9_]*\)[ \t]\+(__PPC_NR_BASE+\(.*\))/\1 983040 + \2/' | \
356
- awk '{ print $1"\t"$2+$4 }')) | sort
444
+ awk '{ print $3","$1 }' | sort
357
445
  }
358
446
 
359
447
  #
@@ -362,7 +450,7 @@ function dump_sys_ppc() {
362
450
  # Dump the library's syscall table to stdout.
363
451
  #
364
452
  function dump_lib_ppc() {
365
- dump_lib_arch ppc
453
+ dump_lib_arch ppc | mangle_lib_syscall ppc
366
454
  }
367
455
 
368
456
  #
@@ -376,11 +464,7 @@ function dump_lib_ppc() {
376
464
  function dump_sys_ppc64() {
377
465
  cat $1/arch/powerpc/kernel/syscalls/syscall.tbl | grep -v "^#" | \
378
466
  sed -ne "/[0-9]\+[ \t]\+\(common\|nospu\|64\)/p" | \
379
- awk '{ print $3"\t"$1 }' | sort | (cat -; \
380
- (cat $1/arch/powerpc/include/uapi/asm/unistd.h | \
381
- grep "^#define __PPC_NR_" | grep -v "^#define __PPC_NR_BASE" | \
382
- sed -e 's/#define _PPC_NR_\([a-z0-9_]*\)[ \t]\+(__PPC_NR_BASE+\(.*\))/\1 983040 + \2/' | \
383
- awk '{ print $1"\t"$2+$4 }')) | sort
467
+ awk '{ print $3","$1 }' | sort
384
468
  }
385
469
 
386
470
  #
@@ -389,7 +473,50 @@ function dump_sys_ppc64() {
389
473
  # Dump the library's syscall table to stdout.
390
474
  #
391
475
  function dump_lib_ppc64() {
392
- dump_lib_arch ppc64
476
+ dump_lib_arch ppc64 | mangle_lib_syscall ppc64
477
+ }
478
+
479
+ #
480
+ # Dump the riscv64 system syscall table
481
+ #
482
+ # Arguments:
483
+ # 1 path to the kernel source
484
+ #
485
+ # Dump the architecture's syscall table to stdout.
486
+ #
487
+ function dump_sys_riscv64() {
488
+ local sed_filter=""
489
+
490
+ sed_filter+='s/__NR3264_fadvise64/223/;'
491
+ sed_filter+='s/__NR3264_fcntl/25/;'
492
+ sed_filter+='s/__NR3264_fstatat/79/;'
493
+ sed_filter+='s/__NR3264_fstatfs/44/;'
494
+ sed_filter+='s/__NR3264_ftruncate/46/;'
495
+ sed_filter+='s/__NR3264_lseek/62/;'
496
+ sed_filter+='s/__NR3264_mmap/222/;'
497
+ sed_filter+='s/__NR3264_sendfile/71/;'
498
+ sed_filter+='s/__NR3264_statfs/43/;'
499
+ sed_filter+='s/__NR3264_truncate/45/;'
500
+ sed_filter+='s/__NR3264_fstat/80/;'
501
+
502
+ gcc -E -dM -I$1/include/uapi \
503
+ -D__BITS_PER_LONG=64 -D__ARCH_WANT_NEW_STAT \
504
+ $1/arch/riscv/include/uapi/asm/unistd.h | \
505
+ grep "^#define __NR_" | \
506
+ sed '/__NR_syscalls/d' | \
507
+ sed 's/(__NR_arch_specific_syscall + 15)/259/' | \
508
+ sed '/__NR_arch_specific_syscall/d' | \
509
+ sed 's/#define[ \t]\+__NR_\([^ \t]\+\)[ \t]\+\(.*\)/\1,\2/' | \
510
+ sed $sed_filter | sort
511
+ }
512
+
513
+ #
514
+ # Dump the riscv64 library syscall table
515
+ #
516
+ # Dump the library's syscall table to stdout.
517
+ #
518
+ function dump_lib_riscv64() {
519
+ dump_lib_arch riscv64 | mangle_lib_syscall riscv64
393
520
  }
394
521
 
395
522
  #
@@ -403,11 +530,8 @@ function dump_lib_ppc64() {
403
530
  function dump_sys_s390() {
404
531
  cat $1/arch/s390/kernel/syscalls/syscall.tbl | grep -v "^#" | \
405
532
  sed -ne "/[0-9]\+[ \t]\+\(common\|32\)/p" | \
406
- awk '{ print $3"\t"$1 }' | sort | (cat -; \
407
- (cat $1/arch/s390/include/uapi/asm/unistd.h | \
408
- grep "^#define __PPC_NR_" | grep -v "^#define __PPC_NR_BASE" | \
409
- sed -e 's/#define _PPC_NR_\([a-z0-9_]*\)[ \t]\+(__PPC_NR_BASE+\(.*\))/\1 983040 + \2/' | \
410
- awk '{ print $1"\t"$2+$4 }')) | sort
533
+ awk '{ print $3","$1 }' | \
534
+ sort
411
535
  }
412
536
 
413
537
  #
@@ -416,7 +540,7 @@ function dump_sys_s390() {
416
540
  # Dump the library's syscall table to stdout.
417
541
  #
418
542
  function dump_lib_s390() {
419
- dump_lib_arch s390
543
+ dump_lib_arch s390 | mangle_lib_syscall s390
420
544
  }
421
545
 
422
546
  #
@@ -430,11 +554,8 @@ function dump_lib_s390() {
430
554
  function dump_sys_s390x() {
431
555
  cat $1/arch/s390/kernel/syscalls/syscall.tbl | grep -v "^#" | \
432
556
  sed -ne "/[0-9]\+[ \t]\+\(common\|64\)/p" | \
433
- awk '{ print $3"\t"$1 }' | sort | (cat -; \
434
- (cat $1/arch/s390/include/uapi/asm/unistd.h | \
435
- grep "^#define __PPC_NR_" | grep -v "^#define __PPC_NR_BASE" | \
436
- sed -e 's/#define _PPC_NR_\([a-z0-9_]*\)[ \t]\+(__PPC_NR_BASE+\(.*\))/\1 983040 + \2/' | \
437
- awk '{ print $1"\t"$2+$4 }')) | sort
557
+ awk '{ print $3","$1 }' | \
558
+ sort
438
559
  }
439
560
 
440
561
  #
@@ -443,7 +564,7 @@ function dump_sys_s390x() {
443
564
  # Dump the library's syscall table to stdout.
444
565
  #
445
566
  function dump_lib_s390x() {
446
- dump_lib_arch s390x
567
+ dump_lib_arch s390x | mangle_lib_syscall s390x
447
568
  }
448
569
 
449
570
  #
@@ -481,12 +602,21 @@ function dump_sys() {
481
602
  mips64n32)
482
603
  dump_sys_mips64n32 "$2"
483
604
  ;;
605
+ parisc)
606
+ dump_sys_parisc "$2"
607
+ ;;
608
+ parisc64)
609
+ dump_sys_parisc64 "$2"
610
+ ;;
484
611
  ppc)
485
612
  dump_sys_ppc "$2"
486
613
  ;;
487
614
  ppc64)
488
615
  dump_sys_ppc64 "$2"
489
616
  ;;
617
+ riscv64)
618
+ dump_sys_riscv64 "$2"
619
+ ;;
490
620
  s390)
491
621
  dump_sys_s390 "$2"
492
622
  ;;
@@ -536,17 +666,26 @@ function dump_lib() {
536
666
  mips64n32)
537
667
  dump_lib_mips64n32
538
668
  ;;
669
+ parisc)
670
+ dump_lib_parisc
671
+ ;;
672
+ parisc64)
673
+ dump_lib_parisc64
674
+ ;;
539
675
  ppc)
540
- dump_lib_ppc "$2"
676
+ dump_lib_ppc
541
677
  ;;
542
678
  ppc64)
543
- dump_lib_ppc64 "$2"
679
+ dump_lib_ppc64
680
+ ;;
681
+ riscv64)
682
+ dump_lib_riscv64
544
683
  ;;
545
684
  s390)
546
- dump_lib_s390 "$2"
685
+ dump_lib_s390
547
686
  ;;
548
687
  s390x)
549
- dump_lib_s390x "$2"
688
+ dump_lib_s390x
550
689
  ;;
551
690
  *)
552
691
  echo ""
@@ -557,6 +696,69 @@ function dump_lib() {
557
696
  return 0
558
697
  }
559
698
 
699
+ #
700
+ # Generate the syscall csv file
701
+ #
702
+ # Arguments:
703
+ # 1 path to the kernel source
704
+ # 2 "sys" or "lib" depending on the syscall list to use
705
+ #
706
+ # Generare a syscall csv file from the given kernel sources.
707
+ #
708
+ function gen_csv() {
709
+
710
+ # sanity checks
711
+ [[ -z $1 ]] && return
712
+ [[ $2 != "sys" && $2 != "lib" ]] && return
713
+
714
+ # abi list
715
+ # NOTE: the ordering here is dependent on the layout of the
716
+ # arch_syscall_table struct in syscalls.h - BEWARE!
717
+ abi_list=""
718
+ abi_list+=" x86 x86_64 x32"
719
+ abi_list+=" arm aarch64"
720
+ abi_list+=" mips mips64 mips64n32"
721
+ abi_list+=" parisc parisc64"
722
+ abi_list+=" ppc ppc64"
723
+ abi_list+=" riscv64"
724
+ abi_list+=" s390 s390x"
725
+
726
+ # get the full syscall list
727
+ for abi in $abi_list; do
728
+ eval output_$abi=$(mktemp -t syscall_validate_XXXXXX)
729
+ dump_$2_$abi "$1" > $(eval echo $`eval echo output_$abi`)
730
+ done
731
+ sc_list=$((for abi in $abi_list; do
732
+ cat $(eval echo $`eval echo output_$abi`);
733
+ done) | awk -F "," '{ print $1 }' | sort -u)
734
+
735
+ # output a simple header
736
+ printf "#syscall (v%s %s)" \
737
+ "$(kernel_version "$1")" "$(TZ=UTC date "+%Y-%m-%d")"
738
+ for abi in $abi_list; do
739
+ printf ",%s" $abi
740
+ done
741
+ printf "\n"
742
+
743
+ # output the syscall csv details
744
+ for sc in $sc_list; do
745
+ printf "%s" $sc
746
+ for abi in $abi_list; do
747
+ num=$(grep "^$sc," \
748
+ $(eval echo $`eval echo output_$abi`) | \
749
+ awk -F "," '{ print $2 }' )
750
+ [[ -z $num ]] && num="PNR"
751
+ printf ",%s" $num
752
+ done
753
+ printf "\n"
754
+ done
755
+
756
+ # cleanup
757
+ for abi in $abi_list; do
758
+ rm -f $(eval echo $`eval echo output_$abi`)
759
+ done
760
+ }
761
+
560
762
  ####
561
763
  # main
562
764
 
@@ -571,14 +773,18 @@ if [[ ! -x $LIB_SYS_DUMP ]]; then
571
773
  fi
572
774
 
573
775
  opt_arches=""
574
- opt_sys=""
575
- opt_lib=""
776
+ opt_csv=0
777
+ opt_sys=0
778
+ opt_lib=0
576
779
 
577
- while getopts "a:slh" opt; do
780
+ while getopts "a:cslh" opt; do
578
781
  case $opt in
579
782
  a)
580
783
  opt_arches+="$OPTARG "
581
784
  ;;
785
+ c)
786
+ opt_csv=1
787
+ ;;
582
788
  s)
583
789
  opt_sys=1
584
790
  opt_lib=0
@@ -601,6 +807,7 @@ if [[ $opt_arches == "" ]]; then
601
807
  x86 x86_64 x32 \
602
808
  arm aarch64 \
603
809
  mips mips64 mips64n32 \
810
+ parisc parisc64 \
604
811
  ppc ppc64 \
605
812
  s390 s390x"
606
813
  fi
@@ -620,30 +827,39 @@ fi
620
827
  tmp_lib=$(mktemp -t syscall_validate_XXXXXX)
621
828
  tmp_sys=$(mktemp -t syscall_validate_XXXXXX)
622
829
 
623
- # loop through the architectures and compare
624
- for i in $opt_arches; do
625
- # dump the syscall tables
626
- dump_lib $i > $tmp_lib
627
- if [[ $? -ne 0 ]]; then
628
- echo "error: unknown arch $i"
629
- exit 1
630
- fi
631
- dump_sys $i "$kernel_dir" > $tmp_sys
632
- if [[ $? -ne 0 ]]; then
633
- echo "error: unknown arch $i"
634
- exit 1
635
- fi
636
-
830
+ if [[ $opt_csv -eq 1 ]]; then
831
+ # generate the syscall csv file
637
832
  if [[ $opt_lib -eq 1 ]]; then
638
- cat $tmp_lib
639
- elif [[ $opt_sys -eq 1 ]]; then
640
- cat $tmp_sys
833
+ gen_csv $kernel_dir "lib"
641
834
  else
642
- # compare the lib and sys output
643
- diff -u --label="$i [library]" $tmp_lib \
644
- --label "$i [system]" $tmp_sys
835
+ gen_csv $kernel_dir "sys"
645
836
  fi
646
- done
837
+ else
838
+ # loop through the architectures and compare
839
+ for i in $opt_arches; do
840
+ # dump the syscall tables
841
+ dump_lib $i > $tmp_lib
842
+ if [[ $? -ne 0 ]]; then
843
+ echo "error: unknown arch $i"
844
+ exit 1
845
+ fi
846
+ dump_sys $i "$kernel_dir" > $tmp_sys
847
+ if [[ $? -ne 0 ]]; then
848
+ echo "error: unknown arch $i"
849
+ exit 1
850
+ fi
851
+
852
+ if [[ $opt_lib -eq 1 ]]; then
853
+ cat $tmp_lib
854
+ elif [[ $opt_sys -eq 1 ]]; then
855
+ cat $tmp_sys
856
+ else
857
+ # compare the lib and sys output
858
+ diff -u --label="$i [library]" $tmp_lib \
859
+ --label "$i [system]" $tmp_sys
860
+ fi
861
+ done
862
+ fi
647
863
 
648
864
  # cleanup and exit
649
865
  rm -f $tmp_lib $tmp_sys