From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27487 invoked by alias); 23 Jan 2015 17:54:27 -0000 Mailing-List: contact libffi-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libffi-discuss-owner@sourceware.org Received: (qmail 27465 invoked by uid 89); 23 Jan 2015 17:54:24 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 23 Jan 2015 17:54:22 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t0NHsLnw032204 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Fri, 23 Jan 2015 12:54:21 -0500 Received: from anchor.twiddle.net (vpn-229-169.phx2.redhat.com [10.3.229.169]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t0NHsKGw004334 for ; Fri, 23 Jan 2015 12:54:20 -0500 Message-ID: <54C28ACB.8030702@redhat.com> Date: Fri, 23 Jan 2015 17:54:00 -0000 From: Richard Henderson User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: libffi-discuss@sourceware.org Subject: Constant trampoline pages Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2015/txt/msg00023.txt.bz2 The current iOS support to have a page of allocated trampolines that gets remapped as needed, rather than writing and flushing them, makes me wonder if we shouldn't do the same thing for *all* targets. Years ago I wrote a small library to demonstrate this on Linux. The idea was to be able to use these trampolines for nested functions within gcc. That never went anywhere because people were more interested in avoiding trampolines entirely than making them work better. But for libffi it could work better than our current workarounds for selinux. The source for my trampoline library can be found at git://github.com/rth7680/tramp.git Possibly the most interesting part is the tramp-raw.c file, where I map back from an address in virtual memory back to a filename + file offset. At least for elf hosts with dl_iterate_phdr, which is Linux plus recent BSDs afaik. Thoughts? r~