+2008-09-30 Wesley W. Terpstra <wesley@terpstra.ca>
+ Nick Clifton <nickc@redhat.com>
+
+ * coffgen.c (coff_write_symbols): Check to see if a symbol's flags
+ do not match it class and if necessary update the class.
+ (null_error_handler): New function. Suppresses the generation of
+ bfd error messages.
+ * coff64-rs6000.c (bfd_xcoff_backend_data): Update comment.
+
2008-09-30 Alan Modra <amodra@bigpond.net.au>
* Makefile.am: Run "make dep-am".
coff_print_aux,
dummy_reloc16_extra_cases,
dummy_reloc16_estimate,
- NULL, /* bfd_coff_sym_is_global */
+ NULL, /* bfd_coff_symbol_classification */
coff_compute_section_file_positions,
NULL, /* _bfd_coff_start_final_link */
xcoff64_ppc_relocate_section,
debug_string_size_p);
}
+static void
+null_error_handler (const char * fmt ATTRIBUTE_UNUSED, ...)
+{
+}
+
/* Write out the COFF symbols. */
bfd_boolean
}
else
{
+ if (coff_backend_info (abfd)->_bfd_coff_classify_symbol != NULL)
+ {
+ bfd_error_handler_type current_error_handler;
+ enum coff_symbol_classification class;
+ unsigned char *n_sclass;
+
+ /* Suppress error reporting by bfd_coff_classify_symbol.
+ Error messages can be generated when we are processing a local
+ symbol which has no associated section and we do not have to
+ worry about this, all we need to know is that it is local. */
+ current_error_handler = bfd_set_error_handler (null_error_handler);
+ class = bfd_coff_classify_symbol (abfd, &c_symbol->native->u.syment);
+ (void) bfd_set_error_handler (current_error_handler);
+
+ n_sclass = &c_symbol->native->u.syment.n_sclass;
+
+ /* If the symbol class has been changed (eg objcopy/ld script/etc)
+ we cannot retain the existing sclass from the original symbol.
+ Weak symbols only have one valid sclass, so just set it always.
+ If it is not local class and should be, set it C_STAT.
+ If it is global and not classified as global, or if it is
+ weak (which is also classified as global), set it C_EXT. */
+
+ if (symbol->flags & BSF_WEAK)
+ *n_sclass = obj_pe (abfd) ? C_NT_WEAK : C_WEAKEXT;
+ else if (symbol->flags & BSF_LOCAL && class != COFF_SYMBOL_LOCAL)
+ *n_sclass = C_STAT;
+ else if (symbol->flags & BSF_GLOBAL
+ && (class != COFF_SYMBOL_GLOBAL
+#ifdef COFF_WITH_PE
+ || *n_sclass == C_NT_WEAK
+#endif
+ || *n_sclass == C_WEAKEXT))
+ c_symbol->native->u.syment.n_sclass = C_EXT;
+ }
+
if (!coff_write_native_symbol (abfd, c_symbol, &written,
&string_size, &debug_string_section,
&debug_string_size))
+2008-09-30 Wesley W. Terpstra <wesley@terpstra.ca>
+ Nick Clifton <nickc@redhat.com>
+
+ * config/tc-tic4x.c (tic4x_globl): Call S_SET_EXTERNAL as well as
+ S_SET_STORAGE_CLASS.
+
+2008-09-30 Wesley W. Terpstra <wesley@terpstra.ca>
+ Nick Clifton <nickc@redhat.com>
+
+ * coffgen.c (coff_write_symbols): Check to see if a symbol's flags
+ do not match it class and if necessary update the class.
+ (null_error_handler): New function. Suppresses the generation of
+ bfd error messages.
+ * coff64-rs6000.c (bfd_xcoff_backend_data): Update comment.
+
2008-09-30 Alan Modra <amodra@bigpond.net.au>
* Makefile.am: Run "make dep-am".