diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ldlang.c | 9 | ||||
-rw-r--r-- | ld/ldsym.c | 22 | ||||
-rw-r--r-- | ld/ldsym.h | 3 |
3 files changed, 28 insertions, 6 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c index d6bfe28..173d181 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -19,7 +19,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* $Id$ * * $Log$ - * Revision 1.3 1991/03/27 00:52:49 steve + * Revision 1.4 1991/03/27 02:29:22 steve + * *** empty log message *** + * + * Revision 1.3 1991/03/27 00:52:49 steve * *** empty log message *** * * Revision 1.2 1991/03/22 23:02:34 steve @@ -2170,7 +2173,7 @@ lang_abs_symbol_at_beginning_of(section, name) char *section; char *name; { - if (ldsym_get_soft(name) == (asymbol *)NULL) { + if (ldsym_undefined(name)) { extern bfd *output_bfd; extern asymbol *create_symbol(); asection *s = bfd_get_section_by_name(output_bfd, section); @@ -2198,7 +2201,7 @@ lang_abs_symbol_at_end_of(section, name) char *section; char *name; { - if (ldsym_get_soft(name) == (asymbol *)NULL) { + if (ldsym_undefined(name)){ extern bfd *output_bfd; extern asymbol *create_symbol(); asection *s = bfd_get_section_by_name(output_bfd, section); @@ -20,8 +20,11 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ * $Id$ * * $Log$ - * Revision 1.2 1991/03/22 23:02:38 steve - * Brought up to sync with Intel again. + * Revision 1.3 1991/03/27 02:29:21 steve + * *** empty log message *** + * + * Revision 1.2 1991/03/22 23:02:38 steve + * Brought up to sync with Intel again. * * Revision 1.1 1991/03/13 00:48:32 chrisb * Initial revision @@ -450,3 +453,18 @@ ldsym_write() bfd_set_symtab(output_bfd, symbol_table, (unsigned)( tablep - symbol_table)); } } + +/* +return true if the supplied symbol name is not in the +linker symbol table +*/ +boolean +ldsym_undefined(sym) +char *sym; +{ + ldsym_type *from_table = ldsym_get_soft(sym); + if (from_table != (ldsym_type *)NULL) { + if (from_table->sdefs_chain != (asymbol **)NULL) return false; + } + return true; +} @@ -51,9 +51,10 @@ PROTO(ldsym_type *, ldsym_get, (char *)); PROTO(ldsym_type *, ldsym_get_soft, (char *)); PROTO(void, ldsym_print_symbol_table,(void)); PROTO(void, ldsym_write, (void)); - +PROTO(boolean, ldsym_undefined, (char *)); #define FOR_EACH_LDSYM(x) \ extern ldsym_type *symbol_head; \ ldsym_type *x; \ for (x = symbol_head; x != (ldsym_type *)NULL; x = x->next) + |