Message ID | 20190803210803.5701-5-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | target/arm: Implement ARMv8.5-BTI for linux-user | expand |
On Sat, 3 Aug 2019 at 22:08, Richard Henderson <richard.henderson@linaro.org> wrote: > > These are all of the defines required to parse > GNU_PROPERTY_AARCH64_FEATURE_1_AND, copied from binutils. > Other missing defines related to other GNU program headers > and notes are elided for now. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> What's the authoritative source for these definitions? I tried looking in glibc, binutils and the kernel without any luck. thanks -- PMM
On 8/20/19 8:39 AM, Peter Maydell wrote: > On Sat, 3 Aug 2019 at 22:08, Richard Henderson > <richard.henderson@linaro.org> wrote: >> >> These are all of the defines required to parse >> GNU_PROPERTY_AARCH64_FEATURE_1_AND, copied from binutils. >> Other missing defines related to other GNU program headers >> and notes are elided for now. >> >> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > > What's the authoritative source for these definitions? I > tried looking in glibc, binutils and the kernel without > any luck. Presumably the true "authoritative" source is an ARM document, but I don't have that handy. For binutils, the defines are in include/elf/common.h: https://sourceware.org/git/?p=binutils-gdb.git;a=blob_plain;f=include/elf/common.h;hb=HEAD The upstream kernel is also lacking the defines, as they're part of the ARM patch set that is still in flight. The defines are still not present in glibc as of today. r~
On Tue, Aug 20, 2019 at 04:39:01PM +0100, Peter Maydell wrote: > On Sat, 3 Aug 2019 at 22:08, Richard Henderson > <richard.henderson@linaro.org> wrote: > > > > These are all of the defines required to parse > > GNU_PROPERTY_AARCH64_FEATURE_1_AND, copied from binutils. > > Other missing defines related to other GNU program headers > > and notes are elided for now. > > > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > > What's the authoritative source for these definitions? I > tried looking in glibc, binutils and the kernel without > any luck. For the kernel, additions to the user elf.h are still under discussion. [3] For the relevant draft ELF/ABI specs, see [1], [2]. Cheers ---Dave [1] https://github.com/hjl-tools/linux-abi/wiki/linux-abi-draft.pdf [2] https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-draft.pdf [3] [PATCH v8 22/27] binfmt_elf: Extract .note.gnu.property from an ELF file https://lore.kernel.org/lkml/20190813205225.12032-23-yu-cheng.yu@intel.com/ IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
On Tue, Aug 20, 2019 at 04:59:50PM +0100, Richard Henderson wrote: > On 8/20/19 8:39 AM, Peter Maydell wrote: > > On Sat, 3 Aug 2019 at 22:08, Richard Henderson > > <richard.henderson@linaro.org> wrote: > >> > >> These are all of the defines required to parse > >> GNU_PROPERTY_AARCH64_FEATURE_1_AND, copied from binutils. > >> Other missing defines related to other GNU program headers > >> and notes are elided for now. > >> > >> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > > > > What's the authoritative source for these definitions? I > > tried looking in glibc, binutils and the kernel without > > any luck. > > Presumably the true "authoritative" source is an ARM document, but I don't have > that handy. > > For binutils, the defines are in include/elf/common.h: > > https://sourceware.org/git/?p=binutils-gdb.git;a=blob_plain;f=include/elf/common.h;hb=HEAD > > The upstream kernel is also lacking the defines, as they're part of the ARM > patch set that is still in flight. The defines are still not present in glibc > as of today. The AArch64 spec is here: https://developer.arm.com/docs/ihi0056/latest/elf-for-the-arm-64-bit-architecture-aarch64-abi-2019q2-documentation Cheers ---Dave
On Tue, 20 Aug 2019 at 16:59, Richard Henderson <richard.henderson@linaro.org> wrote: > > On 8/20/19 8:39 AM, Peter Maydell wrote: > > On Sat, 3 Aug 2019 at 22:08, Richard Henderson > > <richard.henderson@linaro.org> wrote: > >> > >> These are all of the defines required to parse > >> GNU_PROPERTY_AARCH64_FEATURE_1_AND, copied from binutils. > >> Other missing defines related to other GNU program headers > >> and notes are elided for now. > >> > >> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > > > > What's the authoritative source for these definitions? I > > tried looking in glibc, binutils and the kernel without > > any luck. > > Presumably the true "authoritative" source is an ARM document, but I don't have > that handy. > > For binutils, the defines are in include/elf/common.h: > > https://sourceware.org/git/?p=binutils-gdb.git;a=blob_plain;f=include/elf/common.h;hb=HEAD Thanks. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> -- PMM
diff --git a/include/elf.h b/include/elf.h index 3501e0c8d0..7c4dc4b2cc 100644 --- a/include/elf.h +++ b/include/elf.h @@ -26,9 +26,13 @@ typedef int64_t Elf64_Sxword; #define PT_NOTE 4 #define PT_SHLIB 5 #define PT_PHDR 6 +#define PT_LOOS 0x60000000 +#define PT_HIOS 0x6fffffff #define PT_LOPROC 0x70000000 #define PT_HIPROC 0x7fffffff +#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553) + #define PT_MIPS_REGINFO 0x70000000 #define PT_MIPS_RTPROC 0x70000001 #define PT_MIPS_OPTIONS 0x70000002 @@ -1651,6 +1655,24 @@ typedef struct elf64_shdr { #define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */ #define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */ +/* Defined note types for GNU systems. */ + +#define NT_GNU_PROPERTY_TYPE_0 5 /* Program property */ + +/* Values used in GNU .note.gnu.property notes (NT_GNU_PROPERTY_TYPE_0). */ + +#define GNU_PROPERTY_STACK_SIZE 1 +#define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2 + +#define GNU_PROPERTY_LOPROC 0xc0000000 +#define GNU_PROPERTY_HIPROC 0xdfffffff +#define GNU_PROPERTY_LOUSER 0xe0000000 +#define GNU_PROPERTY_HIUSER 0xffffffff + +#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000 +#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1u << 0) +#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC (1u << 1) + /* * Physical entry point into the kernel. *
These are all of the defines required to parse GNU_PROPERTY_AARCH64_FEATURE_1_AND, copied from binutils. Other missing defines related to other GNU program headers and notes are elided for now. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- include/elf.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) -- 2.17.1