Loading ...
Sorry, an error occurred while loading the content.
 

Re: Test 86 fails with statis Python

Expand Messages
  • Zulox4
    ... Hello, For Linux Xubuntu 13, the ./configure --enable-shared for the last pyhton release 2.7.5 works, but the fPython 3.1.1 does not work :
    Message 1 of 16 , Jun 21, 2013
      On Thursday, June 20, 2013 7:25:19 PM UTC+2, ZyX wrote:
      > On Wednesday, June 19, 2013 8:19:35 PM UTC+4, Yukihiro Nakadaira wrote:
      > > On Ubuntu 13.04, adding -fPIC to CFLAGS make it work.
      >
      > From the `man gcc` it seems that `-fPIC` or at least `-fpic` is a must when compiling shared libraries. Should not the issue be then directed to Ubuntu developers?

      Hello,

      For Linux Xubuntu 13, the ./configure --enable-shared for the last pyhton release 2.7.5 works, but the fPython 3.1.1 does not work :

      http://stackoverflow.com/questions/1547310/python-3-1-1-with-enable-shared-will-not-build-any-extensions

      Best regards!

      --
      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php

      ---
      You received this message because you are subscribed to the Google Groups "vim_dev" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • Yukihiro Nakadaira
      Cause of this problem is that ubuntu s python is built with -Bsymbolic-functions flag. With this flag, libpython and vim see different function address for
      Message 2 of 16 , Jun 23, 2013
        Cause of this problem is that ubuntu's python is built with -Bsymbolic-functions flag.
        With this flag, libpython and vim see different function address for same function.

        Test:
        $ cat foo.c
        void *foo() { return &foo; }
        $ cat main.c
        #include <stdio.h>
        void *foo();
        int main() {
            printf("foo=%p main=%p\n", foo(), &foo);
            return 0;
        }
        $ cc -shared -fPIC -o libfoo.so foo.c -Wl,-Bsymbolic-functions
        $ cc main.c -L. -lfoo
        $ LD_LIBRARY_PATH=. ./a.out
        foo=0x7eff0cafe770 main=0x4005e0

        --
        Yukihiro Nakadaira - yukihiro.nakadaira@...

        --
        --
        You received this message from the "vim_dev" maillist.
        Do not top-post! Type your reply below the text you are replying to.
        For more information, visit http://www.vim.org/maillist.php
         
        ---
        You received this message because you are subscribed to the Google Groups "vim_dev" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
         
         
      • ZyX
        ... Just filed a bug report: https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1196047. Let’s look, maybe we won’t have to do anything. As an
        Message 3 of 16 , Jun 29, 2013
          On Sunday, June 23, 2013 3:25:52 PM UTC+4, Yukihiro Nakadaira wrote:
          > Cause of this problem is that ubuntu's python is built with -Bsymbolic-functions flag.
          > With this flag, libpython and vim see different function address for same function.
          >
          > Test:
          > $ cat foo.c
          >
          > void *foo() { return &foo; }
          > $ cat main.c
          > #include <stdio.h>
          > void *foo();
          > int main() {
          >     printf("foo=%p main=%p\n", foo(), &foo);
          >     return 0;
          > }
          > $ cc -shared -fPIC -o libfoo.so foo.c -Wl,-Bsymbolic-functions
          >
          > $ cc main.c -L. -lfoo
          > $ LD_LIBRARY_PATH=. ./a.out
          > foo=0x7eff0cafe770 main=0x4005e0
          >
          >
          > --
          > Yukihiro Nakadaira - yukihiro....@...

          Just filed a bug report: https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1196047. Let’s look, maybe we won’t have to do anything.

          As an alternative I can suggest one of the following:

          1. Detect -Wl,-Bsymbolic-functions flag in configure and fail or switch to =dynamic build. (I would really prefer failing.)
          2. Add #if Py_UBUNTU_WORKAROUND macros guarding

          #define _PyObject_NextNotImplemented dll__PyObject_NextNotImplemented
          static iternextfunc dll__PyObject_NextNotImplemented;

          at the top (in the #else branch of #if defined(DYNAMIC_PYTHON) || defined(PROTO)) and something like

          PyObject *aobj;
          PyRun_SimpleString("class A(object): pass");
          if (PyErr_Occurred())
          return -1;
          if (!(aobj = PyRun_String("A", Py_eval_input, globals, globals)))
          return -1;
          dll__PyObject_NextNotImplemented = aobj->tp_iternext;
          Py_DECREF(aobj);

          after main python initialization. Macros should be added to CFLAGS by configure script if -Wl,\S*-Bsymbolic-functions is found in python LDFLAGS. This will workaround our problem as this way we get _PyObject_NextNotImplemented that is really used by python.

          --
          --
          You received this message from the "vim_dev" maillist.
          Do not top-post! Type your reply below the text you are replying to.
          For more information, visit http://www.vim.org/maillist.php

          ---
          You received this message because you are subscribed to the Google Groups "vim_dev" group.
          To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
          For more options, visit https://groups.google.com/groups/opt_out.
        Your message has been successfully submitted and would be delivered to recipients shortly.