Miroslav Lachman wrote:
Program terminated with signal 4, Illegal instruction.
Tvuj kod:
0x0000000000405c23 <_ZN10BoolStringaSERKS_+35>: mov BYTE PTR [rsi+0x8],al
0x0000000000405c26 <_ZN10BoolStringaSERKS_+38>: ud2a
Zadna instrukce ud2a neexistuje.
Zbytek je trocha Googleni.
Linux a gcc pouziva u2da jako "instrukci, ktera urcite neexistuje". Kdyz
to jeste jednou prelozis, mel bys mezi warningama videt i takovyhle:
warning: cannot pass objects of non-POD type '...' through '...'; call will
abort at runtime
No, a jak gcc slibilo, tak, podle vseho, take udelalo - program ti abort
at runtime. Upgrade gcc / preklad pomoci jine verze gcc asi spis
nepomuze, snad jen v tom smyslu, ze od urcite verze dal uz to neni
warning ale error a zhavaruje to primo pri prekladu a ne az pri behu.
Podstatou je zdrojovy kod obsahujici konstrukt, jehoz vyznam neni v C++
definovany. GCC se rozhodlo nepokouset se uhadnout co tim autor myslel.
Moje znalost c++ je ovsem spise pasivni, takze cist ho dokazu, ale
obavam se, ze nikoliv opravit. To uz bude muset nekdo jiny, klidne autor
fastresolve.
Pripadne da se "neco" zkusit upravit pri te kompilaci, aby to fungovalo?
Otazka je, proc se ti to preklada za pouziti GCC. Me to na 10.2-R
preklada systemovy clang a ten konstrukt prelozi (coz jeste neznamena,
ze to nakonec bude delat to, co autor zamyslel).
Copak ti napise
( cd /usr/ports/dns/fastresolve ; make -V CC )
a co
$( cd /usr/ports/dns/fastresolve ; make -V CC ) -v
Dan
--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l