1
0
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:
thor 2024-09-19 23:45:17 +00:00
parent 6c9a4dc0ed
commit 3a123189cd
13 changed files with 69 additions and 0 deletions

View File

@ -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
View File

@ -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

View File

@ -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

View 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_ */

View File

@ -6,6 +6,7 @@
initially written by Taihei Momma
*/
#include "aarch64_defs.h"
#include "mangle.h"
#ifndef __aarch64__

View File

@ -6,6 +6,7 @@
initially written by Taihei Monma
*/
#include "aarch64_defs.h"
#include "mangle.h"
#ifndef __APPLE__

View File

@ -6,6 +6,7 @@
initially written by Taihei Monma
*/
#include "aarch64_defs.h"
#include "mangle.h"
#ifndef __APPLE__

View File

@ -6,6 +6,7 @@
initially written by Taihei Monma
*/
#include "aarch64_defs.h"
#include "mangle.h"
#ifndef __APPLE__

View File

@ -6,6 +6,7 @@
initially written by Taihei Monma
*/
#include "aarch64_defs.h"
#include "mangle.h"
#ifndef __APPLE__

View File

@ -6,6 +6,7 @@
initially written by Taihei Monma
*/
#include "aarch64_defs.h"
#include "mangle.h"
#ifndef __APPLE__

View File

@ -6,6 +6,7 @@
initially written by Taihei Monma
*/
#include "aarch64_defs.h"
#include "mangle.h"
#ifndef __APPLE__

View File

@ -6,6 +6,7 @@
initially written by Taihei Monma
*/
#include "aarch64_defs.h"
#include "mangle.h"
#ifndef __APPLE__

View File

@ -6,6 +6,7 @@
initially written by Taihei Monma
*/
#include "aarch64_defs.h"
#include "mangle.h"
#ifndef __APPLE__