ffi 1.15.5 → 1.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (343) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +118 -0
  4. data/Gemfile +10 -3
  5. data/README.md +4 -3
  6. data/Rakefile +25 -10
  7. data/ext/ffi_c/AbstractMemory.c +99 -74
  8. data/ext/ffi_c/AbstractMemory.h +3 -2
  9. data/ext/ffi_c/ArrayType.c +51 -15
  10. data/ext/ffi_c/ArrayType.h +1 -0
  11. data/ext/ffi_c/Buffer.c +90 -33
  12. data/ext/ffi_c/Call.c +29 -12
  13. data/ext/ffi_c/Call.h +3 -2
  14. data/ext/ffi_c/DynamicLibrary.c +90 -27
  15. data/ext/ffi_c/Function.c +244 -98
  16. data/ext/ffi_c/Function.h +1 -0
  17. data/ext/ffi_c/FunctionInfo.c +81 -25
  18. data/ext/ffi_c/LastError.c +29 -11
  19. data/ext/ffi_c/MappedType.c +66 -23
  20. data/ext/ffi_c/MappedType.h +0 -2
  21. data/ext/ffi_c/MemoryPointer.c +36 -9
  22. data/ext/ffi_c/MethodHandle.c +3 -1
  23. data/ext/ffi_c/Pointer.c +82 -40
  24. data/ext/ffi_c/Pointer.h +1 -0
  25. data/ext/ffi_c/Struct.c +166 -84
  26. data/ext/ffi_c/Struct.h +7 -4
  27. data/ext/ffi_c/StructByValue.c +48 -16
  28. data/ext/ffi_c/StructLayout.c +130 -61
  29. data/ext/ffi_c/Type.c +120 -51
  30. data/ext/ffi_c/Type.h +3 -1
  31. data/ext/ffi_c/Types.c +8 -2
  32. data/ext/ffi_c/Types.h +0 -1
  33. data/ext/ffi_c/Variadic.c +71 -26
  34. data/ext/ffi_c/compat.h +22 -22
  35. data/ext/ffi_c/extconf.rb +19 -2
  36. data/ext/ffi_c/ffi.c +4 -0
  37. data/ext/ffi_c/libffi/.allow-ai-service +0 -0
  38. data/ext/ffi_c/libffi/.appveyor/site.exp +16 -0
  39. data/ext/ffi_c/libffi/.appveyor/unix-noexec.exp +7 -0
  40. data/ext/ffi_c/libffi/.appveyor.yml +27 -9
  41. data/ext/ffi_c/libffi/.ci/build-cross-in-container.sh +18 -0
  42. data/ext/ffi_c/libffi/{.travis → .ci}/build-in-container.sh +4 -6
  43. data/ext/ffi_c/libffi/.ci/build.sh +124 -0
  44. data/ext/ffi_c/libffi/{.travis → .ci}/install.sh +14 -7
  45. data/ext/ffi_c/libffi/.ci/msvs-detect +1103 -0
  46. data/ext/ffi_c/libffi/{.travis → .ci}/site.exp +5 -3
  47. data/ext/ffi_c/libffi/.circleci/config.yml +156 -0
  48. data/ext/ffi_c/libffi/.github/workflows/build.yml +479 -0
  49. data/ext/ffi_c/libffi/.github/workflows/emscripten.yml +172 -0
  50. data/ext/ffi_c/libffi/.gitignore +10 -2
  51. data/ext/ffi_c/libffi/LICENSE +1 -1
  52. data/ext/ffi_c/libffi/Makefile.am +12 -5
  53. data/ext/ffi_c/libffi/Makefile.in +118 -51
  54. data/ext/ffi_c/libffi/README.md +150 -105
  55. data/ext/ffi_c/libffi/acinclude.m4 +10 -112
  56. data/ext/ffi_c/libffi/compile +348 -0
  57. data/ext/ffi_c/libffi/config.guess +623 -556
  58. data/ext/ffi_c/libffi/config.sub +75 -34
  59. data/ext/ffi_c/libffi/configure +4571 -3830
  60. data/ext/ffi_c/libffi/configure.ac +64 -28
  61. data/ext/ffi_c/libffi/configure.host +26 -7
  62. data/ext/ffi_c/libffi/doc/Makefile.in +9 -6
  63. data/ext/ffi_c/libffi/doc/libffi.texi +82 -33
  64. data/ext/ffi_c/libffi/doc/version.texi +4 -4
  65. data/ext/ffi_c/libffi/fficonfig.h.in +12 -47
  66. data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +163 -52
  67. data/ext/ffi_c/libffi/include/Makefile.am +1 -1
  68. data/ext/ffi_c/libffi/include/Makefile.in +10 -9
  69. data/ext/ffi_c/libffi/include/ffi.h.in +55 -60
  70. data/ext/ffi_c/libffi/include/ffi_cfi.h +21 -0
  71. data/ext/ffi_c/libffi/include/ffi_common.h +33 -2
  72. data/ext/ffi_c/libffi/include/tramp.h +45 -0
  73. data/ext/ffi_c/libffi/install-sh +92 -69
  74. data/ext/ffi_c/libffi/libffi.map.in +5 -0
  75. data/ext/ffi_c/libffi/libtool-version +2 -2
  76. data/ext/ffi_c/libffi/ltmain.sh +518 -333
  77. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +18 -14
  78. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +108 -72
  79. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +76 -45
  80. data/ext/ffi_c/libffi/m4/ax_prepend_flag.m4 +51 -0
  81. data/ext/ffi_c/libffi/man/Makefile.in +9 -6
  82. data/ext/ffi_c/libffi/missing +1 -1
  83. data/ext/ffi_c/libffi/msvc_build/aarch64/aarch64_include/ffi.h +2 -2
  84. data/ext/ffi_c/libffi/msvcc.sh +1 -1
  85. data/ext/ffi_c/libffi/src/aarch64/ffi.c +172 -55
  86. data/ext/ffi_c/libffi/src/aarch64/internal.h +32 -0
  87. data/ext/ffi_c/libffi/src/aarch64/sysv.S +331 -87
  88. data/ext/ffi_c/libffi/src/arc/arcompact.S +169 -94
  89. data/ext/ffi_c/libffi/src/arc/ffi.c +325 -148
  90. data/ext/ffi_c/libffi/src/arc/ffitarget.h +14 -0
  91. data/ext/ffi_c/libffi/src/arm/ffi.c +62 -17
  92. data/ext/ffi_c/libffi/src/arm/ffitarget.h +3 -3
  93. data/ext/ffi_c/libffi/src/arm/internal.h +10 -0
  94. data/ext/ffi_c/libffi/src/arm/sysv.S +113 -42
  95. data/ext/ffi_c/libffi/src/closures.c +136 -50
  96. data/ext/ffi_c/libffi/src/debug.c +2 -2
  97. data/ext/ffi_c/libffi/src/dlmalloc.c +6 -1
  98. data/ext/ffi_c/libffi/src/ia64/ffi.c +12 -0
  99. data/ext/ffi_c/libffi/src/ia64/unix.S +20 -2
  100. data/ext/ffi_c/libffi/src/loongarch64/ffi.c +624 -0
  101. data/ext/ffi_c/libffi/src/loongarch64/ffitarget.h +82 -0
  102. data/ext/ffi_c/libffi/src/loongarch64/sysv.S +327 -0
  103. data/ext/ffi_c/libffi/src/m32r/ffi.c +31 -14
  104. data/ext/ffi_c/libffi/src/mips/ffi.c +250 -67
  105. data/ext/ffi_c/libffi/src/mips/ffitarget.h +7 -0
  106. data/ext/ffi_c/libffi/src/mips/n32.S +193 -33
  107. data/ext/ffi_c/libffi/src/mips/o32.S +61 -4
  108. data/ext/ffi_c/libffi/src/moxie/ffi.c +47 -22
  109. data/ext/ffi_c/libffi/src/or1k/ffi.c +25 -12
  110. data/ext/ffi_c/libffi/src/pa/ffi.c +32 -33
  111. data/ext/ffi_c/libffi/src/pa/ffi64.c +614 -0
  112. data/ext/ffi_c/libffi/src/pa/ffitarget.h +22 -8
  113. data/ext/ffi_c/libffi/src/pa/hpux32.S +83 -36
  114. data/ext/ffi_c/libffi/src/pa/hpux64.S +681 -0
  115. data/ext/ffi_c/libffi/src/pa/linux.S +82 -35
  116. data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +36 -24
  117. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +1 -1
  118. data/ext/ffi_c/libffi/src/powerpc/linux64.S +2 -0
  119. data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +2 -0
  120. data/ext/ffi_c/libffi/src/powerpc/t-aix +5 -0
  121. data/ext/ffi_c/libffi/src/prep_cif.c +22 -2
  122. data/ext/ffi_c/libffi/src/riscv/ffi.c +37 -4
  123. data/ext/ffi_c/libffi/src/sparc/ffi64.c +23 -1
  124. data/ext/ffi_c/libffi/src/tramp.c +716 -0
  125. data/ext/ffi_c/libffi/src/types.c +4 -6
  126. data/ext/ffi_c/libffi/src/wasm32/ffi.c +947 -0
  127. data/ext/ffi_c/libffi/src/wasm32/ffitarget.h +62 -0
  128. data/ext/ffi_c/libffi/src/x86/ffi.c +99 -37
  129. data/ext/ffi_c/libffi/src/x86/ffi64.c +67 -12
  130. data/ext/ffi_c/libffi/src/x86/ffitarget.h +9 -5
  131. data/ext/ffi_c/libffi/src/x86/ffiw64.c +44 -1
  132. data/ext/ffi_c/libffi/src/x86/internal.h +14 -0
  133. data/ext/ffi_c/libffi/src/x86/internal64.h +14 -0
  134. data/ext/ffi_c/libffi/src/x86/sysv.S +172 -38
  135. data/ext/ffi_c/libffi/src/x86/sysv_intel.S +91 -88
  136. data/ext/ffi_c/libffi/src/x86/unix64.S +96 -6
  137. data/ext/ffi_c/libffi/src/x86/win64.S +20 -7
  138. data/ext/ffi_c/libffi/src/xtensa/ffi.c +16 -8
  139. data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +4 -0
  140. data/ext/ffi_c/libffi/src/xtensa/sysv.S +26 -16
  141. data/ext/ffi_c/libffi/testsuite/Makefile.am +79 -114
  142. data/ext/ffi_c/libffi/testsuite/Makefile.in +89 -121
  143. data/ext/ffi_c/libffi/testsuite/emscripten/build-tests.sh +54 -0
  144. data/ext/ffi_c/libffi/testsuite/emscripten/build.sh +63 -0
  145. data/ext/ffi_c/libffi/testsuite/emscripten/conftest.py +86 -0
  146. data/ext/ffi_c/libffi/testsuite/emscripten/node-tests.sh +48 -0
  147. data/ext/ffi_c/libffi/testsuite/emscripten/test.html +7 -0
  148. data/ext/ffi_c/libffi/testsuite/emscripten/test_libffi.py +51 -0
  149. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +43 -21
  150. data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +2 -2
  151. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +1 -0
  152. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +5 -1
  153. data/ext/ffi_c/libffi/testsuite/libffi.call/bpo_38748.c +41 -0
  154. data/ext/ffi_c/libffi/testsuite/libffi.call/callback.c +99 -0
  155. data/ext/ffi_c/libffi/testsuite/libffi.call/callback2.c +108 -0
  156. data/ext/ffi_c/libffi/testsuite/libffi.call/callback3.c +114 -0
  157. data/ext/ffi_c/libffi/testsuite/libffi.call/callback4.c +119 -0
  158. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +28 -3
  159. data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +3 -0
  160. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +5 -0
  161. data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +4 -0
  162. data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +4 -0
  163. data/ext/ffi_c/libffi/testsuite/libffi.call/s55.c +60 -0
  164. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +8 -9
  165. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +2 -2
  166. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +2 -2
  167. data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +2 -2
  168. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +1 -1
  169. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_2.c +63 -0
  170. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3.c +65 -0
  171. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_3f.c +65 -0
  172. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4.c +67 -0
  173. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_4f.c +67 -0
  174. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_big.c +93 -0
  175. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_by_value_small.c +61 -0
  176. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_2H.c +63 -0
  177. data/ext/ffi_c/libffi/testsuite/libffi.call/struct_return_8H.c +90 -0
  178. data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +1 -119
  179. data/ext/ffi_c/libffi/testsuite/libffi.call/va_2.c +220 -0
  180. data/ext/ffi_c/libffi/testsuite/libffi.call/va_3.c +154 -0
  181. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +13 -0
  182. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +11 -0
  183. data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +15 -0
  184. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn0.c +3 -2
  185. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn1.c +2 -0
  186. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn2.c +2 -0
  187. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn3.c +21 -1
  188. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn4.c +2 -0
  189. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn5.c +2 -0
  190. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_fn6.c +2 -0
  191. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_loc_fn0.c +7 -6
  192. data/ext/ffi_c/libffi/testsuite/libffi.closures/closure_simple.c +6 -0
  193. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_12byte.c +18 -0
  194. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_16byte.c +22 -0
  195. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_18byte.c +24 -0
  196. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_19byte.c +29 -0
  197. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_1_1byte.c +4 -0
  198. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte.c +19 -1
  199. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_20byte1.c +21 -1
  200. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_24byte.c +35 -3
  201. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_2byte.c +13 -0
  202. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3_1byte.c +19 -0
  203. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte1.c +13 -0
  204. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3byte2.c +13 -0
  205. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_3float.c +18 -0
  206. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4_1byte.c +22 -0
  207. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_4byte.c +13 -0
  208. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5_1_byte.c +29 -1
  209. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_5byte.c +19 -1
  210. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_64byte.c +24 -0
  211. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6_1_byte.c +28 -1
  212. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_6byte.c +24 -2
  213. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7_1_byte.c +39 -1
  214. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_7byte.c +25 -1
  215. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_8byte.c +14 -0
  216. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte1.c +14 -1
  217. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_9byte2.c +14 -2
  218. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_double.c +19 -1
  219. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_float.c +19 -1
  220. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble.c +20 -1
  221. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split.c +40 -25
  222. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_longdouble_split2.c +40 -3
  223. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_pointer.c +19 -1
  224. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint16.c +18 -1
  225. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint32.c +18 -3
  226. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_sint64.c +18 -1
  227. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint16.c +18 -1
  228. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint32.c +19 -1
  229. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_align_uint64.c +19 -1
  230. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_dbls_struct.c +3 -1
  231. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_double_va.c +9 -1
  232. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_float.c +4 -0
  233. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble.c +11 -1
  234. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_longdouble_va.c +22 -3
  235. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_schar.c +5 -1
  236. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshort.c +6 -1
  237. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_sshortchar.c +9 -1
  238. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_uchar.c +9 -1
  239. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushort.c +6 -2
  240. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_multi_ushortchar.c +9 -1
  241. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer.c +5 -0
  242. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_pointer_stack.c +10 -0
  243. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_schar.c +3 -0
  244. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sint.c +2 -0
  245. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_sshort.c +3 -0
  246. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_struct_va1.c +11 -0
  247. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar.c +3 -0
  248. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint.c +4 -0
  249. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uint_va.c +4 -0
  250. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulong_va.c +4 -0
  251. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ulonglong.c +2 -0
  252. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort.c +3 -0
  253. data/ext/ffi_c/libffi/testsuite/libffi.closures/ffitest.h +1 -138
  254. data/ext/ffi_c/libffi/testsuite/libffi.closures/huge_struct.c +21 -21
  255. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct.c +32 -9
  256. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct1.c +1 -1
  257. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct10.c +12 -0
  258. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct11.c +21 -5
  259. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct12.c +86 -0
  260. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct13.c +115 -0
  261. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct2.c +10 -1
  262. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct3.c +10 -1
  263. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct4.c +9 -0
  264. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct5.c +9 -0
  265. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct6.c +11 -0
  266. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct7.c +9 -0
  267. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct8.c +11 -0
  268. data/ext/ffi_c/libffi/testsuite/libffi.closures/nested_struct9.c +11 -0
  269. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs1.c +86 -0
  270. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs2.c +102 -0
  271. data/ext/ffi_c/libffi/testsuite/libffi.closures/single_entry_structs3.c +101 -0
  272. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium.c +1 -1
  273. data/ext/ffi_c/libffi/testsuite/libffi.closures/stret_medium2.c +1 -1
  274. data/ext/ffi_c/libffi/testsuite/libffi.closures/testclosure.c +6 -1
  275. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest.cc +2 -1
  276. data/ext/ffi_c/libffi/testsuite/libffi.closures/unwindtest_ffi_call.cc +1 -0
  277. data/ext/ffi_c/libffi.bsd.mk +2 -2
  278. data/ext/ffi_c/libffi.darwin.mk +2 -2
  279. data/ext/ffi_c/libffi.gnu.mk +2 -2
  280. data/ext/ffi_c/rbffi.h +1 -1
  281. data/ffi.gemspec +3 -3
  282. data/lib/ffi/autopointer.rb +8 -31
  283. data/lib/ffi/compat.rb +43 -0
  284. data/lib/ffi/data_converter.rb +2 -2
  285. data/lib/ffi/dynamic_library.rb +118 -0
  286. data/lib/ffi/enum.rb +18 -12
  287. data/lib/ffi/ffi.rb +3 -0
  288. data/lib/ffi/function.rb +71 -0
  289. data/lib/ffi/io.rb +2 -2
  290. data/lib/ffi/library.rb +72 -88
  291. data/lib/ffi/library_path.rb +109 -0
  292. data/lib/ffi/managedstruct.rb +1 -1
  293. data/lib/ffi/platform/aarch64-linux/types.conf +74 -3
  294. data/lib/ffi/platform/aarch64-windows/types.conf +52 -0
  295. data/lib/ffi/platform/hppa1.1-linux/types.conf +178 -0
  296. data/lib/ffi/platform/hppa2.0-linux/types.conf +178 -0
  297. data/lib/ffi/platform/loongarch64-linux/types.conf +141 -0
  298. data/lib/ffi/platform/sw_64-linux/types.conf +141 -0
  299. data/lib/ffi/platform.rb +15 -13
  300. data/lib/ffi/pointer.rb +6 -6
  301. data/lib/ffi/struct.rb +6 -5
  302. data/lib/ffi/struct_layout.rb +3 -3
  303. data/lib/ffi/struct_layout_builder.rb +9 -9
  304. data/lib/ffi/types.rb +65 -37
  305. data/lib/ffi/variadic.rb +19 -8
  306. data/lib/ffi/version.rb +1 -1
  307. data/samples/hello_ractor.rb +11 -0
  308. data/samples/qsort_ractor.rb +28 -0
  309. data/sig/ffi/abstract_memory.rbs +165 -0
  310. data/sig/ffi/auto_pointer.rbs +27 -0
  311. data/sig/ffi/buffer.rbs +18 -0
  312. data/sig/ffi/data_converter.rbs +10 -0
  313. data/sig/ffi/dynamic_library.rbs +9 -0
  314. data/sig/ffi/enum.rbs +38 -0
  315. data/sig/ffi/function.rbs +39 -0
  316. data/sig/ffi/library.rbs +42 -0
  317. data/sig/ffi/native_type.rbs +86 -0
  318. data/sig/ffi/pointer.rbs +42 -0
  319. data/sig/ffi/struct.rbs +76 -0
  320. data/sig/ffi/struct_by_reference.rbs +11 -0
  321. data/sig/ffi/struct_by_value.rbs +7 -0
  322. data/sig/ffi/struct_layout.rbs +9 -0
  323. data/sig/ffi/struct_layout_builder.rbs +5 -0
  324. data/sig/ffi/type.rbs +39 -0
  325. data/sig/ffi.rbs +26 -0
  326. data.tar.gz.sig +0 -0
  327. metadata +122 -28
  328. metadata.gz.sig +1 -0
  329. data/ext/ffi_c/libffi/.travis/build-cross-in-container.sh +0 -14
  330. data/ext/ffi_c/libffi/.travis/build.sh +0 -142
  331. data/ext/ffi_c/libffi/.travis.yml +0 -83
  332. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_uchar_va.c +0 -44
  333. data/ext/ffi_c/libffi/testsuite/libffi.closures/cls_ushort_va.c +0 -44
  334. /data/ext/ffi_c/libffi/{.travis → .ci}/ar-lib +0 -0
  335. /data/ext/ffi_c/libffi/{.travis → .ci}/bfin-sim.exp +0 -0
  336. /data/ext/ffi_c/libffi/{.travis → .ci}/compile +0 -0
  337. /data/ext/ffi_c/libffi/{.travis → .ci}/m32r-sim.exp +0 -0
  338. /data/ext/ffi_c/libffi/{.travis → .ci}/moxie-sim.exp +0 -0
  339. /data/ext/ffi_c/libffi/{.travis → .ci}/or1k-sim.exp +0 -0
  340. /data/ext/ffi_c/libffi/{.travis → .ci}/powerpc-eabisim.exp +0 -0
  341. /data/ext/ffi_c/libffi/{.travis → .ci}/wine-sim.exp +0 -0
  342. /data/ext/ffi_c/libffi/testsuite/libffi.call/{pyobjc-tc.c → pyobjc_tc.c} +0 -0
  343. /data/lib/ffi/platform/{sparc64-linux → sparcv9-linux}/types.conf +0 -0
@@ -1,12 +1,12 @@
1
- #! /bin/sh
1
+ #! /usr/bin/env sh
2
2
  ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
3
- ## by inline-source v2014-01-03.01
3
+ ## by inline-source v2019-02-19.15
4
4
 
5
- # libtool (GNU libtool) 2.4.6
5
+ # libtool (GNU libtool) 2.4.7
6
6
  # Provide generalized library-building support services.
7
7
  # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
8
8
 
9
- # Copyright (C) 1996-2015 Free Software Foundation, Inc.
9
+ # Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc.
10
10
  # This is free software; see the source for copying conditions. There is NO
11
11
  # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
12
 
@@ -31,8 +31,8 @@
31
31
 
32
32
  PROGRAM=libtool
33
33
  PACKAGE=libtool
34
- VERSION="2.4.6 Debian-2.4.6-14"
35
- package_revision=2.4.6
34
+ VERSION="2.4.7 Debian-2.4.7-7build1"
35
+ package_revision=2.4.7
36
36
 
37
37
 
38
38
  ## ------ ##
@@ -64,34 +64,25 @@ package_revision=2.4.6
64
64
  # libraries, which are installed to $pkgauxdir.
65
65
 
66
66
  # Set a version string for this script.
67
- scriptversion=2015-01-20.17; # UTC
67
+ scriptversion=2019-02-19.15; # UTC
68
68
 
69
69
  # General shell script boiler plate, and helper functions.
70
70
  # Written by Gary V. Vaughan, 2004
71
71
 
72
- # Copyright (C) 2004-2015 Free Software Foundation, Inc.
73
- # This is free software; see the source for copying conditions. There is NO
74
- # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
75
-
76
- # This program is free software; you can redistribute it and/or modify
77
- # it under the terms of the GNU General Public License as published by
78
- # the Free Software Foundation; either version 3 of the License, or
79
- # (at your option) any later version.
80
-
81
- # As a special exception to the GNU General Public License, if you distribute
82
- # this file as part of a program or library that is built using GNU Libtool,
83
- # you may include this file under the same distribution terms that you use
84
- # for the rest of that program.
85
-
86
- # This program is distributed in the hope that it will be useful,
87
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
88
- # MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
89
- # General Public License for more details.
90
-
91
- # You should have received a copy of the GNU General Public License
92
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
72
+ # This is free software. There is NO warranty; not even for
73
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
74
+ #
75
+ # Copyright (C) 2004-2019, 2021 Bootstrap Authors
76
+ #
77
+ # This file is dual licensed under the terms of the MIT license
78
+ # <https://opensource.org/license/MIT>, and GPL version 2 or later
79
+ # <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
80
+ # these licenses when using or redistributing this software or any of
81
+ # the files within it. See the URLs above, or the file `LICENSE`
82
+ # included in the Bootstrap distribution for the full license texts.
93
83
 
94
- # Please report bugs or propose patches to gary@gnu.org.
84
+ # Please report bugs or propose patches to:
85
+ # <https://github.com/gnulib-modules/bootstrap/issues>
95
86
 
96
87
 
97
88
  ## ------ ##
@@ -139,9 +130,12 @@ do
139
130
  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
140
131
  fi"
141
132
  done
142
-
143
- # CDPATH.
144
- (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
133
+ # These NLS vars are set unconditionally (bootstrap issue #24). Unset those
134
+ # in case the environment reset is needed later and the $save_* variant is not
135
+ # defined (see the code above).
136
+ LC_ALL=C
137
+ LANGUAGE=C
138
+ export LANGUAGE LC_ALL
145
139
 
146
140
  # Make sure IFS has a sensible default
147
141
  sp=' '
@@ -159,6 +153,26 @@ if test "${PATH_SEPARATOR+set}" != set; then
159
153
  fi
160
154
 
161
155
 
156
+ # func_unset VAR
157
+ # --------------
158
+ # Portably unset VAR.
159
+ # In some shells, an 'unset VAR' statement leaves a non-zero return
160
+ # status if VAR is already unset, which might be problematic if the
161
+ # statement is used at the end of a function (thus poisoning its return
162
+ # value) or when 'set -e' is active (causing even a spurious abort of
163
+ # the script in this case).
164
+ func_unset ()
165
+ {
166
+ { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; }
167
+ }
168
+
169
+
170
+ # Make sure CDPATH doesn't cause `cd` commands to output the target dir.
171
+ func_unset CDPATH
172
+
173
+ # Make sure ${,E,F}GREP behave sanely.
174
+ func_unset GREP_OPTIONS
175
+
162
176
 
163
177
  ## ------------------------- ##
164
178
  ## Locate command utilities. ##
@@ -259,7 +273,7 @@ test -z "$SED" && {
259
273
  rm -f conftest.in conftest.tmp conftest.nl conftest.out
260
274
  }
261
275
 
262
- func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
276
+ func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin"
263
277
  rm -f conftest.sed
264
278
  SED=$func_path_progs_result
265
279
  }
@@ -295,7 +309,7 @@ test -z "$GREP" && {
295
309
  rm -f conftest.in conftest.tmp conftest.nl conftest.out
296
310
  }
297
311
 
298
- func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
312
+ func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin"
299
313
  GREP=$func_path_progs_result
300
314
  }
301
315
 
@@ -360,6 +374,35 @@ sed_double_backslash="\
360
374
  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
361
375
  s/\n//g"
362
376
 
377
+ # require_check_ifs_backslash
378
+ # ---------------------------
379
+ # Check if we can use backslash as IFS='\' separator, and set
380
+ # $check_ifs_backshlash_broken to ':' or 'false'.
381
+ require_check_ifs_backslash=func_require_check_ifs_backslash
382
+ func_require_check_ifs_backslash ()
383
+ {
384
+ _G_save_IFS=$IFS
385
+ IFS='\'
386
+ _G_check_ifs_backshlash='a\\b'
387
+ for _G_i in $_G_check_ifs_backshlash
388
+ do
389
+ case $_G_i in
390
+ a)
391
+ check_ifs_backshlash_broken=false
392
+ ;;
393
+ '')
394
+ break
395
+ ;;
396
+ *)
397
+ check_ifs_backshlash_broken=:
398
+ break
399
+ ;;
400
+ esac
401
+ done
402
+ IFS=$_G_save_IFS
403
+ require_check_ifs_backslash=:
404
+ }
405
+
363
406
 
364
407
  ## ----------------- ##
365
408
  ## Global variables. ##
@@ -529,27 +572,15 @@ func_require_term_colors ()
529
572
  # ---------------------
530
573
  # Append VALUE onto the existing contents of VAR.
531
574
 
532
- # We should try to minimise forks, especially on Windows where they are
533
- # unreasonably slow, so skip the feature probes when bash or zsh are
534
- # being used:
535
- if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
536
- : ${_G_HAVE_ARITH_OP="yes"}
537
- : ${_G_HAVE_XSI_OPS="yes"}
538
- # The += operator was introduced in bash 3.1
539
- case $BASH_VERSION in
540
- [12].* | 3.0 | 3.0*) ;;
541
- *)
542
- : ${_G_HAVE_PLUSEQ_OP="yes"}
543
- ;;
544
- esac
545
- fi
546
-
547
575
  # _G_HAVE_PLUSEQ_OP
548
576
  # Can be empty, in which case the shell is probed, "yes" if += is
549
577
  # useable or anything else if it does not work.
550
- test -z "$_G_HAVE_PLUSEQ_OP" \
551
- && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
552
- && _G_HAVE_PLUSEQ_OP=yes
578
+ if test -z "$_G_HAVE_PLUSEQ_OP" && \
579
+ __PLUSEQ_TEST="a" && \
580
+ __PLUSEQ_TEST+=" b" 2>/dev/null && \
581
+ test "a b" = "$__PLUSEQ_TEST"; then
582
+ _G_HAVE_PLUSEQ_OP=yes
583
+ fi
553
584
 
554
585
  if test yes = "$_G_HAVE_PLUSEQ_OP"
555
586
  then
@@ -580,16 +611,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then
580
611
  {
581
612
  $debug_cmd
582
613
 
583
- func_quote_for_eval "$2"
584
- eval "$1+=\\ \$func_quote_for_eval_result"
614
+ func_quote_arg pretty "$2"
615
+ eval "$1+=\\ \$func_quote_arg_result"
585
616
  }'
586
617
  else
587
618
  func_append_quoted ()
588
619
  {
589
620
  $debug_cmd
590
621
 
591
- func_quote_for_eval "$2"
592
- eval "$1=\$$1\\ \$func_quote_for_eval_result"
622
+ func_quote_arg pretty "$2"
623
+ eval "$1=\$$1\\ \$func_quote_arg_result"
593
624
  }
594
625
  fi
595
626
 
@@ -1091,85 +1122,203 @@ func_relative_path ()
1091
1122
  }
1092
1123
 
1093
1124
 
1094
- # func_quote_for_eval ARG...
1095
- # --------------------------
1096
- # Aesthetically quote ARGs to be evaled later.
1097
- # This function returns two values:
1098
- # i) func_quote_for_eval_result
1099
- # double-quoted, suitable for a subsequent eval
1100
- # ii) func_quote_for_eval_unquoted_result
1101
- # has all characters that are still active within double
1102
- # quotes backslashified.
1103
- func_quote_for_eval ()
1125
+ # func_quote_portable EVAL ARG
1126
+ # ----------------------------
1127
+ # Internal function to portably implement func_quote_arg. Note that we still
1128
+ # keep attention to performance here so we as much as possible try to avoid
1129
+ # calling sed binary (so far O(N) complexity as long as func_append is O(1)).
1130
+ func_quote_portable ()
1104
1131
  {
1105
1132
  $debug_cmd
1106
1133
 
1107
- func_quote_for_eval_unquoted_result=
1108
- func_quote_for_eval_result=
1109
- while test 0 -lt $#; do
1110
- case $1 in
1111
- *[\\\`\"\$]*)
1112
- _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
1113
- *)
1114
- _G_unquoted_arg=$1 ;;
1115
- esac
1116
- if test -n "$func_quote_for_eval_unquoted_result"; then
1117
- func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
1118
- else
1119
- func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
1134
+ $require_check_ifs_backslash
1135
+
1136
+ func_quote_portable_result=$2
1137
+
1138
+ # one-time-loop (easy break)
1139
+ while true
1140
+ do
1141
+ if $1; then
1142
+ func_quote_portable_result=`$ECHO "$2" | $SED \
1143
+ -e "$sed_double_quote_subst" -e "$sed_double_backslash"`
1144
+ break
1120
1145
  fi
1121
1146
 
1122
- case $_G_unquoted_arg in
1123
- # Double-quote args containing shell metacharacters to delay
1124
- # word splitting, command substitution and variable expansion
1125
- # for a subsequent eval.
1126
- # Many Bourne shells cannot handle close brackets correctly
1127
- # in scan sets, so we specify it separately.
1128
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1129
- _G_quoted_arg=\"$_G_unquoted_arg\"
1147
+ # Quote for eval.
1148
+ case $func_quote_portable_result in
1149
+ *[\\\`\"\$]*)
1150
+ # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string
1151
+ # contains the shell wildcard characters.
1152
+ case $check_ifs_backshlash_broken$func_quote_portable_result in
1153
+ :*|*[\[\*\?]*)
1154
+ func_quote_portable_result=`$ECHO "$func_quote_portable_result" \
1155
+ | $SED "$sed_quote_subst"`
1156
+ break
1157
+ ;;
1158
+ esac
1159
+
1160
+ func_quote_portable_old_IFS=$IFS
1161
+ for _G_char in '\' '`' '"' '$'
1162
+ do
1163
+ # STATE($1) PREV($2) SEPARATOR($3)
1164
+ set start "" ""
1165
+ func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
1166
+ IFS=$_G_char
1167
+ for _G_part in $func_quote_portable_result
1168
+ do
1169
+ case $1 in
1170
+ quote)
1171
+ func_append func_quote_portable_result "$3$2"
1172
+ set quote "$_G_part" "\\$_G_char"
1173
+ ;;
1174
+ start)
1175
+ set first "" ""
1176
+ func_quote_portable_result=
1177
+ ;;
1178
+ first)
1179
+ set quote "$_G_part" ""
1180
+ ;;
1181
+ esac
1182
+ done
1183
+ done
1184
+ IFS=$func_quote_portable_old_IFS
1130
1185
  ;;
1131
- *)
1132
- _G_quoted_arg=$_G_unquoted_arg
1133
- ;;
1186
+ *) ;;
1134
1187
  esac
1135
-
1136
- if test -n "$func_quote_for_eval_result"; then
1137
- func_append func_quote_for_eval_result " $_G_quoted_arg"
1138
- else
1139
- func_append func_quote_for_eval_result "$_G_quoted_arg"
1140
- fi
1141
- shift
1188
+ break
1142
1189
  done
1190
+
1191
+ func_quote_portable_unquoted_result=$func_quote_portable_result
1192
+ case $func_quote_portable_result in
1193
+ # double-quote args containing shell metacharacters to delay
1194
+ # word splitting, command substitution and variable expansion
1195
+ # for a subsequent eval.
1196
+ # many bourne shells cannot handle close brackets correctly
1197
+ # in scan sets, so we specify it separately.
1198
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1199
+ func_quote_portable_result=\"$func_quote_portable_result\"
1200
+ ;;
1201
+ esac
1143
1202
  }
1144
1203
 
1145
1204
 
1146
- # func_quote_for_expand ARG
1147
- # -------------------------
1148
- # Aesthetically quote ARG to be evaled later; same as above,
1149
- # but do not quote variable references.
1150
- func_quote_for_expand ()
1151
- {
1152
- $debug_cmd
1205
+ # func_quotefast_eval ARG
1206
+ # -----------------------
1207
+ # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG',
1208
+ # but optimized for speed. Result is stored in $func_quotefast_eval.
1209
+ if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
1210
+ printf -v _GL_test_printf_tilde %q '~'
1211
+ if test '\~' = "$_GL_test_printf_tilde"; then
1212
+ func_quotefast_eval ()
1213
+ {
1214
+ printf -v func_quotefast_eval_result %q "$1"
1215
+ }
1216
+ else
1217
+ # Broken older Bash implementations. Make those faster too if possible.
1218
+ func_quotefast_eval ()
1219
+ {
1220
+ case $1 in
1221
+ '~'*)
1222
+ func_quote_portable false "$1"
1223
+ func_quotefast_eval_result=$func_quote_portable_result
1224
+ ;;
1225
+ *)
1226
+ printf -v func_quotefast_eval_result %q "$1"
1227
+ ;;
1228
+ esac
1229
+ }
1230
+ fi
1231
+ else
1232
+ func_quotefast_eval ()
1233
+ {
1234
+ func_quote_portable false "$1"
1235
+ func_quotefast_eval_result=$func_quote_portable_result
1236
+ }
1237
+ fi
1153
1238
 
1154
- case $1 in
1155
- *[\\\`\"]*)
1156
- _G_arg=`$ECHO "$1" | $SED \
1157
- -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
1158
- *)
1159
- _G_arg=$1 ;;
1239
+
1240
+ # func_quote_arg MODEs ARG
1241
+ # ------------------------
1242
+ # Quote one ARG to be evaled later. MODEs argument may contain zero or more
1243
+ # specifiers listed below separated by ',' character. This function returns two
1244
+ # values:
1245
+ # i) func_quote_arg_result
1246
+ # double-quoted (when needed), suitable for a subsequent eval
1247
+ # ii) func_quote_arg_unquoted_result
1248
+ # has all characters that are still active within double
1249
+ # quotes backslashified. Available only if 'unquoted' is specified.
1250
+ #
1251
+ # Available modes:
1252
+ # ----------------
1253
+ # 'eval' (default)
1254
+ # - escape shell special characters
1255
+ # 'expand'
1256
+ # - the same as 'eval'; but do not quote variable references
1257
+ # 'pretty'
1258
+ # - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might
1259
+ # be used later in func_quote to get output like: 'echo "a b"' instead
1260
+ # of 'echo a\ b'. This is slower than default on some shells.
1261
+ # 'unquoted'
1262
+ # - produce also $func_quote_arg_unquoted_result which does not contain
1263
+ # wrapping double-quotes.
1264
+ #
1265
+ # Examples for 'func_quote_arg pretty,unquoted string':
1266
+ #
1267
+ # string | *_result | *_unquoted_result
1268
+ # ------------+-----------------------+-------------------
1269
+ # " | \" | \"
1270
+ # a b | "a b" | a b
1271
+ # "a b" | "\"a b\"" | \"a b\"
1272
+ # * | "*" | *
1273
+ # z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\"
1274
+ #
1275
+ # Examples for 'func_quote_arg pretty,unquoted,expand string':
1276
+ #
1277
+ # string | *_result | *_unquoted_result
1278
+ # --------------+---------------------+--------------------
1279
+ # z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\"
1280
+ func_quote_arg ()
1281
+ {
1282
+ _G_quote_expand=false
1283
+ case ,$1, in
1284
+ *,expand,*)
1285
+ _G_quote_expand=:
1286
+ ;;
1160
1287
  esac
1161
1288
 
1162
- case $_G_arg in
1163
- # Double-quote args containing shell metacharacters to delay
1164
- # word splitting and command substitution for a subsequent eval.
1165
- # Many Bourne shells cannot handle close brackets correctly
1166
- # in scan sets, so we specify it separately.
1167
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1168
- _G_arg=\"$_G_arg\"
1289
+ case ,$1, in
1290
+ *,pretty,*|*,expand,*|*,unquoted,*)
1291
+ func_quote_portable $_G_quote_expand "$2"
1292
+ func_quote_arg_result=$func_quote_portable_result
1293
+ func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
1294
+ ;;
1295
+ *)
1296
+ # Faster quote-for-eval for some shells.
1297
+ func_quotefast_eval "$2"
1298
+ func_quote_arg_result=$func_quotefast_eval_result
1169
1299
  ;;
1170
1300
  esac
1301
+ }
1302
+
1171
1303
 
1172
- func_quote_for_expand_result=$_G_arg
1304
+ # func_quote MODEs ARGs...
1305
+ # ------------------------
1306
+ # Quote all ARGs to be evaled later and join them into single command. See
1307
+ # func_quote_arg's description for more info.
1308
+ func_quote ()
1309
+ {
1310
+ $debug_cmd
1311
+ _G_func_quote_mode=$1 ; shift
1312
+ func_quote_result=
1313
+ while test 0 -lt $#; do
1314
+ func_quote_arg "$_G_func_quote_mode" "$1"
1315
+ if test -n "$func_quote_result"; then
1316
+ func_append func_quote_result " $func_quote_arg_result"
1317
+ else
1318
+ func_append func_quote_result "$func_quote_arg_result"
1319
+ fi
1320
+ shift
1321
+ done
1173
1322
  }
1174
1323
 
1175
1324
 
@@ -1215,8 +1364,8 @@ func_show_eval ()
1215
1364
  _G_cmd=$1
1216
1365
  _G_fail_exp=${2-':'}
1217
1366
 
1218
- func_quote_for_expand "$_G_cmd"
1219
- eval "func_notquiet $func_quote_for_expand_result"
1367
+ func_quote_arg pretty,expand "$_G_cmd"
1368
+ eval "func_notquiet $func_quote_arg_result"
1220
1369
 
1221
1370
  $opt_dry_run || {
1222
1371
  eval "$_G_cmd"
@@ -1241,8 +1390,8 @@ func_show_eval_locale ()
1241
1390
  _G_fail_exp=${2-':'}
1242
1391
 
1243
1392
  $opt_quiet || {
1244
- func_quote_for_expand "$_G_cmd"
1245
- eval "func_echo $func_quote_for_expand_result"
1393
+ func_quote_arg expand,pretty "$_G_cmd"
1394
+ eval "func_echo $func_quote_arg_result"
1246
1395
  }
1247
1396
 
1248
1397
  $opt_dry_run || {
@@ -1369,30 +1518,26 @@ func_lt_ver ()
1369
1518
  # End:
1370
1519
  #! /bin/sh
1371
1520
 
1372
- # Set a version string for this script.
1373
- scriptversion=2015-10-07.11; # UTC
1374
-
1375
1521
  # A portable, pluggable option parser for Bourne shell.
1376
1522
  # Written by Gary V. Vaughan, 2010
1377
1523
 
1378
- # Copyright (C) 2010-2015 Free Software Foundation, Inc.
1379
- # This is free software; see the source for copying conditions. There is NO
1380
- # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1381
-
1382
- # This program is free software: you can redistribute it and/or modify
1383
- # it under the terms of the GNU General Public License as published by
1384
- # the Free Software Foundation, either version 3 of the License, or
1385
- # (at your option) any later version.
1386
-
1387
- # This program is distributed in the hope that it will be useful,
1388
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
1389
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1390
- # GNU General Public License for more details.
1524
+ # This is free software. There is NO warranty; not even for
1525
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1526
+ #
1527
+ # Copyright (C) 2010-2019, 2021 Bootstrap Authors
1528
+ #
1529
+ # This file is dual licensed under the terms of the MIT license
1530
+ # <https://opensource.org/license/MIT>, and GPL version 2 or later
1531
+ # <http://www.gnu.org/licenses/gpl-2.0.html>. You must apply one of
1532
+ # these licenses when using or redistributing this software or any of
1533
+ # the files within it. See the URLs above, or the file `LICENSE`
1534
+ # included in the Bootstrap distribution for the full license texts.
1391
1535
 
1392
- # You should have received a copy of the GNU General Public License
1393
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
1536
+ # Please report bugs or propose patches to:
1537
+ # <https://github.com/gnulib-modules/bootstrap/issues>
1394
1538
 
1395
- # Please report bugs or propose patches to gary@gnu.org.
1539
+ # Set a version string for this script.
1540
+ scriptversion=2019-02-19.15; # UTC
1396
1541
 
1397
1542
 
1398
1543
  ## ------ ##
@@ -1415,7 +1560,7 @@ scriptversion=2015-10-07.11; # UTC
1415
1560
  #
1416
1561
  # In order for the '--version' option to work, you will need to have a
1417
1562
  # suitably formatted comment like the one at the top of this file
1418
- # starting with '# Written by ' and ending with '# warranty; '.
1563
+ # starting with '# Written by ' and ending with '# Copyright'.
1419
1564
  #
1420
1565
  # For '-h' and '--help' to work, you will also need a one line
1421
1566
  # description of your script's purpose in a comment directly above the
@@ -1427,7 +1572,7 @@ scriptversion=2015-10-07.11; # UTC
1427
1572
  # to display verbose messages only when your user has specified
1428
1573
  # '--verbose'.
1429
1574
  #
1430
- # After sourcing this file, you can plug processing for additional
1575
+ # After sourcing this file, you can plug in processing for additional
1431
1576
  # options by amending the variables from the 'Configuration' section
1432
1577
  # below, and following the instructions in the 'Option parsing'
1433
1578
  # section further down.
@@ -1476,8 +1621,8 @@ fatal_help="Try '\$progname --help' for more information."
1476
1621
  ## ------------------------- ##
1477
1622
 
1478
1623
  # This section contains functions for adding, removing, and running hooks
1479
- # to the main code. A hook is just a named list of of function, that can
1480
- # be run in order later on.
1624
+ # in the main code. A hook is just a list of function names that can be
1625
+ # run in order later on.
1481
1626
 
1482
1627
  # func_hookable FUNC_NAME
1483
1628
  # -----------------------
@@ -1510,7 +1655,8 @@ func_add_hook ()
1510
1655
 
1511
1656
  # func_remove_hook FUNC_NAME HOOK_FUNC
1512
1657
  # ------------------------------------
1513
- # Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
1658
+ # Remove HOOK_FUNC from the list of hook functions to be called by
1659
+ # FUNC_NAME.
1514
1660
  func_remove_hook ()
1515
1661
  {
1516
1662
  $debug_cmd
@@ -1519,10 +1665,28 @@ func_remove_hook ()
1519
1665
  }
1520
1666
 
1521
1667
 
1668
+ # func_propagate_result FUNC_NAME_A FUNC_NAME_B
1669
+ # ---------------------------------------------
1670
+ # If the *_result variable of FUNC_NAME_A _is set_, assign its value to
1671
+ # *_result variable of FUNC_NAME_B.
1672
+ func_propagate_result ()
1673
+ {
1674
+ $debug_cmd
1675
+
1676
+ func_propagate_result_result=:
1677
+ if eval "test \"\${${1}_result+set}\" = set"
1678
+ then
1679
+ eval "${2}_result=\$${1}_result"
1680
+ else
1681
+ func_propagate_result_result=false
1682
+ fi
1683
+ }
1684
+
1685
+
1522
1686
  # func_run_hooks FUNC_NAME [ARG]...
1523
1687
  # ---------------------------------
1524
1688
  # Run all hook functions registered to FUNC_NAME.
1525
- # It is assumed that the list of hook functions contains nothing more
1689
+ # It's assumed that the list of hook functions contains nothing more
1526
1690
  # than a whitespace-delimited list of legal shell function names, and
1527
1691
  # no effort is wasted trying to catch shell meta-characters or preserve
1528
1692
  # whitespace.
@@ -1534,22 +1698,19 @@ func_run_hooks ()
1534
1698
 
1535
1699
  case " $hookable_fns " in
1536
1700
  *" $1 "*) ;;
1537
- *) func_fatal_error "'$1' does not support hook funcions.n" ;;
1701
+ *) func_fatal_error "'$1' does not support hook functions." ;;
1538
1702
  esac
1539
1703
 
1540
1704
  eval _G_hook_fns=\$$1_hooks; shift
1541
1705
 
1542
1706
  for _G_hook in $_G_hook_fns; do
1543
- if eval $_G_hook '"$@"'; then
1544
- # store returned options list back into positional
1545
- # parameters for next 'cmd' execution.
1546
- eval _G_hook_result=\$${_G_hook}_result
1547
- eval set dummy "$_G_hook_result"; shift
1548
- _G_rc_run_hooks=:
1707
+ func_unset "${_G_hook}_result"
1708
+ eval $_G_hook '${1+"$@"}'
1709
+ func_propagate_result $_G_hook func_run_hooks
1710
+ if $func_propagate_result_result; then
1711
+ eval set dummy "$func_run_hooks_result"; shift
1549
1712
  fi
1550
1713
  done
1551
-
1552
- $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result
1553
1714
  }
1554
1715
 
1555
1716
 
@@ -1559,14 +1720,16 @@ func_run_hooks ()
1559
1720
  ## --------------- ##
1560
1721
 
1561
1722
  # In order to add your own option parsing hooks, you must accept the
1562
- # full positional parameter list in your hook function, you may remove/edit
1563
- # any options that you action, and then pass back the remaining unprocessed
1564
- # options in '<hooked_function_name>_result', escaped suitably for
1565
- # 'eval'. In this case you also must return $EXIT_SUCCESS to let the
1566
- # hook's caller know that it should pay attention to
1567
- # '<hooked_function_name>_result'. Returning $EXIT_FAILURE signalizes that
1568
- # arguments are left untouched by the hook and therefore caller will ignore the
1569
- # result variable.
1723
+ # full positional parameter list from your hook function. You may remove
1724
+ # or edit any options that you action, and then pass back the remaining
1725
+ # unprocessed options in '<hooked_function_name>_result', escaped
1726
+ # suitably for 'eval'.
1727
+ #
1728
+ # The '<hooked_function_name>_result' variable is automatically unset
1729
+ # before your hook gets called; for best performance, only set the
1730
+ # *_result variable when necessary (i.e. don't call the 'func_quote'
1731
+ # function unnecessarily because it can be an expensive operation on some
1732
+ # machines).
1570
1733
  #
1571
1734
  # Like this:
1572
1735
  #
@@ -1578,11 +1741,8 @@ func_run_hooks ()
1578
1741
  # usage_message=$usage_message'
1579
1742
  # -s, --silent don'\''t print informational messages
1580
1743
  # '
1581
- # # No change in '$@' (ignored completely by this hook). There is
1582
- # # no need to do the equivalent (but slower) action:
1583
- # # func_quote_for_eval ${1+"$@"}
1584
- # # my_options_prep_result=$func_quote_for_eval_result
1585
- # false
1744
+ # # No change in '$@' (ignored completely by this hook). Leave
1745
+ # # my_options_prep_result variable intact.
1586
1746
  # }
1587
1747
  # func_add_hook func_options_prep my_options_prep
1588
1748
  #
@@ -1593,7 +1753,7 @@ func_run_hooks ()
1593
1753
  #
1594
1754
  # args_changed=false
1595
1755
  #
1596
- # # Note that for efficiency, we parse as many options as we can
1756
+ # # Note that, for efficiency, we parse as many options as we can
1597
1757
  # # recognise in a loop before passing the remainder back to the
1598
1758
  # # caller on the first unrecognised argument we encounter.
1599
1759
  # while test $# -gt 0; do
@@ -1610,18 +1770,17 @@ func_run_hooks ()
1610
1770
  # args_changed=:
1611
1771
  # ;;
1612
1772
  # *) # Make sure the first unrecognised option "$_G_opt"
1613
- # # is added back to "$@", we could need that later
1614
- # # if $args_changed is true.
1773
+ # # is added back to "$@" in case we need it later,
1774
+ # # if $args_changed was set to 'true'.
1615
1775
  # set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
1616
1776
  # esac
1617
1777
  # done
1618
1778
  #
1779
+ # # Only call 'func_quote' here if we processed at least one argument.
1619
1780
  # if $args_changed; then
1620
- # func_quote_for_eval ${1+"$@"}
1621
- # my_silent_option_result=$func_quote_for_eval_result
1781
+ # func_quote eval ${1+"$@"}
1782
+ # my_silent_option_result=$func_quote_result
1622
1783
  # fi
1623
- #
1624
- # $args_changed
1625
1784
  # }
1626
1785
  # func_add_hook func_parse_options my_silent_option
1627
1786
  #
@@ -1632,8 +1791,6 @@ func_run_hooks ()
1632
1791
  #
1633
1792
  # $opt_silent && $opt_verbose && func_fatal_help "\
1634
1793
  # '--silent' and '--verbose' options are mutually exclusive."
1635
- #
1636
- # false
1637
1794
  # }
1638
1795
  # func_add_hook func_validate_options my_option_validation
1639
1796
  #
@@ -1649,13 +1806,8 @@ func_options_finish ()
1649
1806
  {
1650
1807
  $debug_cmd
1651
1808
 
1652
- _G_func_options_finish_exit=false
1653
- if func_run_hooks func_options ${1+"$@"}; then
1654
- func_options_finish_result=$func_run_hooks_result
1655
- _G_func_options_finish_exit=:
1656
- fi
1657
-
1658
- $_G_func_options_finish_exit
1809
+ func_run_hooks func_options ${1+"$@"}
1810
+ func_propagate_result func_run_hooks func_options_finish
1659
1811
  }
1660
1812
 
1661
1813
 
@@ -1668,28 +1820,27 @@ func_options ()
1668
1820
  {
1669
1821
  $debug_cmd
1670
1822
 
1671
- _G_rc_options=false
1823
+ _G_options_quoted=false
1672
1824
 
1673
1825
  for my_func in options_prep parse_options validate_options options_finish
1674
1826
  do
1675
- if eval func_$my_func '${1+"$@"}'; then
1676
- eval _G_res_var='$'"func_${my_func}_result"
1677
- eval set dummy "$_G_res_var" ; shift
1678
- _G_rc_options=:
1827
+ func_unset func_${my_func}_result
1828
+ func_unset func_run_hooks_result
1829
+ eval func_$my_func '${1+"$@"}'
1830
+ func_propagate_result func_$my_func func_options
1831
+ if $func_propagate_result_result; then
1832
+ eval set dummy "$func_options_result"; shift
1833
+ _G_options_quoted=:
1679
1834
  fi
1680
1835
  done
1681
1836
 
1682
- # Save modified positional parameters for caller. As a top-level
1683
- # options-parser function we always need to set the 'func_options_result'
1684
- # variable (regardless the $_G_rc_options value).
1685
- if $_G_rc_options; then
1686
- func_options_result=$_G_res_var
1687
- else
1688
- func_quote_for_eval ${1+"$@"}
1689
- func_options_result=$func_quote_for_eval_result
1690
- fi
1691
-
1692
- $_G_rc_options
1837
+ $_G_options_quoted || {
1838
+ # As we (func_options) are top-level options-parser function and
1839
+ # nobody quoted "$@" for us yet, we need to do it explicitly for
1840
+ # caller.
1841
+ func_quote eval ${1+"$@"}
1842
+ func_options_result=$func_quote_result
1843
+ }
1693
1844
  }
1694
1845
 
1695
1846
 
@@ -1699,8 +1850,7 @@ func_options ()
1699
1850
  # Note that when calling hook functions, we pass through the list of
1700
1851
  # positional parameters. If a hook function modifies that list, and
1701
1852
  # needs to propagate that back to rest of this script, then the complete
1702
- # modified list must be put in 'func_run_hooks_result' before
1703
- # returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned).
1853
+ # modified list must be put in 'func_run_hooks_result' before returning.
1704
1854
  func_hookable func_options_prep
1705
1855
  func_options_prep ()
1706
1856
  {
@@ -1710,14 +1860,8 @@ func_options_prep ()
1710
1860
  opt_verbose=false
1711
1861
  opt_warning_types=
1712
1862
 
1713
- _G_rc_options_prep=false
1714
- if func_run_hooks func_options_prep ${1+"$@"}; then
1715
- _G_rc_options_prep=:
1716
- # save modified positional parameters for caller
1717
- func_options_prep_result=$func_run_hooks_result
1718
- fi
1719
-
1720
- $_G_rc_options_prep
1863
+ func_run_hooks func_options_prep ${1+"$@"}
1864
+ func_propagate_result func_run_hooks func_options_prep
1721
1865
  }
1722
1866
 
1723
1867
 
@@ -1729,27 +1873,32 @@ func_parse_options ()
1729
1873
  {
1730
1874
  $debug_cmd
1731
1875
 
1732
- func_parse_options_result=
1733
-
1734
- _G_rc_parse_options=false
1876
+ _G_parse_options_requote=false
1735
1877
  # this just eases exit handling
1736
1878
  while test $# -gt 0; do
1737
1879
  # Defer to hook functions for initial option parsing, so they
1738
1880
  # get priority in the event of reusing an option name.
1739
- if func_run_hooks func_parse_options ${1+"$@"}; then
1740
- eval set dummy "$func_run_hooks_result"; shift
1741
- _G_rc_parse_options=:
1881
+ func_run_hooks func_parse_options ${1+"$@"}
1882
+ func_propagate_result func_run_hooks func_parse_options
1883
+ if $func_propagate_result_result; then
1884
+ eval set dummy "$func_parse_options_result"; shift
1885
+ # Even though we may have changed "$@", we passed the "$@" array
1886
+ # down into the hook and it quoted it for us (because we are in
1887
+ # this if-branch). No need to quote it again.
1888
+ _G_parse_options_requote=false
1742
1889
  fi
1743
1890
 
1744
1891
  # Break out of the loop if we already parsed every option.
1745
1892
  test $# -gt 0 || break
1746
1893
 
1894
+ # We expect that one of the options parsed in this function matches
1895
+ # and thus we remove _G_opt from "$@" and need to re-quote.
1747
1896
  _G_match_parse_options=:
1748
1897
  _G_opt=$1
1749
1898
  shift
1750
1899
  case $_G_opt in
1751
1900
  --debug|-x) debug_cmd='set -x'
1752
- func_echo "enabling shell trace mode"
1901
+ func_echo "enabling shell trace mode" >&2
1753
1902
  $debug_cmd
1754
1903
  ;;
1755
1904
 
@@ -1760,7 +1909,7 @@ func_parse_options ()
1760
1909
 
1761
1910
  --warnings|--warning|-W)
1762
1911
  if test $# = 0 && func_missing_arg $_G_opt; then
1763
- _G_rc_parse_options=:
1912
+ _G_parse_options_requote=:
1764
1913
  break
1765
1914
  fi
1766
1915
  case " $warning_categories $1" in
@@ -1815,7 +1964,7 @@ func_parse_options ()
1815
1964
  shift
1816
1965
  ;;
1817
1966
 
1818
- --) _G_rc_parse_options=: ; break ;;
1967
+ --) _G_parse_options_requote=: ; break ;;
1819
1968
  -*) func_fatal_help "unrecognised option: '$_G_opt'" ;;
1820
1969
  *) set dummy "$_G_opt" ${1+"$@"}; shift
1821
1970
  _G_match_parse_options=false
@@ -1823,17 +1972,16 @@ func_parse_options ()
1823
1972
  ;;
1824
1973
  esac
1825
1974
 
1826
- $_G_match_parse_options && _G_rc_parse_options=:
1975
+ if $_G_match_parse_options; then
1976
+ _G_parse_options_requote=:
1977
+ fi
1827
1978
  done
1828
1979
 
1829
-
1830
- if $_G_rc_parse_options; then
1980
+ if $_G_parse_options_requote; then
1831
1981
  # save modified positional parameters for caller
1832
- func_quote_for_eval ${1+"$@"}
1833
- func_parse_options_result=$func_quote_for_eval_result
1982
+ func_quote eval ${1+"$@"}
1983
+ func_parse_options_result=$func_quote_result
1834
1984
  fi
1835
-
1836
- $_G_rc_parse_options
1837
1985
  }
1838
1986
 
1839
1987
 
@@ -1846,21 +1994,14 @@ func_validate_options ()
1846
1994
  {
1847
1995
  $debug_cmd
1848
1996
 
1849
- _G_rc_validate_options=false
1850
-
1851
1997
  # Display all warnings if -W was not given.
1852
1998
  test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
1853
1999
 
1854
- if func_run_hooks func_validate_options ${1+"$@"}; then
1855
- # save modified positional parameters for caller
1856
- func_validate_options_result=$func_run_hooks_result
1857
- _G_rc_validate_options=:
1858
- fi
2000
+ func_run_hooks func_validate_options ${1+"$@"}
2001
+ func_propagate_result func_run_hooks func_validate_options
1859
2002
 
1860
2003
  # Bail if the options were screwed!
1861
2004
  $exit_cmd $EXIT_FAILURE
1862
-
1863
- $_G_rc_validate_options
1864
2005
  }
1865
2006
 
1866
2007
 
@@ -1916,8 +2057,8 @@ func_missing_arg ()
1916
2057
 
1917
2058
  # func_split_equals STRING
1918
2059
  # ------------------------
1919
- # Set func_split_equals_lhs and func_split_equals_rhs shell variables after
1920
- # splitting STRING at the '=' sign.
2060
+ # Set func_split_equals_lhs and func_split_equals_rhs shell variables
2061
+ # after splitting STRING at the '=' sign.
1921
2062
  test -z "$_G_HAVE_XSI_OPS" \
1922
2063
  && (eval 'x=a/b/c;
1923
2064
  test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
@@ -1932,8 +2073,9 @@ then
1932
2073
 
1933
2074
  func_split_equals_lhs=${1%%=*}
1934
2075
  func_split_equals_rhs=${1#*=}
1935
- test "x$func_split_equals_lhs" = "x$1" \
1936
- && func_split_equals_rhs=
2076
+ if test "x$func_split_equals_lhs" = "x$1"; then
2077
+ func_split_equals_rhs=
2078
+ fi
1937
2079
  }'
1938
2080
  else
1939
2081
  # ...otherwise fall back to using expr, which is often a shell builtin.
@@ -1943,7 +2085,7 @@ else
1943
2085
 
1944
2086
  func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
1945
2087
  func_split_equals_rhs=
1946
- test "x$func_split_equals_lhs" = "x$1" \
2088
+ test "x$func_split_equals_lhs=" = "x$1" \
1947
2089
  || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
1948
2090
  }
1949
2091
  fi #func_split_equals
@@ -1969,7 +2111,7 @@ else
1969
2111
  {
1970
2112
  $debug_cmd
1971
2113
 
1972
- func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
2114
+ func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'`
1973
2115
  func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
1974
2116
  }
1975
2117
  fi #func_split_short_opt
@@ -2011,31 +2153,44 @@ func_usage_message ()
2011
2153
  # func_version
2012
2154
  # ------------
2013
2155
  # Echo version message to standard output and exit.
2156
+ # The version message is extracted from the calling file's header
2157
+ # comments, with leading '# ' stripped:
2158
+ # 1. First display the progname and version
2159
+ # 2. Followed by the header comment line matching /^# Written by /
2160
+ # 3. Then a blank line followed by the first following line matching
2161
+ # /^# Copyright /
2162
+ # 4. Immediately followed by any lines between the previous matches,
2163
+ # except lines preceding the intervening completely blank line.
2164
+ # For example, see the header comments of this file.
2014
2165
  func_version ()
2015
2166
  {
2016
2167
  $debug_cmd
2017
2168
 
2018
2169
  printf '%s\n' "$progname $scriptversion"
2019
2170
  $SED -n '
2020
- /(C)/!b go
2021
- :more
2022
- /\./!{
2023
- N
2024
- s|\n# | |
2025
- b more
2026
- }
2027
- :go
2028
- /^# Written by /,/# warranty; / {
2029
- s|^# ||
2030
- s|^# *$||
2031
- s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
2032
- p
2171
+ /^# Written by /!b
2172
+ s|^# ||; p; n
2173
+
2174
+ :fwd2blnk
2175
+ /./ {
2176
+ n
2177
+ b fwd2blnk
2033
2178
  }
2034
- /^# Written by / {
2035
- s|^# ||
2036
- p
2179
+ p; n
2180
+
2181
+ :holdwrnt
2182
+ s|^# ||
2183
+ s|^# *$||
2184
+ /^Copyright /!{
2185
+ /./H
2186
+ n
2187
+ b holdwrnt
2037
2188
  }
2038
- /^warranty; /q' < "$progpath"
2189
+
2190
+ s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
2191
+ G
2192
+ s|\(\n\)\n*|\1|g
2193
+ p; q' < "$progpath"
2039
2194
 
2040
2195
  exit $?
2041
2196
  }
@@ -2045,12 +2200,12 @@ func_version ()
2045
2200
  # mode: shell-script
2046
2201
  # sh-indentation: 2
2047
2202
  # eval: (add-hook 'before-save-hook 'time-stamp)
2048
- # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
2203
+ # time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC"
2049
2204
  # time-stamp-time-zone: "UTC"
2050
2205
  # End:
2051
2206
 
2052
2207
  # Set a version string.
2053
- scriptversion='(GNU libtool) 2.4.6'
2208
+ scriptversion='(GNU libtool) 2.4.7'
2054
2209
 
2055
2210
 
2056
2211
  # func_echo ARG...
@@ -2141,7 +2296,7 @@ include the following information:
2141
2296
  compiler: $LTCC
2142
2297
  compiler flags: $LTCFLAGS
2143
2298
  linker: $LD (gnu? $with_gnu_ld)
2144
- version: $progname $scriptversion Debian-2.4.6-14
2299
+ version: $progname $scriptversion Debian-2.4.7-7build1
2145
2300
  automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
2146
2301
  autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
2147
2302
 
@@ -2197,7 +2352,7 @@ fi
2197
2352
  # a configuration failure hint, and exit.
2198
2353
  func_fatal_configuration ()
2199
2354
  {
2200
- func__fatal_error ${1+"$@"} \
2355
+ func_fatal_error ${1+"$@"} \
2201
2356
  "See the $PACKAGE documentation for more information." \
2202
2357
  "Fatal configuration error."
2203
2358
  }
@@ -2345,6 +2500,8 @@ libtool_options_prep ()
2345
2500
 
2346
2501
  _G_rc_lt_options_prep=:
2347
2502
 
2503
+ _G_rc_lt_options_prep=:
2504
+
2348
2505
  # Shorthand for --mode=foo, only valid as the first argument
2349
2506
  case $1 in
2350
2507
  clean|clea|cle|cl)
@@ -2375,11 +2532,9 @@ libtool_options_prep ()
2375
2532
 
2376
2533
  if $_G_rc_lt_options_prep; then
2377
2534
  # Pass back the list of options.
2378
- func_quote_for_eval ${1+"$@"}
2379
- libtool_options_prep_result=$func_quote_for_eval_result
2535
+ func_quote eval ${1+"$@"}
2536
+ libtool_options_prep_result=$func_quote_result
2380
2537
  fi
2381
-
2382
- $_G_rc_lt_options_prep
2383
2538
  }
2384
2539
  func_add_hook func_options_prep libtool_options_prep
2385
2540
 
@@ -2482,11 +2637,9 @@ libtool_parse_options ()
2482
2637
 
2483
2638
  if $_G_rc_lt_parse_options; then
2484
2639
  # save modified positional parameters for caller
2485
- func_quote_for_eval ${1+"$@"}
2486
- libtool_parse_options_result=$func_quote_for_eval_result
2640
+ func_quote eval ${1+"$@"}
2641
+ libtool_parse_options_result=$func_quote_result
2487
2642
  fi
2488
-
2489
- $_G_rc_lt_parse_options
2490
2643
  }
2491
2644
  func_add_hook func_parse_options libtool_parse_options
2492
2645
 
@@ -2543,8 +2696,8 @@ libtool_validate_options ()
2543
2696
  }
2544
2697
 
2545
2698
  # Pass back the unparsed argument list
2546
- func_quote_for_eval ${1+"$@"}
2547
- libtool_validate_options_result=$func_quote_for_eval_result
2699
+ func_quote eval ${1+"$@"}
2700
+ libtool_validate_options_result=$func_quote_result
2548
2701
  }
2549
2702
  func_add_hook func_validate_options libtool_validate_options
2550
2703
 
@@ -3510,8 +3663,8 @@ func_mode_compile ()
3510
3663
  esac
3511
3664
  done
3512
3665
 
3513
- func_quote_for_eval "$libobj"
3514
- test "X$libobj" != "X$func_quote_for_eval_result" \
3666
+ func_quote_arg pretty "$libobj"
3667
+ test "X$libobj" != "X$func_quote_arg_result" \
3515
3668
  && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
3516
3669
  && func_warning "libobj name '$libobj' may not contain shell special characters."
3517
3670
  func_dirname_and_basename "$obj" "/" ""
@@ -3584,8 +3737,8 @@ compiler."
3584
3737
 
3585
3738
  func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
3586
3739
  srcfile=$func_to_tool_file_result
3587
- func_quote_for_eval "$srcfile"
3588
- qsrcfile=$func_quote_for_eval_result
3740
+ func_quote_arg pretty "$srcfile"
3741
+ qsrcfile=$func_quote_arg_result
3589
3742
 
3590
3743
  # Only build a PIC object if we are building libtool libraries.
3591
3744
  if test yes = "$build_libtool_libs"; then
@@ -3740,7 +3893,8 @@ This mode accepts the following additional options:
3740
3893
  -prefer-non-pic try to build non-PIC objects only
3741
3894
  -shared do not build a '.o' file suitable for static linking
3742
3895
  -static only build a '.o' file suitable for static linking
3743
- -Wc,FLAG pass FLAG directly to the compiler
3896
+ -Wc,FLAG
3897
+ -Xcompiler FLAG pass FLAG directly to the compiler
3744
3898
 
3745
3899
  COMPILE-COMMAND is a command to be used in creating a 'standard' object file
3746
3900
  from the given SOURCEFILE.
@@ -3846,6 +4000,8 @@ The following components of LINK-COMMAND are treated specially:
3846
4000
  -weak LIBNAME declare that the target provides the LIBNAME interface
3847
4001
  -Wc,FLAG
3848
4002
  -Xcompiler FLAG pass linker-specific FLAG directly to the compiler
4003
+ -Wa,FLAG
4004
+ -Xassembler FLAG pass linker-specific FLAG directly to the assembler
3849
4005
  -Wl,FLAG
3850
4006
  -Xlinker FLAG pass linker-specific FLAG directly to the linker
3851
4007
  -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
@@ -4188,8 +4344,8 @@ func_mode_install ()
4188
4344
  case $nonopt in *shtool*) :;; *) false;; esac
4189
4345
  then
4190
4346
  # Aesthetically quote it.
4191
- func_quote_for_eval "$nonopt"
4192
- install_prog="$func_quote_for_eval_result "
4347
+ func_quote_arg pretty "$nonopt"
4348
+ install_prog="$func_quote_arg_result "
4193
4349
  arg=$1
4194
4350
  shift
4195
4351
  else
@@ -4199,8 +4355,8 @@ func_mode_install ()
4199
4355
 
4200
4356
  # The real first argument should be the name of the installation program.
4201
4357
  # Aesthetically quote it.
4202
- func_quote_for_eval "$arg"
4203
- func_append install_prog "$func_quote_for_eval_result"
4358
+ func_quote_arg pretty "$arg"
4359
+ func_append install_prog "$func_quote_arg_result"
4204
4360
  install_shared_prog=$install_prog
4205
4361
  case " $install_prog " in
4206
4362
  *[\\\ /]cp\ *) install_cp=: ;;
@@ -4257,12 +4413,12 @@ func_mode_install ()
4257
4413
  esac
4258
4414
 
4259
4415
  # Aesthetically quote the argument.
4260
- func_quote_for_eval "$arg"
4261
- func_append install_prog " $func_quote_for_eval_result"
4416
+ func_quote_arg pretty "$arg"
4417
+ func_append install_prog " $func_quote_arg_result"
4262
4418
  if test -n "$arg2"; then
4263
- func_quote_for_eval "$arg2"
4419
+ func_quote_arg pretty "$arg2"
4264
4420
  fi
4265
- func_append install_shared_prog " $func_quote_for_eval_result"
4421
+ func_append install_shared_prog " $func_quote_arg_result"
4266
4422
  done
4267
4423
 
4268
4424
  test -z "$install_prog" && \
@@ -4273,8 +4429,8 @@ func_mode_install ()
4273
4429
 
4274
4430
  if test -n "$install_override_mode" && $no_mode; then
4275
4431
  if $install_cp; then :; else
4276
- func_quote_for_eval "$install_override_mode"
4277
- func_append install_shared_prog " -m $func_quote_for_eval_result"
4432
+ func_quote_arg pretty "$install_override_mode"
4433
+ func_append install_shared_prog " -m $func_quote_arg_result"
4278
4434
  fi
4279
4435
  fi
4280
4436
 
@@ -4570,8 +4726,8 @@ func_mode_install ()
4570
4726
  relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
4571
4727
 
4572
4728
  $opt_quiet || {
4573
- func_quote_for_expand "$relink_command"
4574
- eval "func_echo $func_quote_for_expand_result"
4729
+ func_quote_arg expand,pretty "$relink_command"
4730
+ eval "func_echo $func_quote_arg_result"
4575
4731
  }
4576
4732
  if eval "$relink_command"; then :
4577
4733
  else
@@ -5350,7 +5506,8 @@ else
5350
5506
  if test \"\$libtool_execute_magic\" != \"$magic\"; then
5351
5507
  file=\"\$0\""
5352
5508
 
5353
- qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
5509
+ func_quote_arg pretty "$ECHO"
5510
+ qECHO=$func_quote_arg_result
5354
5511
  $ECHO "\
5355
5512
 
5356
5513
  # A function that is used when there is no print builtin or printf.
@@ -5360,7 +5517,7 @@ func_fallback_echo ()
5360
5517
  \$1
5361
5518
  _LTECHO_EOF'
5362
5519
  }
5363
- ECHO=\"$qECHO\"
5520
+ ECHO=$qECHO
5364
5521
  fi
5365
5522
 
5366
5523
  # Very basic option parsing. These options are (a) specific to
@@ -6703,9 +6860,9 @@ func_mode_link ()
6703
6860
  while test "$#" -gt 0; do
6704
6861
  arg=$1
6705
6862
  shift
6706
- func_quote_for_eval "$arg"
6707
- qarg=$func_quote_for_eval_unquoted_result
6708
- func_append libtool_args " $func_quote_for_eval_result"
6863
+ func_quote_arg pretty,unquoted "$arg"
6864
+ qarg=$func_quote_arg_unquoted_result
6865
+ func_append libtool_args " $func_quote_arg_result"
6709
6866
 
6710
6867
  # If the previous option needs an argument, assign it.
6711
6868
  if test -n "$prev"; then
@@ -6941,6 +7098,13 @@ func_mode_link ()
6941
7098
  prev=
6942
7099
  continue
6943
7100
  ;;
7101
+ xassembler)
7102
+ func_append compiler_flags " -Xassembler $qarg"
7103
+ prev=
7104
+ func_append compile_command " -Xassembler $qarg"
7105
+ func_append finalize_command " -Xassembler $qarg"
7106
+ continue
7107
+ ;;
6944
7108
  xcclinker)
6945
7109
  func_append linker_flags " $qarg"
6946
7110
  func_append compiler_flags " $qarg"
@@ -7111,7 +7275,7 @@ func_mode_link ()
7111
7275
  # These systems don't actually have a C library (as such)
7112
7276
  test X-lc = "X$arg" && continue
7113
7277
  ;;
7114
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
7278
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
7115
7279
  # Do not include libc due to us having libc/libc_r.
7116
7280
  test X-lc = "X$arg" && continue
7117
7281
  ;;
@@ -7131,7 +7295,7 @@ func_mode_link ()
7131
7295
  esac
7132
7296
  elif test X-lc_r = "X$arg"; then
7133
7297
  case $host in
7134
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
7298
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
7135
7299
  # Do not include libc_r directly, use -pthread flag.
7136
7300
  continue
7137
7301
  ;;
@@ -7161,8 +7325,20 @@ func_mode_link ()
7161
7325
  prev=xcompiler
7162
7326
  continue
7163
7327
  ;;
7164
-
7165
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
7328
+ # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199.
7329
+ -pthread)
7330
+ case $host in
7331
+ *solaris2*) ;;
7332
+ *)
7333
+ case "$new_inherited_linker_flags " in
7334
+ *" $arg "*) ;;
7335
+ * ) func_append new_inherited_linker_flags " $arg" ;;
7336
+ esac
7337
+ ;;
7338
+ esac
7339
+ continue
7340
+ ;;
7341
+ -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \
7166
7342
  |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
7167
7343
  func_append compiler_flags " $arg"
7168
7344
  func_append compile_command " $arg"
@@ -7303,9 +7479,9 @@ func_mode_link ()
7303
7479
  save_ifs=$IFS; IFS=,
7304
7480
  for flag in $args; do
7305
7481
  IFS=$save_ifs
7306
- func_quote_for_eval "$flag"
7307
- func_append arg " $func_quote_for_eval_result"
7308
- func_append compiler_flags " $func_quote_for_eval_result"
7482
+ func_quote_arg pretty "$flag"
7483
+ func_append arg " $func_quote_arg_result"
7484
+ func_append compiler_flags " $func_quote_arg_result"
7309
7485
  done
7310
7486
  IFS=$save_ifs
7311
7487
  func_stripname ' ' '' "$arg"
@@ -7319,16 +7495,21 @@ func_mode_link ()
7319
7495
  save_ifs=$IFS; IFS=,
7320
7496
  for flag in $args; do
7321
7497
  IFS=$save_ifs
7322
- func_quote_for_eval "$flag"
7323
- func_append arg " $wl$func_quote_for_eval_result"
7324
- func_append compiler_flags " $wl$func_quote_for_eval_result"
7325
- func_append linker_flags " $func_quote_for_eval_result"
7498
+ func_quote_arg pretty "$flag"
7499
+ func_append arg " $wl$func_quote_arg_result"
7500
+ func_append compiler_flags " $wl$func_quote_arg_result"
7501
+ func_append linker_flags " $func_quote_arg_result"
7326
7502
  done
7327
7503
  IFS=$save_ifs
7328
7504
  func_stripname ' ' '' "$arg"
7329
7505
  arg=$func_stripname_result
7330
7506
  ;;
7331
7507
 
7508
+ -Xassembler)
7509
+ prev=xassembler
7510
+ continue
7511
+ ;;
7512
+
7332
7513
  -Xcompiler)
7333
7514
  prev=xcompiler
7334
7515
  continue
@@ -7346,8 +7527,8 @@ func_mode_link ()
7346
7527
 
7347
7528
  # -msg_* for osf cc
7348
7529
  -msg_*)
7349
- func_quote_for_eval "$arg"
7350
- arg=$func_quote_for_eval_result
7530
+ func_quote_arg pretty "$arg"
7531
+ arg=$func_quote_arg_result
7351
7532
  ;;
7352
7533
 
7353
7534
  # Flags to be passed through unchanged, with rationale:
@@ -7370,12 +7551,13 @@ func_mode_link ()
7370
7551
  # -fuse-ld=* Linker select flags for GCC
7371
7552
  # -static-* direct GCC to link specific libraries statically
7372
7553
  # -fcilkplus Cilk Plus language extension features for C/C++
7554
+ # -Wa,* Pass flags directly to the assembler
7373
7555
  -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
7374
7556
  -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
7375
7557
  -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
7376
- -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus)
7377
- func_quote_for_eval "$arg"
7378
- arg=$func_quote_for_eval_result
7558
+ -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus|-Wa,*)
7559
+ func_quote_arg pretty "$arg"
7560
+ arg=$func_quote_arg_result
7379
7561
  func_append compile_command " $arg"
7380
7562
  func_append finalize_command " $arg"
7381
7563
  func_append compiler_flags " $arg"
@@ -7396,15 +7578,15 @@ func_mode_link ()
7396
7578
  continue
7397
7579
  else
7398
7580
  # Otherwise treat like 'Some other compiler flag' below
7399
- func_quote_for_eval "$arg"
7400
- arg=$func_quote_for_eval_result
7581
+ func_quote_arg pretty "$arg"
7582
+ arg=$func_quote_arg_result
7401
7583
  fi
7402
7584
  ;;
7403
7585
 
7404
7586
  # Some other compiler flag.
7405
7587
  -* | +*)
7406
- func_quote_for_eval "$arg"
7407
- arg=$func_quote_for_eval_result
7588
+ func_quote_arg pretty "$arg"
7589
+ arg=$func_quote_arg_result
7408
7590
  ;;
7409
7591
 
7410
7592
  *.$objext)
@@ -7524,8 +7706,8 @@ func_mode_link ()
7524
7706
  *)
7525
7707
  # Unknown arguments in both finalize_command and compile_command need
7526
7708
  # to be aesthetically quoted because they are evaled later.
7527
- func_quote_for_eval "$arg"
7528
- arg=$func_quote_for_eval_result
7709
+ func_quote_arg pretty "$arg"
7710
+ arg=$func_quote_arg_result
7529
7711
  ;;
7530
7712
  esac # arg
7531
7713
 
@@ -8733,7 +8915,7 @@ func_mode_link ()
8733
8915
  test CXX = "$tagname" && {
8734
8916
  case $host_os in
8735
8917
  linux*)
8736
- case `$CC -V 2>&1 | sed 5q` in
8918
+ case `$CC -V 2>&1 | $SED 5q` in
8737
8919
  *Sun\ C*) # Sun C++ 5.9
8738
8920
  func_suncc_cstd_abi
8739
8921
 
@@ -8906,7 +9088,7 @@ func_mode_link ()
8906
9088
  #
8907
9089
  case $version_type in
8908
9090
  # correct linux to gnu/linux during the next big refactor
8909
- darwin|freebsd-elf|linux|osf|windows|none)
9091
+ darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none)
8910
9092
  func_arith $number_major + $number_minor
8911
9093
  current=$func_arith_result
8912
9094
  age=$number_minor
@@ -9000,7 +9182,7 @@ func_mode_link ()
9000
9182
  versuffix=.$current.$revision
9001
9183
  ;;
9002
9184
 
9003
- freebsd-elf)
9185
+ freebsd-elf | midnightbsd-elf)
9004
9186
  func_arith $current - $age
9005
9187
  major=.$func_arith_result
9006
9188
  versuffix=$major.$age.$revision
@@ -9226,7 +9408,7 @@ func_mode_link ()
9226
9408
  *-*-netbsd*)
9227
9409
  # Don't link with libc until the a.out ld.so is fixed.
9228
9410
  ;;
9229
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
9411
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*)
9230
9412
  # Do not include libc due to us having libc/libc_r.
9231
9413
  ;;
9232
9414
  *-*-sco3.2v5* | *-*-sco5v6*)
@@ -10037,8 +10219,8 @@ EOF
10037
10219
  for cmd in $concat_cmds; do
10038
10220
  IFS=$save_ifs
10039
10221
  $opt_quiet || {
10040
- func_quote_for_expand "$cmd"
10041
- eval "func_echo $func_quote_for_expand_result"
10222
+ func_quote_arg expand,pretty "$cmd"
10223
+ eval "func_echo $func_quote_arg_result"
10042
10224
  }
10043
10225
  $opt_dry_run || eval "$cmd" || {
10044
10226
  lt_exit=$?
@@ -10131,8 +10313,8 @@ EOF
10131
10313
  eval cmd=\"$cmd\"
10132
10314
  IFS=$save_ifs
10133
10315
  $opt_quiet || {
10134
- func_quote_for_expand "$cmd"
10135
- eval "func_echo $func_quote_for_expand_result"
10316
+ func_quote_arg expand,pretty "$cmd"
10317
+ eval "func_echo $func_quote_arg_result"
10136
10318
  }
10137
10319
  $opt_dry_run || eval "$cmd" || {
10138
10320
  lt_exit=$?
@@ -10606,12 +10788,13 @@ EOF
10606
10788
  elif eval var_value=\$$var; test -z "$var_value"; then
10607
10789
  relink_command="$var=; export $var; $relink_command"
10608
10790
  else
10609
- func_quote_for_eval "$var_value"
10610
- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
10791
+ func_quote_arg pretty "$var_value"
10792
+ relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
10611
10793
  fi
10612
10794
  done
10613
- relink_command="(cd `pwd`; $relink_command)"
10614
- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
10795
+ func_quote eval cd "`pwd`"
10796
+ func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)"
10797
+ relink_command=$func_quote_arg_unquoted_result
10615
10798
  fi
10616
10799
 
10617
10800
  # Only actually do things if not in dry run mode.
@@ -10851,13 +11034,15 @@ EOF
10851
11034
  elif eval var_value=\$$var; test -z "$var_value"; then
10852
11035
  relink_command="$var=; export $var; $relink_command"
10853
11036
  else
10854
- func_quote_for_eval "$var_value"
10855
- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
11037
+ func_quote_arg pretty,unquoted "$var_value"
11038
+ relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
10856
11039
  fi
10857
11040
  done
10858
11041
  # Quote the link command for shipping.
10859
- relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
10860
- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
11042
+ func_quote eval cd "`pwd`"
11043
+ relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
11044
+ func_quote_arg pretty,unquoted "$relink_command"
11045
+ relink_command=$func_quote_arg_unquoted_result
10861
11046
  if test yes = "$hardcode_automatic"; then
10862
11047
  relink_command=
10863
11048
  fi