<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Compiler-RT contains math functions but doesn't use -lm when linking programs"
   href="https://llvm.org/bugs/show_bug.cgi?id=28652">28652</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Compiler-RT contains math functions but doesn't use -lm when linking programs
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>3.9
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>-New Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>krejzi@email.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>When using Compiler-RT as the default runtime on Linux x86_64 and trying to
build another clang with the clang that uses Compiler-RT as the default
runtime, I get the following failure when building openmp part:

Linking C shared library ../../../../lib/libomp.so
cd /sources/llvm-build/projects/openmp/runtime/src && /usr/bin/cmake -E
cmake_link_script CMakeFiles/omp.dir/link.txt --verbose=1
/tools/bin/clang  -fPIC -march=skylake -fomit-frame-pointer -O2 -pipe -fPIC
-Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers
-pedantic -Wno-long-long -Wcovered-switch-default -Wdelete-non-virtual-dtor
-Werror=date-time -ffunction-sections -fdata-sections -O3 -DNDEBUG
-Wl,--warn-shared-textrel -Wl,--as-needed
-Wl,--version-script=/sources/llvm/projects/openmp/runtime/src/exports_so.txt
-static-libgcc -Wl,-z,noexecstack -Wl,-fini=__kmp_internal_end_fini 
-Wl,-z,defs -shared -Wl,-soname,libomp.so -o ../../../../lib/libomp.so
CMakeFiles/omp.dir/kmp_alloc.c.o CMakeFiles/omp.dir/kmp_atomic.c.o
CMakeFiles/omp.dir/kmp_csupport.c.o CMakeFiles/omp.dir/kmp_debug.c.o
CMakeFiles/omp.dir/kmp_itt.c.o CMakeFiles/omp.dir/kmp_environment.c.o
CMakeFiles/omp.dir/kmp_error.c.o CMakeFiles/omp.dir/kmp_global.c.o
CMakeFiles/omp.dir/kmp_i18n.c.o CMakeFiles/omp.dir/kmp_io.c.o
CMakeFiles/omp.dir/kmp_runtime.c.o CMakeFiles/omp.dir/kmp_settings.c.o
CMakeFiles/omp.dir/kmp_str.c.o CMakeFiles/omp.dir/kmp_tasking.c.o
CMakeFiles/omp.dir/kmp_taskq.c.o CMakeFiles/omp.dir/kmp_threadprivate.c.o
CMakeFiles/omp.dir/kmp_utility.c.o CMakeFiles/omp.dir/z_Linux_util.c.o
CMakeFiles/omp.dir/kmp_gsupport.c.o
CMakeFiles/omp.dir/thirdparty/ittnotify/ittnotify_static.c.o
CMakeFiles/omp.dir/kmp_ftn_cdecl.c.o CMakeFiles/omp.dir/kmp_ftn_extra.c.o
CMakeFiles/omp.dir/kmp_version.c.o CMakeFiles/omp.dir/kmp_barrier.cpp.o
CMakeFiles/omp.dir/kmp_wait_release.cpp.o CMakeFiles/omp.dir/kmp_affinity.cpp.o
CMakeFiles/omp.dir/kmp_dispatch.cpp.o CMakeFiles/omp.dir/kmp_lock.cpp.o
CMakeFiles/omp.dir/kmp_sched.cpp.o CMakeFiles/omp.dir/kmp_taskdeps.cpp.o
CMakeFiles/omp.dir/kmp_cancel.cpp.o CMakeFiles/omp.dir/z_Linux_asm.s.o
-lpthread -lm -ldl -Wl,-rpath,"\$ORIGIN/../lib" 
clang-3.9: warning: argument unused during compilation: '-static-libgcc'
/tools/bin/../lib/clang/3.9.0/lib/linux/libclang_rt.builtins-x86_64.a(divdc3.c.o):
In function `__divdc3':
divdc3.c:(.text.__divdc3+0x35): undefined reference to `fmax'
divdc3.c:(.text.__divdc3+0x3a): undefined reference to `logb'
/tools/bin/../lib/clang/3.9.0/lib/linux/libclang_rt.builtins-x86_64.a(divsc3.c.o):
In function `__divsc3':
divsc3.c:(.text.__divsc3+0x32): undefined reference to `fmaxf'
divsc3.c:(.text.__divsc3+0x37): undefined reference to `logbf'
/tools/bin/../lib/clang/3.9.0/lib/linux/libclang_rt.builtins-x86_64.a(divxc3.c.o):
In function `__divxc3':
divxc3.c:(.text.__divxc3+0x22): undefined reference to `fmaxl'
divxc3.c:(.text.__divxc3+0x2c): undefined reference to `logbl'
clang-3.9: error: linker command failed with exit code 1 (use -v to see
invocation)
make[2]: *** [projects/openmp/runtime/src/CMakeFiles/omp.dir/build.make:901:
lib/libomp.so] Error 1

Note, however, that there's -lm included on the command line (I manually added
it with cmake parameter), but it still isn't being picked up. Running the
command manually, and using -v, gives the following linker invocation command:

 "/tools/bin/ld" --eh-frame-hdr -m elf_x86_64 -shared -o
../../../../lib/libomp.so /tools/bin/../lib64/crti.o
/tools/bin/../lib/clang/3.9.0/64/crtbeginS.o -L/tools/bin/../lib/clang/3.9.0/64
-L/tools/bin/../lib64 -L/lib/../lib64 -L/tools/bin/../lib -L/lib -L/usr/lib
--warn-shared-textrel --as-needed
--version-script=/sources/llvm/projects/openmp/runtime/src/exports_so.txt -z
noexecstack -fini=__kmp_internal_end_fini -z defs -soname libomp.so
CMakeFiles/omp.dir/kmp_alloc.c.o CMakeFiles/omp.dir/kmp_atomic.c.o
CMakeFiles/omp.dir/kmp_csupport.c.o CMakeFiles/omp.dir/kmp_debug.c.o
CMakeFiles/omp.dir/kmp_itt.c.o CMakeFiles/omp.dir/kmp_environment.c.o
CMakeFiles/omp.dir/kmp_error.c.o CMakeFiles/omp.dir/kmp_global.c.o
CMakeFiles/omp.dir/kmp_i18n.c.o CMakeFiles/omp.dir/kmp_io.c.o
CMakeFiles/omp.dir/kmp_runtime.c.o CMakeFiles/omp.dir/kmp_settings.c.o
CMakeFiles/omp.dir/kmp_str.c.o CMakeFiles/omp.dir/kmp_tasking.c.o
CMakeFiles/omp.dir/kmp_taskq.c.o CMakeFiles/omp.dir/kmp_threadprivate.c.o
CMakeFiles/omp.dir/kmp_utility.c.o CMakeFiles/omp.dir/z_Linux_util.c.o
CMakeFiles/omp.dir/kmp_gsupport.c.o
CMakeFiles/omp.dir/thirdparty/ittnotify/ittnotify_static.c.o
CMakeFiles/omp.dir/kmp_ftn_cdecl.c.o CMakeFiles/omp.dir/kmp_ftn_extra.c.o
CMakeFiles/omp.dir/kmp_version.c.o CMakeFiles/omp.dir/kmp_barrier.cpp.o
CMakeFiles/omp.dir/kmp_wait_release.cpp.o CMakeFiles/omp.dir/kmp_affinity.cpp.o
CMakeFiles/omp.dir/kmp_dispatch.cpp.o CMakeFiles/omp.dir/kmp_lock.cpp.o
CMakeFiles/omp.dir/kmp_sched.cpp.o CMakeFiles/omp.dir/kmp_taskdeps.cpp.o
CMakeFiles/omp.dir/kmp_cancel.cpp.o CMakeFiles/omp.dir/z_Linux_asm.s.o
-lpthread -lm -ldl -rpath "\$ORIGIN/../lib" /usr/lib/libmvec_nonshared.a
/usr/lib/libmvec.a /usr/lib/libm.a
/tools/bin/../lib/clang/3.9.0/lib/linux/libclang_rt.builtins-x86_64.a -lc
/tools/bin/../lib/clang/3.9.0/lib/linux/libclang_rt.builtins-x86_64.a
/tools/bin/../lib/clang/3.9.0/64/crtendS.o /tools/bin/../lib64/crtn.o

Strange thing is, if I add -lm at the end of the mentioned command (after
/tools/bin/../lib/clang/3.9.0/lib/linux/libclang_rt.builtins-x86_64.a) it gets
linked correctly.

I'm not sure if this is clang or compiler-rt bug, so please reassign as
necessary.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>