From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 20 Jan 2016 13:28:18 +0300 (MSK) From: imz@altlinux.org To: ALT Linux Team development discussions In-Reply-To: Message-ID: References: User-Agent: Alpine 2.20 (LFD 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="1807885841-531738899-1453285428=:27433" Content-ID: Subject: Re: [devel] re-writing GNU C extensions (part1) X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jan 2016 10:28:18 -0000 Archived-At: List-Archive: List-Post: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1807885841-531738899-1453285428=:27433 Content-Type: text/plain; CHARSET=KOI8-R; format=flowed Content-Transfer-Encoding: 8BIT Content-ID: Добрый день! On Tue, 12 Jan 2016, imz@altlinux.org wrote: >> Вот продолжение -- промежуточный этап (пока не очень полезный) >> создания переписывателя GNU C extensions. >> >> На этом этапе он должен ставить вложенные функции на верхний уровень >> (без какой-либо проверки и переписывания параметров и т.п.; но с точки mike@ столкнулся с вложенными функциями в gpm -- http://lists.linux.it/pipermail/gpm/2011-April/001122.html . Это как раз хороший пример на read-only вложенные функции. Как я писал, по сложности переписывания их можно классифицировать на: 1. pure (придумалось короткое понятное слово для их обозначения), 2. read-only 3. и read-write. (Это же соответствует порядку предполагаемой реализации такой возможности в cuglify/Process.) Пока примера реальных исходников, с которыми можно было бы расправиться на втором этапе, не было; например, в rpm наблюдалась смесь pure и read-write вложенных функций -- как я разбирал: > На одном из следующих этапов ожидается (ещё до окончательной > готовности), что преобразователь будет уметь правильно работать с > вложенными функциями, которые только читают переменные из local scope > (но не пишут в них). (На этапе 1, описанном в предыдущем сообщении -- > только с теми, которые не пишут и не читают. + нет конфликтов имён) > > В поиске простых вложенных функций посмотрим на патч (предложил mike@) > http://git.altlinux.org/gears/r/rpm.git?p=rpm.git;a=commitdiff;h=2cee1a78a713a9e9cb2dfc66a5310d497e72dd33 > (committer Gleb Fotengauer-Malinovskiy > Thu, 21 May 2015 15:08:21 +0000 (18:08 +0300)). > > Ищем примеры таких вложенных функций в реальном коде, которые > преобразователь, умеющий ещё не всё, смог бы уже правильно преобразовать. > > Кое-что простое тут находится. > > Функции, затронутые в этом патче: > > put_digit: на первый взгляд read-only > (читает указатель, пишет уже туда; > могло бы годиться для следующего промежуточного этапа), но на самом > деле меняет и указатель и потом это изменённое значение используется, > так что: r/w > > put6bits, put4bits: то же (r/w) > > log2i: none (ни читает, ни пишет; т.е. годится для теста сейчас) > > cmp: none > hash: none > uniqv: none > > -- эти тоже. > > > Best regards, > Ivan > --1807885841-531738899-1453285428=:27433--