From owner-freebsd-hackers@freebsd.org Mon Aug 8 14:55:08 2016 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5211DBB2800 for ; Mon, 8 Aug 2016 14:55:08 +0000 (UTC) (envelope-from christian.mauderer@embedded-brains.de) Received: from dedi548.your-server.de (dedi548.your-server.de [85.10.215.148]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0CC5517E7; Mon, 8 Aug 2016 14:55:07 +0000 (UTC) (envelope-from christian.mauderer@embedded-brains.de) Received: from [88.198.220.131] (helo=sslproxy02.your-server.de) by dedi548.your-server.de with esmtpsa (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) (Exim 4.85_2) (envelope-from ) id 1bWlxC-00078w-0U; Mon, 08 Aug 2016 16:54:58 +0200 Received: from [82.135.62.35] (helo=mail.embedded-brains.de) by sslproxy02.your-server.de with esmtpsa (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bWlxB-0001R1-NU; Mon, 08 Aug 2016 16:54:57 +0200 Received: from localhost (localhost.localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id 8CC412A000B; Mon, 8 Aug 2016 16:55:18 +0200 (CEST) Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 4j28JIHvA1za; Mon, 8 Aug 2016 16:55:18 +0200 (CEST) Received: from localhost (localhost.localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id F21DF2A1808; Mon, 8 Aug 2016 16:55:17 +0200 (CEST) X-Virus-Scanned: amavisd-new at zimbra.eb.localhost Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id H8PIu5QantFu; Mon, 8 Aug 2016 16:55:17 +0200 (CEST) Received: from mauderer-linux.eb.localhost (unknown [192.168.96.154]) by mail.embedded-brains.de (Postfix) with ESMTPSA id D5A912A000B; Mon, 8 Aug 2016 16:55:17 +0200 (CEST) Subject: Re: Changes to pfctl to allow easier integration into a library To: Kristof Provost References: <25df9fd5-be75-b9ae-aa3a-22abef3bddf0@embedded-brains.de> <0C7EC45D-C3BC-4417-AF77-3ACC027D28B5@FreeBSD.org> <336150f6-9dcd-873f-1f8f-a264dfa4c4ed@embedded-brains.de> Cc: "freebsd-hackers@freebsd.org" From: Christian Mauderer Message-ID: <4571f890-6d35-b843-9bd8-86966fe515f5@embedded-brains.de> Date: Mon, 8 Aug 2016 16:54:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2 MIME-Version: 1.0 In-Reply-To: <336150f6-9dcd-873f-1f8f-a264dfa4c4ed@embedded-brains.de> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Authenticated-Sender: smtp-embedded@poldinet.de X-Virus-Scanned: Clear (ClamAV 0.99.2/22050/Mon Aug 8 13:16:52 2016) X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Aug 2016 14:55:08 -0000 Am 02.08.2016 um 07:36 schrieb Christian Mauderer: >=20 >=20 > Am 01.08.2016 um 20:36 schrieb Kristof Provost: >> On 1 Aug 2016, at 16:32, Christian Mauderer wrote: >> >> Am 01.08.2016 um 16:02 schrieb Kristof Provost: >> >> On 1 Aug 2016, at 15:03, Christian Mauderer wrote: >> >> Can I improve anything to make the patches more acceptable= ? >> >> Can you explain why >> 0003-pfctl-Pull-static-variables-out-of-the-function.patch is >> required? >> I=E2=80=99m not sure I see why you need it. >> >> I use roughly the following method for the global variables: >> - I put all initialized (zero or value) variables into a special n= amed >> linker section. >> - In a wrapper around main() I do the following: >> o First save the content of the section to a temporary memory spac= e >> o Execute the original (mostly unchanged) main() >> o After main() finishes, I restore the content of the section >> To simplify a later update to a newer source version, the differen= ce >> between the sources we use and the original FreeBSD sources should= be >> minimal. Therefore my attempt to put the variables into a section = is >> the >> following: >> I create a header file (i.e. pfctl-data.h) that contains a matchin= g >> declaration of the global variables but with an added gcc attribut= e >> __attribute__((__section__("my_section_name"))). This header file = is >> included at the end of the original pfctl.c. >> >> Oh. >> Ick. >> Clever, but =E2=80=A6 ick. >> >> I=E2=80=99m not a big fan of this patch, because it makes the code a b= it harder >> to follow, rather than improving things as most of your other patches = do. >> I suspect that something similar can be accomplished with a bit of >> linker trickery. >> >> A first idea is to insert two new symbols (e.g. pf_begin/pf_end) in tw= o >> separate files, the first before all of the pfctl object files, the >> second after them. >> This should let you group the .data section of the pfctl globals, >> accomplishing what you do here with the *attribute* attribute. >> >> Regards, >> Kristof >> >=20 > Hello Kristof, >=20 > I agree that my solution is not optimal and that this specific patch > does not really improve the code for you. So I'll try to find alternati= ves. >=20 > The method you suggested would not work for us. We are using part of th= e > FreeBSD sources as a library that is statically linked with the rest of > the system. Using our build process, the order of the object files does > not guarantee an order of the symbols. As far as I know a fixed order > can only be achieved by the section names. >=20 > Theoretically it could be possible to get a similar result with some > object file manipulation (renaming sections, ...). I'll check if I'm > able to use such a solution instead and report back as soon as I can > tell you more. >=20 > Kind regards, >=20 > Christian Mauderer >=20 Hello Kristof, just the promised report: I'm quite convinced that a solution using object file manipulation is possible. It only needs some additional work (some adaption to our build system) and therefore needs some time. But we work toward it. So just ignore the patch 0003. I noted that you already imported the other patches into FreeBSD. Thanks for that. Kind Regards Christian Mauderer --=20 -------------------------------------------- embedded brains GmbH Christian Mauderer Dornierstr. 4 D-82178 Puchheim Germany email: christian.mauderer@embedded-brains.de Phone: +49-89-18 94 741 - 18 Fax: +49-89-18 94 741 - 08 PGP: Public key available on request. Diese Nachricht ist keine gesch=C3=A4ftliche Mitteilung im Sinne des EHUG= .