Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2013-09-05

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

All times shown according to UTC.

Time Nick Message
07:44 spito joined #divine
10:52 xbarnat joined #divine
13:26 xstill hm, ld.gold: error: ./libdivine.a: multiple definition of '__cxa_pure_virtual'
13:28 xstill ona totiž je v external/libsupc++/cxa_pure_virtual.cxx
13:36 mornfall hm
13:36 mornfall je možný že se něco linkuje ve špatným pořadí
13:37 mornfall xstill: hm, není, cxa_pure_virtual.cxx má jen verzi schovanou v __cxxabiv1...
13:37 mornfall hm
13:37 mornfall extern "C" uvnitř namespace
13:37 mornfall zajímavé :D
13:38 mornfall ale stejně to asi znamená že se něco linkuje blbě, protože tu definici jsem tam nejspíš dal proto že něco nefungovalo; otázka je co
13:44 xstill hm, opravdu jsem našel patch který přesně tenhle řádek přidal...
13:44 xstill no jo ale ta libsupc++ verze není extern "C"
13:44 mornfall je
13:45 mornfall ale je to dobře maskovaný
13:45 mornfall ono stačí aby byl extern "C" prototyp
13:45 mornfall a ten je v cxxabi.h
13:45 xstill ach jo
13:45 xstill to je fakt divný
13:46 mornfall tak ten patch zruš a třeba zjistíš co se rozbije :-)
13:47 xstill no já jsem si to u sebe smazal takže uvidím
13:47 xstill jen to teda nemusím najít
13:47 xstill asi si nepamatuješ co to bylo?
13:47 mornfall začal bych make functional T=llvm
13:47 mornfall nepamatuju no
13:47 xstill to je taky fakt
13:50 xstill hm, tak z testů mě selhal třeba malloc, ale na chybějící _ZTVN10__cxxabiv117__class_type_infoE.
13:50 mornfall wut :-))
13:51 xstill nevím zase chybějící vtable
13:51 xstill je to celé rozbité
13:53 mornfall kdo to C++ vymyslel :-)
13:53 mornfall ale v hydře to taky umírá
13:54 xstill tak to __cxa_pure_virtual chybí v atomic_interface.cpp
13:55 mornfall jo tak :-)
13:55 xstill ale co tam dělá to vůbec nevím
13:59 xstill proč nefunguje llvm-dis na libsupc++.a?
13:59 xstill on je to vlastně asi archiv
13:59 mornfall musíš ho prvně ar x rozbít
14:04 xstill to fakt nechápu jak v cstdlib tak v cxa_pure_virtual je 'define void @__cxa_pure_virtual() #0 {...}'
14:04 xstill nechápu jak to může chybět když to v cstdlib potom není
14:05 mornfall no to je jednoduchý :)
14:05 mornfall archivy se prohledávaj jen jednou
14:05 xstill hm, ale má to jiné atributy: v cxa to má uwtable, v cstdlib nounwind uwtable
14:05 mornfall takže když máš odkaz A -> B aj B -> A tak musíš jeden napsat 2x
14:06 mornfall potřebuješ najít všechny použití toho symbolu
14:06 xstill takže je to o -l flagách?
14:06 mornfall nejspíš jo
14:06 xstill no ale tu chybu, že to tam není dává až divine
14:07 mornfall to je docela zajímavé
14:07 mornfall a v tom výsledném .bc to fakt není jo?
14:08 xstill se podívám, musím to zase smazat z cstdlib
14:12 xstill tak ona se tam neslinkovala
14:12 xstill takže je to těma flagama
14:13 xstill jen nechápu proč si linker nestěžuje
14:13 mornfall na tom je trochu divný že tě linker n... jo, přesně :)
14:13 xstill :-D
14:13 mornfall ale použitý to tam je jo?
14:13 xstill je
14:14 xstill ale tak divně, nebo nevim
14:14 mornfall vždycky to můžeš narvat do requires.c ... :-)
14:14 xstill @_ZTVN10__cxxabiv115__forced_unwindE = internal unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTIN10__cxxabiv115__forced_unwindE to i8*), i8* bitcast (void (%"class.__cxxabiv1::__forced_unwind"*)* @_ZN10__cxxabiv115__forced_unwindD1Ev to i8*), i8* bitcast (void (%"class.__cxxabiv1::__forced_unwind"*)* @_ZN10__cxxabiv115__forced_unwindD0Ev to i8*), i8*   bitcast (void ()* @__cxa_pure_virtual to i8*)]
14:15 xstill a to requires je odkud?
14:15 mornfall compile.h
14:15 mornfall 316
14:16 mornfall ono totiž memset se používá jako implementace llvm.memset intrinsicu a kolikrát tam jiná reference na memset není
14:16 mornfall ale co se děje s tím pure virtual to těžko říct
14:16 mornfall je možný že to ten linker prostě nepozná že to chybí
14:17 mornfall jo aha
14:18 mornfall asi je potřeba destruktor od forced_unwind přestěhovat do libsupc++
14:18 mornfall protože to má pure virtual metodu, takže vtable od toho odkazuje __cxa_pure_virtual
14:18 mornfall jenže ta vtable je v libdivine.a protože tam je ten destruktor...
14:19 xstill do když to dodám do requires tak to tam je slinkované
14:19 mornfall a libsupc++ už se podruhé neprohledá
14:19 xstill a dokonce to funguje
14:19 mornfall :-) ale stejně bude lepší přestěhovat ten destruktor
14:19 mornfall tohle je docela solidní hack
14:21 xstill jo tak já ho zkusím přestěhovat
14:23 xstill asi na to přidám nový soubor
14:30 xstill jo tak to snad pomohlo
14:31 xstill máš nějakou politiku ohledně patchů které mění divine/ i external/?
14:46 xstill patch dostaneš za 25 minut, protože jsem se zase přesunul
14:55 mornfall :-)
14:55 mornfall no, external/xxx/ by mělo jít samostatně, asi, snad
15:08 xstill hm, už jsem to poslal spolu :-(
15:09 mornfall já nevim, je na to nějaký precedens? :)
15:10 xstill nevím
16:38 mornfall já to radši splitnu, protože zatím tam nic takovýho není a ty external věci jsou dost velký
18:30 xstill ok, příště takové věci raději rozdělím
18:39 mornfall já překládám divine debug verzí gcc
18:39 mornfall a divim se že to trvá tak straaašně dlouho
18:39 xstill proč to děláš?
18:39 mornfall protože jsem ji zapomněl v cestě
18:40 xstill ah, já jsem myslel že řešíš nějký zákeřný problém který by vyžadoval tak drastické metody...
18:41 mornfall no, já si tím jen překládal nějaký testcasy na výjimky abych mohl trasovat uvnitř libgcc
18:42 xstill aha
18:43 xstill zdá se mi to nebo nejde z tracu rozumné stáhnout příloha?
18:44 mornfall to by mělo jít
18:44 mornfall už jsem to snad i dělal :)
18:45 mornfall jo, musíš klikat na tu download ikonku vedle názvu
18:45 mornfall šipka dolů s rámečkem
18:45 xstill jo, ona je špatně vidět
18:45 xstill jsem slepej...
18:47 mornfall jakým gcc to ten divine překládáme?
18:48 mornfall tý 4.7.3 to trvá věčnost aj v release buildu (toho gccčka teda)
18:48 xstill no já mám 4.7.2 protože je rychlejší
18:48 xstill a od doby co jsem přešel na nixos bohužel nemůžu překládat clang-em
18:48 mornfall jdu asi opravit překlad clangem :D
18:49 xstill to bys asi spíš musal donutit nixos aby clang používal libstdc++ z gcc 4.7
18:49 mornfall to už mám ;-)
18:49 xstill pak by to mělo jít samo ne?
18:49 mornfall já mam celej nixos přeloženej gcc 4.7 totiž
18:50 xstill to si pak ale musíš všechno překládat ne?
18:50 mornfall no, mělo, ale poslední dobou tam je docela dost errorů co gcc nehlásí ale clang jo
18:52 xstill já jsem vzdal nějaké větší experimenty s nixosem protože se mi nechtělo všechno buildovat
18:52 mornfall no já to tlačim hydrou
18:53 xstill hlavně firefox, thunderbird, libreoffice -- ty ostatní věci by až takový problém nebyly
18:53 xstill aha
18:53 xstill a má to nějaké výhody to mít nad gcc 4.7?
18:53 mornfall ten stejnej branch krmí aj paradise stroje
18:53 mornfall no, že mi funguje clang :D
18:53 mornfall jinak o ničem nevím
18:53 xstill ok
18:54 mornfall každý gcc má nějaký bugy
18:55 mornfall a už máš nixos aj na laptopu?
18:57 xstill jo, už to bude skoro měsíc
18:58 xstill arch mě začínal štvát
19:00 xstill jsme právě zkušel to buildovat protože jsem chtěl llvm s pluginy
19:01 xstill ale nakonec jsem to vyřešil tak že to llvm nemám system wide
19:01 xstill takže nemusím kompilovat všechno
19:03 mornfall Hm. Až na to, že ten patch na gcc 4.7 jsem někde zašantročil a mám to stejně s 4.6. Achjo... :-P
19:05 xstill já jsem přemýšlel nad tím udělat variantu clangu která by měla gcc 4.7 místo 4.6
19:05 xstill ale ještě jsem se k tomu nedostal
19:09 xstill ach jo, v C++11 threadech pořád dostávám jakou bad dereference v shared_ptr
19:12 mornfall ten shared_ptr nefunguje odvždycky
19:12 mornfall ale zatím nevím proč
19:17 xstill hm, on nefunguje jen někdy
19:18 xstill když použiju make_shared tak to nefunguje
19:18 mornfall zajímavé
19:18 mornfall jak máme vůbec udělaný new? :-)
19:19 xstill mě se neptej
19:19 xstill já jen vím že nikdy neselže
19:20 mornfall to je divný
19:20 mornfall protože volá malloc
19:21 mornfall libsupc++/new_op.cc
19:23 xstill no teda nothow new je pěkně hnusný
19:23 mornfall ;-)
19:23 mornfall já ho nepsal, napiš Applu
19:24 xstill bych čekal že to právě je kvůli tomu aby se nemusali chytat výjimky, aby to bylo rychlejší...
19:24 mornfall ne, to je proto aby ti to vrátilo null
19:24 xstill ale applu asi na rychlosti až tak nesejde
19:25 xstill no to chápu, ale jakou to má výhodu pokud to není rychlejší?
19:25 mornfall no, new je znatelně starší než výjimky
19:25 xstill teda napíšu o 2 řákdy míň kódu asi
19:26 mornfall takže bych tipoval že to je aby šlo starej kód lehce portovat na novější C++
19:26 xstill aha
19:29 mornfall hm, ta 4.7.3 je katastrofa, execution.cpp už to builduje deset minut
19:45 mornfall takže clang se řeší tak že v all-packages.nix přepíšeš stdenv na stdenvAdapters.overrideGCC stdenv gcc47 ... snad :-)
19:45 mornfall (u clangUnwrapped v ne-darwin větvi)
19:46 mornfall problém je, že gcc 4.7 se nějak neumí bootstrapnout, v nixpkgs... takže ten 4.7 patch jsem asi vyhodil a zapomněl na to
19:56 xstill tak jsem ten clang zkusil upravit, už se to builduje
20:00 mornfall jsem na 85% :-)
21:15 mornfall /nix/store/0dx5ag58y93wz78mfwjawrk9gipfcsdp-gcc-4.7.3/lib/gcc/x86_64-unknown-linux-gnu/4.7.3/../../../../include/c++/4.7.3/atomic:221: undefined reference to `__atomic_exchange'
21:15 mornfall někde nastala chyba
21:18 mornfall __atomic_exchange je nějakej hloupej gcc builtin zase
21:20 spito left #divine
21:21 mornfall uvidíme co se stane s #define __atomic_exchange __sync_swap
21:26 mornfall no, tak jednoduše to nepůjde
21:39 mornfall xstill: Ty máš ten clang 3.3 odkud?

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