From 04bf70729db030f7f0a4ec74699d1f052d13b06c Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 26 Mar 2008 23:36:46 +0000 Subject: PR gold/5986 Fix problems building gold with gcc 4.3.0. * gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define. (gold_error_at_location, gold_warning_at_location): Use it. * configure.ac: Check whether we can compile and use a template function with a printf attribute. * x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit value when jumping over bytes. * object.cc: Instantiate Object::read_section_data. * debug.h: Include * dwarf_reader.cc: Include * main.cc: Include . * options.cc: Include . * output.cc: Include . * script.cc: Include . * script.h: Include . * symtab.cc: Include and . * target-select.cc: Include . * version.cc: Include . * testsuite/testmain.cc: Include . * configure, config.in: Rebuild. --- gold/configure.ac | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'gold/configure.ac') diff --git a/gold/configure.ac b/gold/configure.ac index e930fd6..d9d965e 100644 --- a/gold/configure.ac +++ b/gold/configure.ac @@ -244,6 +244,22 @@ AC_CHECK_HEADERS(tr1/unordered_set tr1/unordered_map) AC_CHECK_HEADERS(ext/hash_map ext/hash_set) AC_CHECK_FUNCS(mallinfo) +# gcc 4.3.0 doesn't recognize the printf attribute on a template +# function. Check for that. This is gcc bug 35546. This test can +# probably be removed after the bug has been fixed for a while. +AC_CACHE_CHECK([whether we can use attributes with template functions], +[gold_cv_template_attribute], +[AC_COMPILE_IFELSE([ +template extern void foo(const char*, ...) + __attribute__ ((__format__ (__printf__, 1, 2))); +template void foo(const char* format, ...) {} +void bar() { foo("%s\n", "foo"); } +], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])]) +if test "$gold_cv_template_attribute" = "yes"; then + AC_DEFINE(HAVE_TEMPLATE_ATTRIBUTES, 1, + [Define if attributes work on C++ templates]) +fi + AC_LANG_POP(C++) AM_MAINTAINER_MODE -- cgit v1.1