~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-sparc/a.out.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* $Id: a.out.h,v 1.13 2000/01/09 10:46:53 anton Exp $ */
  2 #ifndef __SPARC_A_OUT_H__
  3 #define __SPARC_A_OUT_H__
  4 
  5 #define SPARC_PGSIZE    0x2000        /* Thanks to the sun4 architecture... */
  6 #define SEGMENT_SIZE    SPARC_PGSIZE  /* whee... */
  7 
  8 struct exec {
  9         unsigned char a_dynamic:1;      /* A __DYNAMIC is in this image */
 10         unsigned char a_toolversion:7;
 11         unsigned char a_machtype;
 12         unsigned short a_info;
 13         unsigned long a_text;           /* length of text, in bytes */
 14         unsigned long a_data;           /* length of data, in bytes */
 15         unsigned long a_bss;            /* length of bss, in bytes */
 16         unsigned long a_syms;           /* length of symbol table, in bytes */
 17         unsigned long a_entry;          /* where program begins */
 18         unsigned long a_trsize;
 19         unsigned long a_drsize;
 20 };
 21 
 22 /* Where in the file does the text information begin? */
 23 #define N_TXTOFF(x)     (N_MAGIC(x) == ZMAGIC ? 0 : sizeof (struct exec))
 24 
 25 /* Where do the Symbols start? */
 26 #define N_SYMOFF(x)     (N_TXTOFF(x) + (x).a_text +   \
 27                          (x).a_data + (x).a_trsize +  \
 28                          (x).a_drsize)
 29 
 30 /* Where does text segment go in memory after being loaded? */
 31 #define N_TXTADDR(x)    (((N_MAGIC(x) == ZMAGIC) &&        \
 32                          ((x).a_entry < SPARC_PGSIZE)) ?   \
 33                           0 : SPARC_PGSIZE)
 34 
 35 /* And same for the data segment.. */
 36 #define N_DATADDR(x) (N_MAGIC(x)==OMAGIC ?         \
 37                       (N_TXTADDR(x) + (x).a_text)  \
 38                        : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
 39 
 40 #define N_TRSIZE(a)     ((a).a_trsize)
 41 #define N_DRSIZE(a)     ((a).a_drsize)
 42 #define N_SYMSIZE(a)    ((a).a_syms)
 43 
 44 /*
 45  * Sparc relocation types
 46  */
 47 enum reloc_type
 48 {
 49         RELOC_8,
 50         RELOC_16,
 51         RELOC_32,       /* simplest relocs */
 52         RELOC_DISP8,
 53         RELOC_DISP16,
 54         RELOC_DISP32,   /* Disp's (pc-rel) */
 55         RELOC_WDISP30,
 56         RELOC_WDISP22,  /* SR word disp's */
 57         RELOC_HI22,
 58         RELOC_22,       /* SR 22-bit relocs */
 59         RELOC_13,
 60         RELOC_LO10,     /* SR 13&10-bit relocs */
 61         RELOC_SFA_BASE,
 62         RELOC_SFA_OFF13, /* SR S.F.A. relocs */
 63         RELOC_BASE10,
 64         RELOC_BASE13,
 65         RELOC_BASE22,   /* base_relative pic */
 66         RELOC_PC10,
 67         RELOC_PC22,     /* special pc-rel pic */
 68         RELOC_JMP_TBL,  /* jmp_tbl_rel in pic */
 69         RELOC_SEGOFF16, /* ShLib offset-in-seg */
 70         RELOC_GLOB_DAT,
 71         RELOC_JMP_SLOT,
 72         RELOC_RELATIVE  /* rtld relocs */
 73 };
 74 
 75 /*
 76  * Format of a relocation datum.
 77  */
 78 struct relocation_info /* used when header.a_machtype == M_SPARC */
 79 {
 80         unsigned long   r_address;  /* relocation addr */
 81         unsigned int    r_index:24; /* segment index or symbol index */
 82         unsigned int    r_extern:1; /* if F, r_index==SEG#; if T, SYM idx */
 83         int             r_pad:2;    /* <unused> */
 84         enum reloc_type r_type:5;   /* type of relocation to perform */
 85         long            r_addend;   /* addend for relocation value */
 86 };
 87 
 88 #define N_RELOCATION_INFO_DECLARED 1
 89 
 90 #ifdef __KERNEL__
 91 
 92 #include <asm/page.h>
 93 
 94 #define STACK_TOP       (PAGE_OFFSET - PAGE_SIZE)
 95 
 96 #endif /* __KERNEL__ */
 97 
 98 #endif /* __SPARC_A_OUT_H__ */
 99 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.