[devel-ports] /usr/include/asm/unistd.h linux_2.6.18 проблема системных вызовов

Kirill A. Shutemov =?iso-8859-1?q?k=2Eshutemov_=CE=C1_velesys=2Ecom?=
Пт Дек 14 15:16:44 MSK 2007


On [Fri, 14.12.2007 18:47], gosha wrote:
>                                            Добрый день,
> 
>     Невезуха.
> 
>     Ситуация такова, что все пакеты, использующие #define системных вызовов 
> файла /usr/include/asm/unistd.h не собираются.
> 
> 
> Причина следующая: 
> /* /usr/include/asm/unistd.h: */
> #ifdef __KERNEL__

Уберите этот ifdef

> 
> #ifndef __ASSEMBLY__
> /* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
> #define _syscall1(type,name,atype,a) \
> type name(atype a) \
> { \
> 	register unsigned long __a0 asm("$4") = (unsigned long) a; \
> 	register unsigned long __a3 asm("$7"); \
> 	unsigned long __v0; \
> 	\
> 	__asm__ volatile ( \
> 	".set\tnoreorder\n\t" \
> 	"li\t$2, %3\t\t\t# " #name "\n\t" \
> 	"syscall\n\t" \
> 	"move\t%0, $2\n\t" \
> 	".set\treorder" \
> 	: "=&r" (__v0), "=r" (__a3) \
> 	: "r" (__a0), "i" (__NR_##name) \
> 	: "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \
> 	  "memory"); \
> 	\
> 	if (__a3 == 0) \
> 		return (type) __v0; \
> 	errno = __v0; \
> 	return (type) -1; \
> }
> ..................................................................................................................................
> #endif
> #endif
> 
> 
> напр компилируется coreutils:
> exit.c :
> #include <linux/unistd.h>
> int errno;
> _syscall1(void,exit,int,status);
> void _start(void)
> {exit(STATUS);}
> 
> 
> Как я понял, при сборке не выставлен флаг -D __KERNEL__ .  и, поэтому, не 
> обрабатывается препроцессором _syscall1(void,exit,int,status)
> 
> соотв получаем ошибки типа.
> llseek.c:34: error: expected declaration specifiers or '...' before '_llseek'
> llseek.c:34: error: expected declaration specifiers or '...' before 'fd'
> llseek.c:34: error: expected declaration specifiers or '...' 
> before 'offset_high'
> llseek.c:35: error: expected declaration specifiers or '...' 
> before 'offset_low'
> llseek.c:35: error: expected declaration specifiers or '...' before 'result'
> llseek.c:36: error: expected declaration specifiers or '...' before 'origin'
> 
> ==============================================
> Где могли бы быть неправильные настройки сборки?
> 
> Как победить ?
> 
>      Спасибо.
> -- 
> С Уваженим,
>        gosha.
> _______________________________________________
> devel-ports mailing list
> devel-ports на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-ports

-- 
Regards,  Kirill A. Shutemov
 + Belarus, Minsk
 + Velesys LLC, http://www.velesys.com/
 + ALT Linux Team, http://www.altlinux.com/
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel-ports/attachments/20071214/0a634e0d/attachment-0002.bin>


Подробная информация о списке рассылки devel-ports