darwin-xnu/bsd/i386/exec.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
   3 *
   4 * @APPLE_LICENSE_HEADER_START@
   5 * 
   6 * The contents of this file constitute Original Code as defined in and
   7 * are subject to the Apple Public Source License Version 1.1 (the
   8 * "License").  You may not use this file except in compliance with the
   9 * License.  Please obtain a copy of the License at
  10 * http://www.apple.com/publicsource and read it before using this file.
  11 * 
  12 * This Original Code and all software distributed under the License are
  13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17 * License for the specific language governing rights and limitations
  18 * under the License.
  19 * 
  20 * @APPLE_LICENSE_HEADER_END@
  21 */
  22/*-
  23 * Copyright (c) 1992, 1993
  24 *      The Regents of the University of California.  All rights reserved.
  25 *
  26 * Redistribution and use in source and binary forms, with or without
  27 * modification, are permitted provided that the following conditions
  28 * are met:
  29 * 1. Redistributions of source code must retain the above copyright
  30 *    notice, this list of conditions and the following disclaimer.
  31 * 2. Redistributions in binary form must reproduce the above copyright
  32 *    notice, this list of conditions and the following disclaimer in the
  33 *    documentation and/or other materials provided with the distribution.
  34 * 3. All advertising materials mentioning features or use of this software
  35 *    must display the following acknowledgement:
  36 *      This product includes software developed by the University of
  37 *      California, Berkeley and its contributors.
  38 * 4. Neither the name of the University nor the names of its contributors
  39 *    may be used to endorse or promote products derived from this software
  40 *    without specific prior written permission.
  41 *
  42 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  43 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  44 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  45 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  46 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  47 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  48 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  49 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  50 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  51 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  52 * SUCH DAMAGE.
  53 *
  54 *      @(#)exec.h      8.1 (Berkeley) 6/11/93
  55 */
  56
  57#ifndef _BSD_I386_EXEC_H_
  58#define _BSD_I386_EXEC_H_
  59
  60
  61#ifdef BSD_KERNEL_PRIVATE
  62/* Size of a page in an object file. */
  63#define __LDPGSZ        4096
  64
  65/* Valid magic number check. */
  66#define N_BADMAG(ex) \
  67        ((ex).a_magic != NMAGIC && (ex).a_magic != OMAGIC && \
  68            (ex).a_magic != ZMAGIC)
  69
  70/* Address of the bottom of the text segment. */
  71#define N_TXTADDR(X)    0
  72
  73/* Address of the bottom of the data segment. */
  74#define N_DATADDR(ex) \
  75        (N_TXTADDR(ex) + ((ex).a_magic == OMAGIC ? (ex).a_text \
  76        : __LDPGSZ + ((ex).a_text - 1 & ~(__LDPGSZ - 1))))
  77
  78/* Text segment offset. */
  79#define N_TXTOFF(ex) \
  80        ((ex).a_magic == ZMAGIC ? __LDPGSZ : sizeof(struct exec))
  81
  82/* Data segment offset. */
  83#define N_DATOFF(ex) \
  84        (N_TXTOFF(ex) + ((ex).a_magic != ZMAGIC ? (ex).a_text : \
  85        __LDPGSZ + ((ex).a_text - 1 & ~(__LDPGSZ - 1))))
  86
  87/* Symbol table offset. */
  88#define N_SYMOFF(ex) \
  89        (N_TXTOFF(ex) + (ex).a_text + (ex).a_data + (ex).a_trsize + \
  90            (ex).a_drsize)
  91
  92/* String table offset. */
  93#define N_STROFF(ex)    (N_SYMOFF(ex) + (ex).a_syms)
  94
  95/* Description of the object file header (a.out format). */
  96struct exec {
  97#define OMAGIC  0407            /* old impure format */
  98#define NMAGIC  0410            /* read-only text */
  99#define ZMAGIC  0413            /* demand load format */
 100#define QMAGIC  0314            /* demand load format. Header in text. */
 101        unsigned int    a_magic;        /* magic number */
 102
 103        unsigned int    a_text;         /* text segment size */
 104        unsigned int    a_data;         /* initialized data size */
 105        unsigned int    a_bss;          /* uninitialized data size */
 106        unsigned int    a_syms;         /* symbol table size */
 107        unsigned int    a_entry;        /* entry point */
 108        unsigned int    a_trsize;       /* text relocation size */
 109        unsigned int    a_drsize;       /* data relocation size */
 110};
 111
 112#endif /* BSD_KERNEL_PRIVATE */
 113
 114#endif /* _BSD_I386_EXEC_H_ */
 115
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.