diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-03-18 00:47:04 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-03-18 00:47:04 +0000 |
commit | 508539ab8b346a62252cac5cb6feefe99b4f0661 (patch) | |
tree | ea060d3c33a7e3381f1e5715f41080f404532caa /bfd/coff-rs6000.c | |
parent | cadddcea29c38d66d1228ba8b7f699dba216e7b0 (diff) | |
download | gdb-508539ab8b346a62252cac5cb6feefe99b4f0661.zip gdb-508539ab8b346a62252cac5cb6feefe99b4f0661.tar.gz gdb-508539ab8b346a62252cac5cb6feefe99b4f0661.tar.bz2 |
* bfd-in.h: Don't include obstack.h.
(struct bfd_hash_table): Change memory field to PTR.
* bfd.c (struct _bfd): Change memory field to PTR.
* bfd-in2.h: Rebuild.
* libbfd-in.h (bfd_release): Declare as function, don't define as
macro.
* libbfd.h: Rebuild.
* opncls.c: Include "objalloc.h" rather than "obstack.h". Use
objalloc routines rather than obstack routines.
(obstack_chunk_alloc, obstack_chunk_free): Don't define.
(getpagesize): Don't define.
(_bfd_new_bfd): Don't set _bfd_chunksize.
(bfd_openr): Free new bfd and objalloc on failure.
(bfd_fdopenr, bfd_openstreamr, bfd_openw): Likewise.
(bfd_alloc_size): Remove.
(bfd_release): New function.
* hash.c: Include "objalloc.h" rather than "obstack.h". Use
objalloc routines rather than obstack routines.
(obstack_chunk_alloc, obstack_chunk_free): Don't define.
* ecofflink.c: Include "objalloc.h" rather than "obstack.h". Use
objalloc routines rather than obstack routines.
(obstack_chunk_alloc, obstack_chunk_free): Don't define.
(struct accumulate): Change memory to struct objalloc *.
* liboasys.h (oasys_data_type): Remove oasys_obstack field.
* dep-in.sed: Don't remove obstack.h from dependency list.
* Makefile.in: Rebuild dependencies.
(BFD_H_DEPS): Remove obstack.h.
(install): Don't install obstack.h.
* Many files: Don't include "obstack.h".
* VERSION: Bump.
Diffstat (limited to 'bfd/coff-rs6000.c')
-rw-r--r-- | bfd/coff-rs6000.c | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c index 8389060..ba879d2 100644 --- a/bfd/coff-rs6000.c +++ b/bfd/coff-rs6000.c @@ -1,5 +1,5 @@ /* BFD back-end for IBM RS/6000 "XCOFF" files. - Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. + Copyright 1990, 91, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. FIXME: Can someone provide a transliteration of this name into ASCII? Using the following chars caused a compiler warning on HIUX (so I replaced them with octal escapes), and isn't useful without an understanding of what @@ -31,7 +31,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" #include "sysdep.h" #include "libbfd.h" -#include "obstack.h" #include "coff/internal.h" #include "coff/rs6000.h" #include "libcoff.h" @@ -40,6 +39,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static boolean xcoff_mkobject PARAMS ((bfd *)); static boolean xcoff_copy_private_bfd_data PARAMS ((bfd *, bfd *)); +static boolean xcoff_is_local_label_name PARAMS ((bfd *, const char *)); static void xcoff_rtype2howto PARAMS ((arelent *, struct internal_reloc *)); static reloc_howto_type *xcoff_reloc_type_lookup @@ -94,6 +94,7 @@ xcoff_copy_private_bfd_data (ibfd, obfd) bfd *obfd; { struct xcoff_tdata *ix, *ox; + asection *sec; if (ibfd->xvec != obfd->xvec) return true; @@ -101,14 +102,26 @@ xcoff_copy_private_bfd_data (ibfd, obfd) ox = xcoff_data (obfd); ox->full_aouthdr = ix->full_aouthdr; ox->toc = ix->toc; - if (ix->toc_section == NULL) - ox->toc_section = NULL; + if (ix->sntoc == 0) + ox->sntoc = 0; else - ox->toc_section = ix->toc_section->output_section; - if (ix->entry_section == NULL) - ox->entry_section = NULL; + { + sec = coff_section_from_bfd_index (ibfd, ix->sntoc); + if (sec == NULL) + ox->sntoc = 0; + else + ox->sntoc = sec->output_section->target_index; + } + if (ix->snentry == 0) + ox->snentry = 0; else - ox->entry_section = ix->entry_section->output_section; + { + sec = coff_section_from_bfd_index (ibfd, ix->snentry); + if (sec == NULL) + ox->snentry = 0; + else + ox->snentry = sec->output_section->target_index; + } ox->text_align_power = ix->text_align_power; ox->data_align_power = ix->data_align_power; ox->modtype = ix->modtype; @@ -117,6 +130,19 @@ xcoff_copy_private_bfd_data (ibfd, obfd) ox->maxstack = ix->maxstack; return true; } + +/* I don't think XCOFF really has a notion of local labels based on + name. This will mean that ld -X doesn't actually strip anything. + The AIX native linker does not have a -X option, and it ignores the + -x option. */ + +static boolean +xcoff_is_local_label_name (abfd, name) + bfd *abfd; + const char *name; +{ + return false; +} /* The XCOFF reloc table. Actually, XCOFF relocations specify the bitsize and whether they are signed or not, along with a @@ -528,6 +554,7 @@ xcoff_reloc_type_lookup (abfd, code) #define coff_mkobject xcoff_mkobject #define coff_bfd_copy_private_bfd_data xcoff_copy_private_bfd_data +#define coff_bfd_is_local_label_name xcoff_is_local_label_name #define coff_bfd_reloc_type_lookup xcoff_reloc_type_lookup #define coff_relocate_section _bfd_ppc_xcoff_relocate_section @@ -1384,7 +1411,7 @@ const bfd_target BFD_JUMP_TABLE_RELOCS (coff), BFD_JUMP_TABLE_WRITE (coff), BFD_JUMP_TABLE_LINK (_bfd_xcoff), - BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + BFD_JUMP_TABLE_DYNAMIC (_bfd_xcoff), COFF_SWAP_TABLE, }; |