The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/include/asm-alpha/a.out.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #ifndef __ALPHA_A_OUT_H__
    2 #define __ALPHA_A_OUT_H__
    3 
    4 #include <linux/types.h>
    5 
    6 /*
    7  * OSF/1 ECOFF header structs.  ECOFF files consist of:
    8  *      - a file header (struct filehdr),
    9  *      - an a.out header (struct aouthdr),
   10  *      - one or more section headers (struct scnhdr). 
   11  *        The filhdr's "f_nscns" field contains the
   12  *        number of section headers.
   13  */
   14 
   15 struct filehdr
   16 {
   17         /* OSF/1 "file" header */
   18         __u16 f_magic, f_nscns;
   19         __u32 f_timdat;
   20         __u64 f_symptr;
   21         __u32 f_nsyms;
   22         __u16 f_opthdr, f_flags;
   23 };
   24 
   25 struct aouthdr
   26 {
   27         __u64 info;             /* after that it looks quite normal.. */
   28         __u64 tsize;
   29         __u64 dsize;
   30         __u64 bsize;
   31         __u64 entry;
   32         __u64 text_start;       /* with a few additions that actually make sense */
   33         __u64 data_start;
   34         __u64 bss_start;
   35         __u32 gprmask, fprmask; /* bitmask of general & floating point regs used in binary */
   36         __u64 gpvalue;
   37 };
   38 
   39 struct scnhdr
   40 {
   41         char    s_name[8];
   42         __u64   s_paddr;
   43         __u64   s_vaddr;
   44         __u64   s_size;
   45         __u64   s_scnptr;
   46         __u64   s_relptr;
   47         __u64   s_lnnoptr;
   48         __u16   s_nreloc;
   49         __u16   s_nlnno;
   50         __u32   s_flags;
   51 };
   52 
   53 struct exec
   54 {
   55         /* OSF/1 "file" header */
   56         struct filehdr          fh;
   57         struct aouthdr          ah;
   58 };
   59 
   60 /*
   61  * Define's so that the kernel exec code can access the a.out header
   62  * fields...
   63  */
   64 #define a_info          ah.info
   65 #define a_text          ah.tsize
   66 #define a_data          ah.dsize
   67 #define a_bss           ah.bsize
   68 #define a_entry         ah.entry
   69 #define a_textstart     ah.text_start
   70 #define a_datastart     ah.data_start
   71 #define a_bssstart      ah.bss_start
   72 #define a_gprmask       ah.gprmask
   73 #define a_fprmask       ah.fprmask
   74 #define a_gpvalue       ah.gpvalue
   75 
   76 #define N_TXTADDR(x) ((x).a_textstart)
   77 #define N_DATADDR(x) ((x).a_datastart)
   78 #define N_BSSADDR(x) ((x).a_bssstart)
   79 #define N_DRSIZE(x) 0
   80 #define N_TRSIZE(x) 0
   81 #define N_SYMSIZE(x) 0
   82 
   83 #define AOUTHSZ         sizeof(struct aouthdr)
   84 #define SCNHSZ          sizeof(struct scnhdr)
   85 #define SCNROUND        16
   86 
   87 #define N_TXTOFF(x) \
   88   ((long) N_MAGIC(x) == ZMAGIC ? 0 : \
   89    (sizeof(struct exec) + (x).fh.f_nscns*SCNHSZ + SCNROUND - 1) & ~(SCNROUND - 1))
   90 
   91 #ifdef __KERNEL__
   92 
   93 /* Assume that start addresses below 4G belong to a TASO application.
   94    Unfortunately, there is no proper bit in the exec header to check.
   95    Worse, we have to notice the start address before swapping to use
   96    /sbin/loader, which of course is _not_ a TASO application.  */
   97 #define SET_AOUT_PERSONALITY(BFPM, EX) \
   98         set_personality (((BFPM->sh_bang || EX.ah.entry < 0x100000000 \
   99                            ? ADDR_LIMIT_32BIT : 0) | PER_OSF4))
  100 
  101 #define STACK_TOP \
  102   (current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL)
  103 
  104 #endif
  105 
  106 #endif /* __A_OUT_GNU_H__ */

Cache object: 1d98f4ab7a965d19634a632d0aae89bd


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.