From patchwork Thu Jul 9 22:28:14 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roland McGrath X-Patchwork-Id: 493591 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 22EB2140781 for ; Fri, 10 Jul 2015 08:28:29 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b=FG9ej5yZ; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:content-type :content-transfer-encoding:from:to:subject:message-id:date; q= dns; s=default; b=LIzwgr/+zr4tldeUJhAUr8PAIfjCnE1ycSi2lGxZgmt2Be +kSrQ7ILNDeLAmy0yf0qeYHTrdw6tPJEcXuvFMlGEmwNBzKp5dO3MtvRjQNtq2rB EMxtQVyolkcLTdpW5B5O8QGak8tDR7EKvbSbCTU4mql2lScMdUMOIsLeb5oBc= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:content-type :content-transfer-encoding:from:to:subject:message-id:date; s= default; bh=MAQp0t5kqgRsYfUY4U2Z/NL7HUk=; b=FG9ej5yZJB1B2CNde9L7 J5kftF6CazJQDH7hx0yeXHU/dXKMBDng7MrUKXsqGR3LWVFF+23WMmTC0G9vcB7d 12Y1hoxXj3qO1M6lWTgWtQo4GimEHSRF0eQVryLXoAIUkDw5+VwYz5sN7Klqq+Pp SNxYBymD7GY664ghuBKzU6Q= Received: (qmail 119369 invoked by alias); 9 Jul 2015 22:28:23 -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 119334 invoked by uid 89); 9 Jul 2015 22:28:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL, BAYES_00, KAM_LAZY_DOMAIN_SECURITY autolearn=no version=3.3.2 X-HELO: topped-with-meat.com MIME-Version: 1.0 From: Roland McGrath To: "GNU C. Library" Subject: [COMMITTED PATCH] PLT avoidance for _exit in rtld. Message-Id: <20150709222814.C47F62C39DC@topped-with-meat.com> Date: Thu, 9 Jul 2015 15:28:14 -0700 (PDT) X-CMAE-Score: 0 X-CMAE-Analysis: v=2.1 cv=SvUDtp+0 c=1 sm=1 tr=0 a=WkljmVdYkabdwxfqvArNOQ==:117 a=14OXPxybAAAA:8 a=hOe2yjtxAAAA:8 a=kj9zAlcOel0A:10 a=S-3fTQnqSwT6MyQ0LJMA:9 a=CjuIK1q_8ugA:10 This saves 24 bytes of code on i686-linux-gnu, where calls the compiler thinks will use the PLT (but actually won't at link time) require setting up %ebx. It has no effect at all on x86_64-linux-gnu (and probably most or all other machines). Thanks, Roland 2015-07-09 Roland McGrath * include/unistd.h: Add rtld_hidden_proto for _exit. * posix/_exit.c: Add rtld_hidden_def. * sysdeps/mach/hurd/_exit.c: Likewise. * sysdeps/nacl/_exit.c: Likewise. * sysdeps/unix/sysv/linux/_exit.c: Likewise. * sysdeps/unix/sysv/linux/i386/_exit.S: Likewise. diff --git a/include/unistd.h b/include/unistd.h index 61df3af..fbba393 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -5,6 +5,7 @@ __BEGIN_DECLS libc_hidden_proto (_exit, __noreturn__) +rtld_hidden_proto (_exit, __noreturn__) libc_hidden_proto (alarm) libc_hidden_proto (confstr) libc_hidden_proto (execl) diff --git a/posix/_exit.c b/posix/_exit.c index ceff1a3..f4d76a1 100644 --- a/posix/_exit.c +++ b/posix/_exit.c @@ -29,6 +29,7 @@ _exit (status) abort (); } libc_hidden_def (_exit) +rtld_hidden_def (_exit) weak_alias (_exit, _Exit) stub_warning (_exit) diff --git a/sysdeps/mach/hurd/_exit.c b/sysdeps/mach/hurd/_exit.c index 15c21fc..978b68f 100644 --- a/sysdeps/mach/hurd/_exit.c +++ b/sysdeps/mach/hurd/_exit.c @@ -52,4 +52,5 @@ _exit (status) _hurd_exit (W_EXITCODE (status, 0)); } libc_hidden_def (_exit) +rtld_hidden_def (_exit) weak_alias (_exit, _Exit) diff --git a/sysdeps/nacl/_exit.c b/sysdeps/nacl/_exit.c index 6006e26..b3b32ee 100644 --- a/sysdeps/nacl/_exit.c +++ b/sysdeps/nacl/_exit.c @@ -31,4 +31,5 @@ _exit (int status) __builtin_trap (); } libc_hidden_def (_exit) +rtld_hidden_def (_exit) weak_alias (_exit, _Exit) diff --git a/sysdeps/unix/sysv/linux/_exit.c b/sysdeps/unix/sysv/linux/_exit.c index 7228181..2294c80 100644 --- a/sysdeps/unix/sysv/linux/_exit.c +++ b/sysdeps/unix/sysv/linux/_exit.c @@ -39,4 +39,5 @@ _exit (status) } } libc_hidden_def (_exit) +rtld_hidden_def (_exit) weak_alias (_exit, _Exit) diff --git a/sysdeps/unix/sysv/linux/i386/_exit.S b/sysdeps/unix/sysv/linux/i386/_exit.S index 8841110..f470be8 100644 --- a/sysdeps/unix/sysv/linux/i386/_exit.S +++ b/sysdeps/unix/sysv/linux/i386/_exit.S @@ -40,4 +40,5 @@ _exit: .size _exit,.-_exit libc_hidden_def (_exit) +rtld_hidden_def (_exit) weak_alias (_exit, _Exit)