From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54759) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VJzaN-0006WH-6b for qemu-devel@nongnu.org; Thu, 12 Sep 2013 01:37:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VJzaH-0002EM-6w for qemu-devel@nongnu.org; Thu, 12 Sep 2013 01:36:59 -0400 Received: from isrv.corpit.ru ([86.62.121.231]:44642) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VJzaG-0002Dd-VY for qemu-devel@nongnu.org; Thu, 12 Sep 2013 01:36:53 -0400 Message-ID: <523152EB.5010505@msgid.tls.msk.ru> Date: Thu, 12 Sep 2013 09:36:43 +0400 From: Michael Tokarev MIME-Version: 1.0 References: <1378906448-15834-1-git-send-email-famz@redhat.com> <1378906448-15834-5-git-send-email-famz@redhat.com> <20130911154841.GD2293@redhat.com> <5230BA69.1000202@twiddle.net> <20130912030232.GK9134@T430s.nay.redhat.com> In-Reply-To: <20130912030232.GK9134@T430s.nay.redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v6 4/8] module: implement module loading function List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: famz@redhat.com Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org, stefanha@redhat.com, pbonzini@redhat.com, vilanova@ac.upc.edu, Richard Henderson 12.09.2013 07:02, Fam Zheng wrote. > On Wed, 09/11 11:46, Richard Henderson wrote: >> On 09/11/2013 08:48 AM, Daniel P. Berrange wrote: >>> We know the precise list of valid modules when building QEMU, >>> so IMHO, this should just explicitly load each known module >>> name, and *not* readdir. Also it should do something along the >>> lines suggested their of poisoning exported symbols with a >>> build hash to guarantee the modules loaded match the original >>> binary and that the symbols change on every rebuild. >> >> We need not mangle the symbols, which could be complicated to >> actually implement, and irritating to work around within gdb. >> > Agree with this, some id or hash check should be enough. A solution which I proposed at the very beginning -- to export a "hashed" init function from modules, and call it from the main executable. Like, instead of, say, qemu_module_init(), call qemu_module_init_0xdeadbeaf(), where 0xdeadbeaf is a hash of some build-dependent value. This should be enough to keep it going. Ofcourse, if a module lacks this function, it should not be loaded. Thanks, /mjt