Add new constants specified in Oct 4 1999 Draft of ELF ABI spec
authorNick Clifton <nickc@redhat.com>
Tue, 28 Dec 1999 18:40:48 +0000 (18:40 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 28 Dec 1999 18:40:48 +0000 (18:40 +0000)
include/elf/ChangeLog
include/elf/common.h

index 37ecd27..34ebcc4 100644 (file)
@@ -1,3 +1,54 @@
+1999-12-27  Nick Clifton  <nickc@cygnus.com>
+
+       * common.h: Upgrade to match Oct4, 1999 Draft ELF ABI Spec.
+       (EM_MIPS_RS3_LE): New machine number.
+       (EM_RCE): New machine number.
+       (EM_MMA): New machine number.
+       (EM_PCP): New machine number.
+       (EM_NCPU): New machine number.
+       (EM_NDR1): New machine number.
+       (EM_STARCORE): New machine number.
+       (EM_ME16): New machine number.
+       (EM_ST100): New machine number.
+       (EM_TINYJ): New machine number.
+       (EM_FX66): New machine number.
+       (EM_ST9PLUS): New machine number.
+       (EM_ST7): New machine number.
+       (EM_68HC16): New machine number.
+       (EM_68HC11): New machine number.
+       (EM_68HC08): New machine number.
+       (EM_68HC05): New machine number.
+       (EM_SVX): New machine number.
+       (EM_VAX): New machine number.
+       (PF_MASKOS): Change value.
+       (SHT_INIT_ARRAY): New value for sh_type field.
+       (SHT_FINI_ARRAY): New value for sh_type field.
+       (SHT_PREINIT_ARRAY): New value for sh_type field.
+       (SHT_HIUSER): Change value.
+       (SHF_MERGE): New valye for sh_flags field.
+       (SHF_STRINGS): New valye for sh_flags field.
+       (SHF_INFO_LINK): New valye for sh_flags field.
+       (SHF_OS_NONCONFORMING): New valye for sh_flags field.
+       (SHF_MASKOS): Change value.
+       (ELF_ST_VISIBILITY): New macro.
+       (ELF_ST_OTHER): New macro.
+       (STT_COMMON): New symbol type.
+       (STV_DEFAULT): Value for symbol visibility.
+       (STV_INTERNAL): Value for symbol visibility.
+       (STV_HIDDEN): Value for symbol visibility.
+       (STV_PROTECTED): Value for symbol visibility.
+       (DT_RUNPATH): New dynamic section tag.
+       (DT_FLAGS): New dynamic section tag.
+       (DT_ENCODING): New dynamic section tag.
+       (DT_PREINIT_ARRAY): New dynamic section tag.
+       (DT_PREINIT_ARRAYSZ): New dynamic section tag.
+       (DT_LOPROC): New dynamic section tag index.
+       (DT_HIPROC): New dynamic section tag index.
+       (DF_ORIGIN): Value for dynamic section flag.
+       (DF_SYMBOLIC): Value for dynamic section flag.
+       (DF_TEXTREL): Value for dynamic section flag.
+       (DF_BIND_NOW): Value for dynamic section flag.
+
 1999-12-09  Fred Fish  <fnf@cygnus.com>
 
        * i960.h (reloc-macros.h):  Include using relative dir elf/.
index c1b6274..4176bab 100644 (file)
@@ -91,9 +91,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define EM_860         7       /* Intel 80860 */
 #define EM_MIPS                8       /* MIPS R3000 (officially, big-endian only) */
 #define EM_S370                9       /* Amdahl */
-#define EM_MIPS_RS4_BE 10      /* MIPS R4000 big-endian */
+#define EM_MIPS_RS4_BE 10      /* MIPS R4000 big-endian */ /* Depreciated */
+#define EM_MIPS_RS3_LE 10      /* MIPS R3000 little-endian (Oct 4 1999 Draft)*/ /* Depreciated */
 
 #define EM_PARISC      15      /* HPPA */
+
 #define EM_VPP550      17       /* Fujitsu VPP500 */
 #define EM_SPARC32PLUS 18      /* Sun's "v8plus" */
 #define EM_960         19       /* Intel 80960 */
@@ -104,6 +106,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define EM_FR20               37       /* Fujitsu FR20 */
 #define EM_RH32               38       /* TRW RH32 */
 #define EM_MCORE       39       /* Motorolla MCore */ /* May also be taken by Fujitsu MMA */
+#define EM_RCE         39       /* Old name for MCore */
 #define EM_ARM        40       /* ARM */
 #define EM_OLD_ALPHA   41      /* Digital Alpha */
 #define EM_SH         42       /* Hitachi SH */
@@ -118,6 +121,25 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define EM_MIPS_X      51       /* Stanford MIPS-X */
 #define EM_COLDFIRE    52       /* Motorola Coldfire */
 #define EM_68HC12      53       /* Motorola M68HC12 */
+#define EM_MMA        54       /* Fujitsu Multimedia Accelerator */
+#define EM_PCP        55       /* Siemens PCP */
+#define EM_NCPU               56       /* Sony nCPU embedded RISC processor */
+#define EM_NDR1               57       /* Denso NDR1 microprocesspr */
+#define EM_STARCORE    58      /* Motorola Star*Core processor */
+#define EM_ME16               59       /* Toyota ME16 processor */
+#define EM_ST100       60      /* STMicroelectronics ST100 processor */
+#define EM_TINYJ       61      /* Advanced Logic Corp. TinyJ embedded processor */
+
+#define EM_FX66               66       /* Siemens FX66 microcontroller */
+#define EM_ST9PLUS     67      /* STMicroelectronics ST9+ 8/16 bit microcontroller */
+#define EM_ST7        68       /* STMicroelectronics ST7 8-bit microcontroller */
+#define EM_68HC16      69      /* Motorola MC68HC16 Microcontroller */
+#define EM_68HC11      70      /* Motorola MC68HC11 Microcontroller */
+#define EM_68HC08      71      /* Motorola MC68HC08 Microcontroller */
+#define EM_68HC05      72      /* Motorola MC68HC05 Microcontroller */
+#define EM_SVX         73      /* Silicon Graphics SVx */
+#define EM_ST19        74      /* STMicroelectronics ST19 8-bit microcontroller */
+#define EM_VAX         75      /* Digital VAX */
 
 #define EM_PJ          99       /* picoJava */
 
@@ -191,7 +213,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define PF_X           (1 << 0)        /* Segment is executable */
 #define PF_W           (1 << 1)        /* Segment is writable */
 #define PF_R           (1 << 2)        /* Segment is readable */
-#define PF_MASKOS      0x0F000000      /* OS-specific reserved bits */
+/* #define PF_MASKOS   0x0F000000    *//* OS-specific reserved bits */
+#define PF_MASKOS      0x0FF00000      /* New value, Oct 4, 1999 Draft */
 #define PF_MASKPROC    0xF0000000      /* Processor-specific reserved bits */
 
 /* Values for section header, sh_type field */
@@ -209,6 +232,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define SHT_SHLIB      10              /* Reserved, unspecified semantics */
 #define SHT_DYNSYM     11              /* Dynamic linking symbol table */
 
+#define SHT_INIT_ARRAY  14             /* Array of pointers to init functions */
+#define SHT_FINI_ARRAY  15             /* Array of pointers to finish functions */
+#define SHT_PREINIT_ARRAY 16           /* Array of pointers to pre-init functions */
+
 #define SHT_LOOS        0x60000000      /* Operating system specific semantics, lo */
 #define SHT_HIOS        0x6fffffff      /* Operating system specific semantics, hi */
 
@@ -226,14 +253,22 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define SHT_LOPROC     0x70000000      /* Processor-specific semantics, lo */
 #define SHT_HIPROC     0x7FFFFFFF      /* Processor-specific semantics, hi */
 #define SHT_LOUSER     0x80000000      /* Application-specific semantics */
-#define SHT_HIUSER     0x8FFFFFFF      /* Application-specific semantics */
+/* #define SHT_HIUSER  0x8FFFFFFF    *//* Application-specific semantics */
+#define SHT_HIUSER     0xFFFFFFFF      /* New value, defined in Oct 4, 1999 Draft */
 
 /* Values for section header, sh_flags field */
 
 #define SHF_WRITE      (1 << 0)        /* Writable data during execution */
 #define SHF_ALLOC      (1 << 1)        /* Occupies memory during execution */
 #define SHF_EXECINSTR  (1 << 2)        /* Executable machine instructions */
-#define SHF_MASKOS     0x0F000000      /* OS-specific semantics */
+#define SHF_MERGE      (1 << 4)        /* Data in this section can be merged */
+#define SHF_STRINGS    (1 << 5)        /* Contains null terminated character strings */
+#define SHF_INFO_LINK  (1 << 6)        /* sh_info holds section header table index */
+#define SHF_LINK_ORDER  (1 << 7)       /* Preserve section ordering when linking */
+#define SHF_OS_NONCONFORMING (1 << 8)  /* OS specifci processing required */
+
+/* #define SHF_MASKOS  0x0F000000    *//* OS-specific semantics */
+#define SHF_MASKOS     0x0FF00000      /* New value, Oct 4, 1999 Draft */
 #define SHF_MASKPROC   0xF0000000      /* Processor-specific semantics */
 
 /* Values of note segment descriptor types for core files. */
@@ -242,8 +277,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define NT_FPREGSET    2               /* Contains copy of fpregset struct */
 #define NT_PRPSINFO    3               /* Contains copy of prpsinfo struct */
 #define NT_TASKSTRUCT  4               /* Contains copy of task struct */
-#define NT_PRXFPREG     0x46e62b7f     /* Contains a user_xfpregs_struct;
-                                          note name must be "LINUX".  */
+#define NT_PRXFPREG     0x46e62b7f     /* Contains a user_xfpregs_struct; */
+                                       /*   note name must be "LINUX".  */
 
 /* Note segments for core files on dir-style procfs systems. */
 
@@ -266,6 +301,27 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define ELF_ST_TYPE(val)               ((val) & 0xF)
 #define ELF_ST_INFO(bind,type)         (((bind) << 4) + ((type) & 0xF))
 
+/* The 64bit and 32bit versions of these macros are identical, but
+   the ELF spec defines them, so here they are.  */
+#define ELF32_ST_BIND  ELF_ST_BIND
+#define ELF32_ST_TYPE  ELF_ST_TYPE
+#define ELF32_ST_INFO  ELF_ST_INFO
+#define ELF64_ST_BIND  ELF_ST_BIND
+#define ELF64_ST_TYPE  ELF_ST_TYPE
+#define ELF64_ST_INFO  ELF_ST_INFO
+
+/* These two macros disassemble and assemble a symbol's visibility into
+   the st_other field.  The STV_ defines specificy the actual visibility.  */
+
+#define ELF_ST_VISIBILITY(v)           ((v) & 0x3)
+#define ELF_ST_OTHER(o)                        ((o) & ~0x3)
+
+#define ELF32_ST_VISIBILITY  ELF_ST_VISIBILITY
+#define ELF32_ST_OTHER       ELF_ST_OTHER
+#define ELF64_ST_VISIBILITY  ELF_ST_VISIBILITY
+#define ELF64_ST_OTHER       ELF_ST_OTHER
+
+
 #define STN_UNDEF      0               /* undefined symbol index */
 
 #define STB_LOCAL      0               /* Symbol not visible outside obj */
@@ -281,6 +337,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define STT_FUNC       2               /* Symbol is a code object */
 #define STT_SECTION    3               /* Symbol associated with a section */
 #define STT_FILE       4               /* Symbol gives a file name */
+#define STT_COMMON     5               /* An uninitialised common block */
 #define STT_LOOS        10             /* OS-specific semantics */
 #define STT_HIOS        12             /* OS-specific semantics */
 #define STT_LOPROC     13              /* Application-specific semantics */
@@ -299,6 +356,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define SHN_COMMON     0xFFF2          /* Associated symbol is in common */
 #define SHN_HIRESERVE  0xFFFF          /* End range of reserved indices */
 
+/* The following constants control how a symbol may be accessed once it has
+   become part of an executable or shared library.  */
+                                          
+#define STV_DEFAULT    0               /* Visibility is specified by binding type */
+#define STV_INTERNAL   1               /* OS specific version of STV_HIDDEN */
+#define STV_HIDDEN     2               /* Can only be seen inside currect component */
+#define STV_PROTECTED  3               /* Treat as STB_LOCAL inside current component */
+                                          
+
 /* relocation info handling macros */
 
 #define ELF32_R_SYM(i)         ((i) >> 8)
@@ -340,9 +406,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define DT_FINI_ARRAY   26
 #define DT_INIT_ARRAYSZ 27
 #define DT_FINI_ARRAYSZ 28
+#define DT_RUNPATH      29
+#define DT_FLAGS        30
+#define DT_ENCODING     31 /* Note: Oct 4, 1999 Draft specifies this as 32, but this conflicts with DT_PREINIT_ARRAY */
+#define DT_PREINIT_ARRAY 32
+#define DT_PREINIT_ARRAYSZ 33
 
-#define DT_LOOS         0x60000000
-#define DT_HIOS         0x6fffffff
+#define DT_LOOS         0x60000000 /* Note: Oct 4, 1999 draft has this as 0x6fff000d */
+#define DT_HIOS         0x6fffffff /* Note: Oct 4, 1999 draft has this as 0x6fff0000 */
+#define DT_LOPROC       0x70000000
+#define DT_HIPROC       0x7fffffff
 
 /* The next four dynamic tags are used on Solaris.  We support them
    everywhere.  */
@@ -401,6 +474,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define DF_1_TRANS     0x00000200
 #define DF_1_INTERPOSE 0x00000400
 
+/* Flag values for the DT_FLAGS entry.  */
+#define DF_ORIGIN      (1 << 0)
+#define DF_SYMBOLIC    (1 << 1)
+#define DF_TEXTREL     (1 << 2)
+#define DF_BIND_NOW    (1 << 3)
+
 /* These constants are used for the version number of a Elf32_Verdef
    structure.  */