Board.KolibriOS.org

Official KolibriOS board
It is currently Mon May 20, 2019 12:25 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 20 posts ]  Go to page Previous 1 2
Author Message
PostPosted: Sun Dec 23, 2007 8:09 am 
int
bcmp(const void *ptr1, const void *ptr2, int length)
{
char a;
char b;

if (ptr1 == ptr2)
return 0;

if (ptr1 == 0 || ptr2 == 0)
return -1;

while (length)
{
a=*((const char *)ptr1);
b=*((const char *)ptr2);
if (a !=b) return length;

//if (*((char)ptr1)++ != *((char)ptr2)++)
// return length;
ptr1++;
ptr2++;
length--;
}

return 0;
}

ААААААААААА. Вот что хотел сделать автор, делая инкремент к строкам, мне следовало бы догадаться.
Теперь всё собирается


Top
   
PostPosted: Sun Dec 23, 2007 3:37 pm 
>---------------------------------------------------------
>Libraries for MenuetOS/KolibriOS were successfully built
>---------------------------------------------------------


>/home/vasily/bbb/menuetlibc_new/linuxtools/mld printftest.kex main.o -n -Map printftest.kex.map
>main.o: In function `test':
>main.c:(.text+0xf2): undefined reference to `__stack_chk_fail'
>/home/vasily/bbb/menuetlibc_new/lib/libc.a(putchar.o): In function `putchar':
>putchar.c:(.text+0x4): undefined reference to `console_init'
>putchar.c:(.text+0x18): undefined reference to `console_printf'
>/home/vasily/bbb/menuetlibc_new/lib/libc.a(printf.o): In function `printf':
>printf.c:(.text+0x6): undefined reference to `console_init'
>printf.c:(.text+0x44): undefined reference to `console_printf'
>/home/vasily/bbb/menuetlibc_new/lib/libc.a(ndoprnt.o): In function `_ndoprnt':
>ndoprnt.c:(.text+0xb26): undefined reference to `__stack_chk_fail'
>/home/vasily/bbb/menuetlibc_new/lib/libc.a(doprnt.o): In function `_doprnt':
>doprnt.c:(.text+0xa5e): undefined reference to `__stack_chk_fail'
>objcopy printftest.kex -O binary
>objcopy: 'printftest.kex': No such file
>make[2]: *** [printftest.kex] Error 1
>make[2]: Leaving directory `/home/vasily/bbb/menuetlibc_new/programs/binclock'
>make[1]: *** [all] Error 2
>make[1]: Leaving directory `/home/vasily/bbb/menuetlibc_new/programs'
>make: *** [all] Error 2
>vasily@vasily-desktop:~/bbb/menuetlibc_new$


Как видите, библы собрал, остались бонус-приблуды.
На стадии линковки чего-то там вышли одни undefined reference` ы + отсутствует файл.


Top
   
PostPosted: Tue Dec 25, 2007 4:31 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Я добавлял в menuetlibc новые функции. В частности putchar() printf(). Обе эти функции для вывода в консоль используют экспортируемые функции из файла console.o Сам console.asm написан на ассемблере и компилируется FASM-ом. Я почему-то забыл добавить в исходники menuetlibc файл console.asm .В общем вот этот файл(реализация не самая лучшая, но тогда мне это было не особо важно).
Code:
format ELF
section '.text' executable

public console_init
public console_printf
public console_exit

align 4
console_init:

        pushad

        mov eax,[console_init_status]
        test eax,eax
        jnz console_initializated

        mov [console_init_status],1

        mov eax,68
        mov ebx,19
        mov ecx,console_path
        int 0x40

        test eax,eax
        jz console_not_loaded

                mov ebx,[eax+4]
                mov [con_start],ebx

                mov ebx,[eax+4+16]
                mov [con_init],ebx

                mov ebx,[eax+4+32]
                mov [con_printf],ebx

                push 1
                call [con_start]

                push caption
                push -1
                push -1
                push -1
                push -1
                call [con_init]

        console_not_loaded:

        console_initializated:

        popad

        ret

align 4
console_printf:

        pop [return_addres]

        call [con_printf]
        ;add esp,8

        push [return_addres]

        ret

align 4
console_exit:

        push 0
        call [con_exit]

        ret


;-----------------------------
console_path db '/sys/lib/console.obj',0
caption      db 'Console',0

align 4
con_start                 rd 1
con_init                  rd 1
con_printf                rd 1
con_exit                  rd 1
console_init_status       rd 1
return_addres             rd 1


нужно добавить его к статической библиотеке libc.a либо прописать в makefile, чтобы он компилировался и линковался к libc.a

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


Top
   
PostPosted: Sat Dec 29, 2007 4:02 pm 
Не было printf - кошмар. Реализация многих функций этой libc оставляет желать лучшего. Так что вам местный товарищи скажут спасибо. Хорошо.


Top
   
PostPosted: Sat Dec 29, 2007 6:44 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5047
Что тут плохо а что хорошо, тут и так все прекрасно знают. А твоё редкое умение замечать очевидные вещи и так всех напрягает.
Я тебе повторю - хочешь лучше - напиши лучше.

_________________
Через тернии к звездам


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 20 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited