mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04: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 (cherry picked from commit fd5aaf2ea0178b03aa93c35245053247e5d3840c)
This commit is contained in:
parent
54cf1499a3
commit
bce8a0ba15
10 changed files with 38 additions and 0 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -131,12 +131,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}
|
||||
|
|
@ -144,6 +150,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