[02:36:51] <Okasu> а GPS имеет что нибудь для посторения UML схемок?
[11:55:34] <yeo> думаю, что нет
[11:56:18] <subj_rs> хм, мож в chars_ptr трабла? надо попробовать через system'address
[11:57:21] <landgraf> ща vgodunko нападет с кулаками на adress
[11:57:25] <landgraf> address
[11:57:38] <subj_rs> пусть нападает когда сработает )
[11:58:06] <vgodunko> Okasu: GPS UML не умеет
[11:58:18] <subj_rs> чем там string выровнять можно? или не нужно?
[11:58:38] <Okasu> ясно
[11:58:47] <vgodunko> Есть некоторые бесплатные редакторы.
[11:59:04] <vgodunko> Например BoUML можно "старый" найти, он бесплатен
[11:59:24] <vgodunko> Umbrella можно не пробовать - очень старый формат она поддерживает.
[11:59:38] <vgodunko> subj_rs: объявляю мирные переговоры
[11:59:57] <subj_rs> vgodunko: с chars_ptr не арбайтен
[12:00:02] <vgodunko> Address это действительно не хорошо
[12:00:16] <vgodunko> Хорошо бы код поглядеть.
[12:00:19] <subj_rs> нужно попробовать через аддресс - если тоже не арбайтен - трабла в руках )
[12:00:23] <subj_rs> см выше
[12:00:36] <subj_rs>
use Interfaces.C.Strings;
Msg : String := "test";
procedure C_Syslog (Priority : int; Format : chars_ptr; Msg : chars_ptr);
pragma Import (C, C_Syslog, "syslog");
C_Syslog (6, New_String ("%s"), New_String (Msg));
[12:01:06] <yeo> int syslog(int type, char *bufp, int len);
[12:01:14] <yeo> из man syslog
[12:01:17] <subj_rs> в /var/log/syslog пишет S T O R A G E _ E R R O R srv01 : srv01 s - i n t m a n . a d b : 1 3 9 srv01 e x p l i c i t srv01 r a i s e, причем по буквам (каждую букву как отдельное особщение
[12:01:24] <vgodunko> void syslog(int priority, const char *format, ...);
[12:01:59] <subj_rs> openlog вроде работает
[12:02:38] <subj_rs> пробовал без Msg : chars_ptr, тупо в Format пихать
[12:03:35] <yeo> хотя может это не тот syslog :)
[12:05:15] <subj_rs> хм
[12:10:01] <vgodunko> subj_rs: это varargs, там кажется нужно NULL добавлять дабы он успокоился
[12:10:25] <vgodunko> C_Syslog (6, New_String ("%s"), New_String (Msg), Null_Ptr);
[12:11:26] <subj_rs> мож он к другому syslog прицепиться хочет? но ща так попробую сначала
[12:11:48] <yeo> IMHO врядли нужно null добавлять
[12:13:23] <subj_rs> vgodunko: не работает )
[12:16:02] <subj_rs> yeo: тот syslog для работы с сообщениями ядра
[12:24:39] <vgodunko> Поглядим в gnatcoll
[12:25:18] <subj_rs> попробовал через system.address. чота изменилос, система аж подвисла и демон отвалился через некоторое время )
[12:25:53] <subj_rs> oom словил )
[12:26:42] <vgodunko> syslog_wrapper(int priority, const char* msg) {
syslog(priority, "%s", msg);
}
[12:28:16] <vgodunko> А как в Ada C_Syslog объявлена?
[12:28:40] <subj_rs> ща так
procedure C_Syslog (Priority : int; Format : chars_ptr);
[12:29:52] <subj_rs> а, оом изза того что nul не добавил
[12:34:51] <yeo> C-шный вариант в EAX пихает 0, а адский нет
[12:34:58] <subj_rs> так, через address тупо подвисает
[12:34:59] <yeo> в жтом вся разница
[12:50:35] <yeo> extern void syslog (int __pri, __const char *__fmt, __const char *__str);
int main()
{
syslog(6, "%s", "test-c");
return 0;
}
[12:50:42] <yeo> так точно также не работает
[12:51:25] <subj_rs> там еще openlog надо вызывать и closelog потом )
[12:51:25] <yeo> что-то сишники намутили с , ... и никому не говорят
[12:52:03] <yeo> да ладно, с ... в описании syslog ведь пашет
[12:52:22] <subj_rs> ну значит не надо )
[12:58:40] <yeo> When a function taking variable-arguments is called, %rax must be set to the
total number of floating point parameters passed to the function in vector registers.
[12:59:19] <yeo> нашел в описании ABI для x86_64
[13:05:49] <yeo> похоже что не судьба вызывать такое напрямую из Ады :(
[13:07:54] <subj_rs> :-(
[13:25:23] <yeo> накатал кляузу в CLA
[18:34:39] <yeo> Сказал что ... в функциях это бронзовый век информатики :D
[21:06:37] <yeo> во, в CLA сказали что в ARM написано, что должно поддерживаться, можно попробовать пожаловаться в AdaCore:
B.3.75: "10 A C
function that takes a variable number of arguments can correspond to several
Ada subprograms, taking various specific numbers and types of parameters."
[22:38:02] <vgodunko> Если x86_64 изобрели свой ABI, то это их проблема.
[22:38:24] <vgodunko> В оригинальном ABI не было параметра для передачи количества параметров
[22:38:44] <vgodunko> Для этого параметры и размещали на стеке в "обратном" порядке
[23:45:49] <yeo> А мы просто перестанем использовать x86_64 процессоры? :)
[23:46:30] <vgodunko> Теперь - да
[23:46:31] <vgodunko> ;-)