Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2014-10-20

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

All times shown according to UTC.

Time Nick Message
19:37 xstill joined #divine
19:37 xstill nějak to chcíplo
19:38 xstill a je teda dost na nic, že symboly při linkování mění jméno
19:39 mornfall to asi záleží na linker scriptu
19:39 xstill no v llvm-link
19:39 xstill _GLOBAL__I_a -> _GLOBAL__I_a338
19:39 mornfall hm
19:39 xstill případně jiné číslo
19:39 mornfall není tam špatnej linkage?
19:40 xstill je to internal tuším
19:40 mornfall tak proto
19:40 mornfall asi nechceš mít víc kopií stejnýho symbolu
19:40 mornfall (ale chceš mít každou kopii objektu pod jiným symbolem)
19:41 mornfall vadí to něčemu?
19:41 xstill jo, myslím si potom, že ten symbol nikdo nepoužívá
19:41 mornfall no, ty reference na něj se musí taky změnit snad, ne?
19:42 xstill jo, jenže já beru jako kořeny všechny symboly v .bc co obashuje main (protože projít to od _divine_strart nestačí)
19:43 xstill takže si uložím co za symboly tam jsou, pak to slinkuju a pak hledám ty nedosažitelné
19:43 mornfall hm, není mi furt jasný proč to nemůžeš procházet až slinkovaný
19:44 xstill a poznám ze kterého modulu pochází?
19:45 mornfall ne, potřebuješ to?
19:45 mornfall jo aha
19:45 xstill no musím něco vzít jako explicitně dosažitelný
19:45 mornfall já už chápu cos myslel :)
19:45 mornfall a proč teda nestačí ten main?
19:45 mornfall já něco takovýho minule říkal ale nějak si mě ukecal že to bude stačit
19:47 xstill chyběl tam nějakej __cxa_* bordel
19:49 xstill a i llvm.global_ctors teda
19:50 mornfall global_ctors asi můžeš vzít za další root
19:51 mornfall taky bude asi chybět memcpy a spol
19:52 mornfall nevim, asi bude spíš řešení vyrobit tvrdej seznam root symbolů
19:52 mornfall (_divine_start, memmove, memcpy, memset, llvm.global_ctors, ...)
19:53 xstill proč by měl chybět memmove & spol?
19:53 mornfall protože můžeš mít program co ho nevolá ale používá něakej memcpy intrinsic
19:53 mornfall kterej se při loadu přeloží na call na normální memcpy
19:53 xstill aha
19:54 mornfall clang něco takovýho generuje na kopírování struktur
20:05 xstill hm, teď mi to segví když se pokusím smazat nepoužité globální symboly
20:05 mornfall mažeš to v dobrým pořadí?
20:05 mornfall (jestli na tom teda záleží...)
20:05 xstill nemělo by (používám dropAllReferrences, to by to mělo umět)
20:06 xstill ono to padá až když ten modul zapisuju
20:06 mornfall tak, zkorumpovaná paměť může padat kdykoliv
20:06 mornfall si to zvalgrinduj
20:07 xstill mám trochu obavu, že budu potřebovat debug verzi llvm
20:07 xstill ale zkusím to
20:08 xstill vypadá to na dereferenci nullptr
20:10 mornfall no, dropAllReferences nastaví všechny operandy na nullptr
20:10 mornfall to bys měl proiterovat všechny nepoužitý symboly, zavolat na ně dropAllReferences a pak je všechny smazat v dalším průchodu
20:11 mornfall podle dokumentace se na objekt po dropAllReferences už nesmí nijak šahat (jinak asi segv), krom operator delete
20:12 xstill no já jsem z toho pochopil, že to zároveň i smaže
20:12 mornfall ne :-)
20:12 xstill aha, tak musím zjistit jak je skutečně smazat
20:17 mornfall eraseFromParent možná chceš
20:17 xstill :-) zrovna jsem to našel
20:20 xstill blbec jsem
20:46 xstill_ joined #divine
21:03 xstill tak nevím, v tom valgrindu je toho nějak moc (http://pastebin.dqd.cz/twE3/), brick-llvm.h:108 je odstranění té globální funkce/proměnné zdá se, že na to hrabou úplně všichni
21:04 xstill jo ale mám rozbitou haldu někde
21:05 xstill podařilo se mi spustit assertion v malloc

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