Open64 (mfef90, whirl2f, and IR tools)
TAG: version-openad; SVN changeset: 916
|
00001 /* 00002 00003 Copyright (C) 2000, 2001 Silicon Graphics, Inc. All Rights Reserved. 00004 00005 This program is free software; you can redistribute it and/or modify it 00006 under the terms of version 2 of the GNU General Public License as 00007 published by the Free Software Foundation. 00008 00009 This program is distributed in the hope that it would be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00012 00013 Further, this software is distributed without any warranty that it is 00014 free of the rightful claim of any third person regarding infringement 00015 or the like. Any license provided herein, whether implied or 00016 otherwise, applies only to this software file. Patent licenses, if 00017 any, provided herein do not apply to combinations of this program with 00018 other software, or any other product whatsoever. 00019 00020 You should have received a copy of the GNU General Public License along 00021 with this program; if not, write the Free Software Foundation, Inc., 59 00022 Temple Place - Suite 330, Boston MA 02111-1307, USA. 00023 00024 Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky, 00025 Mountain View, CA 94043, or: 00026 00027 http://www.sgi.com 00028 00029 For further information regarding this notice, see: 00030 00031 http://oss.sgi.com/projects/GenInfo/NoticeExplan 00032 00033 */ 00034 00035 00036 #ifndef __SYS_IA64_ELF_H__ 00037 #define __SYS_IA64_ELF_H__ 00038 00039 /* WARNING: This file is included in, and logically a part of, 00040 * /usr/include/elf.h. The distribution of material between them 00041 * is artificial, generally reflecting the distinction between generic 00042 * and system-dependent, and may change. Do not include this file 00043 * directly -- include /usr/include/elf.h instead. 00044 */ 00045 00046 /* 00047 * NAMING CONVENTIONS 00048 * ------------------ 00049 * 00050 * *_IRIX_* -- symbols defined by SGI/IRIX that are valid 00051 * on both mips and ia64 processors. 00052 * 00053 * *_MIPS_* -- mips specific symbols, defined by SGI/IRIX, 00054 * and valid on mips processors only. 00055 * 00056 * *_IA64_* -- ia64 specific symbols, defined by SGI/IRIX, 00057 * and valid on ia64 processors only. 00058 * 00059 * *_IA_64_* -- ia64 specific symbols, defined by INTEL. 00060 * These symbols are NEVER used by SGI/IRIX 00061 * and are included here for documentation 00062 * purposes only. In general, for every 00063 * *_IA_64_* symbol there is a corresponding 00064 * *_IA64_* symobl, and whenever possible, they 00065 * have the identical binary values. 00066 * 00067 */ 00068 00069 00070 #include <sys/elftypes.h> 00071 00072 /* 00073 * Random constants 00074 */ 00075 00076 #define ELF_IA64_MAXPGSZ ELF_IRIX_MAXPGSZ 00077 #define ELF_IA64_MINPGSZ ELF_IRIX_MINPGSZ 00078 00079 /* ==================================================================== 00080 * 00081 * Elf header 00082 * 00083 * ==================================================================== 00084 */ 00085 00086 /* 00087 * e_flags -- defined by Intel by not used on Irix/ia64 00088 * 00089 * #define EF_IA_64_MASKOS 0x0000000f 00090 * Reserved by Intel for OS specified features. 00091 * Not currently used by Irix. 00092 * 00093 * #define EF_IA_64_ABI64 0x00000010 00094 * If the bit is set (1) then this is a 64bit ABI file 00095 * If the bit is clear (0) then this is a 32bit ABI file. 00096 * 00097 * #define EF_IA_64_ARCH 0xff000000 00098 * Reserved by Intel for architecture version identifier. 00099 * Intended to indicate the minimum level of the architecture 00100 * required by the object code. Currently, the only valid 00101 * value for this field is 0x00 00102 */ 00103 00104 /* 00105 * e_flags -- used by Irix on Intel 00106 */ 00107 #define EF_IA64_PIC 0x00000002 00108 /* Uses PIC calling conventions. This code can be part of 00109 * either an a.out or a dso. 00110 */ 00111 00112 #define EF_IA64_CPIC 0x00000004 00113 /* Uses CPIC (ie. Call PIC) calling conventions. 00114 * This is not currently used in Irix/ia64, but we'll reserve 00115 * the bit for future use. 00116 */ 00117 00118 #define EF_IA64_ARCH 0xff000000 00119 /* Reserved by Intel for architecture version identifier. 00120 * Intended to indicate the minimum level of the architecture 00121 * required by the object code. Currently, the only valid 00122 * value for this field is 0x00 00123 */ 00124 #define EF_IA64_ABI64 EF_IRIX_ABI64 /* 0x00000010 */ 00125 /* If the bit is set (1) then this is a 64bit ABI file 00126 * If the bit is clear (0) then this is a 32bit ABI file. 00127 * See explanation in /usr/include/sys/elf.h 00128 */ 00129 /* 00130 * Temporary version number for formats prior to formal release. 00131 * e_ident[EI_TVERSION] 00132 */ 00133 #define EI_TVERSION 15 00134 #define EV_T_CURRENT 1 00135 00136 /* ==================================================================== 00137 * 00138 * Program header 00139 * 00140 * ==================================================================== 00141 */ 00142 00143 00144 /* 00145 * Program header types defined by Intel 00146 */ 00147 00148 #define PT_IA64_ARCHEXT (PT_LOPROC + 0) 00149 /* This segment contains SHT_IA64_EXT sections. If this entry 00150 * is present, it must precede all entries of type PT_LOAD 00151 */ 00152 #define PT_IA64_UNWIND (PT_LOPROC + 1) 00153 /* This segment contains stack unwind tables. 00154 */ 00155 00156 /* 00157 * Program header types defined by Irix/ia64 00158 */ 00159 #define PT_IA64_OPTIONS (PT_LOPROC + 2) 00160 /* This segment contains the options section. By putting 00161 * the option section into a special segment, it makes it 00162 * easy for the kernel, exec, and/or rld to quickly find 00163 * the option section. 00164 */ 00165 00166 /* 00167 * special p_flags 00168 */ 00169 00170 #define PF_IA64_NORECOV 0x80000000 00171 /* This segment contains SHT_IA64_NORECOV sections 00172 */ 00173 /* #define PF_IA64_LOCAL 0x10000000 */ 00174 /* This segment is local to a thread. 00175 * 00176 * -------- WARNING: DO NOT USE PF_IA64_LOCAL ------------ 00177 * 00178 * Currently, it is only .data sections (and .bss ?) 00179 * that can marked as LOCAL. Because of this, it 00180 * seems reasonable that we should not use a p_flag but, 00181 * rather, should create new p_types for any local sections. 00182 * 00183 * The decision has not yet be made on this issue. 00184 * 00185 * TBD: Should PF_IA64_LOCAL be a flag or new p_type ? 00186 * 00187 */ 00188 00189 /* ==================================================================== 00190 * 00191 * Section Headers 00192 * 00193 * ==================================================================== 00194 */ 00195 00196 /* 00197 * sh_type -- defined by Intel but not used on Irix/ia64. 00198 * 00199 * #define SHT_IA64_EXT (SHT_LOPROC + 0) 00200 * #define SHT_IA64_UNWIND (SHT_LOPROC + 1) 00201 */ 00202 00203 /* 00204 * sh_type -- defined by Irix 00205 * 00206 * Section Types are common to all Irix binaries. 00207 * 00208 * Those with the name SHT_IA64_* are valid on IA64 00209 * 00210 * 00211 * 00212 */ 00213 00214 #define SHT_IA64_EXT SHT_IRIX_EXT 00215 #define SHT_IA64_UNWIND SHT_IRIX_UNWIND 00216 #define SHT_IA64_UNWIND_INFO SHT_IRIX_UNWIND_INFO 00217 #define SHT_IA64_PLT SHT_IRIX_PLT 00218 #define SHT_IA64_PLTOFF SHT_IRIX_PLTOFF 00219 00220 #define SHT_IA64_LIBLIST SHT_IRIX_LIBLIST 00221 #define SHT_IA64_MSYM SHT_IRIX_MSYM 00222 #define SHT_IA64_CONFLICT SHT_IRIX_CONFLICT 00223 #define SHT_IA64_IFACE SHT_IRIX_IFACE 00224 #define SHT_IA64_OPTIONS SHT_IRIX_OPTIONS 00225 #define SHT_IA64_SYMBOL_LIB SHT_IRIX_SYMBOL_LIB 00226 #define SHT_IA64_EVENTS SHT_IRIX_EVENTS 00227 #define SHT_IA64_DWARF SHT_IRIX_DWARF 00228 #define SHT_IA64_CONTENT SHT_IRIX_CONTENT 00229 #define SHT_IA64_PIXIE SHT_IRIX_PIXIE 00230 #define SHT_IA64_XLATE SHT_IRIX_XLATE 00231 #define SHT_IA64_XLATE_DEBUG SHT_IRIX_XLATE_DEBUG 00232 #define SHT_IA64_WHIRL SHT_IRIX_WHIRL 00233 00234 #define SHT_IA64_NUM SHT_IRIX_NUM /* obsolete. do not use */ 00235 00236 /* 00237 * sh_flags -- defined by Intel, but not used on Irix/ia64. 00238 * 00239 * #define SHF_IA_64_SHORT 0x10000000 00240 * #define SHF_IA_64_NORECOV 0x20000000 00241 */ 00242 00243 /* 00244 * sh_flags -- defined by Irix/ia64 00245 */ 00246 #define SHF_IA64_NORECOV 0x01000000 00247 #define SHF_IA64_SHORT SHF_IRIX_GPREL /* 0x10000000 */ 00248 00249 /* 00250 * special section names 00251 * 00252 * These are the section names for those sections 00253 * that exist in both Irix/mips and Irix/ia64 objects. 00254 */ 00255 #define IA64_LIBLIST ".liblist" 00256 #define IA64_MSYM ".msym" 00257 #define IA64_CONFLICT ".conflict" 00258 #define IA64_SDATA ".sdata" 00259 #define IA64_REL_SDATA ".rel.sdata" 00260 #define IA64_SRDATA ".srdata" 00261 #define IA64_RDATA ".rdata" 00262 #define IA64_SBSS ".sbss" 00263 #define IA64_LIT4 ".lit4" 00264 #define IA64_LIT8 ".lit8" 00265 #define IA64_LIT16 ".lit16" 00266 #define IA64_EVENTS ".IA64.events" 00267 #define IA64_INTERFACES ".IA64.interfaces" 00268 #define IA64_OPTIONS ".IA64.options" 00269 #define IA64_SYMBOL_LIB ".IA64.symlib" 00270 #define IA64_DEBUG_INFO ".debug_info" 00271 #define IA64_DEBUG_LINE ".debug_line" 00272 #define IA64_DEBUG_ABBREV ".debug_abbrev" 00273 #define IA64_DEBUG_FRAME ".debug_frame" 00274 #define IA64_DEBUG_ARANGES ".debug_aranges" 00275 #define IA64_DEBUG_PUBNAMES ".debug_pubnames" 00276 #define IA64_DEBUG_STR ".debug_str" 00277 #define IA64_DEBUG_FUNCNAMES ".debug_funcnames" 00278 #define IA64_DEBUG_TYPENAMES ".debug_typenames" 00279 #define IA64_DEBUG_VARNAMES ".debug_varnames" 00280 #define IA64_DEBUG_WEAKNAMES ".debug_weaknames" 00281 #define IA64_XLATE ".IA64.Xlate" 00282 #define IA64_XLATE_DEBUG ".IA64.Xlate_debug" 00283 #define IA64_WHIRL ".IA64.WHIRL" 00284 #define IA64_CONTENT ".IA64.content" 00285 00286 00287 #ifdef __osf__ 00288 #define IA64_PACKAGE ".package" 00289 #define IA64_PACKSYM ".packsym" 00290 #endif /* __osf__ */ 00291 00292 /* 00293 * special section names 00294 * 00295 * These are the section names for sections 00296 * defined by Intel that are unique to ia64. 00297 */ 00298 #define IA64_ARCHEXT ".IA_64.archext" 00299 #define IA64_PLTOFF ".IA_64.pltoff" 00300 #define IA64_UNWIND ".IA_64.unwind" 00301 #define IA64_UNWIND_INFO ".IA_64.unwind_info" 00302 00303 /* ==================================================================== 00304 * 00305 * Symbol table 00306 * 00307 * ==================================================================== 00308 */ 00309 00310 00311 /* ==================================================================== 00312 * 00313 * .IRIX.options Section 00314 * 00315 * [ IA64 specific information documented in this file. ] 00316 * 00317 * ==================================================================== 00318 */ 00319 00320 /* 00321 * Elf_Options.kind == ODK_IA64_REGINFO 00322 * 00323 * masks for Elf_Options.info 00324 */ 00325 typedef struct 00326 { 00327 Elf64_Addr ri_gp_value; /* initial value of gp */ 00328 00329 /* TBD: define rest of Elf_IA64_RegInfo record */ 00330 00331 } 00332 Elf_IA64_RegInfo; 00333 00334 00335 /* 00336 * Elf_Options.kind == ODK_IA64_EXCEPTIONS 00337 * 00338 * masks for Elf_Options.info 00339 */ 00340 00341 /* 00342 * Elf_Options.kind == ODK_IA64_HWAND 00343 * 00344 * masks for Elf_Options.info 00345 */ 00346 /* #define OHWA0_... */ 00347 00348 /* 00349 * Elf_Options.kind == ODK_IA64_HWAND 00350 * 00351 * masks for following Elf_Options.hwp_flags1 00352 */ 00353 /* #define OHWA1_... */ 00354 00355 /* 00356 * Elf_Options.kind == ODK_IA64_HWAND 00357 * 00358 * masks for following Elf_Options.hwp_flags2 00359 */ 00360 /* #define OHWA2_... */ 00361 00362 /* 00363 * Elf_Options.kind == ODK_IA64_HWOR 00364 * 00365 * masks for Elf_Options.info 00366 */ 00367 /* #define OHWO0_... */ 00368 00369 /* 00370 * Elf_Options.kind == ODK_IA64_HWOR 00371 * 00372 * masks for following Elf_Options.hwp_flags1 00373 */ 00374 /* #define OHWO1_... */ 00375 00376 /* 00377 * Elf_Options.kind == ODK_IA64_HWOR 00378 * 00379 * masks for following Elf_Options.hwp_flags2 00380 */ 00381 /* #define OHWO2_... */ 00382 00383 00384 /* ==================================================================== 00385 * 00386 * .rel, .rela Section 00387 * 00388 * ==================================================================== 00389 */ 00390 00391 /* 00392 *---------------------------------------------------------------------------- 00393 * The relocation types, defined below, use the following notations 00394 * in the description of their calculations/actions. 00395 * 00396 * A ADDEND -- The addend used to compute the value of 00397 * the relocatable field. 00398 * 00399 * BD BASE ADDRESS DIFFERENCE -- A constant that must be 00400 * applied to a virtual address. This constant represents 00401 * the difference between the run-time virtual address 00402 * and the link-time virtual address of a particular 00403 * segment. This segment is implied by the value of the 00404 * link-time virtual address. 00405 * 00406 * C CONTENTS -- The contents of the relocatable field. 00407 * 00408 * P PLACE -- The section offset or address of the storage 00409 * unit being relocated (computed using r_offset). If 00410 * the relocation applies to an instruction, this is the 00411 * address of the instruction bundle containing the 00412 * instruction. 00413 * 00414 * S SYMBOL -- The value of the symbol whose index 00415 * resides in the relocation entry. 00416 * 00417 * @gprel(expr) GP RELATIVE DISPLACEMENT -- computes the 00418 * difference between the effective address specified 00419 * by 'expr' and the value of $GP. 00420 * 00421 * @ltoff(expr) GOT ENTRY -- requests creation of a GOT entry 00422 * that will hold the full value of the effective address 00423 * and computes the gp-relative displacement to the 00424 * GOT entry. 00425 * 00426 * @pltoff(symbol) PLT ENTRY -- requests creation of a function 00427 * descriptor entry for the given symbol and computes the 00428 * gp-relative displace to the function descriptor entry. 00429 * (function descriptors are kept in the GOT) 00430 * 00431 * @segrel(expr) SEGMENT RELATIVE -- computes a segment relative 00432 * displacement: the difference between the effective 00433 * address of 'expr' and address of the (output) segment 00434 * containing the relocatable object. This is designed 00435 * for data structures in read-only memory that contain 00436 * pointers. The relocatable object and the effective 00437 * address must be contained within the same segment. 00438 * Applications using these 'pointers' must be aware that 00439 * they are segment-relative and must adjust their 00440 * values at run-time, using the load address of the 00441 * containing segment. No output relocations are 00442 * generated for @segrel's. 00443 * 00444 * @secrel(expr) SECTION RELATIVE -- computes a section relative 00445 * displacement: the difference between the effective 00446 * address of 'expr' and address of the (output) section 00447 * containing the effective address. This relocation 00448 * type is designed for references from one 00449 * non-allocatable section to another. Applications using 00450 * these values must be aware that the are section 00451 * relative and must adjust their values at run-time, 00452 * using the adjusted address of the target section. 00453 * No output relocations are generated for @secrel's. 00454 * 00455 * @fptr(symbol) FUNCTION PTR -- evaluates to the address of 00456 * the "official" function descriptor for the given 00457 * symbol. 00458 * 00459 * 00460 * NOTE 1: Relocation type values have been chosen so that the 00461 * expression type can be easily extracted by masking 00462 * off the lower three or four bits, and the data or 00463 * instruction format can be determined in most cases 00464 * by looking only at the lower four bits. 00465 * 00466 * NOTE 2: These relocations appear only in relocatable objects. 00467 * They behave identically their R_IA_64_DIR* 00468 * counterparts, with the exception that no output 00469 * relocations are generated. The runtime consumer 00470 * of the information is expected to relocate these 00471 * values at runtime. 00472 * 00473 * NOTE 3: These relocations appear only in dynamic executables 00474 * and shared objects. They instruction RLD to 00475 * initialize the corresponding function descriptor 00476 * with the address and the GP value of the 00477 * referenced function. 00478 * 00479 * 00480 *---------------------------------------------------------------------------- 00481 */ 00482 00483 enum { 00484 00485 /*---------------------------------------------------------------------------- 00486 * Relocation TYPE = value Field Calculation 00487 *---------------------------------------------------------------------------- 00488 */ 00489 00490 R_IA_64_NONE = 0x00, /* None None */ 00491 00492 /* unused: 0x01 .. 0x20 */ 00493 00494 R_IA_64_IMM14 = 0x21, /* instr: immediate14 S+A */ 00495 R_IA_64_IMM22 = 0x22, /* instr: immediate22 S+A */ 00496 R_IA_64_IMM64 = 0x23, /* instr: immediate64 S+A */ 00497 R_IA_64_DIR32MSB = 0x24, /* word32 MSB S+A */ 00498 R_IA_64_DIR32LSB = 0x25, /* word32 LSB S+A */ 00499 R_IA_64_DIR64MSB = 0x26, /* word64 MSB S+A */ 00500 R_IA_64_DIR64LSB = 0x27, /* word64 LSB S+A */ 00501 00502 /* unused: 0x28 .. 0x29 */ 00503 00504 R_IA_64_GPREL22 = 0x2a, /* instr: immediate22 @gprel(S+A) */ 00505 R_IA_64_GPREL64I = 0x2b, /* instr: immediate64 @gprel(S+A) */ 00506 00507 /* unused: 0x2c .. 0x2d */ 00508 00509 R_IA_64_GPREL64MSB = 0x2e, /* word64 MSB @gprel(S+A) */ 00510 R_IA_64_GPREL64LSB = 0x2f, /* word64 LSB @gprel(S+A) */ 00511 00512 /* unused: 0x30 .. 0x31 */ 00513 00514 R_IA_64_LTOFF22 = 0x32, /* instr: immediate22 @ltoff(S+A) */ 00515 R_IA_64_LTOFF64I = 0x33, /* instr: immediate64 @ltoff(S+A) */ 00516 00517 /* unused: 0x34 .. 0x39 */ 00518 00519 R_IA_64_PLTOFF22 = 0x3a, /* instr: immediate22 @pltoff(S+A) */ 00520 R_IA_64_PLTOFF64I = 0x3b, /* instr: immediate64 @pltoff(S+A) */ 00521 00522 /* unused: 0x3c .. 0x3d */ 00523 00524 R_IA_64_PLTOFF64MSB = 0x3e, /* word64 MSB @pltoff(S+A) */ 00525 R_IA_64_PLTOFF64LSB = 0x3f, /* wordL4 MSB @pltoff(S+A) */ 00526 00527 /* unused: 0x40 .. 0x42 */ 00528 00529 R_IA_64_FPTR64I = 0x43, /* instr: immediate64 @fptr(S+A) */ 00530 R_IA_64_FPTR32MSB = 0x44, /* word32 MSB @fptr(S+A) */ 00531 R_IA_64_FPTR32LSB = 0x45, /* word32 LSB @fptr(S+A) */ 00532 R_IA_64_FPTR64MSB = 0x46, /* word64 MSB @fptr(S+A) */ 00533 R_IA_64_FPTR64LSB = 0x47, /* word64 LSB @fptr(S+A) */ 00534 00535 /* unused: 0x48 .. 0x48 */ 00536 00537 R_IA_64_PCREL21B = 0x49, /* instr: imm21 (form1) S+A-P */ 00538 R_IA_64_PCREL21M = 0x4a, /* instr: imm21 (form2) S+A-P */ 00539 R_IA_64_PCREL21F = 0x4b, /* instr: imm21 (form3) S+A-P */ 00540 R_IA_64_PCREL32MSB = 0x4c, /* word32 MSB S+A-P */ 00541 R_IA_64_PCREL32LSB = 0x4d, /* word32 LSB S+A-P */ 00542 R_IA_64_PCREL64MSB = 0x4e, /* word64 MSB S+A-P */ 00543 R_IA_64_PCREL64LSB = 0x4f, /* word64 LSB S+A-P */ 00544 00545 /* unused: 0x50 .. 0x51 */ 00546 00547 R_IA_64_LTOFF_FPTR22 = 0x52,/* instr: immediate22 @ltoff(@fptr(S+A)) */ 00548 R_IA_64_LTOFF_FPTR64I= 0x53,/* instr: immediate64 @ltoff(@fptr(S+A)) */ 00549 00550 /* unused: 0x54 .. 0x5b */ 00551 00552 R_IA_64_SEGREL32MSB = 0x5c, /* word32 MSB @segrel(S+A) */ 00553 R_IA_64_SEGREL32LSB = 0x5d, /* word32 LSB @segrel(S+A) */ 00554 R_IA_64_SEGREL64MSB = 0x5e, /* word64 MSB @segrel(S+A) */ 00555 R_IA_64_SEGREL64LSB = 0x5f, /* word64 LSB @segrel(S+A) */ 00556 00557 /* unused: 0x60 .. 0x63 */ 00558 00559 R_IA_64_SECREL32MSB = 0x64, /* word32 MSB @secrel(S+A) */ 00560 R_IA_64_SECREL32LSB = 0x65, /* word32 LSB @secrel(S+A) */ 00561 R_IA_64_SECREL64MSB = 0x66, /* word64 MSB @secrel(S+A) */ 00562 R_IA_64_SECREL64LSB = 0x67, /* word64 LSB @secrel(S+A) */ 00563 00564 /* unused: 0x68 .. 0x6b */ 00565 00566 R_IA_64_REL32MSB = 0x6c, /* word32 MSB BD+C */ 00567 R_IA_64_REL32LSB = 0x6d, /* word32 LSB BD+C */ 00568 R_IA_64_REL64MSB = 0x6e, /* word64 MSB BD+C */ 00569 R_IA_64_REL64LSB = 0x6f, /* word64 LSB BD+C */ 00570 R_IA_64_LTV32MSB = 0x70, /* word32 MSB S+A [note 2] */ 00571 R_IA_64_LTV32LSB = 0x71, /* word32 LSB S+A [note 2] */ 00572 R_IA_64_LTV64MSB = 0x72, /* word64 MSB S+A [note 2] */ 00573 R_IA_64_LTV64LSB = 0x73, /* word64 LSB S+A [note 2] */ 00574 00575 /* unused: 0x74 .. 0x7f */ 00576 00577 R_IA_64_IPLTMSB = 0x80, /* func desc MSB [note 3] */ 00578 R_IA_64_IPLTLSB = 0x81, /* func desc LSB [note 3] */ 00579 00580 /* unused: 0x82 .. 0xff */ 00581 00582 R_IA_64_END_ = 0x82 /* R_IA_64_END_ is not a relocation type. 00583 * It marks the end of the list of types. 00584 */ 00585 }; 00586 00587 00588 /* ==================================================================== 00589 * 00590 * .IA64.plt 00591 * 00592 * sh_type: SHT_IA64_PLT 00593 * sh_link: ? 00594 * sh_info: ? 00595 * attributes: SHF_ALLOC, SHF_IA64_NOSTRIP 00596 * 00597 * 00598 * --- WARNING ---- WARNING ---- WARNING ---- WARNING ---- WARNING ---- 00599 * 00600 * TBD: The IA64.plt section has not yet been defined. 00601 * 00602 * ==================================================================== 00603 */ 00604 /* ==================================================================== 00605 * 00606 * .IA64.content Section 00607 * 00608 * sh_type: SHT_IA64_CONTENT 00609 * sh_link: section header index of section classified 00610 * sh_info: 0 00611 * attributes: SHF_ALLOC, SHF_IA64_NOSTRIP 00612 * 00613 * 00614 * --- WARNING ---- WARNING ---- WARNING ---- WARNING ---- WARNING ---- 00615 * 00616 * TBD: The IA64.content section has not yet been defined. 00617 * TBD: Define Elf_IA64_Content_Kind 00618 * 00619 * ==================================================================== 00620 */ 00621 #if (defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)) 00622 typedef enum { 00623 CK_IA64_NULL = 0x00 /* no valid information */ 00624 } Elf_IA64_Content_Kind; 00625 00626 #endif 00627 00628 00629 /* ==================================================================== 00630 * 00631 * .IA64.events Section 00632 * 00633 * sh_type: SHT_IA64_EVENTS 00634 * sh_link: section header index of section whose events tracked 00635 * sh_info: section header index of associated interface section 00636 * attributes: SHF_ALLOC, SHF_IRIX_NOSTRIP 00637 * 00638 * 00639 * --- WARNING ---- WARNING ---- WARNING ---- WARNING ---- WARNING ---- 00640 * 00641 * TBD: The IA64.events section has not yet been defined. 00642 * TBD: define Elf_IA64_Event_Kind 00643 * 00644 * ==================================================================== 00645 */ 00646 typedef enum { 00647 EK_IA64_NULL = 0x00 /* no valid information */ 00648 } Elf_IA64_Event_Kind; 00649 00650 /* ==================================================================== 00651 * 00652 * .dynamic Section 00653 * 00654 * --- WARNING ---- WARNING ---- WARNING ---- WARNING ---- WARNING ---- 00655 * 00656 * TBD: The .dynamic section has not yet been prepared for 00657 * use in both Irix/mips and Irix/ia64 00658 * 00659 * I believe that most of the tags will be the same in both 00660 * Irix/mips and Irix/ia64, but it still needs to be reviewed. 00661 * 00662 * For now, we'll document them only in mips/elf.h 00663 * ==================================================================== 00664 */ 00665 00666 #endif /* __SYS_IA64_ELF_H__ */