mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-27 07:20:11 +00:00
9ccf7a55c5
TODO: this is just for the arm/gcs branch while it is being developed
145 lines
5.1 KiB
Plaintext
145 lines
5.1 KiB
Plaintext
this branch contains experimental GCS support (not ABI stable)
|
|
|
|
source and branches
|
|
-------------------
|
|
|
|
binutils-gdb: upstream-git users/ARM/gcs-binutils-gdb-master
|
|
gcc (trunk): upstream-git vendors/ARM/gcs
|
|
gcc (gcc-13): upstream-git vendors/ARM/gcs-13
|
|
note: gcc vendor branches need setup https://gcc.gnu.org/gitwrite.html#vendor
|
|
glibc: upstream-git arm/gcs
|
|
linux: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/misc.git arm64-gcs
|
|
fvp fast model can be used for testing.
|
|
|
|
toolchain build
|
|
---------------
|
|
|
|
two options:
|
|
|
|
(1) branch-protect by default
|
|
configure gcc with --enable-standard-branch-protection
|
|
and build glibc normally
|
|
|
|
(2) do not branch-protect by default, require explicit cflags
|
|
configure gcc with
|
|
CFLAGS_FOR_TARGET='-O2 -mbranch-protection=standard'
|
|
CXXFLAGS_FOR_TARGET='-O2 -mbranch-protection=standard'
|
|
and configure glibc with
|
|
CFLAGS='-g -O2 -mbranch-protection=standard'
|
|
build user code with
|
|
CFLAGS+=-mbranch-protection=standard
|
|
(equivalent to -mbranch-protection=bti+pac+gcs)
|
|
|
|
linking
|
|
-------
|
|
|
|
use ldflags:
|
|
|
|
-z experimental-gcs={always,never,implicit}
|
|
always: force GCS marking on
|
|
never: force GCS marking off
|
|
implicit: mark output if all inputs are marked (default)
|
|
|
|
-z experimental-gcs-report={none,warning,error}
|
|
none: silent (default)
|
|
warning: when output is marked, unmarked input is a warning
|
|
error: when output is marked, unmarked input is an error
|
|
|
|
runtime
|
|
-------
|
|
|
|
run with environment var
|
|
|
|
GLIBC_TUNABLES=glibc.cpu.aarch64_gcs=1:glibc.cpu.aarch64_gcs_policy=2
|
|
|
|
by default both tunables are 0, the meaning is
|
|
|
|
glibc.cpu.aarch64_gcs_policy=0:
|
|
GCS is enabled if glibc.cpu.aarch64_gcs is set
|
|
glibc.cpu.aarch64_gcs_policy=1:
|
|
GCS is enabled if glibc.cpu.aarch64_gcs is set and binary is marked
|
|
if GCS is enabled an incompatible dlopen is an error
|
|
glibc.cpu.aarch64_gcs_policy=2:
|
|
GCS is enabled if glibc.cpu.aarch64_gcs is set
|
|
if GCS is enabled any incompatible binary is an error
|
|
|
|
|
|
original readme
|
|
---------------
|
|
|
|
This directory contains the sources of the GNU C Library.
|
|
See the file "version.h" for what release version you have.
|
|
|
|
The GNU C Library is the standard system C library for all GNU systems,
|
|
and is an important part of what makes up a GNU system. It provides the
|
|
system API for all programs written in C and C-compatible languages such
|
|
as C++ and Objective C; the runtime facilities of other programming
|
|
languages use the C library to access the underlying operating system.
|
|
|
|
In GNU/Linux systems, the C library works with the Linux kernel to
|
|
implement the operating system behavior seen by user applications.
|
|
In GNU/Hurd systems, it works with a microkernel and Hurd servers.
|
|
|
|
The GNU C Library implements much of the POSIX.1 functionality in the
|
|
GNU/Hurd system, using configurations i[4567]86-*-gnu and x86_64-gnu.
|
|
|
|
When working with Linux kernels, this version of the GNU C Library
|
|
requires Linux kernel version 3.2 or later.
|
|
|
|
Also note that the shared version of the libgcc_s library must be
|
|
installed for the pthread library to work correctly.
|
|
|
|
The GNU C Library supports these configurations for using Linux kernels:
|
|
|
|
aarch64*-*-linux-gnu
|
|
alpha*-*-linux-gnu
|
|
arc*-*-linux-gnu
|
|
arm-*-linux-gnueabi
|
|
csky-*-linux-gnuabiv2
|
|
hppa-*-linux-gnu
|
|
i[4567]86-*-linux-gnu
|
|
x86_64-*-linux-gnu Can build either x86_64 or x32
|
|
loongarch64-*-linux-gnu Hardware floating point, LE only.
|
|
m68k-*-linux-gnu
|
|
microblaze*-*-linux-gnu
|
|
mips-*-linux-gnu
|
|
mips64-*-linux-gnu
|
|
or1k-*-linux-gnu
|
|
powerpc-*-linux-gnu Hardware or software floating point, BE only.
|
|
powerpc64*-*-linux-gnu Big-endian and little-endian.
|
|
s390-*-linux-gnu
|
|
s390x-*-linux-gnu
|
|
riscv32-*-linux-gnu
|
|
riscv64-*-linux-gnu
|
|
sh[34]-*-linux-gnu
|
|
sparc*-*-linux-gnu
|
|
sparc64*-*-linux-gnu
|
|
|
|
If you are interested in doing a port, please contact the glibc
|
|
maintainers; see https://www.gnu.org/software/libc/ for more
|
|
information.
|
|
|
|
See the file INSTALL to find out how to configure, build, and install
|
|
the GNU C Library. You might also consider reading the WWW pages for
|
|
the C library at https://www.gnu.org/software/libc/.
|
|
|
|
The GNU C Library is (almost) completely documented by the Texinfo manual
|
|
found in the `manual/' subdirectory. The manual is still being updated
|
|
and contains some known errors and omissions; we regret that we do not
|
|
have the resources to work on the manual as much as we would like. For
|
|
corrections to the manual, please file a bug in the `manual' component,
|
|
following the bug-reporting instructions below. Please be sure to check
|
|
the manual in the current development sources to see if your problem has
|
|
already been corrected.
|
|
|
|
Please see https://www.gnu.org/software/libc/bugs.html for bug reporting
|
|
information. We are now using the Bugzilla system to track all bug reports.
|
|
This web page gives detailed information on how to report bugs properly.
|
|
|
|
The GNU C Library is free software. See the file COPYING.LIB for copying
|
|
conditions, and LICENSES for notices about a few contributions that require
|
|
these additional notices to be distributed. License copyright years may be
|
|
listed using range notation, e.g., 1996-2015, indicating that every year in
|
|
the range, inclusive, is a copyrightable year that would otherwise be listed
|
|
individually.
|