mirror of
http://mpg123.de/trunk/.git
synced 2025-04-19 16:02:16 +03:00
libmpg123: add PAC/BTI sections to assembly for aarch64 (github PR 15)
git-svn-id: svn://scm.orgis.org/mpg123/trunk@5430 35dc7657-300d-0410-a2e5-dc2837fedb53
This commit is contained in:
parent
6c9a4dc0ed
commit
3a123189cd
1
AUTHORS
1
AUTHORS
@ -30,6 +30,7 @@ The creator: Michael Hipp (email: hippm@informatik.uni-tuebingen.de - please bot
|
||||
|
||||
Contributions/ideas Thomas Orgis era (includes backports from mhipp trunk):
|
||||
|
||||
Bill Roberts <bill.roberts@arm.com>: PAC/BTI for aarch64
|
||||
Dave Yeo <dave.r.yeo@gmail.com>: continued OS/2 fixing
|
||||
madebr and manx: github mirror and CI
|
||||
Vitaly Kirsanov <krokoziabla@gmail.com>: ports/cmake (optional CMake build)
|
||||
|
6
NEWS
6
NEWS
@ -1,3 +1,9 @@
|
||||
1.32.8
|
||||
------
|
||||
- libmpg123: Add sections to assembly to support PAC/BTI code
|
||||
for aarch64 (-mbranch-protection variants), thanks to Bill Roberts
|
||||
(github PR 15).
|
||||
|
||||
1.32.7
|
||||
------
|
||||
- ports/cmake: Work around bug in CMake that does not detect FPU on
|
||||
|
@ -67,6 +67,7 @@ src_libmpg123_libmpg123_la_SOURCES = \
|
||||
src/libmpg123/gapless.h \
|
||||
src/libmpg123/mpg123lib_intern.h \
|
||||
src/libmpg123/mangle.h \
|
||||
src/libmpg123/aarch64_defs.h \
|
||||
src/libmpg123/getcpuflags.h \
|
||||
src/libmpg123/index.h \
|
||||
src/libmpg123/index.c
|
||||
|
52
src/libmpg123/aarch64_defs.h
Normal file
52
src/libmpg123/aarch64_defs.h
Normal file
@ -0,0 +1,52 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1
|
||||
*
|
||||
* aarch64_defs.h: Support macros for the aarch64 architectural features
|
||||
*/
|
||||
|
||||
#ifndef SRC_LIBMPG123_AARCH64_DEFS_H_
|
||||
#define SRC_LIBMPG123_AARCH64_DEFS_H_
|
||||
|
||||
/*
|
||||
* Guard this header so arm assembly files can just include it without the need
|
||||
* to if-def each instance.
|
||||
*/
|
||||
#ifdef __aarch64__
|
||||
|
||||
/*
|
||||
* References:
|
||||
* - https://developer.arm.com/documentation/101028/0012/5--Feature-test-macros
|
||||
* - https://github.com/ARM-software/abi-aa/blob/main/aaelf64/aaelf64.rst
|
||||
*/
|
||||
|
||||
#if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1
|
||||
#define GNU_PROPERTY_AARCH64_BTI 1 /* bit 0 GNU Notes is for BTI support */
|
||||
#else
|
||||
#define GNU_PROPERTY_AARCH64_BTI 0
|
||||
#endif
|
||||
|
||||
#if defined(__ARM_FEATURE_PAC_DEFAULT)
|
||||
#define GNU_PROPERTY_AARCH64_POINTER_AUTH 2 /* bit 1 GNU Notes is for PAC support */
|
||||
#else
|
||||
#define GNU_PROPERTY_AARCH64_POINTER_AUTH 0
|
||||
#endif
|
||||
|
||||
/* Add the BTI support to GNU Notes section */
|
||||
#if defined(__ASSEMBLER__) && defined(__ELF__)
|
||||
#if GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_POINTER_AUTH != 0
|
||||
.pushsection .note.gnu.property, "a"; /* Start a new allocatable section */
|
||||
.balign 8; /* align it on a byte boundry */
|
||||
.long 4; /* size of "GNU\0" */
|
||||
.long 0x10; /* size of descriptor */
|
||||
.long 0x5; /* NT_GNU_PROPERTY_TYPE_0 */
|
||||
.asciz "GNU";
|
||||
.long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */
|
||||
.long 4; /* Four bytes of data */
|
||||
.long (GNU_PROPERTY_AARCH64_BTI|GNU_PROPERTY_AARCH64_POINTER_AUTH); /* BTI or PAC is enabled */
|
||||
.long 0; /* padding for 8 byte alignment */
|
||||
.popsection; /* end the section */
|
||||
#endif /* GNU Notes additions */
|
||||
#endif /* if __ASSEMBLER__ and __ELF__ */
|
||||
|
||||
#endif /* __arch64__ */
|
||||
|
||||
#endif /* SRC_LIBMPG123_AARCH64_DEFS_H_ */
|
@ -6,6 +6,7 @@
|
||||
initially written by Taihei Momma
|
||||
*/
|
||||
|
||||
#include "aarch64_defs.h"
|
||||
#include "mangle.h"
|
||||
|
||||
#ifndef __aarch64__
|
||||
|
@ -6,6 +6,7 @@
|
||||
initially written by Taihei Monma
|
||||
*/
|
||||
|
||||
#include "aarch64_defs.h"
|
||||
#include "mangle.h"
|
||||
|
||||
#ifndef __APPLE__
|
||||
|
@ -6,6 +6,7 @@
|
||||
initially written by Taihei Monma
|
||||
*/
|
||||
|
||||
#include "aarch64_defs.h"
|
||||
#include "mangle.h"
|
||||
|
||||
#ifndef __APPLE__
|
||||
|
@ -6,6 +6,7 @@
|
||||
initially written by Taihei Monma
|
||||
*/
|
||||
|
||||
#include "aarch64_defs.h"
|
||||
#include "mangle.h"
|
||||
|
||||
#ifndef __APPLE__
|
||||
|
@ -6,6 +6,7 @@
|
||||
initially written by Taihei Monma
|
||||
*/
|
||||
|
||||
#include "aarch64_defs.h"
|
||||
#include "mangle.h"
|
||||
|
||||
#ifndef __APPLE__
|
||||
|
@ -6,6 +6,7 @@
|
||||
initially written by Taihei Monma
|
||||
*/
|
||||
|
||||
#include "aarch64_defs.h"
|
||||
#include "mangle.h"
|
||||
|
||||
#ifndef __APPLE__
|
||||
|
@ -6,6 +6,7 @@
|
||||
initially written by Taihei Monma
|
||||
*/
|
||||
|
||||
#include "aarch64_defs.h"
|
||||
#include "mangle.h"
|
||||
|
||||
#ifndef __APPLE__
|
||||
|
@ -6,6 +6,7 @@
|
||||
initially written by Taihei Monma
|
||||
*/
|
||||
|
||||
#include "aarch64_defs.h"
|
||||
#include "mangle.h"
|
||||
|
||||
#ifndef __APPLE__
|
||||
|
@ -6,6 +6,7 @@
|
||||
initially written by Taihei Monma
|
||||
*/
|
||||
|
||||
#include "aarch64_defs.h"
|
||||
#include "mangle.h"
|
||||
|
||||
#ifndef __APPLE__
|
||||
|
Loading…
x
Reference in New Issue
Block a user