From: Sergey Stepanov <dlagovna@mail.ru> To: "культурный офтопик" <smoke-room@lists.altlinux.org> Subject: Re: [room] objdump- дизассемблирование , странные call- конструкции Date: Mon, 22 May 2006 21:12:38 +0400 Message-ID: <E1FiDxO-0003MW-00.dlagovna-mail-ru@f12.mail.ru> (raw) In-Reply-To: <E1Fi8PX-00007p-00.dlagovna-mail-ru@f31.mail.ru> > > > Эта штука вылетает с Segmentation Fault на середине > > > дизассемблирования крупных o-файлов. Причем > > > запустив под gdb, вижу, что вылетает на функции strlen(), > > > библиотеки /lib/libc.so.6 > > > Что теперь делать - незнаю.. > > > Вот уткнулся в такую бяку. Кто чем может помоч? > > Посмотрите в сторону ndisasm из пакета nasm. > Ок, гляну. Надеюсь в ALTMaster2.4 он есть в репозитарии. Мда, посмотрел nasm - он еще более убогий чем objdump. Его назначение - тупо преобразовывать байт-код в ассемблерные инструкции. Большего он не умеет. Он не понимает хедеры *.o и ELF файлов, в общем как инструмент подходит только для элементарных действий. > ЗЫЖ Всеже obj2asm - харошая вещщ. Вот только не пойму, > кто в сегфолте виноват - obj2asm или libc.so.6? Помню, > были какие-то ugly-баги в str функциях, может это они > вылазиют? Это можно как-то пофиксить? Кароче, народ, рассказываю как поборол Segmentation Fault. Можно взять на заметку и использовать в таких критичных случаях, когда нужно запустить бинарник, в котором есть ошибка доступа к памяти. :) Что я сделал - запустил декомпиляцию под valgrind, в надежде посмотреть, что конкретно вызывает Segmentation Fault. Valgrind запускал с опциями --tool=memcheck и --suppressions=file.supp, где file.supp - это файл, в котором собран текст всех *.supp файлов из дистрибутива valgrind. Эта опция, согласно документации, просто подавляет вывод рапорта о обнаруженных ошибках. Но каково было мое удивление, когда декомпиляция прошла без ошибки! Самое интересное, что valgrind не выдал ни одного сообщения о неправильном обращении к памяти. Я так подозреваю что опция --suppressions не просто подавляет рапорт об ошибке, но и позволяет программе продолжить выполнение при возникновении ошибки! Во как. А может быть, просто распределение памяти декомпилятора при запуске под valgrind оказалось таким, что программа сработала без ошибок памяти. В любом случае, результат использования valgrind в качестве "багфиксера" меня удивил. Со всяческими пожеланиями, Сергей. http://xi.net.ru
next prev parent reply other threads:[~2006-05-22 17:12 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2006-05-20 21:06 [room] objdump-дизассемблирование, странные call-конструкции Sergey Stepanov 2006-05-20 21:31 ` Yuri N. Glibovetz 2006-05-21 8:57 ` Artem 2006-05-22 9:10 ` [room] objdump- дизассемблирование , странные call- конструкции Sergey Stepanov 2006-05-22 10:19 ` Damir Shayhutdinov 2006-05-22 11:17 ` Sergey Stepanov 2006-05-22 17:12 ` Sergey Stepanov [this message] 2006-05-22 17:28 ` Andrey Rahmatullin 2006-05-22 17:44 ` Sergey Stepanov 2006-05-22 17:55 ` Andrey Rahmatullin 2006-05-22 18:17 ` Sergey Stepanov 2006-05-22 18:23 ` Andrey Rahmatullin 2006-05-22 19:00 ` Sergey Stepanov 2006-05-23 5:27 ` Andrey Rahmatullin 2006-05-22 17:30 ` Sergey Stepanov 2006-05-22 17:44 ` Damir Shayhutdinov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=E1FiDxO-0003MW-00.dlagovna-mail-ru@f12.mail.ru \ --to=dlagovna@mail.ru \ --cc=smoke-room@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Культурный офтопик This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/smoke-room/0 smoke-room/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 smoke-room smoke-room/ http://lore.altlinux.org/smoke-room \ smoke-room@lists.altlinux.org smoke-room@lists.altlinux.ru smoke-room@lists.altlinux.com smoke-room@altlinux.ru smoke-room@altlinux.org smoke-room@altlinux.com public-inbox-index smoke-room Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.smoke-room AGPL code for this site: git clone https://public-inbox.org/public-inbox.git