compiler_rt introduces a weak and hidden symbol compilerrt_abort_impl
into our pre-linked _all.o object, we have to handle it.
Fixes #4273.
R=iant, rsc, r
CC=golang-dev
https://golang.org/cl/
6783050
--- /dev/null
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#ifdef __ELF__
+__attribute__((weak))
+__attribute__((visibility("hidden")))
+void _compilerrt_abort_impl(const char *file, int line, const char *func) {
+}
+#endif
--- /dev/null
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+#ifdef __ELF__
+extern void _compilerrt_abort_impl(const char *file, int line, const char *func);
+
+void __my_abort(const char *file, int line, const char *func) {
+ _compilerrt_abort_impl(file, line, func);
+}
+#endif
s->type = SHIDDEN;
}
break;
+ case ElfSymBindWeak:
+ if(needSym) {
+ s = newsym(sym->name, 0);
+ if(sym->other == 2)
+ s->type = SHIDDEN;
+ }
+ break;
default:
werrstr("%s: invalid symbol binding %d", sym->name, sym->bind);
return -1;