Date: Mon, 1 Aug 2016 16:32:45 +0200 From: Christian Mauderer <christian.mauderer@embedded-brains.de> To: Kristof Provost <kp@FreeBSD.org> Cc: "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org> Subject: Re: Changes to pfctl to allow easier integration into a library Message-ID: <a2479a3c-031c-c137-78a9-8a8f34a12100@embedded-brains.de> In-Reply-To: <0C7EC45D-C3BC-4417-AF77-3ACC027D28B5@FreeBSD.org> References: <25df9fd5-be75-b9ae-aa3a-22abef3bddf0@embedded-brains.de> <cb7c6bb6-8160-3524-5432-d4ff46e16af5@embedded-brains.de> <0C7EC45D-C3BC-4417-AF77-3ACC027D28B5@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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. >=20 >> Is the virtualisation that Bjoern mentioned necessary or was my >> interpretation correct that this is only meant for kernel space code? > I believe your interpretations is correct. > User land code should not have to care about VIMAGE. >=20 > Regards, > Kristof Hello Kristof, I use roughly the following method for the global variables: - I put all initialized (zero or value) variables into a special named linker section. - In a wrapper around main() I do the following: o First save the content of the section to a temporary memory space 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 difference 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 matching declaration of the global variables but with an added gcc attribute __attribute__((__section__("my_section_name"))). This header file is included at the end of the original pfctl.c. Problem is: This method doesn't work for a static variable that is defined inside a function. Therefore I pulled them out of the functions and put them into the scope of the c module. 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= .
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a2479a3c-031c-c137-78a9-8a8f34a12100>