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/libkern/libkern/kernel_mach_header.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 /*
    2  * Copyright (c) 2000-2008 Apple Inc. All rights reserved.
    3  *
    4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
    5  * 
    6  * This file contains Original Code and/or Modifications of Original Code
    7  * as defined in and that are subject to the Apple Public Source License
    8  * Version 2.0 (the 'License'). You may not use this file except in
    9  * compliance with the License. The rights granted to you under the License
   10  * may not be used to create, or enable the creation or redistribution of,
   11  * unlawful or unlicensed copies of an Apple operating system, or to
   12  * circumvent, violate, or enable the circumvention or violation of, any
   13  * terms of an Apple operating system software license agreement.
   14  * 
   15  * Please obtain a copy of the License at
   16  * http://www.opensource.apple.com/apsl/ and read it before using this file.
   17  * 
   18  * The Original Code and all software distributed under the License are
   19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   23  * Please see the License for the specific language governing rights and
   24  * limitations under the License.
   25  * 
   26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
   27  */
   28 /*
   29  *      File: libkern/kernel_mach_header.h
   30  *
   31  *      Definitions for accessing mach-o headers.
   32  *
   33  * NOTE:        These functions work on Mach-O headers compatible with
   34  *              the currently running kernel, and cannot be used against mach
   35  *              headers other than that of the currently running kernel.
   36  *
   37  */
   38 
   39 #ifndef _KERNEL_MACH_HEADER_
   40 #define _KERNEL_MACH_HEADER_
   41 
   42 #ifdef __cplusplus
   43 extern "C" {
   44 #endif
   45 
   46 #include <mach/mach_types.h>
   47 #include <mach-o/loader.h>
   48 
   49 #if     !KERNEL
   50 #error this header for kernel use only
   51 #endif
   52 
   53 #if defined(__LP64__)
   54 
   55 typedef struct mach_header_64   kernel_mach_header_t;
   56 typedef struct segment_command_64 kernel_segment_command_t;
   57 typedef struct section_64               kernel_section_t;
   58 
   59 #define LC_SEGMENT_KERNEL               LC_SEGMENT_64
   60 #define SECT_CONSTRUCTOR                "__mod_init_func"
   61 #define SECT_DESTRUCTOR                 "__mod_term_func"
   62 
   63 #else
   64 
   65 typedef struct mach_header              kernel_mach_header_t;
   66 typedef struct segment_command  kernel_segment_command_t;
   67 typedef struct section                  kernel_section_t;
   68 
   69 #define LC_SEGMENT_KERNEL               LC_SEGMENT
   70 #define SECT_CONSTRUCTOR                "__constructor"
   71 #define SECT_DESTRUCTOR                 "__destructor"
   72 
   73 #endif
   74 
   75 extern kernel_mach_header_t _mh_execute_header;
   76 
   77 vm_offset_t getlastaddr(void);
   78 
   79 kernel_segment_command_t *firstseg(void);
   80 kernel_segment_command_t *firstsegfromheader(kernel_mach_header_t *header);
   81 kernel_segment_command_t *nextsegfromheader(
   82         kernel_mach_header_t    *header,
   83         kernel_segment_command_t        *seg);
   84 kernel_segment_command_t *getsegbyname(const char *seg_name);
   85 kernel_segment_command_t *getsegbynamefromheader(
   86         kernel_mach_header_t    *header,
   87         const char              *seg_name);
   88 void *getsegdatafromheader(kernel_mach_header_t *, const char *, unsigned long *);
   89 kernel_section_t *getsectbyname(const char *seg_name, const char *sect_name);
   90 kernel_section_t *getsectbynamefromheader(
   91         kernel_mach_header_t    *header,
   92         const char              *seg_name,
   93         const char              *sect_name);
   94 void *getsectdatafromheader(kernel_mach_header_t *, const char *, const char *, unsigned long *);
   95 kernel_section_t *firstsect(kernel_segment_command_t *sgp);
   96 kernel_section_t *nextsect(kernel_segment_command_t *sgp, kernel_section_t *sp);
   97 
   98 #if MACH_KDB
   99 boolean_t getsymtab(kernel_mach_header_t *header,
  100                     vm_offset_t *symtab,
  101                     int *nsyms,
  102                     vm_offset_t *strtab,
  103                     vm_size_t *strtabsize);
  104 #endif
  105 
  106 #ifdef __cplusplus
  107 }
  108 #endif
  109 
  110 #endif  /* _KERNEL_MACH_HEADER_ */

Cache object: 3c34ed026e3dd832585de55d104686a7


[ 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.