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



Reply via email to