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

Re: Test 86 fails with statis Python

Expand Messages
  • Yukihiro Nakadaira
    On Sat, Jun 22, 2013 at 1:56 AM, Yukihiro Nakadaira
    Message 1 of 16 , Jun 21, 2013
      On Sat, Jun 22, 2013 at 1:56 AM, Yukihiro Nakadaira <yukihiro.nakadaira@...> wrote:
      Maybe python requires explicit -fPIC flag for configure option.

      This assumption was wrong...

      --
      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.
       
       
    • 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 2 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 3 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 4 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.