From patchwork Thu Jun 1 13:09:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alan Modra X-Patchwork-Id: 20666 X-Patchwork-Delegate: tuliom@linux.vnet.ibm.com Received: (qmail 56867 invoked by alias); 1 Jun 2017 13:09:32 -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 56854 invoked by uid 89); 1 Jun 2017 13:09:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.5 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=informative X-HELO: mail-it0-f49.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=qa7pHWUrf2SxtSVknEJ0/FEYbWrEin7vgqbDbaqZFjY=; b=FoUal3OppsLeWOzxaPjMNZSzCNJqjKUa34HSarj4rhbSEn8aA8CqrKkkk5yrS6FtuB nstpItPwHEvY68qR7XW36pBduInJdiKIMTIg97/s+8m2pYWzwsBE/xpmdvR5bW2jHNWO I0Du65j3i3cefG83a0s1FEegq7gl1BT/brEWFA9wdTfbmx1PPw3UUSMLoJ+pY7Utm4be uQLfDahHliWtfsWFlhQiPpc/cXPhYc0X+/2G0X66U2e1XOX8B3opv1GzzS+KcTaMMLUp Fz2JzSZwV6ZISGm/K0M4wF3yEztDOHaByewE0cChzgiuYX9UlCotX9Uy7D0+8/FnkHyC MmOA== X-Gm-Message-State: AODbwcAemG31mwUod2N+J/F15ZakwjH4cgYfSwN8cNIYztPz5G4ZlyaX LrpntHvkSP7e7h2p X-Received: by 10.84.160.197 with SMTP id v5mr94772303plg.30.1496322572182; Thu, 01 Jun 2017 06:09:32 -0700 (PDT) Date: Thu, 1 Jun 2017 22:39:28 +0930 From: Alan Modra To: libc-alpha@sourceware.org Subject: [PATCH 3/6] PowerPC64 sysdep.h tidy Message-ID: <20170601130928.GI8842@bubble.grove.modra.org> References: <20170601130442.GF8842@bubble.grove.modra.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20170601130442.GF8842@bubble.grove.modra.org> User-Agent: Mutt/1.5.24 (2015-08-30) .align on some targets takes a byte alignment, on others like powerpc, log2 of the byte alignment. It's a good idea to avoid .align, particularly since x86 and powerpc are different. This patch fixes the occurrences of .align in powerpc64/sysdep.h, renames DOT_LABEL since the macro doesn't have anything to do with adding dots, removes extraneous semicolons, and fixes some formatting. * sysdeps/powerpc/powerpc64/sysdep.h: Formatting. (FUNC_LABEL): Rename from DOT_LABEL. (ENTRY_1): Use FUNC_LABEL and remove leading space from label. Use .p2align rather than .align. (TRACEBACK, TRACEBACK_MASK): Use .p2align rather than .align. (ABORT_TRANSACTION): Likewise. (ENTRY_1, ENTRY_2, END_2, LOCALENTRY): Remove unnecessary semicolons, particularly at end. Add semicolon at invocation as necessary. (TRACEBACK, TRACEBACK_MASK, PSEUDO, PSEUDO_NOERRNO): Likewise. (PSEUDO_ERRVAL, PPC64_LOAD_FUNCPTR, OPD_ENT): Likewise. * sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S (ENTRY, END): Adjust to suit. diff --git a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S index 23365a1..a895dc6 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S @@ -21,7 +21,7 @@ #undef ENTRY #define ENTRY(name) \ .section ".text"; \ - ENTRY_2(__strrchr_power8) \ + ENTRY_2(__strrchr_power8); \ .align ALIGNARG(2); \ BODY_LABEL(__strrchr_power8): \ cfi_startproc; \ @@ -30,7 +30,7 @@ #undef END #define END(name) \ cfi_endproc; \ - TRACEBACK(__strrchr_power8) \ + TRACEBACK(__strrchr_power8); \ END_2(__strrchr_power8) #undef libc_hidden_builtin_def diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h index 4347323..860420e 100644 --- a/sysdeps/powerpc/powerpc64/sysdep.h +++ b/sysdeps/powerpc/powerpc64/sysdep.h @@ -106,25 +106,25 @@ # define OPD_ENT(name) .quad BODY_LABEL (name), .TOC.@tocbase, 0 #endif -#define ENTRY_1(name) \ +#define ENTRY_1(name) \ .type BODY_LABEL(name),@function; \ .globl name; \ .section ".opd","aw"; \ - .align 3; \ -name##: OPD_ENT (name); \ - .previous; + .p2align 3;FUNC_LABEL(name): \ + OPD_ENT (name); \ + .previous -#define DOT_LABEL(X) X +#define FUNC_LABEL(X) X #define BODY_LABEL(X) .LY##X -#define ENTRY_2(name) \ +#define ENTRY_2(name) \ .type name,@function; \ ENTRY_1(name) -#define END_2(name) \ +#define END_2(name) \ .size name,.-BODY_LABEL(name); \ - .size BODY_LABEL(name),.-BODY_LABEL(name); + .size BODY_LABEL(name),.-BODY_LABEL(name) #define LOCALENTRY(name) -#else /* _CALL_ELF */ +#else /* _CALL_ELF == 2 */ /* Macro to prepare for calling via a function pointer. */ .macro PPC64_LOAD_FUNCPTR PTR @@ -132,23 +132,23 @@ name##: OPD_ENT (name); \ mtctr r12 .endm -#define DOT_LABEL(X) X +#define FUNC_LABEL(X) X #define BODY_LABEL(X) X -#define ENTRY_2(name) \ +#define ENTRY_2(name) \ .globl name; \ - .type name,@function; -#define END_2(name) \ - .size name,.-name; -#define LOCALENTRY(name) \ -1: addis r2,r12,.TOC.-1b@ha; \ - addi r2,r2,.TOC.-1b@l; \ - .localentry name,.-name; + .type name,@function +#define END_2(name) \ + .size name,.-name +#define LOCALENTRY(name) \ +1: addis r2,r12,.TOC.-1b@ha; \ + addi r2,r2,.TOC.-1b@l; \ + .localentry name,.-name #endif /* _CALL_ELF */ #define ENTRY(name) \ .section ".text"; \ - ENTRY_2(name) \ + ENTRY_2(name); \ .align ALIGNARG(2); \ BODY_LABEL(name): \ cfi_startproc; \ @@ -167,7 +167,7 @@ BODY_LABEL(name): \ past a 2^alignt boundary. */ #define EALIGN(name, alignt, words) \ .section ".text"; \ - ENTRY_2(name) \ + ENTRY_2(name); \ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ BODY_LABEL(name): \ @@ -220,7 +220,7 @@ LT_LABEL(name): ; \ LT_LABELSUFFIX(name,_name_start): ;\ .ascii stringify(name) ; \ LT_LABELSUFFIX(name,_name_end): ; \ - .align 2 ; + .p2align 2 #define TRACEBACK_MASK(name,mask) \ LT_LABEL(name): ; \ @@ -231,19 +231,19 @@ LT_LABEL(name): ; \ LT_LABELSUFFIX(name,_name_start): ;\ .ascii stringify(name) ; \ LT_LABELSUFFIX(name,_name_end): ; \ - .align 2 ; + .p2align 2 /* END generates Traceback tables */ #undef END #define END(name) \ cfi_endproc; \ - TRACEBACK(name) \ + TRACEBACK(name); \ END_2(name) /* This form supports more informative traceback tables */ #define END_GEN_TB(name,mask) \ cfi_endproc; \ - TRACEBACK_MASK(name,mask) \ + TRACEBACK_MASK(name,mask); \ END_2(name) #if !IS_IN(rtld) && defined (ENABLE_LOCK_ELISION) @@ -255,7 +255,7 @@ LT_LABELSUFFIX(name,_name_end): ; \ beq 1f; \ li 11,_ABORT_SYSCALL; \ tabort. 11; \ - .align 4; \ + .p2align 4; \ 1: #else # define ABORT_TRANSACTION @@ -268,12 +268,12 @@ LT_LABELSUFFIX(name,_name_end): ; \ /* ppc64 is always PIC */ #undef JUMPTARGET -#define JUMPTARGET(name) DOT_LABEL(name) +#define JUMPTARGET(name) FUNC_LABEL(name) #define PSEUDO(name, syscall_name, args) \ - .section ".text"; \ - ENTRY (name) \ - DO_CALL (SYS_ify (syscall_name)); + .section ".text"; \ + ENTRY (name); \ + DO_CALL (SYS_ify (syscall_name)) #ifdef SHARED #define TAIL_CALL_SYSCALL_ERROR \ @@ -314,9 +314,9 @@ LT_LABELSUFFIX(name,_name_end): ; \ END (name) #define PSEUDO_NOERRNO(name, syscall_name, args) \ - .section ".text"; \ - ENTRY (name) \ - DO_CALL (SYS_ify (syscall_name)); + .section ".text"; \ + ENTRY (name); \ + DO_CALL (SYS_ify (syscall_name)) #define PSEUDO_RET_NOERRNO \ blr @@ -328,9 +328,9 @@ LT_LABELSUFFIX(name,_name_end): ; \ END (name) #define PSEUDO_ERRVAL(name, syscall_name, args) \ - .section ".text"; \ - ENTRY (name) \ - DO_CALL (SYS_ify (syscall_name)); + .section ".text"; \ + ENTRY (name); \ + DO_CALL (SYS_ify (syscall_name)) #define PSEUDO_RET_ERRVAL \ blr @@ -346,53 +346,53 @@ LT_LABELSUFFIX(name,_name_end): ; \ #if _CALL_ELF != 2 #define PPC64_LOAD_FUNCPTR(ptr) \ - "ld 12,0(" #ptr ");\n" \ - "ld 2,8(" #ptr ");\n" \ - "mtctr 12;\n" \ - "ld 11,16(" #ptr ");" + "ld 12,0(" #ptr ")\n" \ + "ld 2,8(" #ptr ")\n" \ + "mtctr 12\n" \ + "ld 11,16(" #ptr ")" #ifdef USE_PPC64_OVERLAPPING_OPD -# define OPD_ENT(name) ".quad " BODY_PREFIX #name ", .TOC.@tocbase;" +# define OPD_ENT(name) ".quad " BODY_PREFIX #name ", .TOC.@tocbase" #else -# define OPD_ENT(name) ".quad " BODY_PREFIX #name ", .TOC.@tocbase, 0;" +# define OPD_ENT(name) ".quad " BODY_PREFIX #name ", .TOC.@tocbase, 0" #endif #define ENTRY_1(name) \ - ".type " BODY_PREFIX #name ",@function;\n" \ - ".globl " #name ";\n" \ - ".pushsection \".opd\",\"aw\";\n" \ - ".align 3;\n" \ + ".type " BODY_PREFIX #name ",@function\n" \ + ".globl " #name "\n" \ + ".pushsection \".opd\",\"aw\"\n" \ + ".p2align 3\n" \ #name ":\n" \ OPD_ENT (name) "\n" \ - ".popsection;" + ".popsection" #define DOT_PREFIX "" #define BODY_PREFIX ".LY" #define ENTRY_2(name) \ - ".type " #name ",@function;\n" \ + ".type " #name ",@function\n" \ ENTRY_1(name) #define END_2(name) \ - ".size " #name ",.-" BODY_PREFIX #name ";\n" \ - ".size " BODY_PREFIX #name ",.-" BODY_PREFIX #name ";" + ".size " #name ",.-" BODY_PREFIX #name "\n" \ + ".size " BODY_PREFIX #name ",.-" BODY_PREFIX #name #define LOCALENTRY(name) #else /* _CALL_ELF */ #define PPC64_LOAD_FUNCPTR(ptr) \ - "mr 12," #ptr ";\n" \ - "mtctr 12;" + "mr 12," #ptr "\n" \ + "mtctr 12" #define DOT_PREFIX "" #define BODY_PREFIX "" #define ENTRY_2(name) \ - ".type " #name ",@function;\n" \ - ".globl " #name ";" + ".type " #name ",@function\n" \ + ".globl " #name #define END_2(name) \ - ".size " #name ",.-" #name ";" + ".size " #name ",.-" #name #define LOCALENTRY(name) \ - "1: addis 2,12,.TOC.-1b@ha;\n" \ - "addi 2,2,.TOC.-1b@l;\n" \ - ".localentry " #name ",.-" #name ";" + "1: addis 2,12,.TOC.-1b@ha\n" \ + "addi 2,2,.TOC.-1b@l\n" \ + ".localentry " #name ",.-" #name #endif /* _CALL_ELF */