From 3c890819ffb3986ec92c44c913babdb8dfba80c5 Mon Sep 17 00:00:00 2001 From: guenther Date: Tue, 24 May 2022 22:34:02 +0000 Subject: [PATCH] Address the clang 13 "changed binding to STB_WEAK" warning on arm64: add _?ENTRY_NB to asm.h, switch libc's asm bits to the generic DEFS.h, and use ENTRY_NB as necessary. Also, give sizes to the htonl/htons symbols and mark them as weak. ok kettenis@ miod@ --- lib/libc/arch/aarch64/DEFS.h | 61 ------------------------- lib/libc/arch/aarch64/gen/byte_swap_2.S | 16 ++++--- lib/libc/arch/aarch64/gen/byte_swap_4.S | 16 ++++--- lib/libc/arch/aarch64/sys/brk.S | 4 +- lib/libc/arch/aarch64/sys/sbrk.S | 4 +- sys/arch/arm64/include/asm.h | 9 ++-- 6 files changed, 30 insertions(+), 80 deletions(-) delete mode 100644 lib/libc/arch/aarch64/DEFS.h diff --git a/lib/libc/arch/aarch64/DEFS.h b/lib/libc/arch/aarch64/DEFS.h deleted file mode 100644 index 04662946862..00000000000 --- a/lib/libc/arch/aarch64/DEFS.h +++ /dev/null @@ -1,61 +0,0 @@ -/* $OpenBSD: DEFS.h,v 1.1 2017/01/11 18:09:24 patrick Exp $ */ - -/*- - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * William Jolitz. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * from: @(#)SYS.h 5.5 (Berkeley) 5/7/91 - * $NetBSD: SYS.h,v 1.5 2002/06/03 18:30:32 fvdl Exp $ - */ - -#include - -/* - * We define a hidden alias with the prefix "_libc_" for each global symbol - * that may be used internally. By referencing _libc_x instead of x, other - * parts of libc prevent overriding by the application and avoid unnecessary - * relocations. - */ -#define _HIDDEN(x) _libc_##x -#define _HIDDEN_ALIAS(x,y) \ - STRONG_ALIAS(_HIDDEN(x),y); \ - .hidden _HIDDEN(x) -#define _HIDDEN_FALIAS(x,y) \ - _HIDDEN_ALIAS(x,y); \ - .type _HIDDEN(x),@function - -/* - * For functions implemented in ASM that aren't syscalls. - * END_STRONG(x) Like DEF_STRONG() in C; for standard/reserved C names - * END_WEAK(x) Like DEF_WEAK() in C; for non-ISO C names - */ -#define END_STRONG(x) END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x)) -#define END_WEAK(x) END_STRONG(x); .weak x - diff --git a/lib/libc/arch/aarch64/gen/byte_swap_2.S b/lib/libc/arch/aarch64/gen/byte_swap_2.S index 76b7db58c5c..306b40c0e3b 100644 --- a/lib/libc/arch/aarch64/gen/byte_swap_2.S +++ b/lib/libc/arch/aarch64/gen/byte_swap_2.S @@ -1,4 +1,4 @@ -/* $OpenBSD: byte_swap_2.S,v 1.2 2018/08/12 17:15:10 mortimer Exp $ */ +/* $OpenBSD: byte_swap_2.S,v 1.3 2022/05/24 22:34:02 guenther Exp $ */ /* $NetBSD: byte_swap_2.S,v 1.3 2003/04/05 23:08:51 bjh21 Exp $ */ /*- @@ -30,15 +30,19 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include +#include "DEFS.h" -_ENTRY(_C_LABEL(__bswap16)) -_ENTRY(_C_LABEL(ntohs)) -_ENTRY(_C_LABEL(htons)) -_PROF_PROLOGUE +_ENTRY(__bswap16) +_ENTRY_NB(ntohs) +ENTRY_NB(htons) RETGUARD_SETUP(__bswap16, x15) and w8, w0, #0xffff ubfx w0, w0, #8, #8 bfi w0, w8, #8, #16 RETGUARD_CHECK(__bswap16, x15) ret +END(htons) +_END(ntohs) +_END(__bswap16) + .weak htons + .weak ntohs diff --git a/lib/libc/arch/aarch64/gen/byte_swap_4.S b/lib/libc/arch/aarch64/gen/byte_swap_4.S index dfc3db40d29..4d285b87c86 100644 --- a/lib/libc/arch/aarch64/gen/byte_swap_4.S +++ b/lib/libc/arch/aarch64/gen/byte_swap_4.S @@ -1,4 +1,4 @@ -/* $OpenBSD: byte_swap_4.S,v 1.2 2018/08/12 17:15:10 mortimer Exp $ */ +/* $OpenBSD: byte_swap_4.S,v 1.3 2022/05/24 22:34:02 guenther Exp $ */ /* $NetBSD: byte_swap_4.S,v 1.2 2003/04/05 23:08:51 bjh21 Exp $ */ /*- @@ -30,13 +30,17 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include +#include "DEFS.h" -_ENTRY(_C_LABEL(__bswap32)) -_ENTRY(_C_LABEL(ntohl)) -_ENTRY(_C_LABEL(htonl)) -_PROF_PROLOGUE +_ENTRY(__bswap32) +_ENTRY_NB(ntohl) +ENTRY_NB(htonl) RETGUARD_SETUP(__bswap32, x15) rev w0, w0 RETGUARD_CHECK(__bswap32, x15) ret +END(htonl) +_END(ntohl) +_END(__bswap32) + .weak htonl + .weak ntohl diff --git a/lib/libc/arch/aarch64/sys/brk.S b/lib/libc/arch/aarch64/sys/brk.S index 574c615afb9..a18c1fc60ff 100644 --- a/lib/libc/arch/aarch64/sys/brk.S +++ b/lib/libc/arch/aarch64/sys/brk.S @@ -1,4 +1,4 @@ -/* $OpenBSD: brk.S,v 1.5 2018/08/12 17:15:10 mortimer Exp $ */ +/* $OpenBSD: brk.S,v 1.6 2022/05/24 22:34:02 guenther Exp $ */ /* $NetBSD: brk.S,v 1.7 2003/12/26 11:23:44 martin Exp $ */ /*- @@ -47,7 +47,7 @@ __minbrk: /* * Change the data segment size */ -ENTRY(brk) +ENTRY_NB(brk) RETGUARD_SETUP(brk, x15) #ifdef __PIC__ /* Setup the GOT */ diff --git a/lib/libc/arch/aarch64/sys/sbrk.S b/lib/libc/arch/aarch64/sys/sbrk.S index 1e3bd836832..e1ffccd4360 100644 --- a/lib/libc/arch/aarch64/sys/sbrk.S +++ b/lib/libc/arch/aarch64/sys/sbrk.S @@ -1,4 +1,4 @@ -/* $OpenBSD: sbrk.S,v 1.4 2018/08/12 17:15:10 mortimer Exp $ */ +/* $OpenBSD: sbrk.S,v 1.5 2022/05/24 22:34:02 guenther Exp $ */ /* $NetBSD: sbrk.S,v 1.7 2003/08/07 16:42:05 agc Exp $ */ /*- @@ -48,7 +48,7 @@ __curbrk: /* * Change the data segment size */ -ENTRY(sbrk) +ENTRY_NB(sbrk) RETGUARD_SETUP(sbrk, x15) #ifdef __PIC__ /* Setup the GOT */ diff --git a/sys/arch/arm64/include/asm.h b/sys/arch/arm64/include/asm.h index 396940e9db5..24b0a1ee998 100644 --- a/sys/arch/arm64/include/asm.h +++ b/sys/arch/arm64/include/asm.h @@ -1,4 +1,4 @@ -/* $OpenBSD: asm.h,v 1.8 2022/02/24 07:08:21 guenther Exp $ */ +/* $OpenBSD: asm.h,v 1.9 2022/05/24 22:34:02 guenther Exp $ */ /* $NetBSD: asm.h,v 1.4 2001/07/16 05:43:32 matt Exp $ */ /* @@ -61,8 +61,10 @@ */ #define _ASM_TYPE_FUNCTION #function #define _ASM_TYPE_OBJECT #object -#define _ENTRY(x) \ - .text; _ALIGN_TEXT; .globl x; .type x,_ASM_TYPE_FUNCTION; x: +/* NB == No Binding: use .globl or .weak as necessary */ +#define _ENTRY_NB(x) \ + .text; _ALIGN_TEXT; .type x,_ASM_TYPE_FUNCTION; x: +#define _ENTRY(x) .globl x; _ENTRY_NB(x) #if defined(PROF) || defined(GPROF) # define _PROF_PROLOGUE \ @@ -125,6 +127,7 @@ #define ENTRY(y) _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE #define ENTRY_NP(y) _ENTRY(_C_LABEL(y)) +#define ENTRY_NB(y) _ENTRY_NB(y); _PROF_PROLOGUE #define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE #define ASENTRY_NP(y) _ENTRY(_ASM_LABEL(y)) #define END(y) .size y, . - y -- 2.20.1