root/compat/freebsd/freebsd_exec.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /*      $OpenBSD: freebsd_exec.h,v 1.7 2004/04/15 00:22:42 tedu Exp $   */
    2 
    3 /*-
    4  * Copyright (c) 1992, 1993
    5  *      The Regents of the University of California.  All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  * 3. Neither the name of the University nor the names of its contributors
   16  *    may be used to endorse or promote products derived from this software
   17  *    without specific prior written permission.
   18  *
   19  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   25  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   27  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   28  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   29  * SUCH DAMAGE.
   30  *
   31  *      from: @(#)exec.h        8.1 (Berkeley) 6/11/93
   32  *      from: imgact_aout.h,v 1.2 1994/12/30 08:06:19 bde Exp
   33  */
   34 
   35 #ifndef _FREEBSD_EXEC_H
   36 #define _FREEBSD_EXEC_H
   37 
   38 #define FREEBSD_N_GETMAGIC(ex) \
   39         ( (ex).a_midmag & 0xffff )
   40 #define FREEBSD_N_GETMID(ex) \
   41         ( ((ex).a_midmag >> 16) & 0x03ff )
   42 #define FREEBSD_N_GETFLAG(ex) \
   43         ( ((ex).a_midmag >> 26) & 0x3f )
   44 #define FREEBSD_N_SETMAGIC(ex,mag,mid,flag) \
   45         ( (ex).a_midmag = (((flag) & 0x3f) <<26) | (((mid) & 0x03ff) << 16) | \
   46         ((mag) & 0xffff) )
   47 
   48 #define FREEBSD_N_ALIGN(ex,x) \
   49         (FREEBSD_N_GETMAGIC(ex) == ZMAGIC || \
   50          FREEBSD_N_GETMAGIC(ex) == QMAGIC ? \
   51          ((x) + FREEBSD___LDPGSZ - 1) & \
   52          ~(unsigned long)(FREEBSD___LDPGSZ - 1) : (x))
   53 
   54 /* Valid magic number check. */
   55 #define FREEBSD_N_BADMAG(ex) \
   56         (FREEBSD_N_GETMAGIC(ex) != OMAGIC && \
   57          FREEBSD_N_GETMAGIC(ex) != NMAGIC && \
   58          FREEBSD_N_GETMAGIC(ex) != ZMAGIC && \
   59          FREEBSD_N_GETMAGIC(ex) != QMAGIC)
   60 
   61 /* Address of the bottom of the text segment. */
   62 #define FREEBSD_N_TXTADDR(ex) \
   63         ((FREEBSD_N_GETMAGIC(ex) == OMAGIC || \
   64           FREEBSD_N_GETMAGIC(ex) == NMAGIC || \
   65           FREEBSD_N_GETMAGIC(ex) == ZMAGIC) ? 0 : __LDPGSZ)
   66 
   67 /* Address of the bottom of the data segment. */
   68 #define FREEBSD_N_DATADDR(ex) \
   69         FREEBSD_N_ALIGN(ex, FREEBSD_N_TXTADDR(ex) + (ex).a_text)
   70 
   71 /* Text segment offset. */
   72 #define FREEBSD_N_TXTOFF(ex) \
   73         (FREEBSD_N_GETMAGIC(ex) == ZMAGIC ? __LDPGSZ : \
   74          FREEBSD_N_GETMAGIC(ex) == QMAGIC ? 0 : sizeof(struct exec)) 
   75 
   76 /* Data segment offset. */
   77 #define FREEBSD_N_DATOFF(ex) \
   78         FREEBSD_N_ALIGN(ex, FREEBSD_N_TXTOFF(ex) + (ex).a_text)
   79 
   80 /* Relocation table offset. */
   81 #define FREEBSD_N_RELOFF(ex) \
   82         FREEBSD_N_ALIGN(ex, FREEBSD_N_DATOFF(ex) + (ex).a_data)
   83 
   84 /* Symbol table offset. */
   85 #define FREEBSD_N_SYMOFF(ex) \
   86         (FREEBSD_N_RELOFF(ex) + (ex).a_trsize + (ex).a_drsize)
   87 
   88 /* String table offset. */
   89 #define FREEBSD_N_STROFF(ex)    (FREEBSD_N_SYMOFF(ex) + (ex).a_syms)
   90 
   91 #define FREEBSD_ELF_AUX_ARGSIZ (sizeof(AuxInfo) * 15 / sizeof(char *))
   92 
   93 #define FREEBSD_AOUT_HDR_SIZE   sizeof(struct exec)
   94 
   95 int exec_freebsd_aout_makecmds(struct proc *, struct exec_package *);
   96 int exec_freebsd_elf32_makecmds(struct proc *, struct exec_package *);
   97 int freebsd_elf_probe(struct proc *, struct exec_package *, char *,
   98     u_long *, u_int8_t *);
   99 
  100 extern char freebsd_sigcode[], freebsd_esigcode[];
  101 
  102 #endif /* !_FREEBSD_EXEC_H */

/* [<][>][^][v][top][bottom][index][help] */