Assembler & OpenBSD

classic Classic list List threaded Threaded
18 messages Options
Reply | Threaded
Open this post in threaded view
|

Assembler & OpenBSD

Maxim-20
Доброго времени суток.

Подскажите пожалуйста, кто знает, почему ядро(GENERIC) не хочет
запускать бинарик написанный на ассемблере. Шелл выводит следующее:
        ``bash: ./asm: Operation not permitted''

Собирал так:
        Трансляция: as -o asm.o asm.s
        Компоновка: ld -o asm asm.o

Но, если собрать ядро без всех(?) опций совместимости c FREEBSD,
LINUX, etc., (option COMPAT_*) то бинарик запускается.


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Mike Belopuhov
Maxim wrote:

> Доброго времени суток.
>
> Подскажите пожалуйста, кто знает, почему ядро(GENERIC) не хочет
> запускать бинарик написанный на ассемблере. Шелл выводит следующее:
> ``bash: ./asm: Operation not permitted''
>
> Собирал так:
> Трансляция: as -o asm.o asm.s
> Компоновка: ld -o asm asm.o
>

а если так:

ld -Bdynamic -dynamic-linker /usr/libexec/ld.so -o asm /usr/lib/crt0.o /usr/lib/crtbegin.o asm.o -lc /usr/lib/crtend.o

?

> Но, если собрать ядро без всех(?) опций совместимости c FREEBSD,
> LINUX, etc., (option COMPAT_*) то бинарик запускается.
>
>


--
you're never too old to rock'n'roll if you're too young to die.


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Maxim-20
> а если так:
>
> ld -Bdynamic -dynamic-linker /usr/libexec/ld.so -o asm /usr/lib/crt0.o
> /usr/lib/crtbegin.o asm.o -lc /usr/lib/crtend.o
>
> ?

Так то должно получиться, но я говорю о чистом ассемблере - никаких
библиотечных функций - только сисколы. В этом и заключается проблема.

Повторюсь:
> >Но, если собрать ядро без всех(?) опций совместимости c FREEBSD,
> >LINUX, etc., (option COMPAT_*) то бинарик запускается.


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Mike Belopuhov
Maxim wrote:

>> а если так:
>>
>> ld -Bdynamic -dynamic-linker /usr/libexec/ld.so -o asm /usr/lib/crt0.o
>> /usr/lib/crtbegin.o asm.o -lc /usr/lib/crtend.o
>>
>> ?
>
> Так то должно получиться, но я говорю о чистом ассемблере - никаких
> библиотечных функций - только сисколы. В этом и заключается проблема.
>

а сисколл это что по вашему? весь userspace код сисколов в libc.

> Повторюсь:
>>> Но, если собрать ядро без всех(?) опций совместимости c FREEBSD,
>>> LINUX, etc., (option COMPAT_*) то бинарик запускается.
>
>


--
you're never too old to rock'n'roll if you're too young to die.


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Maxim-20
> а сисколл это что по вашему? весь userspace код сисколов в libc.
Да, все обёртки для сисколов в libc, но я не о том, - я к тому, что без
crt*.o не работает.


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Mike Belopuhov
Maxim wrote:
>> а сисколл это что по вашему? весь userspace код сисколов в libc.
> Да, все обёртки для сисколов в libc, но я не о том, - я к тому, что без
> crt*.o не работает.
>
>

ну в crt* находятся стартовые и финализирущие секции __start и __fini.
или вы думаете что выполнение программы начинается с main?
опишите __start и __fini сами и можно будет отказаться от crt*.

--
you're never too old to rock'n'roll if you're too young to die.


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Maxim-20
> ну в crt* находятся стартовые и финализирущие секции __start и __fini.
> или вы думаете что выполнение программы начинается с main?
> опишите __start и __fini сами и можно будет отказаться от crt*.

Нет, я не думаю, что выполнение программы начинается с main().
Дело в том, что FreeBSD и Window$ (с другими не работал, не знаю)
запускают код независимо от того есть ли там __start и __fini.
Если OpenBSD они нужны - значит сделаем.
Спасибо.


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Alexander Yurchenko
In reply to this post by Maxim-20
On Wed, Jan 16, 2008 at 07:21:04PM +0300, Maxim wrote:
> Доброго времени суток.
>
> Подскажите пожалуйста, кто знает, почему ядро(GENERIC) не хочет
> запускать бинарик написанный на ассемблере. Шелл выводит следующее:
> ``bash: ./asm: Operation not permitted''

Добавьте что-то вроде такого в начало программы:

.section ".note.openbsd.ident", "a"
        .p2align 2
        .long 8
        .long 4
        .long 1
        .ascii "OpenBSD\0"
        .long 0
        .p2align 2

>
> Собирал так:
> Трансляция: as -o asm.o asm.s
> Компоновка: ld -o asm asm.o
>
> Но, если собрать ядро без всех(?) опций совместимости c FREEBSD,
> LINUX, etc., (option COMPAT_*) то бинарик запускается.
>

Возможно баг в ядре. См. man sendbug.

--
   Alexander Yurchenko


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Maxim-20
> Добавьте что-то вроде такого в начало программы:
>
> .section ".note.openbsd.ident", "a"
>         .p2align 2
>         .long 8
>         .long 4
>         .long 1
>         .ascii "OpenBSD\0"
>         .long 0
>         .p2align 2

Спасибо! С этой секцией работает.
Получается, что программы без PT_NOTE сегмента в заголовке (при включённой
поддержке бинариков других систем) не воспринимаются ядром однозначно.


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Oleg Safiullin
In reply to this post by Alexander Yurchenko
>         .ascii "OpenBSD\0"

.asciz это называется ;)


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Alexander Yurchenko
On Thu, Jan 17, 2008 at 02:27:58PM +0600, Oleg Safiullin wrote:
> >        .ascii "OpenBSD\0"
>
> .asciz это называется ;)

Я в курсе. Но gas/i386 -- нет.

--
   Alexander Yurchenko


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Oleg Safiullin
> Я в курсе. Но gas/i386 -- нет.

А он еще где-то используется? :)


Reply | Threaded
Open this post in threaded view
|

Re: Assembler & OpenBSD

Maxim-20
In reply to this post by Alexander Yurchenko

Забыл...
> Возможно баг в ядре. См. man sendbug.
Не думаю что это баг, скорее отличительные особенности.


Reply | Threaded
Open this post in threaded view
|

Driver & OpenBSD

strukov
Скажите пожалуйста
а как обстоят дела в OpenBSD с драйверами
которые отсутствуют для какогонибудь железа а они нужны
Где можно их достать ?
А если их заказать более продвинутым програмерам то во сколько
обойдется написание дров допустим на какойнибудь RAID5 контроллер ???
И вообще кто как выкручивался из подобной ситуации


Reply | Threaded
Open this post in threaded view
|

Re: Driver & OpenBSD

Alexey Vatchenko-2
strukov wrote:
> Скажите пожалуйста
> а как обстоят дела в OpenBSD с драйверами
> которые отсутствуют для какогонибудь железа а они нужны
> Где можно их достать ?

Либо писать самому, либо ждать пока их напишут :)

Если есть навыки и время, то писать. Если нет, то выбирать hardware из
списка поддерживаемых.

Можно конечно попробовать убедить $$$ разработчика подобный драйверов,
но ему наверное и девайс нужен будет.

--
Alexey Vatchenko
http://www.bsdua.org
E-mail: [hidden email]
JID: [hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Driver & OpenBSD

Sergey Smitienko
>
>> Скажите пожалуйста
>> а как обстоят дела в OpenBSD с драйверами
>> которые отсутствуют для какогонибудь железа а они нужны
>> Где можно их достать ?
>
> Либо писать самому, либо ждать пока их напишут :)
>
> Если есть навыки и время, то писать. Если нет, то выбирать hardware из
> списка поддерживаемых.
>
> Можно конечно попробовать убедить $$$ разработчика подобный драйверов,
> но ему наверное и девайс нужен будет.
Убедить производителя предоставить документацию по железу, необходимую
для написания
драйвера, при чем не под NDA ?


Reply | Threaded
Open this post in threaded view
|

Re: Driver & OpenBSD

Alexander Yurchenko
In reply to this post by strukov
On Thu, Jan 17, 2008 at 04:04:09PM +0600, strukov wrote:
> Скажите пожалуйста
> а как обстоят дела в OpenBSD с драйверами
> которые отсутствуют для какогонибудь железа а они нужны
> Где можно их достать ?
> А если их заказать более продвинутым програмерам то во сколько
> обойдется написание дров допустим на какойнибудь RAID5 контроллер ???

В среднем на драйвер, при наличии железа и документации (или хотя бы
драйвера под другую открытую ОС), уходит пара недель для получения
первого работающего образца и затем пара месяцев на тестирование,
вылизывание кода и расширение функционала. Умножайте на зарплату
хорошего программиста в данном регионе и получите искомую сумму.

> И вообще кто как выкручивался из подобной ситуации

Обычно кидают клич в [hidden email], после чего высылают железку
откликнувшемуся разработчику и ждут. Все бесплатно, но ждать можно очень
долго.

--
   Alexander Yurchenko


Reply | Threaded
Open this post in threaded view
|

Re: Driver & OpenBSD

Alexey Vatchenko-2
In reply to this post by Sergey Smitienko
Sergey Smitienko wrote:

>> Либо писать самому, либо ждать пока их напишут :)
>>
>> Если есть навыки и время, то писать. Если нет, то выбирать hardware из
>> списка поддерживаемых.
>>
>> Можно конечно попробовать убедить $$$ разработчика подобный драйверов,
>> но ему наверное и девайс нужен будет.
> Убедить производителя предоставить документацию по железу, необходимую
> для написания
> драйвера, при чем не под NDA ?

Конечно же я имею в виду устройства, документация на которые уже есть (в
каком-либо виде). Reverse engineering занимает очень много времени.

А один из способов убеждения вендора в выдаче документации - это не
покупать его устройства (массово).

--
Alexey Vatchenko
http://www.bsdua.org
E-mail: [hidden email]
JID: [hidden email]