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/sys/cdefs_aout.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 /*      $NetBSD: cdefs_aout.h,v 1.20 2006/05/18 17:55:38 christos Exp $ */
    2 
    3 /*
    4  * Written by J.T. Conklin <jtc@wimsey.com> 01/17/95.
    5  * Public domain.
    6  */
    7 
    8 #ifndef _SYS_CDEFS_AOUT_H_
    9 #define _SYS_CDEFS_AOUT_H_
   10 
   11 #define _C_LABEL(x)             __CONCAT(_,x)
   12 #define _C_LABEL_STRING(x)      "_"x
   13 
   14 #if __STDC__
   15 #define ___RENAME(x)    __asm(___STRING(_C_LABEL(x)))
   16 #else
   17 #define ___RENAME(x)    ____RENAME(_/**/x)
   18 #define ____RENAME(x)   __asm(___STRING(x))
   19 #endif
   20 
   21 #define __indr_reference(sym,alias)     /* nada, since we do weak refs */
   22 
   23 #ifdef __GNUC__
   24 #if __STDC__
   25 #define __strong_alias(alias,sym)                                       \
   26     __asm(".global " _C_LABEL_STRING(#alias) "\n"                       \
   27             _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym));
   28 #define __weak_alias(alias,sym)                                         \
   29     __asm(".weak " _C_LABEL_STRING(#alias) "\n"                 \
   30             _C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym));
   31 
   32 /* Do not use __weak_extern, use __weak_reference instead */
   33 #define __weak_extern(sym)                                              \
   34     __asm(".weak " _C_LABEL_STRING(#sym));
   35 
   36 #if __GNUC_PREREQ__(4, 0)
   37 #define __weak_reference(sym)   __attribute__((__weakref__))
   38 #else
   39 #define __weak_reference(sym)   ; __asm(".weak " _C_LABEL_STRING(#sym))
   40 #endif
   41 
   42 #define __warn_references(sym,msg)                                      \
   43         __asm(".stabs \"" msg "\",30,0,0,0");                           \
   44         __asm(".stabs \"_" #sym "\",1,0,0,0");
   45 #else /* __STDC__ */
   46 #define __weak_alias(alias,sym) ___weak_alias(_/**/alias,_/**/sym)
   47 #define ___weak_alias(alias,sym)                                        \
   48     __asm(".weak alias\nalias = sym");
   49 /* Do not use __weak_extern, use __weak_reference instead */
   50 #define __weak_extern(sym) ___weak_extern(_/**/sym)
   51 #define ___weak_extern(sym)                                             \
   52     __asm(".weak sym");
   53 
   54 #if __GNUC_PREREQ__(4, 0)
   55 #define __weak_reference(sym)   __attribute__((__weakref__))
   56 #else
   57 #define ___weak_reference(sym)  ; __asm(".weak sym");
   58 #define __weak_reference(sym)   ___weak_reference(_/**/sym)
   59 #endif
   60 
   61 #define __warn_references(sym,msg)                                      \
   62         __asm(".stabs msg,30,0,0,0");                                   \
   63         __asm(".stabs \"_/**/sym\",1,0,0,0");
   64 #endif /* __STDC__ */
   65 #else /* __GNUC__ */
   66 #define __warn_references(sym,msg)
   67 #endif /* __GNUC__ */
   68 
   69 #if defined(__sh__)             /* XXX SH COFF */
   70 #undef __indr_reference(sym,alias)
   71 #undef __warn_references(sym,msg)
   72 #define __warn_references(sym,msg)
   73 #endif
   74 
   75 #define __IDSTRING(_n,_s)                                               \
   76         __asm(".data ; .asciz \"" _s "\" ; .text")
   77 
   78 #undef __KERNEL_RCSID
   79 
   80 #define __RCSID(_s)     __IDSTRING(rcsid,_s)
   81 #define __SCCSID(_s)
   82 #define __SCCSID2(_s)
   83 #if 0   /* XXX userland __COPYRIGHTs have \ns in them */
   84 #define __COPYRIGHT(_s) __IDSTRING(copyright,_s)
   85 #else
   86 #define __COPYRIGHT(_s)                                                 \
   87         static const char copyright[] __attribute__((__unused__)) = _s
   88 #endif
   89 
   90 #if defined(USE_KERNEL_RCSIDS) || !defined(_KERNEL)
   91 #define __KERNEL_RCSID(_n,_s) __IDSTRING(__CONCAT(rcsid,_n),_s)
   92 #else
   93 #define __KERNEL_RCSID(_n,_s)
   94 #endif
   95 #define __KERNEL_SCCSID(_n,_s)
   96 #define __KERNEL_COPYRIGHT(_n, _s) __IDSTRING(__CONCAT(copyright,_n),_s)
   97 
   98 #ifndef __lint__
   99 #define __link_set_make_entry(set, sym, type)                           \
  100         static void const * const                                       \
  101             __link_set_##set##_sym_##sym __used = &sym;         \
  102         __asm(".stabs \"___link_set_" #set "\", " #type ", 0, 0, _" #sym)
  103 #else
  104 #define __link_set_make_entry(set, sym, type)                           \
  105         extern void const * const __link_set_##set##_sym_##sym
  106 #endif /* __lint__ */
  107 
  108 #define __link_set_add_text(set, sym)   __link_set_make_entry(set, sym, 23)
  109 #define __link_set_add_rodata(set, sym) __link_set_make_entry(set, sym, 23)
  110 #define __link_set_add_data(set, sym)   __link_set_make_entry(set, sym, 25)
  111 #define __link_set_add_bss(set, sym)    __link_set_make_entry(set, sym, 27)
  112 
  113 #define __link_set_decl(set, ptype)                                     \
  114 extern struct {                                                         \
  115         int     __ls_length;                                            \
  116         ptype   *__ls_items[1];                                         \
  117 } __link_set_##set
  118 
  119 #define __link_set_start(set)   (&(__link_set_##set).__ls_items[0])
  120 #define __link_set_end(set)                                             \
  121         (&(__link_set_##set).__ls_items[(__link_set_##set).__ls_length])
  122 
  123 #define __link_set_count(set)   ((__link_set_##set).__ls_length)
  124 
  125 #endif /* !_SYS_CDEFS_AOUT_H_ */

Cache object: 0703e5a80b27e6456e41e9b956e53371


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