[BACK]Return to exec.h CVS log [TXT][DIR] Up to [local] / sys / arch / mips64 / include

Annotation of sys/arch/mips64/include/exec.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: exec.h,v 1.1 2004/10/18 19:05:36 grange Exp $ */
                      2:
                      3: /*
                      4:  * Copyright (c) 1996-2004 Per Fogelstrom, Opsycon AB
                      5:  *
                      6:  * Redistribution and use in source and binary forms, with or without
                      7:  * modification, are permitted provided that the following conditions
                      8:  * are met:
                      9:  * 1. Redistributions of source code must retain the above copyright
                     10:  *    notice, this list of conditions and the following disclaimer.
                     11:  * 2. Redistributions in binary form must reproduce the above copyright
                     12:  *    notice, this list of conditions and the following disclaimer in the
                     13:  *    documentation and/or other materials provided with the distribution.
                     14:  *
                     15:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
                     16:  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                     17:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     18:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
                     19:  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     20:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     21:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     22:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     23:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     24:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     25:  * SUCH DAMAGE.
                     26:  *
                     27:  */
                     28:
                     29: #ifndef _MIPS64_EXEC_H_
                     30: #define _MIPS64_EXEC_H_
                     31:
                     32: #define        __LDPGSZ        4096
                     33:
                     34: /*
                     35:  *  Define what exec "formats" we should handle.
                     36:  */
                     37: #define NATIVE_EXEC_ELF
                     38: #define NATIVE_ELFSIZE 64
                     39: #define        EXEC_SCRIPT
                     40:
                     41: /*
                     42:  *  If included from sys/exec.h define kernels ELF format.
                     43:  */
                     44: #ifdef __LP64__
                     45: #define        ARCH_ELFSIZE 64
                     46: #define DB_ELFSIZE 64
                     47: #define ELF_TARG_CLASS  ELFCLASS64
                     48: #else
                     49: #define        ARCH_ELFSIZE 32
                     50: #define DB_ELFSIZE 32
                     51: #define ELF_TARG_CLASS  ELFCLASS32
                     52: #endif
                     53:
                     54: #if defined(__MIPSEB__)
                     55: #define ELF_TARG_DATA          ELFDATA2MSB
                     56: #else
                     57: #define ELF_TARG_DATA          ELFDATA2LSB
                     58: #endif
                     59: #define ELF_TARG_MACH          EM_MIPS
                     60:
                     61: #define _NLIST_DO_ELF
                     62:
                     63: #if defined(_LP64)
                     64: #define _KERN_DO_ELF64
                     65: #if defined(COMPAT_O32)
                     66: #define _KERN_DO_ELF
                     67: #endif
                     68: #else
                     69: #define _KERN_DO_ELF
                     70: #endif
                     71:
                     72: /* Information taken from MIPS ABI supplemental */
                     73:
                     74: /* Architecture dependent Segment types - p_type */
                     75: #define PT_MIPS_REGINFO 0x70000000      /* Register usage information */
                     76:
                     77: /* Architecture dependent d_tag field for Elf32_Dyn.  */
                     78: #define DT_MIPS_RLD_VERSION  0x70000001 /* Runtime Linker Interface ID */
                     79: #define DT_MIPS_TIME_STAMP   0x70000002 /* Timestamp */
                     80: #define DT_MIPS_ICHECKSUM    0x70000003 /* Cksum of ext. str. and com. sizes */
                     81: #define DT_MIPS_IVERSION     0x70000004 /* Version string (string tbl index) */
                     82: #define DT_MIPS_FLAGS        0x70000005 /* Flags */
                     83: #define DT_MIPS_BASE_ADDRESS 0x70000006 /* Segment base address */
                     84: #define DT_MIPS_CONFLICT     0x70000008 /* Adr of .conflict section */
                     85: #define DT_MIPS_LIBLIST      0x70000009 /* Address of .liblist section */
                     86: #define DT_MIPS_LOCAL_GOTNO  0x7000000a /* Number of local .GOT entries */
                     87: #define DT_MIPS_CONFLICTNO   0x7000000b /* Number of .conflict entries */
                     88: #define DT_MIPS_LIBLISTNO    0x70000010 /* Number of .liblist entries */
                     89: #define DT_MIPS_SYMTABNO     0x70000011 /* Number of .dynsym entries */
                     90: #define DT_MIPS_UNREFEXTNO   0x70000012 /* First external DYNSYM */
                     91: #define DT_MIPS_GOTSYM       0x70000013 /* First GOT entry in .dynsym */
                     92: #define DT_MIPS_HIPAGENO     0x70000014 /* Number of GOT page table entries */
                     93: #define DT_MIPS_RLD_MAP      0x70000016 /* Address of debug map pointer */
                     94:
                     95: #define DT_PROCNUM (DT_MIPS_RLD_MAP - DT_LOPROC + 1)
                     96:
                     97: /*
                     98:  * Legal values for e_flags field of Elf32_Ehdr.
                     99:  */
                    100: #define EF_MIPS_NOREORDER      0x00000001      /* .noreorder was used */
                    101: #define EF_MIPS_PIC            0x00000002      /* Contains PIC code */
                    102: #define EF_MIPS_CPIC           0x00000004      /* Uses PIC calling sequence */
                    103: #define        EF_MIPS_ABI2            0x00000020      /* -n32 on Irix 6 */
                    104: #define        EF_MIPS_32BITMODE       0x00000100      /* 64 bit in 32 bit mode... */
                    105: #define EF_MIPS_ARCH           0xf0000000      /* MIPS architecture level */
                    106: #define        E_MIPS_ARCH_1           0x00000000
                    107: #define        E_MIPS_ARCH_2           0x10000000
                    108: #define        E_MIPS_ARCH_3           0x20000000
                    109: #define        E_MIPS_ARCH_4           0x30000000
                    110: #define        EF_MIPS_ABI             0x0000f000      /* ABI level */
                    111: #define        E_MIPS_ABI_NONE         0x00000000      /* ABI level not set */
                    112: #define        E_MIPS_ABI_O32          0x00001000
                    113: #define        E_MIPS_ABI_O64          0x00002000
                    114: #define        E_MIPS_ABI_EABI32       0x00004000
                    115: #define        E_MIPS_ABI_EABI64       0x00004000
                    116:
                    117: /*
                    118:  * Mips special sections.
                    119:  */
                    120: #define        SHN_MIPS_ACOMMON        0xff00          /* Allocated common symbols */
                    121: #define        SHN_MIPS_SCOMMON        0xff03          /* Small common symbols */
                    122: #define        SHN_MIPS_SUNDEFINED     0xff04          /* Small undefined symbols */
                    123:
                    124: /*
                    125:  * Legal values for sh_type field of Elf32_Shdr.
                    126:  */
                    127: #define        SHT_MIPS_LIBLIST  0x70000000    /* Shared objects used in link */
                    128: #define        SHT_MIPS_CONFLICT 0x70000002    /* Conflicting symbols */
                    129: #define        SHT_MIPS_GPTAB    0x70000003    /* Global data area sizes */
                    130: #define        SHT_MIPS_UCODE    0x70000004    /* Reserved for SGI/MIPS compilers */
                    131: #define        SHT_MIPS_DEBUG    0x70000005    /* MIPS ECOFF debugging information */
                    132: #define        SHT_MIPS_REGINFO  0x70000006    /* Register usage information */
                    133:
                    134: /*
                    135:  * Legal values for sh_flags field of Elf32_Shdr.
                    136:  */
                    137: #define        SHF_MIPS_GPREL  0x10000000      /* Must be part of global data area */
                    138:
                    139: #if 0
                    140: /*
                    141:  * Entries found in sections of type SHT_MIPS_GPTAB.
                    142:  */
                    143: typedef union {
                    144:        struct {
                    145:                Elf32_Word gt_current_g_value;  /* -G val used in compilation */
                    146:                Elf32_Word gt_unused;   /* Not used */
                    147:        } gt_header;                    /* First entry in section */
                    148:        struct {
                    149:                Elf32_Word gt_g_value;  /* If this val were used for -G */
                    150:                Elf32_Word gt_bytes;    /* This many bytes would be used */
                    151:        } gt_entry;                     /* Subsequent entries in section */
                    152: } Elf32_gptab;
                    153:
                    154: /*
                    155:  * Entry found in sections of type SHT_MIPS_REGINFO.
                    156:  */
                    157: typedef struct {
                    158:        Elf32_Word      ri_gprmask;     /* General registers used */
                    159:        Elf32_Word      ri_cprmask[4];  /* Coprocessor registers used */
                    160:        Elf32_Sword     ri_gp_value;    /* $gp register value */
                    161: } Elf32_RegInfo;
                    162: #endif
                    163:
                    164:
                    165: /*
                    166:  * Mips relocations.
                    167:  */
                    168:
                    169: #define        R_MIPS_NONE     0       /* No reloc */
                    170: #define        R_MIPS_16       1       /* Direct 16 bit */
                    171: #define        R_MIPS_32       2       /* Direct 32 bit */
                    172: #define        R_MIPS_REL32    3       /* PC relative 32 bit */
                    173: #define        R_MIPS_26       4       /* Direct 26 bit shifted */
                    174: #define        R_MIPS_HI16     5       /* High 16 bit */
                    175: #define        R_MIPS_LO16     6       /* Low 16 bit */
                    176: #define        R_MIPS_GPREL16  7       /* GP relative 16 bit */
                    177: #define        R_MIPS_LITERAL  8       /* 16 bit literal entry */
                    178: #define        R_MIPS_GOT16    9       /* 16 bit GOT entry */
                    179: #define        R_MIPS_PC16     10      /* PC relative 16 bit */
                    180: #define        R_MIPS_CALL16   11      /* 16 bit GOT entry for function */
                    181: #define        R_MIPS_GPREL32  12      /* GP relative 32 bit */
                    182:
                    183: #define        R_MIPS_64       18
                    184:
                    185: #define        R_MIPS_REL32_64 ((R_MIPS_64 << 8) | R_MIPS_REL32)
                    186:
                    187:
                    188: #endif /* !_MIPS64_EXEC_H_ */

CVSweb