From owner-freebsd-ports-bugs@FreeBSD.ORG Tue Mar 6 10:30:13 2012 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F1F651065674 for ; Tue, 6 Mar 2012 10:30:13 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id C9CC18FC18 for ; Tue, 6 Mar 2012 10:30:13 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q26AUDXD040257 for ; Tue, 6 Mar 2012 10:30:13 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q26AUDBt040254; Tue, 6 Mar 2012 10:30:13 GMT (envelope-from gnats) Resent-Date: Tue, 6 Mar 2012 10:30:13 GMT Resent-Message-Id: <201203061030.q26AUDBt040254@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Dimitry Andric Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B20901065670 for ; Tue, 6 Mar 2012 10:22:14 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 9CD578FC25 for ; Tue, 6 Mar 2012 10:22:14 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id q26AMENV072702 for ; Tue, 6 Mar 2012 10:22:14 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id q26AMEB2072701; Tue, 6 Mar 2012 10:22:14 GMT (envelope-from nobody) Message-Id: <201203061022.q26AMEB2072701@red.freebsd.org> Date: Tue, 6 Mar 2012 10:22:14 GMT From: Dimitry Andric To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: ports/165771: Fix devel/binutils build with clang, after gold was enabled X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Mar 2012 10:30:14 -0000 >Number: 165771 >Category: ports >Synopsis: Fix devel/binutils build with clang, after gold was enabled >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Mar 06 10:30:13 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Dimitry Andric >Release: 10.0-CURRENT >Organization: The FreeBSD Project >Environment: FreeBSD vm-dvs-dimtest2.home.andric.com 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r232293M: Wed Feb 29 18:32:49 CET 2012 dim@vm-dvs-dimtest2.home.andric.com:/usr/obj/usr/src/sys/GENERIC amd64 >Description: After ports/165406, gold got enabled in the devel/binutils ports. Unfortunately, gold does not cleanly compile with clang, neither the 3.0 release in the base system, nor top-of-trunk clang. Here is a set of patch files to make gold compile with clang. >How-To-Repeat: CC=clang CXX=clang++ CPP=clang-cpp make -C /usr/ports/devel/binutils >Fix: Patch attached with submission follows: Index: devel/binutils/files/patch-gold__archive.h =================================================================== RCS file: devel/binutils/files/patch-gold__archive.h diff -N devel/binutils/files/patch-gold__archive.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ devel/binutils/files/patch-gold__archive.h 5 Mar 2012 19:40:52 -0000 @@ -0,0 +1,11 @@ +--- gold/archive.h.orig 2011-06-02 22:13:23.000000000 +0200 ++++ gold/archive.h 2012-03-05 18:57:24.000000000 +0100 +@@ -40,7 +40,7 @@ class Input_group; + class Layout; + class Symbol_table; + class Object; +-class Read_symbols_data; ++struct Read_symbols_data; + class Input_file_lib; + class Incremental_archive_entry; + Index: devel/binutils/files/patch-gold__arm.cc =================================================================== RCS file: devel/binutils/files/patch-gold__arm.cc diff -N devel/binutils/files/patch-gold__arm.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ devel/binutils/files/patch-gold__arm.cc 5 Mar 2012 19:40:52 -0000 @@ -0,0 +1,40 @@ +--- gold/arm.cc.orig 2011-11-21 10:40:12.000000000 +0100 ++++ gold/arm.cc 2012-03-05 20:12:40.000000000 +0100 +@@ -2372,8 +2372,8 @@ class Target_arm : public Sized_target<3 + unsigned char* preloc_out); + + // Return whether SYM is defined by the ABI. +- bool +- do_is_defined_by_abi(Symbol* sym) const ++ virtual bool ++ do_is_defined_by_abi(const Symbol* sym) const + { return strcmp(sym->name(), "__tls_get_addr") == 0; } + + // Return whether there is a GOT section. +@@ -7039,7 +7039,7 @@ Stub_addend_reader::Reloc&) const + { +- typedef struct Arm_relocate_functions RelocFuncs; ++ typedef class Arm_relocate_functions RelocFuncs; + + switch (r_type) + { +@@ -11778,7 +11778,7 @@ Target_arm::scan_span_for_co + // Check if we have an offending branch instruction. + uint16_t upper_insn = (insn >> 16) & 0xffffU; + uint16_t lower_insn = insn & 0xffffU; +- typedef struct Arm_relocate_functions RelocFuncs; ++ typedef class Arm_relocate_functions RelocFuncs; + + if (cortex_a8_reloc != NULL + && cortex_a8_reloc->reloc_stub() != NULL) +@@ -11881,7 +11881,7 @@ Target_arm::apply_cortex_a8_ + Valtype lower_insn = elfcpp::Swap<16, big_endian>::readval(wv + 1); + off_t branch_offset = stub_address - (insn_address + 4); + +- typedef struct Arm_relocate_functions RelocFuncs; ++ typedef class Arm_relocate_functions RelocFuncs; + switch (stub->stub_template()->type()) + { + case arm_stub_a8_veneer_b_cond: Index: devel/binutils/files/patch-gold__gc.h =================================================================== RCS file: devel/binutils/files/patch-gold__gc.h diff -N devel/binutils/files/patch-gold__gc.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ devel/binutils/files/patch-gold__gc.h 5 Mar 2012 19:40:52 -0000 @@ -0,0 +1,11 @@ +--- gold/gc.h.orig 2011-05-24 23:41:10.000000000 +0200 ++++ gold/gc.h 2012-03-05 19:00:49.000000000 +0100 +@@ -40,7 +40,7 @@ template + class Sized_relobj_file; + + template +-class Reloc_types; ++struct Reloc_types; + + class Output_section; + class General_options; Index: devel/binutils/files/patch-gold__object.h =================================================================== RCS file: devel/binutils/files/patch-gold__object.h diff -N devel/binutils/files/patch-gold__object.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ devel/binutils/files/patch-gold__object.h 5 Mar 2012 19:40:52 -0000 @@ -0,0 +1,11 @@ +--- gold/object.h.orig 2011-08-01 20:25:21.000000000 +0200 ++++ gold/object.h 2012-03-05 18:59:19.000000000 +0100 +@@ -47,7 +47,7 @@ class Pluginobj; + class Dynobj; + class Object_merge_map; + class Relocatable_relocs; +-class Symbols_data; ++struct Symbols_data; + + template + class Stringpool_template; Index: devel/binutils/files/patch-gold__reloc.h =================================================================== RCS file: devel/binutils/files/patch-gold__reloc.h diff -N devel/binutils/files/patch-gold__reloc.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ devel/binutils/files/patch-gold__reloc.h 5 Mar 2012 19:40:52 -0000 @@ -0,0 +1,11 @@ +--- gold/reloc.h.orig 2011-11-21 10:37:51.000000000 +0100 ++++ gold/reloc.h 2012-03-05 18:58:15.000000000 +0100 +@@ -37,7 +37,7 @@ namespace gold + class General_options; + class Object; + class Relobj; +-class Read_relocs_data; ++struct Read_relocs_data; + class Symbol; + class Layout; + class Output_data; Index: devel/binutils/files/patch-gold__script.cc =================================================================== RCS file: devel/binutils/files/patch-gold__script.cc diff -N devel/binutils/files/patch-gold__script.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ devel/binutils/files/patch-gold__script.cc 5 Mar 2012 19:40:52 -0000 @@ -0,0 +1,65 @@ +--- gold/script.cc.orig 2011-06-29 23:57:14.000000000 +0200 ++++ gold/script.cc 2012-03-05 20:05:49.000000000 +0100 +@@ -2871,7 +2871,7 @@ script_add_search_dir(void* closurev, co + else if (!closure->command_line()->options().nostdlib()) + { + std::string s = "-L" + std::string(option, length); +- script_parse_option(closurev, s.c_str(), s.size()); ++ ::script_parse_option(closurev, s.c_str(), s.size()); + } + } + +@@ -3011,7 +3011,7 @@ version_script_push_lang(void* closurev, + snprintf(buf, langlen + 100, + _("unrecognized version script language '%s'"), + language.c_str()); +- yyerror(closurev, buf); ++ ::yyerror(closurev, buf); + delete[] buf; + code = Version_script_info::LANGUAGE_C; + } +@@ -3165,7 +3165,7 @@ script_string_sort_list_add(String_sort_ + const struct Wildcard_section* string_sort) + { + if (pv == NULL) +- return script_new_string_sort_list(string_sort); ++ return ::script_new_string_sort_list(string_sort); + else + { + pv->push_back(*string_sort); +@@ -3189,7 +3189,7 @@ extern "C" String_list_ptr + script_string_list_push_back(String_list_ptr pv, const char* str, size_t len) + { + if (pv == NULL) +- return script_new_string_list(str, len); ++ return ::script_new_string_list(str, len); + else + { + pv->push_back(std::string(str, len)); +@@ -3261,7 +3261,7 @@ script_phdr_string_to_type(void* closure + if (namelen == phdr_type_names[i].namelen + && strncmp(name, phdr_type_names[i].name, namelen) == 0) + return phdr_type_names[i].val; +- yyerror(closurev, _("unknown PHDR type (try integer)")); ++ ::yyerror(closurev, _("unknown PHDR type (try integer)")); + return elfcpp::PT_NULL; + } + +@@ -3336,7 +3336,7 @@ script_parse_memory_attr(void* closurev, + case 'l': + attributes |= MEM_INITIALIZED; break; + default: +- yyerror(closurev, _("unknown MEMORY attribute")); ++ ::yyerror(closurev, _("unknown MEMORY attribute")); + } + + if (invert) +@@ -3349,7 +3349,7 @@ extern "C" void + script_include_directive(void* closurev, const char*, size_t) + { + // FIXME: Implement ? +- yyerror (closurev, _("GOLD does not currently support INCLUDE directives")); ++ ::yyerror (closurev, _("GOLD does not currently support INCLUDE directives")); + } + + // Functions for memory regions. Index: devel/binutils/files/patch-gold__target.h =================================================================== RCS file: devel/binutils/files/patch-gold__target.h diff -N devel/binutils/files/patch-gold__target.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ devel/binutils/files/patch-gold__target.h 5 Mar 2012 19:40:52 -0000 @@ -0,0 +1,11 @@ +--- gold/target.h.orig 2011-07-09 00:48:08.000000000 +0200 ++++ gold/target.h 2012-03-05 18:52:40.000000000 +0100 +@@ -49,7 +49,7 @@ template + class Sized_relobj_file; + class Relocatable_relocs; + template +-class Relocate_info; ++struct Relocate_info; + class Reloc_symbol_changes; + class Symbol; + template >Release-Note: >Audit-Trail: >Unformatted: