To make our CTF tools (and any ELF-related tool) easier to port to other
OSes, I'd like to follow the Solaris/FreeBSD/OSX lead and use a <elf.h>
header instead of our current mix of <sys/exec_elf.h> & <elf_abi.h>.
However devel/libelf will use <elf.h> instead of its own, if it is
available. But with the current content of our <sys/exec_elf.h> two
ports fail to build: devel/libdwarf and devel/valgrind.
The diff below adds the necessary defines for these ports to build.
Then I'd like to add <elf.h> and bump devel/libelf. Once I've dealt
with runtime fallouts, if any, I'll convert our base tools to use
<elf.h>.
ok?
Index: sys/exec_elf.h
===================================================================
RCS file: /cvs/src/sys/sys/exec_elf.h,v
retrieving revision 1.75
diff -u -p -r1.75 exec_elf.h
--- sys/exec_elf.h 5 Sep 2017 06:35:19 -0000 1.75
+++ sys/exec_elf.h 11 Oct 2017 12:34:35 -0000
@@ -187,12 +187,14 @@ typedef struct {
#define EM_PARISC 15 /* HPPA */
#define EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */
#define EM_PPC 20 /* PowerPC */
+#define EM_PPC64 21 /* PowerPC 64 */
#define EM_ARM 40 /* Advanced RISC Machines ARM */
#define EM_ALPHA 41 /* DEC ALPHA */
-#define EM_SH 42 /* Hitachi/Renesas Super-H */
+#define EM_SH 42 /* Hitachi/Renesas Super-H */
#define EM_SPARCV9 43 /* SPARC version 9 */
#define EM_IA_64 50 /* Intel IA-64 Processor */
#define EM_AMD64 62 /* AMD64 architecture */
+#define EM_X86_64 EM_AMD64
#define EM_VAX 75 /* DEC VAX */
#define EM_AARCH64 183 /* ARM 64-bit architecture (AArch64) */
@@ -288,10 +290,18 @@ typedef struct {
/* Section Attribute Flags - sh_flags */
-#define SHF_WRITE 0x1 /* Writable */
-#define SHF_ALLOC 0x2 /* occupies memory */
-#define SHF_EXECINSTR 0x4 /* executable */
-#define SHF_TLS 0x400 /* thread local storage */
+#define SHF_WRITE 0x1 /* Writable */
+#define SHF_ALLOC 0x2 /* occupies memory */
+#define SHF_EXECINSTR 0x4 /* executable */
+#define SHF_MERGE 0x10 /* may be merged */
+#define SHF_STRINGS 0x20 /* contains strings */
+#define SHF_INFO_LINK 0x40 /* sh_info holds section index */
+#define SHF_LINK_ORDER 0x80 /* ordering requirements */
+#define SHF_OS_NONCONFORMING 0x100 /* OS-specific processing required */
+#define SHF_GROUP 0x200 /* member of section group */
+#define SHF_TLS 0x400 /* thread local storage */
+#define SHF_COMPRESSED 0x800 /* contains compressed data */
+#define SHF_MASKOS 0x0ff00000 /* OS-specific semantics */
#define SHF_MASKPROC 0xf0000000 /* reserved bits for processor */
/* specific section attributes */
@@ -557,6 +567,11 @@ typedef struct {
Elf64_Half descsz;
Elf64_Half type;
} Elf64_Note;
+
+/* Values for n_type. */
+#define NT_PRSTATUS 1 /* Process status. */
+#define NT_FPREGSET 2 /* Floating point registers. */
+#define NT_PRPSINFO 3 /* Process state info. */
/*
* OpenBSD-specific core file information.