Autor Wątek: LLVM 4.0 Stack Aligment  (Przeczytany 1164 razy)

Offline .:NOXY:.

  • Użytkownik
    • Profil

# Sierpień 28, 2012, 10:20:28
Czesc nie wiedzialem gdzie wrzucic post, wiec daje go tutaj.

Oto moj problem mam stara biblioteke OpenCV i chce ja skompilowac pod iOS przestawiam sie na LLVM GCC 4.2 i kompiluje bezproblemowo, ale w Release applikacja killuje sie z EXC_ARM_DA_ALIGN. Wiec proboje skompilowac liba (dosc stary opencv versja 2.3 w nowym zmienili api) z stack aligment, gcc wspiera -mstackrealign i tu pojawia sie problem bo LLVM nie :) czy ktos moze zna jakis cflag do LLVM kotry by pozwolil alignowac stack ?

Naprawde nie chcial bym przechodzic przez cale setki plikow liba i poprawiac aligment... :)

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Sierpień 28, 2012, 11:41:14
To nie jest kwestia stack alignmentu, bo to zapewnia Ci chyba każdy kompilator pod ARM. Spodziewał bym się prędzej, że w OpenCV robią jakieś optymalizacyjne sztuczki z castowaniem pointerów i czytają 32-bitowe wartości skąd się da. W przypadku ARMa oczywiście odczytanie 32-bitowej wartości spod adresu niepodzielnego przez 4 wysypie aplikację.

Offline .:NOXY:.

  • Użytkownik
    • Profil

# Sierpień 28, 2012, 12:50:18
Jakis solution ? , rzeczywiscie to nie jest stack aligment bo czasami wywala KERN_INVALID_ADDRESS najgorsze jest to ze appka sie wlacza i dziala (czytaj opencv dziala) na DEBUG ale w RELEASE odrazu dostaje szału. (opencv skompilowane jako lib)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

  • +1
# Sierpień 28, 2012, 12:56:37
W takim razie porównaj jakie optymalizacje są włączane tu i tam i po kolei przełączaj żeby z wersji DEBUG dojść najbliżej RELEASE jak się da pomijając psujące optymalizacje. No, chyba że sama biblioteka korzysta z #ifdef DEBUG żeby zmieniać algorytmy.

Offline .:NOXY:.

  • Użytkownik
    • Profil

# Sierpień 28, 2012, 13:09:12
Zle sformulowalem :) lib byl skompilowany raz np jako release i tak lezy doklejony. Appa jest przelaczana miedzy debug i release. Tak czysiak dzieki za rade ide sie bawic przelaczniczkami ;)

EDIT:

Tak kompilator jednak przedobrzal zmiana z Fastest,smaller na Fast naprawila problem :)
« Ostatnia zmiana: Sierpień 28, 2012, 13:35:07 wysłana przez .:NOXY:. »