Hans Wennborg via llvm-dev
2017-Mar-14 16:38 UTC
[llvm-dev] [cfe-dev] [4.0.0 Release] 'final' has been tagged
On Mon, Mar 13, 2017 at 10:09 PM, Khem Raj <raj.khem at gmail.com> wrote:> Hi Hans > > On 3/10/17 1:10 PM, Hans Wennborg wrote: >> Hi Khem, >> >> On Fri, Mar 10, 2017 at 1:03 PM, Khem Raj via llvm-dev >> <llvm-dev at lists.llvm.org> wrote: >>> On Fri, Mar 10, 2017 at 7:01 AM, Renato Golin via llvm-dev >>> <llvm-dev at lists.llvm.org> wrote: >>>> ARM and AArch64 looking good, uploaded. >>>> >>> >>> This is not particularly related to this RC but in general with 4.0.0 >>> I am seeing a failure quite common while building for arm >>> >>> | ./.libs/libsqlite3.so: undefined reference to `__mulodi4' >>> | clang-4.0: error: linker command failed with exit code 1 (use -v to >>> see invocation) >>> | make: *** [Makefile:509: sqlite3] Error 1 >>> >>> There are few bug reports in bugzilla also reporting similar issue >>> e.g. >>> >>> https://bugs.llvm.org//show_bug.cgi?id=14469 >> >> Many of those bugs are pre-4.0.0. Did you see the same issues with >> earlier LLVM versions as well, or are you saying these errors are new >> with 4.0.0? >> > > I dug into a bit and here is a reproducer > > #include <stddef.h> > size_t n; > size_t s; > ptrdiff_t z; > main() > { > return __builtin_mul_overflow(n,s, &z); > } > > compiling with > clang --target=armv7l -mfloat-abi=hard hello.c -S > > This generates the call to __mulodi4 > > same code with gcc does not. > > I see that sqlite3 as well as m4 package pokes the compiler for these > builtins before using them. For clang it uses __has_builtin() to > determine if a given builtin is supported before using it. > > see > http://git.savannah.gnu.org/cgit/gnulib.git/tree/lib/xalloc-oversized.h > > That is the source of trouble, since its in gnulib that explains why its > showing up in lot of packages. > > perhaps this commit here > http://git.savannah.gnu.org/cgit/gnulib.git/commit/lib/xalloc-oversized.h?id=9c919a06435266a88d91ffb9eb3f70a82aa65b4b > > brings this issue to fore.I get a __mulodi4 call with your reproducer also with llvm 3.9 and 3.8, so I'm not sure this changed on our end. (I also added the __has_builtin check from the code you linked, with the same result.) In any case, it's no good generating calls to functions if they're not defined in the runtime. Can you file a bug about this in the Bugzilla and cc myself and Renato? Thanks, Hans
Khem Raj via llvm-dev
2017-Mar-14 16:55 UTC
[llvm-dev] [cfe-dev] [4.0.0 Release] 'final' has been tagged
On 3/14/17 9:38 AM, Hans Wennborg wrote:> On Mon, Mar 13, 2017 at 10:09 PM, Khem Raj <raj.khem at gmail.com> wrote: >> Hi Hans >> >> On 3/10/17 1:10 PM, Hans Wennborg wrote: >>> Hi Khem, >>> >>> On Fri, Mar 10, 2017 at 1:03 PM, Khem Raj via llvm-dev >>> <llvm-dev at lists.llvm.org> wrote: >>>> On Fri, Mar 10, 2017 at 7:01 AM, Renato Golin via llvm-dev >>>> <llvm-dev at lists.llvm.org> wrote: >>>>> ARM and AArch64 looking good, uploaded. >>>>> >>>> >>>> This is not particularly related to this RC but in general with 4.0.0 >>>> I am seeing a failure quite common while building for arm >>>> >>>> | ./.libs/libsqlite3.so: undefined reference to `__mulodi4' >>>> | clang-4.0: error: linker command failed with exit code 1 (use -v to >>>> see invocation) >>>> | make: *** [Makefile:509: sqlite3] Error 1 >>>> >>>> There are few bug reports in bugzilla also reporting similar issue >>>> e.g. >>>> >>>> https://bugs.llvm.org//show_bug.cgi?id=14469 >>> >>> Many of those bugs are pre-4.0.0. Did you see the same issues with >>> earlier LLVM versions as well, or are you saying these errors are new >>> with 4.0.0? >>> >> >> I dug into a bit and here is a reproducer >> >> #include <stddef.h> >> size_t n; >> size_t s; >> ptrdiff_t z; >> main() >> { >> return __builtin_mul_overflow(n,s, &z); >> } >> >> compiling with >> clang --target=armv7l -mfloat-abi=hard hello.c -S >> >> This generates the call to __mulodi4 >> >> same code with gcc does not. >> >> I see that sqlite3 as well as m4 package pokes the compiler for these >> builtins before using them. For clang it uses __has_builtin() to >> determine if a given builtin is supported before using it. >> >> see >> http://git.savannah.gnu.org/cgit/gnulib.git/tree/lib/xalloc-oversized.h >> >> That is the source of trouble, since its in gnulib that explains why its >> showing up in lot of packages. >> >> perhaps this commit here >> http://git.savannah.gnu.org/cgit/gnulib.git/commit/lib/xalloc-oversized.h?id=9c919a06435266a88d91ffb9eb3f70a82aa65b4b >> >> brings this issue to fore. > > I get a __mulodi4 call with your reproducer also with llvm 3.9 and > 3.8, so I'm not sure this changed on our end. (I also added the > __has_builtin check from the code you linked, with the same result.) >thats right, it worked for me in past because the version of gnulib used in m4 and sqlite3 was old which did not use __builtin_mul_overflow newer versions have the new gnulib and hence the problem.> In any case, it's no good generating calls to functions if they're not > defined in the runtime. >nod> Can you file a bug about this in the Bugzilla and cc myself and Renato?There is a bug already, I added you to CC, Renato is already CCed https://bugs.llvm.org//show_bug.cgi?id=28629 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 204 bytes Desc: OpenPGP digital signature URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170314/dde9d776/attachment.sig>
Renato Golin via llvm-dev
2017-Mar-14 18:31 UTC
[llvm-dev] [cfe-dev] [4.0.0 Release] 'final' has been tagged
On 14 March 2017 at 16:55, Khem Raj <raj.khem at gmail.com> wrote:> There is a bug already, I added you to CC, Renato is already CCed > > https://bugs.llvm.org//show_bug.cgi?id=28629Ah, I remember that one. A true gem that fell down the cracks and hasn't been looked at in 4.0, I apologise. I will put this into our roadmap and will look at it as soon as I can, hopefully to 5.0 and if possible, back-ported to 4.0.1. cheers, --renato