Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-22887

compilation failure on xenial-ppc64le

Details

    Description

      ../../storage/innobase/libinnobase.a(ut0crc32.cc.o):(.data.rel+0x0): undefined reference to `crc32c_vpmsum'
      collect2: error: ld returned 1 exit status
      

      Attachments

        Issue Links

          Activity

            danblack suggests in MDEV-22876 that updating binutils on the builder should fix this.

            marko Marko Mäkelä added a comment - danblack suggests in MDEV-22876 that updating binutils on the builder should fix this.

            danblack, I hope that you can help us with this. I do not quite understand how this is supposed to work.

            git grep -l crc32c_vpmsum
            

            will only list 2 files: mysys/CMakeLists.txt (where the symbol is supposed to be defined) and storage/innobase/ut/ut0crc32.cc (the user of the symbol).

            In mysys/CMakeLists.txt there is the following lines:

              SET(MYSYS_SOURCES ${MYSYS_SOURCES} $<TARGET_OBJECTS:crc32c> $<TARGET_OBJECTS:crc32ieee>)
             
              ADD_LIBRARY(crc32c OBJECT crc32/crc32_ppc64.c)
              ADD_LIBRARY(crc32ieee OBJECT crc32/crc32_ppc64.c)
            

            As far as I understand, one of these libraries should be generated for crc32_vpmsum() and another for crc32c_vpmsum(). But, for some reason the crc32c_vpmsum() fails to be added to the libmysys.

            Also, it looks like CRC32_LIBRARY became unused in MDEV-22641, but some references were not removed.

            marko Marko Mäkelä added a comment - danblack , I hope that you can help us with this. I do not quite understand how this is supposed to work. git grep -l crc32c_vpmsum will only list 2 files: mysys/CMakeLists.txt (where the symbol is supposed to be defined) and storage/innobase/ut/ut0crc32.cc (the user of the symbol). In mysys/CMakeLists.txt there is the following lines: SET(MYSYS_SOURCES ${MYSYS_SOURCES} $<TARGET_OBJECTS:crc32c> $<TARGET_OBJECTS:crc32ieee>)   ADD_LIBRARY(crc32c OBJECT crc32/crc32_ppc64.c) ADD_LIBRARY(crc32ieee OBJECT crc32/crc32_ppc64.c) As far as I understand, one of these libraries should be generated for crc32_vpmsum() and another for crc32c_vpmsum() . But, for some reason the crc32c_vpmsum() fails to be added to the libmysys . Also, it looks like CRC32_LIBRARY became unused in MDEV-22641 , but some references were not removed.

            The problem was that libinnobase.a depends on libmysys.a, but we failed to specify that dependency. Newer versions of the linker have apparently become more permissive. The libmysys.a had already been specified before libinnobase.a in the linker invocation.

            marko Marko Mäkelä added a comment - The problem was that libinnobase.a depends on libmysys.a , but we failed to specify that dependency. Newer versions of the linker have apparently become more permissive. The libmysys.a had already been specified before libinnobase.a in the linker invocation.

            People

              marko Marko Mäkelä
              serg Sergei Golubchik
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.