From: Alexey Tourbin <at@altlinux.ru> To: ALT Devel discussion list <devel@lists.altlinux.org> Subject: Re: [devel] glibc-kernheaders TCGETS2 Date: Wed, 19 Mar 2008 02:38:01 +0300 Message-ID: <20080318233801.GG7777@solemn.turbinal> (raw) In-Reply-To: <20080318231237.GA22222@wo.int.altlinux.org> [-- Attachment #1: Type: text/plain, Size: 1961 bytes --] On Wed, Mar 19, 2008 at 02:12:37AM +0300, Dmitry V. Levin wrote: > On Wed, Mar 19, 2008 at 01:58:50AM +0300, Alexey Tourbin wrote: > > У меня перестал собираться перл, не может вычислить некоторые константы > > для ioctl в сгенерированном сишном коде. > Это багрепорт на свежий glibc-kernheaders. По привычке пишу в список, хотя в данном случае, наверное, следовало бы в багзиллу. > > $ cat /tmp/.private/at/bhap6ejYVA.c > > #include <stdio.h> > > #include <sys/ioctl.h> > > int main() { > > printf("TCGETS %ld\n", (long)(TCGETS)); > > printf("TCGETS2 %ld\n", (long)(TCGETS2)); > > return 0; > > } > > TCGETS2 раньше не было. Это я сделал генерат сишного кода для целочисленных констант, который заменяет старый генератор перлового кода h2ph, который вообще ужас что генерировал. На высоком уровне это выглядит очень просто: gen_h2ph( include => "sys/ioctl.h", regexp => qr/^FIO|^TC|^TIO|^SIO/, output => "ioctl.ph", ); Он работает в два прохода: сначала выгребает константы через 'cpp -dD', а потом генерирует сишную программу, которая печатает эти константы. Примерно вот такая идея: $ cpp -dD - <<<'#include <sys/ioctl.h>' |sed -n '/^#define TC/p' #define TCGETS 0x5401 #define TCSETS 0x5402 #define TCSETSW 0x5403 #define TCSETSF 0x5404 #define TCGETA 0x5405 #define TCSETA 0x5406 #define TCSETAW 0x5407 #define TCSETAF 0x5408 #define TCSBRK 0x5409 #define TCXONC 0x540A #define TCFLSH 0x540B #define TCSBRKP 0x5425 #define TCGETS2 _IOR('T',0x2A, struct termios2) #define TCSETS2 _IOW('T',0x2B, struct termios2) #define TCSETSW2 _IOW('T',0x2C, struct termios2) #define TCSETSF2 _IOW('T',0x2D, struct termios2) $ Соответственно мы считаем что все ^TC константы должны раскрываться в целочисленное значение на стадии компиляции сишного генерата. Это позволяет создать абсолютно корректный файл /usr/lib/perl5/*/ioctl.ph без крамольной конвертации сишных хедеров в перловый код. [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
prev parent reply other threads:[~2008-03-18 23:38 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2008-03-18 22:58 Alexey Tourbin 2008-03-18 23:12 ` Dmitry V. Levin 2008-03-18 23:38 ` Alexey Tourbin [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080318233801.GG7777@solemn.turbinal \ --to=at@altlinux.ru \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git