script_core 0.2.2 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
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