Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2016-10-04

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:10 divine-buildbot Hey! build divine-nightly-release #15 is complete: Success [finished]
00:56 divine-buildbot Hey! build divine-nightly-debug #15 is complete: Success [finished]
05:01 xstill jo to je dokonce ještě lepší
05:49 xstill hm, Honza tu inicializaci ale udělal špatně, patche u mě
05:56 yaqwsx joined #divine
05:57 yaqwsx Co bylo špatně na inicializaci?
06:19 mornfall ještě by byl fajn nějakej test kterej by to třeba poznal
06:20 mornfall ('initialized at as the very first action' je asi chyba?)
06:26 yaqwsx joined #divine
06:33 xstill_ -at
06:33 xstill_ mám to opravit?
06:33 xstill_ test by taky mohl být
06:44 xstill_ mornfall: amendnuto a test přidán
06:53 evenfall xstill_: staženo; a chápu sice snahu důkladně věci dokumentovat, ale dost často jsou v těch dlouhých popisech chyby a nepřesnosti nebo matoucí formulace (teď třeba 'very first action of DiOS' je __boot, _entry je až daleko za tím)
06:55 xstill_ hm, taky pravda. A stačí určitě inicializovat v _start? Asi by mělo protože DiOS by na pthready neměl hrabat.
06:56 evenfall nesmí to být v kernel mode
06:56 xstill_ jo to dává smysl
06:57 evenfall teda teď zrovna by to asi vyšlo na stejno, ale jakmile budou procesy tak se to hrozně rozbije
06:58 evenfall (a zase myslim _start a píšu _entry...)
06:59 xstill_ to už chápu
06:59 xstill_ v repu je test na globální konstruktory a destruktory (attribute) a c++ globální konstruktory a destruktory. C++ destruktory nefungují
07:03 yaqwsx joined #divine
07:04 xstill_ yaqwsx: takže atexit asi nefunguje protože c++ destruktory se řeší tím
07:05 xstill_ yaqwsx: /home/xstill/DIVINE/divine4/test/cpp/global-ctors-dtors.cpp
07:05 evenfall xstill_: test/libc/atexit*
07:05 xstill_ hm
07:05 xstill_ pak to možná není atexit
07:05 xstill_ ale každopádně to nefunguje
07:06 yaqwsx Já myslel, že destruktory jsou řešeny runDtors
07:06 evenfall __cxa_atexit
07:06 evenfall yaqwsx: to jsou elfový destruktory
07:07 yaqwsx __cxa_atexit je neimplementováno.
07:07 xstill_ jo to jsou ty co odpovídaj __attribute__((destructor))
07:07 evenfall ano, __cxa_atexit je v glue a nedělá nic
07:08 evenfall a nemůže úplně volat atexit() protože to funguje jinak
07:13 evenfall asi bude muset mít vlastní globální objekt, etc etc
07:14 xstill_ koukám, že to  není úplně jednoduchý a to ještě nemám knihovny, až jednou budeme mít tak to bude ještě zábava (http://refspecs.linuxbase.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/baselib---cxa-atexit.html)
07:14 xstill_ hm, ale: The __cxa_atexit() function is used to implement atexit(), as described in ISO POSIX (2003). Calling atexit(func) from the statically linked part of an application shall be equivalent to __cxa_atexit(func, NULL, NULL).
07:14 xstill_ nevím kde je teď atexit teda
07:15 xstill_ ale možná to dává smysl i pokud by byl v pdclib
07:18 yaqwsx atexit je teď v PDClib
07:19 evenfall atexit musí být v libc
07:19 evenfall __cxa_atexit může být, aspoň teoreticky, taky v libc
07:20 evenfall nebo může být v libc++abi
07:20 xstill_ jo ale stejně je ifdef __divine__ jinej, takže bych tam klidně dal volání na __cxa_atexit místo toho a implementoval __cxa_atexit
07:20 xstill_ musl má třeba atexit implementovaný přes __cxa_atexit
07:20 evenfall a __cxa_atexit je nespecifikovaný (je to jen v ABI, který se dost různí)
07:21 xstill_ yaqwsx: https://git.musl-libc.org/cgit/musl/tree/src/exit/atexit.c
08:01 yaqwsx joined #divine
08:12 evenfall jo, požaduje se navíc aby __cxa_atexit a atexit měli společnej priority list (musí se prokládat podle pořadí registrace)
08:12 evenfall nebo taky měly
08:22 evenfall taky má být atexit thread-safe (náš není)
08:23 evenfall aby to nebylo jednoduchý tak od C11 je ještě at_quick_exit
08:24 yaqwsx joined #divine
10:02 divine-buildbot Hey! build divine-next-debug #77 is complete: Failure [finished]
11:48 yaqwsx joined #divine
14:37 divine-buildbot Hey! build divine-next-debug #78 is complete: Failure [finished]
16:34 yaqwsx joined #divine
17:16 mornfall yaqwsx: máš volné pole, k atexit jsem se nedostal
18:30 yaqwsx Ok, cca za 30-40 minut se na to vrhnu.
18:32 yaqwsx Zítra se omlouvám, ale dopoldne asi nestihnu dorazit. Předpokládám, že dorazím mezi 12 a 1. Rád bych se pak odpoledne pobavil o implementaci forku.
18:33 mornfall ok
19:02 xstill joined #divine
19:02 xstill nějak to tu zdechlo :-/
19:04 xstill a v journálu samozřejmě těžký kulový
19:33 yaqwsx joined #divine
20:03 yaqwsx joined #divine
20:03 yaqwsx 2 otázky: __vm_obj_resize je levná operace, pamatuji si správně?
20:05 xstill počítám, že docela jo, určitě levnější než make+copy+free
20:05 yaqwsx A druhá otázka: když implementuji __cxx_atexit, tak má smysl pomocí něj rovnou implementovat i atexit. Otázka je - kde volat __cxx_finalize v naší mašinerii (a s jakým dso handle?)
20:05 xstill podle eval.hpp se to jen provolá do haldy
20:05 xstill mornfall: chybí ti tam validace parametrů
20:05 xstill co je __cxx_finalize?
20:06 yaqwsx http://refspecs.linuxbase.org/LSB_3.2.0/LSB-Core-generic/LSB-Core-generic/baselib---cxa_finalize.html
20:07 yaqwsx Beru zpět - když se dívám do muslu, tak je to implementované naopak.
20:07 xstill podle té dokumentace to můžeš volat při exitu
20:07 xstill a to mi dává smysl
20:08 xstill DSO má být 0 (viz předposlední odstavec)
20:08 xstill a voláš to podle mě před globálními destruktory
20:08 xstill ale to jen logicky odvozuju z toho, že C++ konstruktory běží +- po globálních konstruktorech
20:08 xstill (tedy snaží se o to)
20:08 yaqwsx Ok
20:24 yaqwsx Umím pustit jenom jednu složku testů? make functional libc nevypadá, že by fungovalo.
20:24 xstill make functional T=substring
20:24 yaqwsx Díky
20:38 yaqwsx 32.invalid.c je otravný test. Když se změní v glue.cpp je třeba jej upravovat.
20:38 yaqwsx Bude vadit, když v něm vynechám číslo řádku?
20:39 xstill dej tam alespoň jméno funkce do té errspec (a zarecorduj to samostatně)
20:40 xstill (když dáš jméno funkce nemůžeš dát soubor ale to nevadí)
20:40 yaqwsx Ok
20:48 yaqwsx Když jsem si pullnul, dostal jsem konflikt v _start (to, jak jsi přehazoval __pthread_initialize), jelikož mornfall asi nepullnul můj patch, který tam odebírá debugovací hlášku. Konflikt jsem opravil tak, ale darcs rec mi ho nabízí k zarecordování - mám to nějak řešit (např. zarecordovat mege patch)?
20:50 xstill počkej nechápu, jak že jsi opravil ten konflikt?
20:50 xstill pokud to mornfall nepullnul tak to asi můžeš amendnout
20:51 yaqwsx Ok, domluvím se s mornfallem.
20:51 yaqwsx Jinak u mě jsou patche na __cxa_atexit. Pokud máš chvilku budu rád, pokud se na ně podíváš a zkontroluješ, jestli jsem tam neudělal nějakou velkou hovadinu (něco v kontextu knihovny, čeho jsem si nevšimnul)
20:55 xstill jo, mrknu
20:56 xstill yaqwsx: kde máš divine?
20:56 xstill btw. v isu je vyhodnocovátko na eval kdyby se ti chtělo
20:58 xstill aha, našel jsem
20:59 yaqwsx home/xmrazek7/divine4
20:59 yaqwsx xstill: Podívám se na ně
21:00 xstill atexit_count neptořebuješ, ne? alespoň pokud to zvětšuješ po 1, což v divine dává i největší smysl
21:02 xstill ten call bych asi měl raději jinde než v __cxxabiv1, nebo mu dal divnější název
21:02 xstill a __cxa_atexit není extern "C"?
21:04 xstill nevím úplně jestli to dávat do libc++abi i když to asi dává smysl, ale atexit bych dal do pdclibu
21:04 xstill jinak funkčně si mi to zdá OK
21:06 xstill normálně bych do pdclibu narval v tom atexit.cpp jen prototyp __cxa_atexit, velde toho bych dal ten call a tu implementaci co máš teď v cxa_atexit.cpp
21:07 xstill aha extern "C" to má z cxxabi.h
21:07 xstill takže to je ok
21:09 xstill (jdu spát, zbytek zítra)

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary