From 9d87310aac56eca31c4a481a478c241b79bb9447 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Thu, 29 Jun 2000 23:04:29 +0000 Subject: [PATCH] * config/obj-aout.c (obj_aout_type): Do not ignore for undefined symbols; create them. --- gas/ChangeLog | 5 +++++ gas/config/obj-aout.c | 27 ++++++++++++--------------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index a0398577f5..0a8aa03585 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +Thu Jun 29 21:30:00 2000 Hans-Peter Nilsson + + * config/obj-aout.c (obj_aout_type): Do not ignore for undefined + symbols; create them. + 2000-06-29 Mark Elbrecht * write.c (set_segment_vma): New: Set vma and lma for a segment. diff --git a/gas/config/obj-aout.c b/gas/config/obj-aout.c index 16090776b5..2c7f5dfd3a 100644 --- a/gas/config/obj-aout.c +++ b/gas/config/obj-aout.c @@ -396,7 +396,7 @@ obj_aout_weak (ignore) /* Handle .type. On {Net,Open}BSD, this is used to set the n_other field, which is then apparently used when doing dynamic linking. Older - versions ogas ignored the .type pseudo-op, so we also ignore it if + versions of gas ignored the .type pseudo-op, so we also ignore it if we can't parse it. */ static void @@ -409,31 +409,28 @@ obj_aout_type (ignore) name = input_line_pointer; c = get_symbol_end (); - sym = symbol_find (name); + sym = symbol_find_or_make (name); *input_line_pointer = c; - if (sym != NULL) + SKIP_WHITESPACE (); + if (*input_line_pointer == ',') { + ++input_line_pointer; SKIP_WHITESPACE (); - if (*input_line_pointer == ',') + if (*input_line_pointer == '@') { ++input_line_pointer; - SKIP_WHITESPACE (); - if (*input_line_pointer == '@') - { - ++input_line_pointer; - if (strncmp (input_line_pointer, "object", 6) == 0) + if (strncmp (input_line_pointer, "object", 6) == 0) #ifdef BFD_ASSEMBLER - aout_symbol (symbol_get_bfdsym (sym))->other = 1; + aout_symbol (symbol_get_bfdsym (sym))->other = 1; #else - S_SET_OTHER (sym, 1); + S_SET_OTHER (sym, 1); #endif - else if (strncmp (input_line_pointer, "function", 8) == 0) + else if (strncmp (input_line_pointer, "function", 8) == 0) #ifdef BFD_ASSEMBLER - aout_symbol (symbol_get_bfdsym (sym))->other = 2; + aout_symbol (symbol_get_bfdsym (sym))->other = 2; #else - S_SET_OTHER (sym, 2); + S_SET_OTHER (sym, 2); #endif - } } }