PERFORCE change 103906 for review
John Birrell
jb at FreeBSD.org
Mon Aug 14 20:44:11 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=103906
Change 103906 by jb at jb_freebsd2 on 2006/08/14 20:43:22
Add more structures which are described in the Solaris Linker
and Libraries Guide, the copy of which I have is dated Nov 2006.
Hehehe.
Affected files ...
.. //depot/projects/dtrace/src/sys/sys/elf32.h#3 edit
.. //depot/projects/dtrace/src/sys/sys/elf64.h#4 edit
Differences ...
==== //depot/projects/dtrace/src/sys/sys/elf32.h#3 (text+ko) ====
@@ -40,6 +40,7 @@
typedef uint32_t Elf32_Off;
typedef int32_t Elf32_Sword;
typedef uint32_t Elf32_Word;
+typedef uint64_t Elf32_Lword;
typedef Elf32_Word Elf32_Hashelt;
@@ -138,6 +139,48 @@
#define ELF32_R_INFO(sym, type) (((sym) << 8) + (unsigned char)(type))
/*
+ * Note entry header
+ */
+typedef struct {
+ Elf32_Word n_namesz; /* length of note's name */
+ Elf32_Word n_descsz; /* length of note's "desc" */
+ Elf32_Word n_type; /* type of note */
+} Elf32_Nhdr;
+
+/*
+ * Move entry
+ */
+typedef struct {
+ Elf32_Lword m_value; /* symbol value */
+ Elf32_Word m_info; /* size + index */
+ Elf32_Word m_poffset; /* symbol offset */
+ Elf32_Half m_repeat; /* repeat count */
+ Elf32_Half m_stride; /* stride info */
+} Elf32_Move;
+
+/*
+ * The macros compose and decompose values for Move.r_info
+ *
+ * sym = ELF32_M_SYM(M.m_info)
+ * size = ELF32_M_SIZE(M.m_info)
+ * M.m_info = ELF32_M_INFO(sym, size)
+ */
+#define ELF32_M_SYM(info) ((info)>>8)
+#define ELF32_M_SIZE(info) ((unsigned char)(info))
+#define ELF32_M_INFO(sym, size) (((sym)<<8)+(unsigned char)(size))
+
+/*
+ * Hardware/Software capabilities entry
+ */
+typedef struct {
+ Elf32_Word c_tag; /* how to interpret value */
+ union {
+ Elf32_Word c_val;
+ Elf32_Addr c_ptr;
+ } c_un;
+} Elf32_Cap;
+
+/*
* Symbol table entries.
*/
@@ -198,4 +241,9 @@
typedef Elf32_Half Elf32_Versym;
+typedef struct {
+ Elf32_Half si_boundto; /* direct bindings - symbol bound to */
+ Elf32_Half si_flags; /* per symbol flags */
+} Elf32_Syminfo;
+
#endif /* !_SYS_ELF32_H_ */
==== //depot/projects/dtrace/src/sys/sys/elf64.h#4 (text+ko) ====
@@ -41,6 +41,7 @@
typedef int32_t Elf64_Sword;
typedef int64_t Elf64_Sxword;
typedef uint32_t Elf64_Word;
+typedef uint64_t Elf64_Lword;
typedef uint64_t Elf64_Xword;
/*
@@ -147,6 +148,41 @@
#define ELF64_R_INFO(sym, type) (((sym) << 32) + ((type) & 0xffffffffL))
/*
+ * Note entry header
+ */
+typedef struct {
+ Elf64_Word n_namesz; /* length of note's name */
+ Elf64_Word n_descsz; /* length of note's "desc" */
+ Elf64_Word n_type; /* type of note */
+} Elf64_Nhdr;
+
+/*
+ * Move entry
+ */
+typedef struct {
+ Elf64_Lword m_value; /* symbol value */
+ Elf64_Xword m_info; /* size + index */
+ Elf64_Xword m_poffset; /* symbol offset */
+ Elf64_Half m_repeat; /* repeat count */
+ Elf64_Half m_stride; /* stride info */
+} Elf64_Move;
+
+#define ELF64_M_SYM(info) ((info)>>8)
+#define ELF64_M_SIZE(info) ((unsigned char)(info))
+#define ELF64_M_INFO(sym, size) (((sym)<<8)+(unsigned char)(size))
+
+/*
+ * Hardware/Software capabilities entry
+ */
+typedef struct {
+ Elf64_Xword c_tag; /* how to interpret value */
+ union {
+ Elf64_Xword c_val;
+ Elf64_Addr c_ptr;
+ } c_un;
+} Elf64_Cap;
+
+/*
* Symbol table entries.
*/
@@ -203,4 +239,9 @@
typedef Elf64_Half Elf64_Versym;
+typedef struct {
+ Elf64_Half si_boundto; /* direct bindings - symbol bound to */
+ Elf64_Half si_flags; /* per symbol flags */
+} Elf64_Syminfo;
+
#endif /* !_SYS_ELF64_H_ */
More information about the p4-projects
mailing list