X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Fgenlink.h;h=b6bf7a71956cf894f17ce6405b5d2e5b8abc8e14;hb=708e4b9f189a86d542519b35e36e3f087b36b524;hp=fed0849847e213ed64445fe588b47a8fa9cc24ba;hpb=e98fe4f7b54cbdf29aef9287bbb1bea8801dd05a;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/genlink.h b/bfd/genlink.h index fed0849847..b6bf7a7195 100644 --- a/bfd/genlink.h +++ b/bfd/genlink.h @@ -1,22 +1,23 @@ /* genlink.h -- interface to the BFD generic linker - Copyright 1993 Free Software Foundation, Inc. + Copyright (C) 1993-2019 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. -This file is part of BFD, the Binary File Descriptor library. + This file is part of BFD, the Binary File Descriptor library. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #ifndef GENLINK_H #define GENLINK_H @@ -34,14 +35,15 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* The generic linker uses a hash table which is a derived class of the standard linker hash table, just as the other backend specific linkers do. Do not confuse the generic linker hash table with the - standard BFD linker hash table it is built upon. The generic - linker hash table is onl referred to in this file. */ + standard BFD linker hash table it is built upon. */ /* Generic linker hash table entries. */ struct generic_link_hash_entry { struct bfd_link_hash_entry root; + /* Whether this symbol has been written out. */ + bfd_boolean written; /* Symbol from input BFD. */ asymbol *sym; }; @@ -53,18 +55,18 @@ struct generic_link_hash_table struct bfd_link_hash_table root; }; -/* Look up an entry in an generic link hash table. */ +/* Look up an entry in a generic link hash table. */ #define _bfd_generic_link_hash_lookup(table, string, create, copy, follow) \ ((struct generic_link_hash_entry *) \ bfd_link_hash_lookup (&(table)->root, (string), (create), (copy), (follow))) -/* Traverse an generic link hash table. */ +/* Traverse a generic link hash table. */ #define _bfd_generic_link_hash_traverse(table, func, info) \ (bfd_link_hash_traverse \ (&(table)->root, \ - (boolean (*) PARAMS ((struct bfd_link_hash_entry *, PTR))) (func), \ + (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \ (info))) /* Get the generic link hash table from the info structure. This is @@ -73,11 +75,16 @@ struct generic_link_hash_table #define _bfd_generic_hash_table(p) \ ((struct generic_link_hash_table *) ((p)->hash)) +/* The generic linker reads in the asymbol structures for an input BFD + and keeps them in the outsymbol and symcount fields. */ + +#define _bfd_generic_link_get_symbols(abfd) ((abfd)->outsymbols) +#define _bfd_generic_link_get_symcount(abfd) ((abfd)->symcount) + /* Add the symbols of input_bfd to the symbols being built for output_bfd. */ -extern boolean _bfd_generic_link_output_symbols - PARAMS ((bfd *output_bfd, bfd *input_bfd, struct bfd_link_info *, - size_t *psymalloc)); +extern bfd_boolean _bfd_generic_link_output_symbols + (bfd *, bfd *, struct bfd_link_info *, size_t *); /* This structure is used to pass information to _bfd_generic_link_write_global_symbol, which may be called via @@ -85,6 +92,7 @@ extern boolean _bfd_generic_link_output_symbols struct generic_write_global_symbol_info { + struct bfd_link_info *info; bfd *output_bfd; size_t *psymalloc; }; @@ -92,12 +100,11 @@ struct generic_write_global_symbol_info /* Write out a single global symbol. This is expected to be called via _bfd_generic_link_hash_traverse. The second argument must actually be a struct generic_write_global_symbol_info *. */ -extern boolean _bfd_generic_link_write_global_symbol - PARAMS ((struct generic_link_hash_entry *, PTR)); +extern bfd_boolean _bfd_generic_link_write_global_symbol + (struct generic_link_hash_entry *, void *); -/* Handle a bfd_indirect_link_order. */ -extern boolean _bfd_generic_indirect_link_order - PARAMS ((bfd *, struct bfd_link_info *, asection *, - struct bfd_link_order *)); +/* Generic link hash table entry creation routine. */ +struct bfd_hash_entry *_bfd_generic_link_hash_newfunc + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); #endif