glibc/sysdeps/aarch64
Sudakshina Das 91181954f9 aarch64: Add BTI support to assembly files
To enable building glibc with branch protection, assembly code
needs BTI landing pads and ELF object file markings in the form
of a GNU property note.

The landing pads are unconditionally added to all functions that
may be indirectly called. When the code segment is not mapped
with PROT_BTI these instructions are nops. They are kept in the
code when BTI is not supported so that the layout of performance
critical code is unchanged across configurations.

The GNU property notes are only added when there is support for
BTI in the toolchain, because old binutils does not handle the
notes right. (Does not know how to merge them nor to put them in
PT_GNU_PROPERTY segment instead of PT_NOTE, and some versions
of binutils emit warnings about the unknown GNU property. In
such cases the produced libc binaries would not have valid
ELF marking so BTI would not be enabled.)

Note: functions using ENTRY or ENTRY_ALIGN now start with an
additional BTI c, so alignment of the following code changes,
but ENTRY_ALIGN_AND_PAD was fixed so there is no change to the
existing code layout. Some string functions may need to be
tuned for optimal performance after this commit.

Co-authored-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-07-08 15:02:37 +01:00
..
bits Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
fpu aarch64: Remove fpu Makefile 2020-06-22 11:09:50 -03:00
multiarch aarch64: Add BTI support to assembly files 2020-07-08 15:02:37 +01:00
nptl nptl: add missing pthread-offsets.h 2020-02-10 17:01:21 +01:00
sys Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
__longjmp.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
abort-instr.h
atomic-machine.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
bsd-_setjmp.c aarch64: Rename place holder .S files to .c 2020-07-08 15:02:37 +01:00
bsd-setjmp.c aarch64: Rename place holder .S files to .c 2020-07-08 15:02:37 +01:00
configure aarch64: configure test for BTI support 2020-07-08 15:02:37 +01:00
configure.ac aarch64: configure test for BTI support 2020-07-08 15:02:37 +01:00
crti.S aarch64: Add BTI support to assembly files 2020-07-08 15:02:37 +01:00
crtn.S aarch64: Add BTI support to assembly files 2020-07-08 15:02:37 +01:00
dl-dtprocnum.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-irel.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-link.sym
dl-machine.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-sysdep.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-tls.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-tlsdesc.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-tlsdesc.S aarch64: Add BTI support to assembly files 2020-07-08 15:02:37 +01:00
dl-trampoline.S aarch64: Add BTI support to assembly files 2020-07-08 15:02:37 +01:00
dl-tunables.list Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
e_sqrtl.c Add libm_alias_finite for _finite symbols 2020-01-03 10:02:04 -03:00
elf-initfini.h Introduce <elf-initfini.h> and ELF_INITFINI for all architectures 2020-02-18 15:12:25 +01:00
Implies
jmpbuf-offsets.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
jmpbuf-unwind.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ldsodefs.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
libc-tls.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
libm-test-ulps Update aarch64 libm-test-ulps 2020-04-08 13:52:44 -03:00
libm-test-ulps-name
linkmap.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
machine-gmon.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Makefile aarch64: new ifunc resolver ABI 2019-07-04 11:13:32 +01:00
math-tests-trap.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mcount.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memchr.S aarch64: MTE compatible memchr 2020-06-23 17:55:39 +01:00
memcmp.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memcpy.S [AArch64] Improve integer memcpy 2020-03-11 17:15:25 +00:00
memmove.c aarch64: Rename place holder .S files to .c 2020-07-08 15:02:37 +01:00
memrchr.S aarch64: MTE compatible memrchr 2020-06-23 17:55:39 +01:00
memset-reg.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memset.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
memusage.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
preconfigure
rawmemchr.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
setjmp.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sfp-machine.h
sotruss-lib.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
stackinfo.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
start.S aarch64: Add BTI support to assembly files 2020-07-08 15:02:37 +01:00
stpcpy.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strchr.S aarch64: MTE compatible strchr 2020-06-09 09:20:27 +01:00
strchrnul.S aarch64: MTE compatible strchrnul 2020-06-09 09:20:27 +01:00
strcmp.S aarch64: MTE compatible strcmp 2020-06-23 17:55:39 +01:00
strcpy.S aarch64: MTE compatible strcpy 2020-06-23 17:55:39 +01:00
string_private.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
strlen.S aarch64: MTE compatible strlen 2020-06-09 09:21:11 +01:00
strncmp.S aarch64: MTE compatible strncmp 2020-06-23 17:55:39 +01:00
strnlen.S aarch64: fix strcpy and strnlen for big-endian [BZ #25824] 2020-05-15 12:15:56 +01:00
strrchr.S aarch64: MTE compatible strrchr 2020-06-23 17:55:39 +01:00
sysdep.h aarch64: Add BTI support to assembly files 2020-07-08 15:02:37 +01:00
tls-macros.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tlsdesc.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tlsdesc.sym
tst-audit.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-ifunc-arg-1.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-ifunc-arg-2.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Versions