Caml1999T037$uC+TestDynlinkР'Harness&Import'Harness>testsuite/tools/testDynlink.mlOO@ OO@@ @3@@@@@@#intA;@@#intA@@@@@&_none_@@A@A@$charB;@@$charA@@@@@ @A@&stringQ;@@&stringA@@@@@@@@%bytesC;@@%bytesA@@@@@@@@%floatD;@@%floatA@@@@@@@@$boolE;@@%falsec@@%@$trued@@+@@@A@@@@@,@A@$unitF;@@"()e@@6@@@A@@@@@7@A@ #exnG;@@@A@@@@@;@@@#effH;@@O@A@A@@@@@@D@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@T@@@%arrayJ;@@R@A%arrayA@@@@@@_@@@ $listK;@@S@A"[]f@@l@"::g@@@T@@y@ @@A@Y@@@@@|@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@@@@ .Assert_failure`#@@@@@J@@@@@@@@[@@A頰=ocaml.warn_on_literal_pattern@@0Division_by_zero]#@@@A󠰠  @+End_of_file\#$@@@A@'FailureY#,@'@@A@0Invalid_argumentX#5@0@@A $#@-Match_failureV#>@@=@9@;@@a@@A5!4!@)Not_foundZ#O@@@A&=)<)@-Out_of_memoryW#W@@@A.E1D1@.Stack_overflow^#_@@@A6M9L9@.Sys_blocked_io_#g@@@A>UATA@)Sys_error[#o@j@@AG^J]J@:Undefined_recursive_modulea#x@@w@s@u@@h@@AXo[n[@:Continuation_already_takenb#@@@A`wcvc@&Stdlib@@@@A3@@@O@@@3@@@@ఠ#run SS@AA@@@'Harness&Import&config@@@$A@@+Environment!t@@@%PA@$@$mode@@@%A@)$unitF@@@%}A@*@@+A@%@@&A@ @@!A@3@F@@@࣠@&config"ASS@BA@@=3@WJS@@@@@  @@#env#ASS@CA@@A3@!T@@@@@@@@$mode$ASS@*DA@@D3        @U@@@@@@@@ డ&Format&printf+T,T@ /T0T@@@&Stdlib&format!a@&Stdlib&Format)formatter@@@ $unitF@@@ @@@ @@ @*format.mliww)@@.Stdlib__Format@0+@@@(@&stringQ@@@@@@@@@ UF@@@డ!=(U )U @@!a@@$boolE@@@'@@&@@%&%equalBA @@@@*stdlib.mliyy@@Q@@@@A@*A@A@A@A@A@7A@-@#@@@,@@+@@*@@ఐS$modecUdU @@@@@ภ&NativeoU pU@;&Native$mode@@@@@@AB@@A;testsuite/tools/harness.mlin n @@@T@@@@8G@8@@@@6@@@9G@5 @&nativeUU @@UU!@@0F@:@(bytecodeU(U0@@U'U1@@=F@;$@UU2@@'@@z@@9E@ Y)@@ఠ,test_programV4:V4F@EA@@&stringQ@@@E@=3@?@@@డ+Environment,in_test_root+EnvironmentWIMWIX@ WIYWIe@@@@@@!@%@@@ )@@@@@@@@?testsuite/tools/environment.mliJ  J  D@@M@@@@#@@@@@@@<@@@@@@@9@@ఐ#envWIfWIi@@@=F@@డ#exe'HarnessWIkWIr@ WIsWIv@@@&stringQ@@@@@@@@@NN7@@m`@@@@@@@@@@@@w@@+test_script;WIxWIw?WI@@(@@@G@G@@@HWIjIWI@@s@@@@G@@@ @@@A@SV46 @@@ఠ4compile_test_program^[LR_[Lf@uFA@@@ @@@E@@$listK^@@@@@@E@@&customؠ@@@@@@@)@@@$unitF@@@@@@@E@@@E@@@E@3@@@@@@࣠@%paramAĠ"()[Lg[Li@;DE@@@N@@@@A@@A|@@F@@@@L3@Y[LN@ . @@@@@@@@ డ)+Out_channel.with_open_text\lp\l{@ \l|\l@@@&stringQ@@@J@@+Out_channel!t@@@I!a@@@H@@G@@F@/out_channel.mliH  H  @@@3Stdlib__Out_channelQ@&!@@@@@@@@@@@@@@vH@H@@@@@@@3@P@@@@6test_install_script.ml \l \l@@\l\l@@A@@@I@I@3        @e@@@@࣠@"ocA&\l'\l@=GA@@M@@@@@@@డ&Printf'fprintf<]=]@ @]A]@@@&Stdlib+out_channel@@@8@ &format!a@.+out_channel@@@6$unitF@@@7@@@5@@4@@3@*printf.mliR[[R[@@.Stdlib__Printf@@2-@@@*@@@@%@@@@J@J@@@J@+@@@)@@@@@@@@@@3@p@@@@j@k@@@@ఐz"oc]]@@@@@@@@ภ#w"x]gA!ภ.  s let load_library basename = let lib = Dynlink.adapt_filename (basename ^ ".cma") in let dir = Filename.concat @@@@@K@K@7@ภB+Caml_string ;+Caml_string!x@W!b@X!c@Y!d@Z!e@[!f@\@@@!a@_@'@@@@@@@@@I.*&"@@@@BCAYAAB}}C$@@@yc@ภj@j@͠L@@@@K@@ภQzP S basename in Dynlink.loadfile (Filename.concat dir lib); Printf.printf "Loaded @@5@@@K@K@@ภ,Char_literal;,Char_literal!a@ˠ!b@̠!c@͠!d@Π!e@Ϡ!f@@@@@$charB@@@)%!@@@@BLAYAA%%%%@@@l@e@@@@-K@0K@/@ภRS s\n" lib let () = let () = Dynlink.allow_unsafe_modules true in List.iter load_library (List.tl (Array.to_list Sys.argv)) @@@@@AK@DK@C@ภfg@@+J@J@J@J@,J@@L@2_@@@K@K@K@K@K@+K@?@@@BK@N4@@@ #L@$%&'@@@.K@>@@@ @-L@ #./01@@@K@*L@@,@#^,789:@@@K@W@@7@.qL@ؠ6ABCD@@@K@c@@C@:}L@@vwxy@@@K@o@ I let load_library basename = let lib = Dynlink.adapt_filename (basename ^ ".cma") in let dir = Filename.concat %S basename in Dynlink.loadfile (Filename.concat dir lib); Printf.printf "Loaded %%s\n" lib let () = let () = Dynlink.allow_unsafe_modules true in List.iter load_library (List.tl (Array.to_list Sys.argv)) T@T@A@@@K@QK@P{@@[Z@@V@@@K@@@డW&libdir+Environment!g"g!@ %g"&g(@@@d@@@x@@@@@@Pv  Qv  *@@jH@@@@r@@@h@@@g@@f@@ఐJ#envIg)Jg,@2@@@@MgNg-@@L@n@@@@J@@T\lUh.3@@@@@@d@@I@tI@rH@@ @@eI@ డ%flushki59li5>@@-+out_channel@@@$unitF@@@@@@<ff=f@@7@@@@@@@{@@@z@@yq@@డ&stdouti5?i5E@%@@@@Y%ppZ%pp@@T@  @@1@@@I@I@@@:@@7@@@H@@@ఠ(compiler&jGOjGW@HA@@@@@H@ @డ)tool_path+EnvironmentjGZjGe@ jGfjGo@@@@@@@'Harness&Import$mode@@@@0@@@@6@@@6@@@@@@@@@ @@ @|  |  @@+J@-(@@@3@@@@%@@@@@@@@@@@R@@@@@@@@@@@]@@ఐ#env jGp jGs@@@Wj@@ఐ$mode &jGt 'jGx@@@Vw@@&ocamlc 1jGz 2jG@@ 4jGy 5jG@@T@@@I@I@@@(ocamlopt EjG FjG@@ HjG IjG@@b@@@I@I@@@ @@@A@ SjGK @@@ఠ$args' ^k _k@ uIA@@ҠX@@@H@@@@H@3 d c c d d d d d@@@@@@ภ":: wl xn  A;@@U@B@AA@A I@@Р"-I l l@@ l@@@ภ lA(+dynlink l l@@  l@@1H@-@ภ+ l*A)డ #lib'Harness l@  l l@@@$mode@@@@@@@@@@@@@@@OZMMPZMo@@c@,@@@@@@@@@@@@@@@@@l@@ఐԠ$mode l l@g@@y@@'dynlink l l@@ l l@@8@@@I@I@@@[ @@I@@ภ lA(-linkall l l@@  l@@H@@ภ mA"-o m m@@  !m@@H@@ภ *mAఐ,test_program  3m@ @@H@@ภǰ =mAŠ6test_install_script.ml Dm Em @@  Gm @@H@@ภ"[] Qn  A; @@@@AA@A @@ @A@ I@@@@H@@@!A@ I@@@@H@@@=A@ I@@@@H@@@YA@ ɠ I@@@@H@ @@uA@ ҠI@@@@H@@@ A@ ۠I@@@@H@@@A@ (@@@H@#@@ k@@/.@@@)@A@ k!@@@ఠ%files( o  % o  *@ JA@@52@@@!@@@ H@3        @CXQ@R@S@@@డ )files_for'Harness o  - o  4@  o  5 o  >@@.source_and_cmi&optionL$boolE@@@@@@@ @@@@@@@@r@@@@@@{x@@@@@@@@@@@@@@@}^~_)@@ =d@;6@@31.@@@ @@@ @ 1@@@ @+@@@@*)@@@@@@@@@@@@@@@@@@@@n@Vภ$None ; k x u@@W@@@@AA@A @@ n@ @`]@@@)@@@(@@ఐ -$mode =o  ? >o  C@@@ m@@3test_install_script Ho  E Io  X@@ Ko  D Lo  Y@@q@@@$I@,I@+@@ภ \o  [ ]o  hAఐ,test_program  fo  g@˰ @@@@@#I@4I@7I@6@ภ'A%@A@ Ѡ@@@5I@=@@ o  Z#@@@@@"I@3@@*@@@A@ o  !,@@@ఠ'compile) p l t p l {@ KA@@@@@H@C@@@DH@@@D@@@PH@M@@@H@N@@OH@A@@BH@?3        @@@@@@࣠6%*opt*Aఠ;+< p l ~ p l @ LA@@)H@IH@F3        @< p l p }  @@@@ภ%false p l  p l @;  @@@M@@@@B@@A @@ @ @@@@@J@@ p l | p l @@FAĠE p l  p l @D@@@@G3        @(3-@.@/@@@@@@ డ g#Sys+file_exists q   q  @  q   q  @@@&stringQ@@@$boolE@@@@@4caml_sys_file_existsAA @@@'sys.mlimjjmj@@+Stdlib__SysC@"@@@@@@@@@@@3 ' & & ' ' ' ' '@@@@@@ఐ,test_program @@@G@@@F@ @@@E@ @@@D%argv0X @@@C@@@B@ @@@A@@@@@@@@=@@@@?@@@>@@<@@;@@:@@9@@8@@7@@6@@5@@4@@3@@2@ ` c@@ R@@@@@@@@@|z@@@@@@yw@@@@@@vt@@@ @@@ sq@@@ @@@ pn@@@ @@@@ 1@@@@m@@@l j@@@@@@@ih@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ภ$Some;i@gA@AA@A@@gఐ4'runtime4|  5|  @Y@@@@@]M@_M@^<@@@  @@@`@@ภ$#@@ @@@b@@@aN@ภ."-ఐ&stdlib_|  `|  @]@@@@@YM@dM@cg@@@  @@@ek@ภO?N@?@4 @@@g@@@fy@ ภ]M\@M@B @@@i@@@h@ ภk[j@[@P@@@k@@@j@@ఐ #env|  |  @ @@ @@ఐ(compiler|  |  @@@@%@@@PM@nM@m@$ภ@@'@@@p@@@o@@ఐ.$args|  |  @ư@@54@@@M@@@LM@sM@q@@@@@렠@@@uM@H@A@{  @@డ ,.display_output+Environment}  }  @ }  }  @@@ N@@@v@@@u u@@@t@@s@ *   + ! @@DT@@@@@@@z@@@y @@@x@@w3@@@@@@@ఐ&output*}  \@ ]@@0/@@@@@@L@L@@@Bi@@@Qj@@7@Mk@@_@tl@@1@Gm@@K@n@@L@[oA@H@v@A@s@ ఐ'compileK  "L  )@@@@@  ʠ @@@@@@@ @@@ @@@@@@@3VUUVVVVV@@@@ ߐภD4C@4@  @@@@@@@@ภ ϰx  *y  ,@ @@@ @@@I@ @@6@@@@@H@&@@ఐ%files@ . 2@ . 7@ݰ@@ 4@@ఐ 'compile@ . 9 @Q @@ ?@@ @@@ 0@ #@@F@\ @@G@ @@@! @@ @ @@ <@X @@  @A @@  @  @@  @  A@ LE@ @A@ @@ఠ6test_libraries_in_progE  E  @QA@@2expected_exit_code ?#intA@@@!E@@@@E@@@@@!E@@?>@@@! @@@! E@z@@@"E@@@E@@@E@@@E@3@ T  @ @ @@@࣠22A6E  E  '@RA@@ w8@@@3@ME  o+f@@@@@ E  @@#envAE  (E  +@*SA@@A3        @% T@@@@!@"@@@@  @@)librariesA(E  ,)E  5@?TA@@M3"!!"""""@"Y@@@@@@@@@ఠ+has_c_stubs;H  <H  @RUA@@@3@@@I@D@@@I@@@I@3CBBCCCCC@".q@%@&@@@࣠@'libraryA[H  \H  @rVA@@3UTTUUUUU@)cH  dH @@@@@  @@డZ\oH  pH  @Y@@@Y@@@@X@@@v@@@@@@@3uttuuuuu@!-?@$@%@@@@డ f hH  H  @ e@@@K@@ c@@@@@@@@@ఐ$modeH  H  @&@@'@@ภ(BytecodeH  H  @C@@@L@5@@@@@@@@L@=@@డ+"<>H H @@!a@@ @@@*@@)@@()%notequalBA @@@@ ~QQ ~Q@@R@@@@I@@@@@@@@@j@@ఐ'libraryH  H @t@@w@@'dynlinkH H  @@H H @@@@@@@@@@L@@@ H  @@@A@I@@A@@@ఠ+has_c_stubsII&@1WA@@$boolE@@@I@ 3@@@@@@డ$List&exists6I)7I-@ :I.;I4@@@@!a@&@@@@@@$listK@@@3@@@@@@@@(list.mli$$$$@@,Stdlib__Liste@'"@@@@E@!3E@E@I@#@@@@@@"@@@R@@@@@@@O@@ఐD+has_c_stubsI5I@@Y@@@r@@@@@@@@d@@ఐo)librariesIAIJ@G@@q@@b@@xr@A@I@@@ఠ'runtime֠M3;M3B@XA@@@@@I@3@@@@@@డO[aO[c@@@@@@@@@@@@@@@@@@@@డ7NEPNEQ@@@@J@@@@@@@@@2@@ఐ٠$modeNEKNEO@l@@?@@ภ(BytecodeNERNEZ@@@@%K@M@@@@@@@@K@U@@డq P~P~@@@@@@@@@@@@@@@@@@p@@డ(O[w)O[x@@@@ i@@@K@ @@@@ @@@@@@ఐJ2expected_exit_codeBO[dCO[v@+@@@@ภ$NoneNO[yOO[}@*@@@$K@@@@@=@@@@L@@@డ#notgP~hP~@@9@@@F=@@@E@@D(%boolnotAA;@@@9LL:Lt@@4\@@@@@@@@@@@@@@ఐ&configP~P~@@@@ %target_launcher_searches_for_ocamlrunP~P~@3 %target_launcher_searches_for_ocamlrun@@@@@@@@E#3,has_ocamlnat @@@@@@@A1s f j2s f }@@V@3,has_ocamlopt@@@@@A@A;u  launcher_searches_for_ocamlrun< @@@@@D9@Ac{  d{  @@#Z@F3YA@@'@@@:I@*3&%%&&&&&@@@@@@డ&(;Vsy<Vs{@%@@@%@@@0@$@@@/B@@@.@@-@@,@@ఐ;+has_c_stubsUUagVUar@@@A@@@J@=/@@డCEjVskVs@B@@@@@@LJ@C@D@@@B@@A@@@J@@ఐ2expected_exit_codeVs|Vs@m@@W@@ภ$NoneVsVs@ l@@@$J@Pe@@@@y@@@;@QK@Km@@I @@qn@A@TQU@@@ఠ2expected_exit_codeؠXX@ZA@@E@!VE@R3@@@@@@ఐŠ2expected_exit_codeYY@@@9@@@T3@@@@Ġ$SomeZZ@ఠ$code٠ZZ@[A@@M@X@@@@@X@@@Y@@\@@@Z#@@@ఐ$code\-7\-;@@@@@D3@B @@@Ġ$None]<D]<H@ @@@@z;@@@_A@@~?@@@`E@@@డw"||a a @@@@@P@@@@O@@@N@@M@@L'%sequorBA@@@@@@^@@@@@@@h@@@@g@@@f@@e@@dz@@డ46I`J`@3@@@3@@@z@2@@@yP@@@x@@w@@v@@డ#Sys&cygwing`h`@ k`l`@@ X@@@-@ Q R@@ P[@ @@a@@@M@M@@@డuw``@t@@@t@@@@s@@@@@@@@@@@@డ ~``@}@@@N@@{@@@@@@@@@ఐ$mode``@>@@@@ภ&Native``@X@@@O@@@@@@@@@O@@@డD$List#mem``@ ``@@@!a@@ @@@@@@@@@@@+'C'C+'C'b@@h@@@@N@@@@@@@@@@@@K@@$unix``@@``@@X@@ఐ)libraries&`'` @ٰ@@Je@@F@@ @@@@O@m@@w @@ @@@@N@u@@:`;` @@'@@@t@M@@@డ 9 ;Na AOa C@ 8@@@ 8@@@@ 7@@@ U@@@@@@@@@డ#notja ka @@@@@@@@@@@@@@డ&Config9supports_shared_libraries&Configa  a &@ a 'a @@@$boolE@@@ @0utils/config.mli%$$%$$@@&ConfigH@@@2@@@N@ N@ @@8@@ @@@@ N@@@ఐ+has_c_stubsa Da O@@@ @@@M@ M@ @@a a P@@@@@s@ M@@@ @@F@@@ L@r @Bdd@@%E@ @@ff@@ K@ @`@@1@@@AY@@30@A@X @@@@ఠ)exit_code+hh@\A@@@@@! I@ 3@JVO@P@Q@@@@ఠ&output,hh@]A@@@@@! @@@! I@ @@" @@@"@@@ @@ఠ%fails-#i $i @:^A@@V@@@ J@ 2@డ"<>5i 06i 2@m@@@iJ@ @k@@@ @@ @@ G@@ఐ2expected_exit_codeKi Li /@Q@@T@@@Ui 3Vi 4@@K@ _@@Zi [i 5@@3b@A@]i @@డ+run_process+Environmentkj9?lj9J@ oj9Kpj9V@@ 7@@ 7 5 2@@@ @@@  / > -@@@ @@@  , G *@@@ @@@  ) P '@@@ @@@  & Y $@@@ @@@  # b !@@@ @@@ @@@@ @ @@@   u @@@ @@@ @  @@@ @@@ @ @@@ @  @@@ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ 3@@@@@@ ภఐC'runtimej9_j9f@@@ @@@!J@!J@!@@@j @@@!  @ ภҠఐݠ%stubsj9hj9m@S@@ @@@!J@!"J@!!9@@@ @@@!#=@ ภ  @@ ٠ @@@!%@@@!$K@ ภ  @@  @@@!'@@@!&Y@ ภ  @@  @@@!)@@@!(g@ ภ  ఐ(%failsKj9XLj9]@v@@ @@@!J@!+J@!*@@@Π @@@!,@@ఐS#envcj9ndj9q@7@@@@ఐ,test_programpj9rqj9~@ְ@@ @@@!J@!/J@!.@ ภ \L [@L@ A @@@!1@@@!0@@ఐm)librariesj9j9@E@@@@+@@@@@@!4J@!@B @@ @A@h@@ డ.display_output+Environmentll@ ll@@@@@@@@!:@@@!9-@@@!8@@!73@@@@@@@@@ఐΠ&outputll@ @@ڠ@@@!C@@@!BJ@!FJ@!D@@2@@t@@@!HI@!A#@డU"<>mm@*@@@IH@!M@(@@@!L@@!K@@!J:@@ఐ)exit_codem m@C@@[G@@ఐk2expected_exit_codemm@@@jT@@@@@@@!WI@!UZ@డ-,fail_because'Harness+n,n@ /n0n@@@&Stdlib'format4!a@ @@@+@@@!b@@@@@@@eVVeV@@e@+&@@@#@@@@!@H@!^H@!@@!H@!@@!H@!Z)@@@!\(@@@!] @A>4'format6%H@!H@!j@!o@!p@!q$@!r@A8CamlinternalFormatBasics'format6@!u2@!v1@!w4@!x7@!yA@!z@@!{@!t9@!s@!n@@![Q@@!Y@@ภ,+nn*A*ภ7 ภ?ZY@@sJ@!s@@@!I@! @ภO# & is expected to return with exit code (@(@@@@!I@!I@!!@ภc#Int8;#Int8!x@c!b@d!c@e!d@f!e@g!f@h@@@Ġ!y@k!a@n@(int_conv@@@Š֠2@@@Ơ)precision@ e@@@@@@@@Ǡ}!A=951@@@@DDAYAAv%%w@@@d@ภ%Int_d;%Int_d2@@@@@@@P@@AUU@@@E@@@<@@@!I@!@ภ-.@@J@!Ѡ H@!I@!@@@!I@!@ภ@,No_precisionB;,No_precisionQ!a@@@@@@@@BAAAlLNlLq@@@o@@@a")@@@!I@!@ภ `a@@5b@@@!fI@!I@!I@!I@!i@@@!gI@!I@!I@!I@!  PJ@!@@@!I@"@@@\J@!"^J@!@@@!I@!@@@j-"#$kJ@!@@@!I@!@@@~J@!}9./0yJ@!@@@!I@!@ *%s is expected to return with exit code %d1@1@'@@@!I@"I@"*@@87@@QF@AI@" _I@" VI@" I@" @AI@"sI@"jI@"mI@"pI@"I@"@@"I@"/@" I@"@@!eI@!b@@ఐ,test_program0o+F1o+R@@@I@"q@@ఐ2expected_exit_code?o+S@o+e@E@@~@@@@H@!l@@Em@@@ @@@@ A@@N@g B@@@ C@@@/ D@@@ E@@  &@  F@@  @ E GA@ E@" N@A@ K@@ఠ6test_libraries_in_prog.Zqlrl@q_A@@2expected_exit_codeߠ @@@$E@"#@@@"$E@" @@@@$E@"+@ ܠ @@@$@@@$E@"0@@@#E@"1@@"2E@",@@"-E@"!@@""E@"3@   @ @ @@@࣠///A3qlql@`A@@5@@@"(@@ql @@#env0Aqlql@aA@@;3@%*K@@@"'@@@@@@  @@)libraries1Aqlql@bA@@G3@"S@@@@@@@@డ6rr@@@@@@@":@@@@"9@@@"8@@"7@@"63@ ,i@#@$@@@@డTɠ˰rr@Ȱ@@@"I@"K@@@@"J@@"I@@"H@@ఐ$moderr@@@6'@@ภ&Nativerr@@@@BJ@"V5@@@@@@@"F@"WJ@"S=@@డ$List#mem/r0r@ 3r4r@@K@@@E@$E@"hI@"]@M @@@"\L@@@"[@@"Z@@"Yf@@'threadsPrQr@@SrTr@@s@@ఐ)libraries_r`r@}@@@@4@@F@@@"E@"jJ@"f@@e @@@@@"kI@"D@@ఠ.threads_plugin2zt%{t3@cA@@@@@"|I@"l3zyyzzzzz@@@@డ)in_libdir+Environmentu6>u6I@ u6Ju6S@@@@@@@@@@%@@@@@@@@D : :D : _@@L@@@@@@@"r@@@@"q7@@@"p@@"o@@"n6@@ఐ#envu6Tu6W@@@TC@@డ7(Filename&concatu6Yu6a@ u6bu6h@@@&stringQ@@@"@@@@" @@@"@@"@@"@,filename.mli^^@@0Stdlib__FilenameC@!@@@@@@#Y@@@@#X@@@#W@@#V@@#U@@'threads u6ju6q@@u6iu6r@@5@@@#eK@#gK@#f@@,threads.cmxs!u6t"u6@@$u6s%u6@@A@@@#dK@#iK@#h@@.u6X/u6@@@@@"}@#jK@#c@@ @@@A@9t! @@డ#Sys+file_existsIwJw@ MwNw@@B@@@B@@@#n?@@@#m@@#l3ONNOOOOO@x@@@@@@ఐ점.threads_pluginfwgw@ @@\@@@#uI@#wI@#v@@( @@@@@#xI@#t@డ,fail_because'Harnessxx@ xx@@X@@@X H@#{P@@@#}O@@@#~H@#@Ag)@#@#@#@#@A9$)@#*@#)@#,@#/@#.@#@@#@#/@#@#@@#|;@@#zr@@ภKJxxAIภV   %threads.cmxs is not expected to exist@@@@@#I@#I@#@ภjPO@@>aJ@#@@@#I@#I@#Š@@@#I@#I@#Ơ vJ@#@@@#I@#@@<@[J@#J@#@@@#I@#@?N@N@c@@@#I@#I@#@@UT@@1*@AI@#ڠ?I@#۠:I@#ܠI@#@AI@#SI@#NI@#QI@#TI@#I@#@@#I@#ߑ/@#I@#@@#I@# @@@@ @ภiz jz @@@@H@#@ow@@@8@@@ఐ 6test_libraries_in_prog{|#||9@@@  @@@#@@@#@@@@#@@@@#@@@#%@@@#@@#@@#@@#@ ؐఐ 2expected_exit_code|;|M@@@"A@@@$I@$ I@$ )@@ఐ#env|N|Q@@@G6@@ఐ)libraries|R|[@@@KC@@M@@CI@$F@r@@<H@-A@oE@$E@A@qln @@@ఠ+not_dynlinkI~ag~ar@dA@@@@@@$7G@$,@@@$6E@$ @@@$%E@$@@$E@$3@j@@@@@࣠@!lKA~as~at@eA@@"3@/ ~ac ~a@@@@@  @@డy#not~aw~az@ @@@ @@@$ @@@$@@$3@)A@ @!@@@@డ$List#mem4~a|5~a@ 8~a9~a@@ P@@@V@ L[@@@$+ K@@@$*@@$)@@$(&@@'dynlinkO~aP~a@@R~aS~a@@j3@@ఐ`!l^~a_~a@=@@~@@@b~a{Y@@ @@@$&@$9H@$5I@@Ua@@{J@kbA@E@$;i@A@f@@@ఠ%filesL|}@fA@@ @@@$]@@@$\E@$=3~~@@@@@@@ఠ*re_compileM@gA@@@@@$c@@@$b@=@@@$a@@@$`@@$_@@$^E@$>"@@0@@@0@@@$A)@ఐ]4compile_test_program@ΰ@@@X@@@$M@SP@@@$F@@@$E@MKQ@@@$L@@@$K@s@@@$JJ@@@$I@@$H@@$G@@$D@@$CX@@ภ@@?@@@@@@$dF@$hh@@7@@@x@b@@$iF@$[q@A@@@@ఠ2expected_exit_codeN  @ hA@@@@$l@@@$mE@$j3        @@@@@@@@ภ$None  @@@@@@@$n@A@ %@@@ఠ)librariesO 0 1 @ GiA@@  H-@@@$@@@$E@$t@@@$E@$o3 : 9 9 : : : : :@3D=@>@?@@@డ$List&filter T U@  X Y@@@@!a@D@@@@@@@@@9@@@@@@@@^-)-)^-)-X@@o@$@@@@B@@@$w@@$v@J@@@$uON@@@$s@@$r@@$qE@@ఐ+not_dynlink  &@ @@@ @@@$@@@$ /@@@$@@$^@@ఐà&config ' -@@@m@)libraries . 7@ Ͱ @@R@@@$F@$F@$|@@m @@}@A@  @@ డ4$List$iter FJ FN@  FO FS@@@@!a@@@@k@@j@@@@i@@@h@@g@@f@@@U@#@@@@[Z@@@$@@@$F@$ @@@$@@$@@@@$1@@@$@@$@@$3!!!!!!!!@@@@@@@ఐŠ6test_libraries_in_prog!FU! Fk@,@@\@@@$@@@$@f@@@$@@@@$@@@$@@@$@@$@@$@@$,@ܐఐ@2expected_exit_code!FFm!GF@@@Ơ@@@$@@@$I@$I@$D@@ఐ_#env!^F!_F@G@@Q@@!bFT!cF@@@Ġ@@@$@@@$@@@$@@$`@@ఐJ)libraries!zF!{F@j@@@@@$G@$G@$u@@ @@@@@$F@${@డ"<>!!@ΰ@@@v@$@@@$E@$@ @@@$@@$@@$@@ఐ2expected_exit_code!!@m@@@@ภ$None!!@@@@%E@$@@@@A@@@$F@$@ఐ?*re_compile!ix!i@@@SQW@@@$@@@$@y@@@$P@@@$@@$@@$@dภ!Ġภ!i!i@@@@u@@@% G@%@@@u@@@%@@ภ_"i" i@^@@@@@@% G@%@@>@@}@@@% @Ġt"is"iu@s@@@@@@@%@@@@@%@@@డ $List$iter"3"4@ "7"8@@_@@@@@@@%]@@@%\G@%"d@@@%$@@%#@c@@@%! u@@@% @@%@@%D@@ఐ6test_libraries_in_prog"`"a@m@@ޠ@@@%=@@@%<@ @@@%;@Ѡ@@@%:@@@%9@@@%8@@%7@@%6@@%5m@ภ_"O^@"O@@@@%T@@@%S{@@ఐ #env""@ ~@@ @@""@@@@@@%Y@@@%X<@@@%W@@%V@@ఐ)libraries""@@@Π|@@@%0H@%aH@%^@@ @@ M@@@%@@@A"io@@ R@@@%d@@"@@@@@@Ġ(";A";C@'@@@@ d@@@%h@@ g@@@%i@@@డ!G$List$iter""@ ""@@@@@@@@@%F@%p@@@%r@@%q@ @@@%o!%@@@%n@@%m@@%l@@డ#*erase_file'Harness##@ ##@@@@@@@@%@@@%@@%@@ఐ%files#,!6@!7@@HB@@@%~G@%G@%&@@P!@@@!]'@@@A#8;=!B@@!_)@x!C@@!`@!D@@!a)@A!E@@!b@4!F@@!cJ@n!G@@!d@9!H@@!eR@!I@@!f@!J@@!g@!!K@@!h@!U!LA@!A@%!S@A@!P@!P!O@!d@!!@!@!@@3#?#>#>#?#?#?#?#?@!!@@@!+TestDynlinkA@@ H************************************************************************#SA@@#TA@L@ H #YBMM#ZBM@ H OCaml #_C#`C@ H #eD#fD3@ H David Allsopp, University of Cambridge & Tarides #kE44#lE4@ H #qF#rF@ H Copyright 2024 David Allsopp Ltd. #wG#xG@ H #}H#~Hg@ H All rights reserved. This file is distributed under the terms of #Ihh#Ih@ H the GNU Lesser General Public License version 2.1, with the #J#J@ H special exception on linking described in the file LICENSE. #K#KN@ H #LOO#LO@ H************************************************************************#M#M@ This test verifies that a series of libraries can be loaded via Dynlink. Any failures will cause either an exception or a compilation error. #Q#RK@ The test program is given a list of library names (e.g. unix threads) on the command line and uses Dynlink to load that library from a subdirectory with the same name in libdir #X#Z'K@ } In the Renamed phase for a bytecode-only build, ocamlc will be ocamlc.byte and will need to be called via ocamlrun #t & ,#u n @ b In the Renamed phase, Config.standard_library will still point to the Original location #x  #y X u@ Call the test program individually for each library. ~expected_exit_code is part of a mechanism required for Relocatable OCaml which is at present not needed. #B F H#D  @ For simplicity, the test for whether libraries have C stubs is based on the names, rather than inspecting the library metadata #F 8 <#G  @ In the Renamed phase, the test driver will need to be launched with ocamlrun, unless executables produced by the compiler are capable of searching for the runtime (as the Windows executable launcher does) #JNR#L2@ If the library needs C stubs to be loaded dynamically, then the runtime will need CAML_LD_LIBRARY_PATH set in the Renamed phase. #R#SP@ + The test driver is _not_ expected to work #[#[,@ h Systems configured with --disable-shared can't load bytecode libraries which need C stubs #^LV#_@ U cf. ocaml/flexdll#146 - Cygwin's natdynlink can't load unix.cmxs #bVb#c@ ) cf. ocaml/ocaml#12250 - no threads.cmxs #s#s@  Bytecode executables launched using the executable header require caml_executable_name to know where the runtime is. As the Standard Library is only stored as an absolute path, this doesn't affect the execution of the test driver (yet). ##@ The test driver is unable to locate ocamlrun, which means that it can't locate ld.conf. Re-build the test driver using -custom to work around this. ##Wh@@(./ocamlc)-nostdlib"-I(./stdlib"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I/testsuite/tools"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-I/testsuite/tools"-I/testsuite/tools"-c$.$/ L/home/touraine/ci/builds/workspace/precheck/flambda/false/label/ocaml-arm-32 @543210/.-,+*)('&%$#"! @@0y5RξC X%:3$D$C$C$D$D$D$D$D@$B@@8CamlinternalFormatBasics0%FU(Q/Tu Ӑ0aϊsD@L㏠0T?A5P*=$`0,t~1lZ㠠&Stdlib0Lku]8_٠0Stdlib__Bigarray0