LINUX.ORG.RU

Сообщения mittorn

 

Отключение устройства без отмонтирования ФС

Форум — Linux-hardware

В связи с нехваткой места купил 16гб SDHC карту SP 10 класса (ранее использовалась такая же на 8). На карте находится корень.
Иногда при интенсивном чтении/записи карточка зависает. В dmesg ничего подозрительного не сыпет, просто застрявает. Помогает отключение и подключение карты снова (если это не корень). Однако в корне отключение приводит к понятным последствиям: корень пустеет и всё сыпется.
Можно как-нибуль устроить блокировку и ожидание повторного подключения при отключении корня?

 , ,

mittorn
()

Half-life 2 arm

Галерея — Скриншоты

Пока что приходится довольствоваться окошком и ошибкой сегментирования.
Примечательно, что окошко создано библиотеками от Valve через нативный SDL и значёк выставлен ими же.
Инициализаия графики проходит.
После загрузки библиотеки client весь процесс начинает сыпаться, некоторые потоки при инициализации.
Впрочем, можно попытаться собрать server/client из SDK, вдруг поможет.

 , , ,

mittorn
()

Как происходит передача аргументов в функцию (arm)?

Форум — Development

Как устроен этот процесс?
Пытаюсь узнать, какие аргументы передаются функции SDL_main из соседней функции в бинарнике.
Должны передаваться фальшивые argc и argv. Первый аргумент всегда равен единице (видно в дизассемблере), на второй должен подаваться массив из аргументов.
По всей видимости аргументы перед переходом скидываются в несколько первых регистров.
Чтобы перехватить аргументы, я изменил адрес в инструкции перехода, указывающий на внешнюю функцию.
В gdb получаю, что первый аргумент всегда 1, как и должно быть, а второй равен реальному argv.
Если пробросить аргументы в ту функцию, куда они назначались, программа ведёт себя, будто их и не было (крашится через некоторое время), хотя изначально выполнение проходило дальше.

mittorn
()

ltrace on arm: УМННР

Форум — Development

У кого-нибудь работает сабж?

Уходит в цикл на первой встреченной функции, повторяя такую строку (если податтачитсся к процессу, то функция будет другой):

__libc_start_main(0x1d114, 1, 0xbeadb834, 0x87f00 <unfinished ...>
Через некоторое время выдаёт:
callstack_push_symfunc: Error: call nesting too deep!
и вместе с трассируем процессом падает по SIGABRT. cortex-a8, ltrace-0.7.3, linux-sunxi-3.0.76

 , ltrace, умннр

mittorn
()

Как написать AIGLX драйевер?

Форум — Development

Где-нибудь есть литература о том, как сделать сабж?
Есть библиотека Regal, которая может транслировать opengl в gles и обратно, но она не умеет эмулировать glx (что можно реализовать отдельно). Хорошо бы её прикрутить к иксам, чтобы использовать стандартную реализацию libGL.
Гугл пока не помог, видны только вопли по поводу настройки дров.

 , regal, ,

mittorn
()

Проблемы со сборкой glibc: multiple definition of `__libc_multiple_libcs'

Форум — General

armv7, cortex-a8, hardfloat
Лог ошибки есть в гугле по первой строчки заголовка, решения в осовном - смена тулчейна, мультилиба или сфлагов. Как причину пишут баг оптимизации в gcc 4.7, однако похожие логи и на более старых версиях, и даже в 2003 году в начальных сборках ntpl упоминаются.
Собираю glibc-2.15-r3 из флагов включен только debug
CFLAGS="-g -march=armv7-a -mfloat-abi=hard -mfpu=neon -ftree-vectorize -mvectorize-with-neon-quad -mcpu=cortex-a8 -mtune=cortex-a8 -mthumb -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -ffast-math"
gcc 4.7.3-r1
Та что нужно исправить, чтобы она собралась?
Рыться в коде сильно долго/не охота, перебирать разные флаги на cortex-a8 - долго/не экологично.
Нужно собрать с поддержкой отладки т.к весь стек вызовов постоянно теряется а каком-нибудь printf, в результате gdb не возможно пользоваться.

 , ,

mittorn
()

Как найти инструкцию, бросающую SIGILL?

Форум — Development

Пробовал через gdb disassemble, но он падает с сегфолтом на первой же vfp инструкции (и чем же отлаживать отладчик?)
Обычным objdump'ом инструкции видно, но как узнать, где именно проблема?
предположительно причина в том, что код собран под vfp4, а у меня vfp3. Возможно, превышен номер регистра или ещё что-нибудь подобное.

 , vfp3, vfp4

mittorn
()

arm - эмуляция sdiv/udiv

Форум — Development

Сделали arm несколько удобных опциональных инструкций.
Есть несколько бинарников, в которых используются эти инструкции. Хочу их изменить, чтобы они запускались так же и на cortex-a8.
Казалось бы, всё просто: заменить sdiv op0 op1 op2 на:
mov r0 op1
mov r1 op2
bl addr<div_func>
mov r0 op0
и определить div_func из какой-нибудь библиотеки. Но что делать с регистрами? Ведь они могут после понадобиться? Да и такие действия тоже не всегда сработают (напр. для r2 r1 r0) Может, со стеком можно что-то сделать?
И я пока не совсем понял, как влинковать эмулирующую функцию.

 , , sdiv

mittorn
()

Source linux-arm

Форум — Mobile

Вышедшая Half-life 2 на android (для Tegra 4) довольно хорошо враппится: внутри врапперы, эмулирующие более glibc-подобное окружение поверх ведра. Для графики и управления используется SDL2. Т.к valve часто делают проверку на нулевой указатель, думаю, для андройдоспецифичных функций можно делать реализации в виде return 0. Если заставить графику работать на mali, думаю, даже на кубиках можно будет играть (потребуется упрощение детализации текстур).

 , ,

mittorn
()

Дамп оригинальной прошивки Jolla Sailfish

Форум — Mobile

Что-то я нигде не могу найти прошивку Jolla phone, чтобы разобрать. Нашёл только репы, выдающие 401 по https, судя по всему ключ выдаётся при регистрации устройства. В интернете нашёл несколько обещаний выложить, но так никто и не выложил. Или это нарушает какую-то лицензию? В таком случае этой лицензии я не видел.

 , ,

mittorn
()

Эмуляция NetworkManager API

Форум — Games

Пытаюсь избавиться от steam runtime. Обнаружил, что он слинкован с libnm. Есть какие-то способы исправить это без установки сего поделия?

P.S сделал «враппер»:

http://pastebin.com/4WFMbXEc

Смешно, но со steam'ом прокатило.

Теперь интересно, как заставить его ещё выдавать, что подключение восстановлено.

P.P.S Это исправило баг https://github.com/ValveSoftware/steam-for-linux/issues/971 Steam с неработающим автопереподключением без NM.

 

mittorn
()

Единый реестр

Форум — Talks

Понимаю, что танцпол, но вынужденный.
В единый реестр занесены адреса, принадлежащие многим хостингам, в результате при попытке зайти, например, на bouncyball.eu или http://www.issteamdown.com получаю след. страницу: http://pastebin.com/CPiUX9mv (пример исходника). Проверка по хостнейму на предложенном сайте выдаёт : Искомый url не значится в реестре по основаниям, предусмотренным статьей 15.3 Федерального закона от 27 июля 2006 года No 149-ФЗ
Где-нибудь есть динамически пополняющийся список адресов, которые нужно проксифицировать?

 ,

mittorn
()

diff не работает

Форум — Development

Пытаюсь сравнить 2 участка кодя ядер разных версий. Исходники хранятся на ntfs (сейчас по другому не получается к сожалению, надо чистить разделы).
diff выдаёт такое сравнение файлов:
diff -d -U 3 -H -B -E -p -t -r -N -x '*.o' -x '*.bin' -x '*.elf' -x '*.lst' -x '*.code' -x '*.map' linux-3.3/arch/arm/mach-sun7i/pm/standby/suspend.xn linux-3.4/arch/arm/mach-sun7i/pm/standby/suspend.xn
--- linux-3.3/arch/arm/mach-sun7i/pm/standby/suspend.xn 2013-03-20 00:28:38.000000000 +0600
+++ linux-3.4/arch/arm/mach-sun7i/pm/standby/suspend.xn 2013-07-17 17:44:29.000000000 +0700
@@ -1,22 +1,22 @@
-
-OUTPUT_ARCH(arm)
-ENTRY(main)
-
-SECTIONS
-{
- __suspend_start = . ;
- .text 0x000000000 :
- {
- ./super/suspend/suspend.o(.text.startup)
- *(.text)
- *(.rodata)
- }
-
- .data : { *(.data) }
-
- __bss_start = . ;
- .bss : { *(.sbss) *(.scommon) *(.bss) *(COMMON) }
- __bss_end = .;
- __suspend_end = . ;
-}
-
+
+OUTPUT_ARCH(arm)
+ENTRY(main)
+
+SECTIONS
+{
+ __suspend_start = . ;
+ .text 0x000000000 :
+ {
+ ./super/suspend/suspend.o(.text.startup)
+ *(.text)
+ *(.rodata)
+ }
+
+ .data : { *(.data) }
+
+ __bss_start = . ;
+ .bss : { *(.sbss) *(.scommon) *(.bss) *(COMMON) }
+ __bss_end = .;
+ __suspend_end = . ;
+}
Что за?
Что-то я особо не понял, в чём различие. Действительно проблема в переносах. Помогла опция -w

 , , sun7i

mittorn
()

Не могу достать vmlinux из zImage

Форум — General

Нужно достать из ядра бинарник, отвечающий за спящий режим, вмещённый в ядро через .incbin. Ядро arm, производитель исходники зажал, в собранном из похожих спящий режим не работает. В собранном vmlinux бинарник присутствует. Хочу найти нечто похожее и в стоковом. Остановился на полученном zImage. file определяет ядро как data, gzip его не берёт. Скрипт extract-vmlinux: Cannot find vmlinux.
Что ещё можно сделать? P.S сам разобрался, кривой abootimg достал несжатый Image и назвал его zImage

 ,

mittorn
()

2gis для linux

Форум — Mobile

2gis для android написан на их собственном форке qt
Тут http://www.slideshare.net/codefest/codefest-2011-galin-qt-for-crossplatform-m... хвалится, какой он кроссплатформенный.
Да и сам 2gis похоже тоже на нём https://qt.gitorious.org/qt/grym-qt
Где же тогда 2гис для linux? Для скчивания доступны только msi и apk.
Им что, так сложно выполнить

export PREFIX=./linux-build
./configure --prefix ./linux-build
make PREFIX=./linux-build
make PREFIX=./linux-build install

под linux в папке с исходниками 2gis и выложить содержимое linux-build в свободный доступ?

 , ,

mittorn
()

JAD java decompiler

Форум — Development

Потребовалось декомпилировать некоторый обфусцированный кусок кода. fernflower не справляется (т.к он аналитический, просто пропускает методы, которые не может разобрать). Вручную - слишком много работы. Когда-то использовал для этого jad, но теперь столкнулся с проблемой:
5/jad
jad: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.0.0, stripped
Linux mittorn-sun4i 3.0.76-t1 #58 PREEMPT Wed Mar 12 01:00:47 NOVT 2014 armv7l ARMv7 Processor rev 2 (v7l) sun4i GNU/Linux
К несчастью, ни исходников ни совместимого бинарника не обнаружилось. Автор по всей видимости ушёл в кому.
Пробую так:
qemu-i386 ./jad Class_1da.class
Вижу:
Parsing Class_1da.class... Generating Class_1da.jad
И сильный жёр процессора, больше ничего не происходит. Возможно, через неделю оно отработает, но нужно поскорее.
Есть какой-нибудь способ эмулировать x86 быстрее?
Или может, есть бесплатные вычислительные x86-сервера?

mittorn
()

Xlib: Нарисовать utf-8 текст в окне

Форум — Development

Как сделать сабж?
Пробовал Xutf8DrawString, но там, видимо, говнокод, несовместимый с моим многопоточным говнокодом. Русский всё равно не печатает (видимо, в fixed его нет), и при вызове из соседнего потока получаю разнообразные ошибки:
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
cedarx-gui: /var/tmp/portage/x11-libs/libX11-1.6.2/work/libX11-1.6.2/src/xcb_io.c:179: dequeue_pending_request: Assertion `!xcb_xlib_unknown_req_in_deq' failed.
Аварийный останов

XInitThreads разумеется был.

[xcb] Extra reply data still left in queue
[xcb] This is most likely caused by a broken X extension library
[xcb] Aborting, sorry about that.
cedarx-gui: /var/tmp/portage/x11-libs/libX11-1.6.2/work/libX11-1.6.2/src/xcb_io.c:576: _XReply: Assertion `!xcb_xlib_extra_reply_data_left' failed.
Аварийный останов

Через XDrawString работает.
Как загрузить шрифты, отличные от fixed так и не нашёл.
Многопоточость можно убрать (после некоторых изменений всё можно сделать через select), но пока что лень.

 , ,

mittorn
()

Переносимость адресов строковых констант

Форум — Development

Есть проприетарный бинарник (позиционно-зависимый код), пишу для него графическую оболочку. Для взаимодействия используется загружаемая через LD_PRELOAD библиотека со врапперами для ioctl и printf.
На выводе много информации, которая забирается через враппер, строки форматов различаю по адресам строковых констант.
Могу ли я быть уверен, что при запуске на другой системе адреса останутся прежними (бинарник остаётся тот же, меняются только библиотеки)?
Производительность критична, так что посимвольное сравнение не годится.

 , , ,

mittorn
()

Как отладить suspend?

Форум — Linux-hardware

Есть планшет на Allwinner A20. На стоковом ядре (ни исходников, ни конфигурации разумеется нет) ждущий режим работает.
На ядре linux-sunxi в спящий режим планшет вроде бы уходит, но выходить из него не хочет. При этом все pm-тесты (/sys/power/pm_test) проходит успешно, отключая и восстанавливая при этом подсветку и usb. Сначала думал, что дело в кнопке включения, однако после засыпания по rtcwake тоже восстанавливаться ничего не хочет, помогает только шестисекундное нажатие на кнопку питания (принудительное отключение) и включение снова.
Возможности подключить serial пока нет (корпус не вскрыт).
На аналогичном (вплоть до корпуса) устройстве на A10 проблем нет.

 ,

mittorn
()

Выбор между /dev/dri/cardN

Форум — Linux-hardware

Подключил к планшету (Allwinner A10) dvi-монитор, указал использование второго фреймбуфера. Обнаружил, что на втором x-сервере не работает GLES (Mali400). Протрассировал, понял, что дело в DRI, заменил ноду /dev/dri/card0 на /dev/dri/card1, перезапустил вторые иксы. Графика заработала.
Теперь вопрос: как указать путь к dri-устройству принудительно?

 , ,

mittorn
()

RSS подписка на новые темы