Open64 (mfef90, whirl2f, and IR tools)  TAG: version-openad; SVN changeset: 916
objlist.h
Go to the documentation of this file.
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 __OBJLIST_H
00037 #define __OBJLIST_H
00038 /* $Header: /m_home/m_utkej/Argonne/cvs2svn/cvs/Open64/osprey1.0/include/objlist.h,v 1.1.1.1 2002-05-22 20:09:05 dsystem Exp $ */
00039 
00040 typedef struct {
00041         Elf32_Word      oi_magic; /* to distinguish from old obj struct */
00042         Elf32_Word      oi_size; /* size in bytes of this struct */
00043         Elf32_Addr      oi_next; /* next record in doubly-linked list */
00044         Elf32_Addr      oi_prev; /* previous record */
00045         Elf32_Addr      oi_ehdr; /* address of ELF header in memory */
00046         Elf32_Addr      oi_orig_ehdr;/* QS address of ELF header */
00047         Elf32_Addr      oi_pathname; /* pathname as mapped by rld */
00048         Elf32_Word      oi_pathname_len; /* strlen(pathname) */
00049 } Elf32_Obj_Info;
00050 
00051 typedef struct {
00052         Elf64_Word      oi_magic; /* to distinguish from old obj struct */
00053         Elf64_Word      oi_size; /* size in bytes of this struct */
00054         Elf64_Addr      oi_next; /* next record in doubly-linked list */
00055         Elf64_Addr      oi_prev; /* previous record */
00056         Elf64_Addr      oi_ehdr; /* address of ELF header in memory */
00057         Elf64_Addr      oi_orig_ehdr;/* QS address of ELF header */
00058         Elf64_Addr      oi_pathname; /* pathname as mapped by rld */
00059         Elf64_Word      oi_pathname_len; /* strlen(pathname) */
00060 } Elf64_Obj_Info;
00061 
00062 /* We want dbx, pcs and libexc to be able to tell the new
00063  * obj struct from the old.  Therefore, since the old one
00064  * has a pointer in the first 4 bytes, we ensure that the
00065  * first 4 bytes of the new one cannot be an address.
00066  * First and foremost, this is accomplished by setting
00067  * the sign bit, since that indicates kernel space.  I believe
00068  * that any application will have to know that it is in
00069  * 64 bit mode before it gets this far.
00070  */
00071 #define NEW_OBJ_INFO_MAGIC 0xffffffff
00072 #endif
00073 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines