From patchwork Mon Oct 7 12:51:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 34842 Received: (qmail 107040 invoked by alias); 7 Oct 2019 12:51:21 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 107029 invoked by uid 89); 7 Oct 2019 12:51:21 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=sensitivity, sk:highest, posting X-HELO: mx1.redhat.com From: Florian Weimer To: libc-alpha@sourceware.org Subject: [PATCH] dlfcn: Remove remnants of caller sensitivity from dlinfo Date: Mon, 07 Oct 2019 14:51:15 +0200 Message-ID: <877e5gn2gs.fsf@oldenburg2.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 dlinfo operates on a specific handle, which means that there is no caller sensivity involved. ----- Note: Not posting a ChangeLog entry, on the assumption that we will switch to automatic generation. diff --git a/dlfcn/dlinfo.c b/dlfcn/dlinfo.c index 4b031d8130..97515a16d9 100644 --- a/dlfcn/dlinfo.c +++ b/dlfcn/dlinfo.c @@ -26,7 +26,7 @@ int dlinfo (void *handle, int request, void *arg) { - return __dlinfo (handle, request, arg, RETURN_ADDRESS (0)); + return __dlinfo (handle, request, arg); } #else @@ -35,7 +35,6 @@ dlinfo (void *handle, int request, void *arg) struct dlinfo_args { - ElfW(Addr) caller; void *handle; int request; void *arg; @@ -47,24 +46,6 @@ dlinfo_doit (void *argsblock) struct dlinfo_args *const args = argsblock; struct link_map *l = args->handle; -# if 0 - if (args->handle == RTLD_SELF) - { - Lmid_t nsid; - - /* Find the highest-addressed object that CALLER is not below. */ - for (nsid = 0; nsid < DL_NNS; ++nsid) - for (l = GL(dl_ns)[nsid]._ns_loaded; l != NULL; l = l->l_next) - if (caller >= l->l_map_start && caller < l->l_map_end - && (l->l_contiguous || _dl_addr_inside_object (l, caller))) - break; - - if (l == NULL) - _dl_signal_error (0, NULL, NULL, N_("\ -RTLD_SELF used in code not dynamically loaded")); - } -# endif - switch (args->request) { case RTLD_DI_CONFIGADDR: @@ -108,16 +89,14 @@ RTLD_SELF used in code not dynamically loaded")); } int -__dlinfo (void *handle, int request, void *arg DL_CALLER_DECL) +__dlinfo (void *handle, int request, void *arg) { # ifdef SHARED if (!rtld_active ()) - return _dlfcn_hook->dlinfo (handle, request, arg, - DL_CALLER); + return _dlfcn_hook->dlinfo (handle, request, arg); # endif - struct dlinfo_args args = { (ElfW(Addr)) DL_CALLER, - handle, request, arg }; + struct dlinfo_args args = { handle, request, arg }; return _dlerror_run (&dlinfo_doit, &args) ? -1 : 0; } # ifdef SHARED diff --git a/include/dlfcn.h b/include/dlfcn.h index 0dc57dbe22..93dd369ab1 100644 --- a/include/dlfcn.h +++ b/include/dlfcn.h @@ -117,7 +117,7 @@ struct dlfcn_hook int (*dladdr) (const void *address, Dl_info *info); int (*dladdr1) (const void *address, Dl_info *info, void **extra_info, int flags); - int (*dlinfo) (void *handle, int request, void *arg, void *dl_caller); + int (*dlinfo) (void *handle, int request, void *arg); void *(*dlmopen) (Lmid_t nsid, const char *file, int mode, void *dl_caller); void *pad[4]; }; @@ -143,8 +143,7 @@ extern int __dladdr (const void *address, Dl_info *info) extern int __dladdr1 (const void *address, Dl_info *info, void **extra_info, int flags) attribute_hidden; -extern int __dlinfo (void *handle, int request, void *arg DL_CALLER_DECL) - attribute_hidden; +extern int __dlinfo (void *handle, int request, void *arg) attribute_hidden; #ifndef SHARED struct link_map;