From patchwork Mon Jun 29 21:07:03 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 138087 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8B40B4BA7994 for ; Mon, 29 Jun 2026 21:07:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8B40B4BA7994 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=LVNg/FSc X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id CD3FC4BA23F9 for ; Mon, 29 Jun 2026 21:07:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CD3FC4BA23F9 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CD3FC4BA23F9 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1782767236; cv=none; b=Ne7EGVXzPonbZm+Hrq6PSjYuR/JCOWD8HYTCYVIBbByKKungfvN8XeOF6jFNLpbHpdvq+vIRsPjap6D/5MXKq3DQRlh3CtjE1groNhXmpIEuUybPxRYWJKtBt4Uq/mBM+veMZ5Czzcwm5Xq3m/de3D6mdw/hnUchFFps7jfj7rU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1782767236; c=relaxed/simple; bh=y3PXj7AJhEL1r21Bc7eF0psTeoCbqioUAkuInhtb88Y=; h=DKIM-Signature:From:To:Subject:Message-ID:Date:MIME-Version; b=H2NaOfvgEdS2UGQCv3xUXtcswtXGvQ4HKQL8he73ESYs3B+sswWGJwAi2HuqCZWHkEXRg1gxkH1/tlGhQPx7+gZfvgPMC2/bhqjPbO8gJ2L9U3RWi6A/KVTl2tUuHk9VUefpL4kBBW/qOYguhqXDGeggX8ssgmawbOtlFyT0+v0= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=LVNg/FSc DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CD3FC4BA23F9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1782767236; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=tiGKAZteUGkLPMbgqFT7U8lqC/Sy8wxjmRDcsMhiWTI=; b=LVNg/FScMZtlvkXJIo9l8SeXJ+1wDNGBXxR/rYW3IPX9q2w1/R1USemReKV/llWOLUqyWh ze386UD049+89/EzkzmsQE5SjQooLYxemcVRgJZjPxdrKVjEtpm/Oqiz8mSxltD59kdgmh xtW9AKZ+hdTG3qBz1n0foTOvPOvNSBw= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-690-klj4JdrlNc2vIDoB3O2-Og-1; Mon, 29 Jun 2026 17:07:11 -0400 X-MC-Unique: klj4JdrlNc2vIDoB3O2-Og-1 X-Mimecast-MFC-AGG-ID: klj4JdrlNc2vIDoB3O2-Og_1782767230 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CC1CE18E6A49; Mon, 29 Jun 2026 21:07:09 +0000 (UTC) Received: from fweimer-oldenburg.csb.redhat.com (unknown [10.44.48.121]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7F2303000B55; Mon, 29 Jun 2026 21:07:06 +0000 (UTC) From: Florian Weimer To: libc-alpha@sourceware.org Cc: Simon Marchi , Andrew Burgess , Wilco Dijkstra , Yury Khrustalev , Thiago Jung Bauermann , Adhemerval Zanella Netto , Carlos O'Donell , Muhammad Kamran Subject: [PATCH 1/2] elf: Record original entry point in GLRO(dl_entry) In-Reply-To: Message-ID: References: X-From-Line: e2a4b3cee18e071b158772bf21aa442a138e8b46 Mon Sep 17 00:00:00 2001 Date: Mon, 29 Jun 2026 23:07:03 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: es8X0vvLMW_k9RSmU5aEiMiXc9eDnACZ4aOdYrnopP4_1782767230 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, RCVD_IN_SBL_CSS, SPF_HELO_PASS, SPF_NONE, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org This could be useful information for debugging purposes. On Linux, the kernel-provided value in the auxilary vector is overwritten by ld.so. This is also the address that GDB uses on some architectures to set the breakpoint on the return from an inferior function call. --- elf/rtld.c | 1 + sysdeps/generic/ldsodefs.h | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/elf/rtld.c b/elf/rtld.c index e5ba71fef1..cc813201dc 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1366,6 +1366,7 @@ dl_main (const ElfW(Phdr) *phdr, #endif const char *ld_so_name = _dl_argv[0]; + GLRO(dl_entry) = *user_entry; if (*user_entry == (ElfW(Addr)) ENTRY_POINT) { /* Ho ho. We are not the program interpreter! We are the program diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index f94247ad9f..9bbc9f2c54 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -682,6 +682,10 @@ struct rtld_global_ro /* Dynamic linker operations used after static dlopen. */ const struct dlfcn_hook *_dl_dlfcn_hook; + /* Original kernel-provided entry point. Could be the main program + or ld.so itself. */ + ElfW(Addr) _dl_entry; + /* List of auditing interfaces. */ struct audit_ifaces *_dl_audit; unsigned int _dl_naudit;