[pypy-commit] pypy default: update rlib/rvmprof/shared from upstream, emphasis RPython builds for release
mattip
pypy.commits at gmail.com
Fri Apr 13 05:43:55 EDT 2018
Author: Matti Picus <matti.picus at gmail.com>
Branch:
Changeset: r94313:f22145c34985
Date: 2018-04-13 11:07 +0300
http://bitbucket.org/pypy/pypy/changeset/f22145c34985/
Log: update rlib/rvmprof/shared from upstream, emphasis RPython builds
for release
diff --git a/pypy/doc/how-to-release.rst b/pypy/doc/how-to-release.rst
--- a/pypy/doc/how-to-release.rst
+++ b/pypy/doc/how-to-release.rst
@@ -40,6 +40,8 @@
sure things are ported back to the trunk and to the branch as
necessary.
+* Make sure the RPython builds on the buildbot pass with no failures
+
* Maybe bump the SOABI number in module/imp/importing. This has many
implications, so make sure the PyPy community agrees to the change.
diff --git a/pypy/tool/release/force-builds.py b/pypy/tool/release/force-builds.py
--- a/pypy/tool/release/force-builds.py
+++ b/pypy/tool/release/force-builds.py
@@ -31,6 +31,9 @@
'pypy-c-jit-linux-s390x',
'build-pypy-c-jit-linux-armhf-raspbian',
'build-pypy-c-jit-linux-armel',
+ 'rpython-linux-x86-32',
+ 'rpython-linux-x86-64'
+ 'rpython-win-x86-32'
]
def get_user():
diff --git a/rpython/rlib/rvmprof/src/shared/_vmprof.c b/rpython/rlib/rvmprof/src/shared/_vmprof.c
--- a/rpython/rlib/rvmprof/src/shared/_vmprof.c
+++ b/rpython/rlib/rvmprof/src/shared/_vmprof.c
@@ -36,6 +36,8 @@
register PY_STACK_FRAME_T * callee_saved asm("rbx");
#elif defined(X86_32)
register PY_STACK_FRAME_T * callee_saved asm("edi");
+#elif defined(__arm__)
+ register PY_STACK_FRAME_T * callee_saved asm("r4");
#else
# error "platform not supported"
#endif
@@ -45,6 +47,8 @@
"movq %1, %0\t\n"
#elif defined(X86_32)
"mov %1, %0\t\n"
+#elif defined(__arm__)
+ "mov %1, %0\t\n"
#else
# error "platform not supported"
#endif
diff --git a/rpython/rlib/rvmprof/src/shared/vmp_stack.c b/rpython/rlib/rvmprof/src/shared/vmp_stack.c
--- a/rpython/rlib/rvmprof/src/shared/vmp_stack.c
+++ b/rpython/rlib/rvmprof/src/shared/vmp_stack.c
@@ -16,7 +16,7 @@
#ifdef VMP_SUPPORTS_NATIVE_PROFILING
-#ifdef VMPROF_LINUX
+#if defined(VMPROF_LINUX) || defined(VMPROF_BSD)
#include "unwind/vmprof_unwind.h"
typedef mcontext_t unw_context_t;
@@ -510,13 +510,15 @@
static const char * vmprof_error = NULL;
static void * libhandle = NULL;
-
#ifdef VMPROF_LINUX
+#include <link.h>
#define LIBUNWIND "libunwind.so"
#ifdef __i386__
#define PREFIX "x86"
+#define LIBUNWIND_SUFFIX ""
#elif __x86_64__
#define PREFIX "x86_64"
+#define LIBUNWIND_SUFFIX "-x86_64"
#endif
#define U_PREFIX "_U"
#define UL_PREFIX "_UL"
@@ -524,10 +526,41 @@
int vmp_native_enable(void) {
#ifdef VMPROF_LINUX
+ void * oldhandle = NULL;
+ struct link_map * map = NULL;
if (libhandle == NULL) {
+ // on linux, the wheel includes the libunwind shared object.
+ libhandle = dlopen(NULL, RTLD_NOW);
+ if (libhandle != NULL) {
+ // load the link map, it will contain an entry to
+ // .libs_vmprof/libunwind-...so, this is the file that is
+ // distributed with the wheel.
+ if (dlinfo(libhandle, RTLD_DI_LINKMAP, &map) != 0) {
+ (void)dlclose(libhandle);
+ libhandle = NULL;
+ goto bail_out;
+ }
+ // grab the new handle
+ do {
+ if (strstr(map->l_name, ".libs_vmprof/libunwind" LIBUNWIND_SUFFIX) != NULL) {
+ oldhandle = libhandle;
+ libhandle = dlopen(map->l_name, RTLD_LAZY|RTLD_LOCAL);
+ (void)dlclose(oldhandle);
+ oldhandle = NULL;
+ goto loaded_libunwind;
+ }
+ map = map->l_next;
+ } while (map != NULL);
+ // did not find .libs_vmprof/libunwind...
+ (void)dlclose(libhandle);
+ libhandle = NULL;
+ }
+
+ // fallback! try to load the system's libunwind.so
if ((libhandle = dlopen(LIBUNWIND, RTLD_LAZY | RTLD_LOCAL)) == NULL) {
goto bail_out;
}
+loaded_libunwind:
if ((unw_get_reg = dlsym(libhandle, UL_PREFIX PREFIX "_get_reg")) == NULL) {
goto bail_out;
}
diff --git a/rpython/rlib/rvmprof/src/shared/vmprof_common.h b/rpython/rlib/rvmprof/src/shared/vmprof_common.h
--- a/rpython/rlib/rvmprof/src/shared/vmprof_common.h
+++ b/rpython/rlib/rvmprof/src/shared/vmprof_common.h
@@ -23,6 +23,10 @@
#include <syscall.h>
#endif
+#ifdef VMPROF_BSD
+#include <sys/syscall.h>
+#endif
+
#define MAX_FUNC_NAME 1024
#ifdef VMPROF_UNIX
More information about the pypy-commit
mailing list