diff options
author | Philip Guenther <guenther@cvs.openbsd.org> | 2022-05-24 17:15:24 +0000 |
---|---|---|
committer | Philip Guenther <guenther@cvs.openbsd.org> | 2022-05-24 17:15:24 +0000 |
commit | 08693a354865b291d7e3a3d44f1f8724d0b950a6 (patch) | |
tree | 0460f5c507330a7f2033559ee018c29392d67351 /lib/libc/arch | |
parent | 1d169e7b4bbe64bfcb65fc1c0ab44458167d6c09 (diff) |
Address the clang 13 "changed binding to STB_WEAK" warning on arm (32bit):
* add _?ENTRY_NB to arm/asm.h
* make sure ld.so's arm asm bits see the same includes as libc
* switch libc's arm bits to the generic DEFS.h
* switch arm ASM bits from ENTRY to ENTRY_NB as necessary
ok kettenis@ miod@
Diffstat (limited to 'lib/libc/arch')
-rw-r--r-- | lib/libc/arch/arm/DEFS.h | 54 | ||||
-rw-r--r-- | lib/libc/arch/arm/gen/byte_swap_2.S | 16 | ||||
-rw-r--r-- | lib/libc/arch/arm/gen/byte_swap_4.S | 16 | ||||
-rw-r--r-- | lib/libc/arch/arm/gen/sigsetjmp.S | 8 | ||||
-rw-r--r-- | lib/libc/arch/arm/string/bcopy.S | 4 | ||||
-rw-r--r-- | lib/libc/arch/arm/string/bzero.S | 4 | ||||
-rw-r--r-- | lib/libc/arch/arm/sys/brk.S | 4 | ||||
-rw-r--r-- | lib/libc/arch/arm/sys/sbrk.S | 4 |
8 files changed, 33 insertions, 77 deletions
diff --git a/lib/libc/arch/arm/DEFS.h b/lib/libc/arch/arm/DEFS.h deleted file mode 100644 index a758b0f9ea0..00000000000 --- a/lib/libc/arch/arm/DEFS.h +++ /dev/null @@ -1,54 +0,0 @@ -/* $OpenBSD: DEFS.h,v 1.3 2017/12/16 09:25:43 kettenis Exp $ */ -/* - * Copyright (c) 2016 Philip Guenther <guenther@openbsd.org> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include <machine/asm.h> - -/* - * 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 - * END_BUILTIN(x) If compiling with clang, then just END() and - * mark it .protected, else be like END_STRONG(); - * for clang builtins like memcpy - * If a 'BUILTIN' function needs be referenced by other ASM code, then use - * _BUILTIN(x) If compiled with clang, then just x, otherwise - * _HIDDEN(x) - */ -#define END_STRONG(x) END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x)) -#define END_WEAK(x) END_STRONG(x); .weak x - -#ifdef __clang__ -#define END_BUILTIN(x) END(x); .protected x -#define _BUILTIN(x) x -#else -#define END_BUILTIN(x) END_STRONG(x) -#define _BUILTIN(x) _HIDDEN(x) -#endif diff --git a/lib/libc/arch/arm/gen/byte_swap_2.S b/lib/libc/arch/arm/gen/byte_swap_2.S index 7915ae87df2..3429741ed9e 100644 --- a/lib/libc/arch/arm/gen/byte_swap_2.S +++ b/lib/libc/arch/arm/gen/byte_swap_2.S @@ -1,4 +1,4 @@ -/* $OpenBSD: byte_swap_2.S,v 1.3 2008/06/26 05:42:04 ray Exp $ */ +/* $OpenBSD: byte_swap_2.S,v 1.4 2022/05/24 17:15:23 guenther Exp $ */ /* $NetBSD: byte_swap_2.S,v 1.3 2003/04/05 23:08:51 bjh21 Exp $ */ /*- @@ -30,13 +30,17 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include <machine/asm.h> +#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) and r1, r0, #0xff mov r0, r0, lsr #8 orr r0, r0, r1, lsl #8 mov pc, lr +END(htons) +_END(ntohs) +_END(__bswap16) + .weak htons + .weak ntohs diff --git a/lib/libc/arch/arm/gen/byte_swap_4.S b/lib/libc/arch/arm/gen/byte_swap_4.S index e31199a3730..408e95448ae 100644 --- a/lib/libc/arch/arm/gen/byte_swap_4.S +++ b/lib/libc/arch/arm/gen/byte_swap_4.S @@ -1,4 +1,4 @@ -/* $OpenBSD: byte_swap_4.S,v 1.3 2008/06/26 05:42:04 ray Exp $ */ +/* $OpenBSD: byte_swap_4.S,v 1.4 2022/05/24 17:15:23 guenther Exp $ */ /* $NetBSD: byte_swap_4.S,v 1.2 2003/04/05 23:08:51 bjh21 Exp $ */ /*- @@ -30,14 +30,18 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include <machine/asm.h> +#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) eor r1, r0, r0, ror #16 bic r1, r1, #0x00FF0000 mov r0, r0, ror #8 eor r0, r0, r1, lsr #8 mov pc, lr +END(htonl) +_END(ntohl) +_END(__bswap32) + .weak htonl + .weak ntohl diff --git a/lib/libc/arch/arm/gen/sigsetjmp.S b/lib/libc/arch/arm/gen/sigsetjmp.S index 52e32c7d248..0a2162d6a07 100644 --- a/lib/libc/arch/arm/gen/sigsetjmp.S +++ b/lib/libc/arch/arm/gen/sigsetjmp.S @@ -1,4 +1,4 @@ -/* $OpenBSD: sigsetjmp.S,v 1.3 2016/08/06 19:16:09 guenther Exp $ */ +/* $OpenBSD: sigsetjmp.S,v 1.4 2022/05/24 17:15:23 guenther Exp $ */ /* $NetBSD: sigsetjmp.S,v 1.3 2002/08/17 19:54:30 thorpej Exp $ */ /* @@ -46,17 +46,19 @@ * The previous signal state is restored. */ -ENTRY(sigsetjmp) +ENTRY_NB(sigsetjmp) teq r1, #0 beq _HIDDEN(_setjmp) b _HIDDEN(setjmp) +END_WEAK(sigsetjmp) .L_setjmp_magic: .word _JB_MAGIC__SETJMP -ENTRY(siglongjmp) +ENTRY_NB(siglongjmp) ldr r2, .L_setjmp_magic ldr r3, [r0] teq r2, r3 beq _HIDDEN(_longjmp) b _HIDDEN(longjmp) +END_WEAK(siglongjmp) diff --git a/lib/libc/arch/arm/string/bcopy.S b/lib/libc/arch/arm/string/bcopy.S index 88b08cbaa37..e5cae17f4a6 100644 --- a/lib/libc/arch/arm/string/bcopy.S +++ b/lib/libc/arch/arm/string/bcopy.S @@ -1,4 +1,4 @@ -/* $OpenBSD: bcopy.S,v 1.6 2017/10/29 02:21:33 guenther Exp $ */ +/* $OpenBSD: bcopy.S,v 1.7 2022/05/24 17:15:23 guenther Exp $ */ /* $NetBSD: bcopy.S,v 1.2 2001/07/16 05:50:06 matt Exp $ */ /*- @@ -34,7 +34,7 @@ /* bcopy = memcpy/memmove with arguments reversed. */ -ENTRY(bcopy) +ENTRY_NB(bcopy) /* switch the source and destination registers */ eor r0, r1, r0 eor r1, r0, r1 diff --git a/lib/libc/arch/arm/string/bzero.S b/lib/libc/arch/arm/string/bzero.S index ff7fb97221e..0bc5a421075 100644 --- a/lib/libc/arch/arm/string/bzero.S +++ b/lib/libc/arch/arm/string/bzero.S @@ -1,4 +1,4 @@ -/* $OpenBSD: bzero.S,v 1.6 2017/12/16 09:25:43 kettenis Exp $ */ +/* $OpenBSD: bzero.S,v 1.7 2022/05/24 17:15:23 guenther Exp $ */ /* $NetBSD: bzero.S,v 1.2 2001/07/16 05:50:06 matt Exp $ */ /*- @@ -32,7 +32,7 @@ #include "DEFS.h" -ENTRY(bzero) +ENTRY_NB(bzero) mov r2, r1 mov r1, #0 b _BUILTIN(memset) diff --git a/lib/libc/arch/arm/sys/brk.S b/lib/libc/arch/arm/sys/brk.S index a33c2995142..038f6dbc389 100644 --- a/lib/libc/arch/arm/sys/brk.S +++ b/lib/libc/arch/arm/sys/brk.S @@ -1,4 +1,4 @@ -/* $OpenBSD: brk.S,v 1.11 2021/10/25 14:38:10 jca Exp $ */ +/* $OpenBSD: brk.S,v 1.12 2022/05/24 17:15:23 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) #ifdef __PIC__ /* Setup the GOT */ ldr r3, .Lgot diff --git a/lib/libc/arch/arm/sys/sbrk.S b/lib/libc/arch/arm/sys/sbrk.S index 107091bf621..dc840fb9454 100644 --- a/lib/libc/arch/arm/sys/sbrk.S +++ b/lib/libc/arch/arm/sys/sbrk.S @@ -1,4 +1,4 @@ -/* $OpenBSD: sbrk.S,v 1.11 2021/10/25 14:38:10 jca Exp $ */ +/* $OpenBSD: sbrk.S,v 1.12 2022/05/24 17:15:23 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) #ifdef __PIC__ /* Setup the GOT */ ldr r3, .Lgot |