ultrix4.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:4k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * dl.h
  4.  *
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: ultrix4.h,v 1.3 1999/02/13 23:17:29 momjian Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. /*
  14.  * Ultrix 4.x Dynamic Loader Library Version 1.0
  15.  *
  16.  * dl.h
  17.  * header file for the Dynamic Loader Library
  18.  *
  19.  *
  20.  * Copyright (c) 1993 Andrew K. Yu, University of California at Berkeley
  21.  * All rights reserved.
  22.  *
  23.  * Permission to use, copy, modify, and distribute this software and its
  24.  * documentation for educational, research, and non-profit purposes and
  25.  * without fee is hereby granted, provided that the above copyright
  26.  * notice appear in all copies and that both that copyright notice and
  27.  * this permission notice appear in supporting documentation. Permission
  28.  * to incorporate this software into commercial products can be obtained
  29.  * from the author. The University of California and the author make
  30.  * no representations about the suitability of this software for any
  31.  * purpose. It is provided "as is" without express or implied warranty.
  32.  *
  33.  */
  34. #ifndef _DL_HEADER_
  35. #define _DL_HEADER_
  36. #include <stdio.h> /* needed to declare FILE for ldfcn.h */
  37. #include <filehdr.h>
  38. #include <syms.h>
  39. #include <ldfcn.h>
  40. #include <reloc.h>
  41. #include <scnhdr.h>
  42. typedef long CoreAddr;
  43. typedef struct ScnInfo
  44. {
  45. CoreAddr addr; /* starting address of the section */
  46. SCNHDR hdr; /* section header */
  47. RELOC    *relocEntries; /* relocation entries */
  48. } ScnInfo;
  49. typedef enum
  50. {
  51. DL_NEEDRELOC, /* still need relocation */
  52. DL_RELOCATED, /* no relocation necessary */
  53. DL_INPROG /* relocation in progress */
  54. } dlRStatus;
  55. typedef struct JmpTbl
  56. {
  57. char    *block; /* the jump table memory block */
  58. struct JmpTbl *next; /* next block */
  59. } JmpTbl;
  60. typedef struct dlFile
  61. {
  62. char    *filename; /* file name of the object file */
  63. int textSize; /* used by mprotect */
  64. CoreAddr textAddress; /* start addr of text section */
  65. long textVaddr; /* vaddr of text section in obj file */
  66. CoreAddr rdataAddress; /* start addr of rdata section */
  67. long rdataVaddr; /* vaddr of text section in obj file */
  68. CoreAddr dataAddress; /* start addr of data section */
  69. long dataVaddr; /* vaddr of text section in obj file */
  70. CoreAddr bssAddress; /* start addr of bss section */
  71. long bssVaddr; /* vaddr of text section in obj file */
  72. int nsect; /* number of sections */
  73. ScnInfo    *sect; /* details of each section (array) */
  74. int issExtMax; /* size of string space */
  75. char    *extss; /* extern sym string space (in core) */
  76. int iextMax; /* maximum number of Symbols */
  77. pEXTR extsyms; /* extern syms */
  78. dlRStatus relocStatus; /* what relocation needed? */
  79. int needReloc;
  80. JmpTbl    *jmptable; /* the jump table for R_JMPADDR */
  81. struct dlFile *next; /* next member of the archive */
  82. } dlFile;
  83. typedef struct dlSymbol
  84. {
  85. char    *name; /* name of the symbol */
  86. long addr; /* address of the symbol */
  87. dlFile    *objFile; /* from which file */
  88. } dlSymbol;
  89. /*
  90.  * prototypes for the dl* interface
  91.  */
  92. extern void *dl_open( /* char *filename, int mode */ );
  93. extern void *dl_sym( /* void *handle, char *name */ );
  94. extern void dl_close( /* void *handle */ );
  95. extern char *dl_error( /* void */ );
  96. #define   DL_LAZY 0 /* lazy resolution */
  97. #define   DL_NOW 1 /* immediate resolution */
  98. /*
  99.  * Miscellaneous utility routines:
  100.  */
  101. extern char **dl_undefinedSymbols( /* int *count */ );
  102. extern void dl_printAllSymbols( /* void *handle */ );
  103. extern void dl_setLibraries( /* char *libs */ );
  104. #endif  /* _DL_HEADER_ */