Missing __guard_local... Are they using ld not cc to link?
--
Sent from a phone, apologies for poor formatting.
On 11 January 2019 18:48:10 Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote:
On Tue, Dec 25 2018, Jeremy Evans <jer...@openbsd.org> wrote:
Ruby 2.6.0 was released today. Release announcement is at
https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-released/
Some highlights:
* Significant performance improvements
* JIT Compiler
A bit scary at first, but it looks like the approach is reasonably
portable: dump C code to disk, compile it, and load the resulting
object.
* Endless Ranges
* Function Composition Operators for Procs
* One-shot coverage
* Bundler now included
Tested on amd64, for about 9 months starting with the first preview
release. OK to import?
You could import it but, as is, it's not ready to be hooked up. It
doesn't build using base-gcc (on sparc64, but you can test on amd64).
You need to either force C99 support, or use the diff below.
make test on sparc64:
Finished tests in 7349.921578s, 2.7481 tests/s, 310.4749 assertions/s.
20198 tests, 2281966 assertions, 65 failures, 18 errors, 113 skips
Lots of errors due to missing symbol '__guard_local' in the JIT tests.
Thoughts?
----------
patches/patch-addr2line_c
--8<--
$OpenBSD$
Index: addr2line.c
--- addr2line.c.orig
+++ addr2line.c
@@ -1207,7 +1207,8 @@ di_find_abbrev(DebugInfoReader *reader, uint64_t abbre
uint64_t form = uleb128(&p);
if (!at && !form) break;
}
- for (uint64_t n = uleb128(&p); abbrev_number != n; n = uleb128(&p)) {
+ uint64_t n;
+ for (n = uleb128(&p); abbrev_number != n; n = uleb128(&p)) {
if (n == 0) {
fprintf(stderr,"%d: Abbrev Number %"PRId64" not found\n",__LINE__,
abbrev_number);
exit(1);
@@ -1555,7 +1556,8 @@ debug_info_read(DebugInfoReader *reader, int num_trace
}
/* ranges_inspect(reader, &ranges); */
/* fprintf(stderr,"%d:%tx: %x ",__LINE__,diepos,die.tag); */
- for (int i=offset; i < num_traces; i++) {
+ int i;
+ for (i=offset; i < num_traces; i++) {
uintptr_t addr = (uintptr_t)traces[i];
uintptr_t offset = addr - reader->obj->base_addr +
reader->obj->vmaddr;
uintptr_t saddr = ranges_include(reader, &ranges, offset);
-->8--
--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE