The final version of 4.0.0 was just tagged (from the 4.0 branch at
r297335). There were no changes after rc4.
Please build the final binaries and upload to the sftp.
For others following along: this means 4.0.0 is complete, but it will
take a few days to get the tarballs ready and uploaded to the web
page. I will send the announcement once everything's done.
suggestion is to link compiler-rt which works in limited testing
but I think its a general problem where clang is assuming compiler-rt
functions will be provided during link which is fine if there was
an option to disable this behavior, I could not find any option to
do so.
>> 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 only see it with 4.0 branch, may be I was lucky thus far.
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.
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?
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.
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