119370Spst/* Data structures for RS/6000 shared libraries, for GDB.
298944Sobrien   Copyright 1991, 1992, 1993, 1994, 1996, 1997, 2000
398944Sobrien   Free Software Foundation, Inc.
419370Spst
598944Sobrien   This file is part of GDB.
619370Spst
798944Sobrien   This program is free software; you can redistribute it and/or modify
898944Sobrien   it under the terms of the GNU General Public License as published by
998944Sobrien   the Free Software Foundation; either version 2 of the License, or
1098944Sobrien   (at your option) any later version.
1119370Spst
1298944Sobrien   This program is distributed in the hope that it will be useful,
1398944Sobrien   but WITHOUT ANY WARRANTY; without even the implied warranty of
1498944Sobrien   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1598944Sobrien   GNU General Public License for more details.
1619370Spst
1798944Sobrien   You should have received a copy of the GNU General Public License
1898944Sobrien   along with this program; if not, write to the Free Software
1998944Sobrien   Foundation, Inc., 59 Temple Place - Suite 330,
2098944Sobrien   Boston, MA 02111-1307, USA.  */
2119370Spst
2219370Spst/* The vmap struct is used to describe the virtual address space of
2319370Spst   the target we are manipulating.  The first entry is always the "exec"
2419370Spst   file.  Subsequent entries correspond to other objects that are
2519370Spst   mapped into the address space of a process created from the "exec" file.
2619370Spst   These are either in response to exec()ing the file, in which case all
2719370Spst   shared libraries are loaded, or a "load" system call, followed by the
2819370Spst   user's issuance of a "load" command.  */
2919370Spst
3098944Sobrien#ifndef XCOFFSOLIB_H
3198944Sobrien#define XCOFFSOLIB_H
3219370Spst
3398944Sobrienstruct vmap
3498944Sobrien  {
3598944Sobrien    struct vmap *nxt;		/* ptr to next in chain                 */
3698944Sobrien    bfd *bfd;			/* BFD for mappable object library      */
3798944Sobrien    char *name;			/* ptr to object file name              */
3898944Sobrien    char *member;		/* ptr to member name                   */
3998944Sobrien    CORE_ADDR tstart;		/* virtual addr where member is mapped  */
4098944Sobrien    CORE_ADDR tend;		/* virtual upper bound of member        */
4198944Sobrien    CORE_ADDR tvma;		/* virtual addr of text section in object file */
4298944Sobrien    CORE_ADDR toffs;		/* offset of text section in object file */
4398944Sobrien    CORE_ADDR dstart;		/* virtual address of data start        */
4498944Sobrien    CORE_ADDR dend;		/* virtual address of data end          */
4598944Sobrien    CORE_ADDR dvma;		/* virtual addr of data section in object file */
4619370Spst
4798944Sobrien    /* This is NULL for the exec-file.  */
4898944Sobrien    struct objfile *objfile;
4919370Spst
5098944Sobrien    unsigned loaded:1;		/* True if symbols are loaded           */
5198944Sobrien    unsigned padding:15;
5298944Sobrien  };
5319370Spst
5498944Sobrien
5598944Sobrienstruct vmap_and_bfd
5698944Sobrien  {
5798944Sobrien    bfd *pbfd;
5898944Sobrien    struct vmap *pvmap;
5998944Sobrien  };
6098944Sobrien
6119370Spstextern struct vmap *vmap;
6219370Spst
6398944Sobrien/* Add symbols for a vmap.  */
6498944Sobrienextern int vmap_add_symbols (struct vmap *vp);
6519370Spst
6698944Sobrien#endif
67