mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 21:05:08 +00:00
libc: Teach libc about the BTI elf note
Add the Branch Target Identification (BTI) note to libc assembly sources. As all obect files need the note for the library to have it we need to insert it in all asm files. Reviewed by: emaste, markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D42228
This commit is contained in:
parent
f3a83b3a62
commit
fd5aaf2ea0
|
@ -27,9 +27,13 @@
|
|||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
#include <sys/elf_common.h>
|
||||
|
||||
ENTRY(_ctx_start)
|
||||
blr x19 /* Call func from makecontext */
|
||||
mov x0, x20 /* Load ucp saved in makecontext */
|
||||
bl _C_LABEL(ctx_done)
|
||||
bl _C_LABEL(abort)
|
||||
END(_ctx_start)
|
||||
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
|
||||
#include <machine/asm.h>
|
||||
#include <machine/setjmp.h>
|
||||
#include <sys/elf_common.h>
|
||||
|
||||
ENTRY(_setjmp)
|
||||
/* Store the magic value and stack pointer */
|
||||
|
@ -101,3 +102,5 @@ botch:
|
|||
bl _C_LABEL(abort)
|
||||
#endif
|
||||
END(_longjmp)
|
||||
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
|
|
|
@ -24,7 +24,11 @@
|
|||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
#include <sys/elf_common.h>
|
||||
|
||||
ENTRY(fabs)
|
||||
fabs d0, d0
|
||||
ret
|
||||
END(fabs)
|
||||
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
|
||||
#include <machine/asm.h>
|
||||
#include <machine/setjmp.h>
|
||||
#include <sys/elf_common.h>
|
||||
|
||||
ENTRY(setjmp)
|
||||
sub sp, sp, #16
|
||||
|
@ -119,3 +120,5 @@ botch:
|
|||
bl _C_LABEL(longjmperror)
|
||||
bl _C_LABEL(abort)
|
||||
END(longjmp)
|
||||
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
#include <machine/asm.h>
|
||||
#include <machine/setjmp.h>
|
||||
#include <sys/elf_common.h>
|
||||
|
||||
ENTRY(sigsetjmp)
|
||||
cmp x1, #0
|
||||
|
@ -52,3 +53,5 @@ ENTRY(siglongjmp)
|
|||
.Lmagic:
|
||||
.quad _JB_MAGIC__SETJMP
|
||||
END(siglongjmp)
|
||||
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
|
|
|
@ -3,3 +3,7 @@
|
|||
* as it stops MISRCS from picking up the C implementation and rtld expects
|
||||
* to copy the memmove object file into its object directory.
|
||||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
#include <sys/elf_common.h>
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
#include <sys/elf_common.h>
|
||||
|
||||
ENTRY(cerror)
|
||||
.hidden cerror
|
||||
sub sp, sp, #16
|
||||
|
@ -37,3 +39,5 @@ ENTRY(cerror)
|
|||
add sp, sp, #16
|
||||
ret
|
||||
END(cerror)
|
||||
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
#include <sys/elf_common.h>
|
||||
#include "SYS.h"
|
||||
|
||||
RSYSCALL(syscall)
|
||||
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
*/
|
||||
|
||||
#include <machine/asm.h>
|
||||
#include <sys/elf_common.h>
|
||||
#include "SYS.h"
|
||||
|
||||
ENTRY(__sys_vfork)
|
||||
|
@ -38,3 +39,5 @@ ENTRY(__sys_vfork)
|
|||
mov lr, x2
|
||||
ret
|
||||
END(__sys_vfork)
|
||||
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
|
|
|
@ -124,12 +124,18 @@ NOTE_GNU_STACK='\t.section .note.GNU-stack,"",%%progbits\n'
|
|||
.else
|
||||
NOTE_GNU_STACK=''
|
||||
.endif
|
||||
.if ${MACHINE_CPUARCH} == "aarch64"
|
||||
FEATURE_NOTE='\#include <sys/elf_common.h>\nGNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)'
|
||||
.else
|
||||
FEATURE_NOTE=''
|
||||
.endif
|
||||
|
||||
${SASM}:
|
||||
printf '/* %sgenerated by libc/sys/Makefile.inc */\n' @ > ${.TARGET}
|
||||
printf '#include "compat.h"\n' >> ${.TARGET}
|
||||
printf '#include "SYS.h"\nRSYSCALL(${.PREFIX})\n' >> ${.TARGET}
|
||||
printf ${NOTE_GNU_STACK} >>${.TARGET}
|
||||
printf ${FEATURE_NOTE} >> ${.TARGET}
|
||||
|
||||
${SPSEUDO}:
|
||||
printf '/* %sgenerated by libc/sys/Makefile.inc */\n' @ > ${.TARGET}
|
||||
|
@ -137,6 +143,7 @@ ${SPSEUDO}:
|
|||
printf '#include "SYS.h"\nPSEUDO(${.PREFIX:S/_//})\n' \
|
||||
>> ${.TARGET}
|
||||
printf ${NOTE_GNU_STACK} >>${.TARGET}
|
||||
printf ${FEATURE_NOTE} >> ${.TARGET}
|
||||
|
||||
MAN+= abort2.2 \
|
||||
accept.2 \
|
||||
|
|
Loading…
Reference in a new issue