[llvmlinux] LLVMLinux Meeting 2013-11-07
Behan Webster
behanw at converseincode.com
Sat Nov 9 05:01:44 UTC 2013
*
LLVMLinux Project: http://llvm.linuxfoundation.org/
<http://llvm.linuxfoundation.org/>
This week the meeting will be on Thursday, November 07 2013 on Google
Plus Hangout at 17:00
UTC.<https://www.google.com/calendar/embed?src=su5vu85fj58ncfrgalmq4vbbf0%40group.calendar.google.com&ctz=GMT>
<https://www.google.com/calendar/embed?src=su5vu85fj58ncfrgalmq4vbbf0%40group.calendar.google.com&ctz=GMT>
If you haven't use G+ Hangouts before, make sure you have the
appropriate Chrome or Firefox plugin installed, and tested before the
time of the meeting. You can try a test hangout with me today before the
meeting if you want to. G+ recently changed, so hopefully that won't be
an issue for our meeting.
-------------------------------------------------------------------------------------------------------------------------
Previous meeting's top 2-3 work items:
*
This is what people said they'd be working on at the end of the last
meeting:
o
Behan
+
LLVMLinux BoF at LCE
+
LLVMLinux talk at ELCE
+
LLVMLinux patch work (ARM, cc-option, VLAIS patch, Named
registers)
+
patch cleanup
+
Follow up with people from conferences
o
Jan-Simon
+
cc-option solution for both 3.3 and 3.4
#
warning/error switch
#
", " issue
+
cleanup for x86 side
+
unbreak i586
-------------------------------------------------------------------------------------------------------------------------
Agenda for this week:
*
(5 mins total) Everyone shared a quick summary of the progress
they've made from the last 4 weeks
o
Behan
+
Followup from LinuxConEurope and ELCE
+
Named register patches
#
New __builtin_stack_pointer() patch submission
+
Taught course/Course preparation
o
Jan-Simon
+
LConE, ELCE, ALS
+
Vacation
o
Vinicius Tinti
+
Work with Tim on merged globals issue.
+
Create LLVMLinux video list on Youtube.
#
http://www.youtube.com/watch?v=v8QgNhPMRJo&list=PLB0smnRgT1yARbkuMqg5kXeUYoHOTBBl0
o
Mark
+
Worked on building AArch64 (deleted arm64)
#
vexpress64 target is now building successfully
#
One patch for AArch64 is concerning as clang optimizes
code to invalid inline assembly and then the compilation
fails
+
Looked for uses of GCC style assigned registers in the kernel
#
There are a lot of them and not just SP
#
Does this actually work?:
*
register unsigned long rnv asm("r2") = regs->uregs[rn];
+
Helped with MergedGlobals issue
#
creduced Vicinius' files to a minimal example
#
Created a unit test to compare GCC compiled file with
clang compiled version, and added scripts used to
creduce the code
#
Read over modpost code to start to understand what it is
doing
*
(45 mins) General meeting discussions:
o
LinuxCon Europe, ELCE, ALS, Kernel Summit
+
BoF at LCE
#
About 30-40 people showed up
#
Everyone in the Bof knew what LLVM was and was aware of
the project (which is a first)
#
Lots of relevant questions.
#
One of the things discovered in this BoF is that the
netfilter VLAIS patch will be a non-issue once nftables
is adopted everywhere and iptables is dropped (though
iptables is sticking around for a while yet)
#
Also met Al Grant from ARM who is interesting in helping
enable our aarch64 port.
+
Talk at ELCE
#
About 40-50 people showed up
#
Lots of great questions and general interest
#
Many of the same questions we often get (is
smaller/better/fast/etc)
#
Very well received. The questions took the talk into
overtime
o
Merged global work (Vicinius and Tim)
+
Tim claimed (along with Renato) that is modpost that doing
some sort of hack and expecting a GCC behavior. Probably
modpost would need to be updated.
+
"... 1. GCC makes the symbol private rather than internal
(in LLVM-speak).
It's called ".LANCHOR0". "private" is basically an even more
restrictive ("hands off, it's mine!") class than internal.
"Fixing"
this in LLVM would be reasonably easy and probably sail
through review
since it actually does have benefits.
2. GCC gives the merged symbol a size of 0 rather than an
accurate
size in the ELF file. Good luck with convincing LLVM that
they really
want to emulate that bug.
I actually suspect it's the latter that's causing the
problem, since
modpost seems to have no knowledge of private symbols. But
as I say
I've not been able to actually find out. ..."
o
lkml acceptance
+
Several posts on lkml now referencing llvm and clang static
analyzer (Behn posted them to the LLVMLinux mailing list).
Various kernel devs including Linus are now explicitly
talking about LLVM
+
Kernel devs at conferences have shown interest seeing our
patches. Making a patched kernel tree available to lkml may
well get us more reviews of our patches.
o
Linaro Connect and Android
+
Renato and Bernhard have exciting news!
+
The Android team has decided to use clang exclusively in the
next version of Android
+
Each part of Android will be moved over to clang (existing
patches available inside Google, and fro Linaro)
+
Ultimately the LLVMLinux patches will be used to compile the
Android kernel with clang
+
Linaro will test AOSP along with our kernel in their LAVA
test suite
o
Named Registers in Clang
+
Discussed asm hack with Måns Rullgård
<https://plus.google.com/u/0/101083367758063442977>at ELCE
+
He explained how the following works (the solution suggested
on the the LLVM mailing list)
#
register unsigned long current_sp asm ("sp");
#
asm("" : "=r(current_sp));
+
It isn't pretty, but seems to work for llvm 3.3
+
Most everyone agreed that __builtin_stack_pointer() is a
better solution
+
Submitted __builtin_stack_pointer() to llvm-dev and then to
cfe-dev (which was a better place to post in the first place)
+
Still discussing things there, but minimally Chris Lattner
seems to like it (just not our implementation)
o
Still have an issue with "-target" not being set
+
means some command line options aren't recognized.
+
Presented as clang looking like it doesn't understand
command line options
+
Turns out its trying to use x86 compiler with ARM options (FAIL)
+
Mark may have fix
+
Still needs more investigation why it failed
o
CC-option breakage
+
patch still needs to be reworked
+
clang now returns an error (like gcc) when an option is
unrecognized, so the original cc-option should work clang
(but not with LLVM 3.3)
+
The idea is to push the existing patch, and pull it out when
llvm 3.4 is available
o
X86 breakage with clang/llvm on master
+
also cc-options bail out with clang TIP
+
boot broken on clang TIP
#
XMM instruction in boot code (observed from llvm asm_in)
#
turn out "-mno-sse" seems not to turn off "SSE3/4 & AVX"
opts.
#
got kernel to boot if adding "-mno-" for sse3/4/avx for
the bootup code.
#
This needs more verification.
#
Could be that there is a disable switch missing for the
high-level options if -no-sse is set. Actual fix in
clang might be one-liner.
+
vxlan.c compiler ICE -
http://llvm.org/bugs/show_bug.cgi?id=17210
o
VLAIS code
+
USB Gadget code seems to have made it upstream (the gadget
maintainer is pushing it up for us now in his ffs/congfigfs
patch stream)
+
Netfilter patch (still) needs to be upstreamed next
o
Yocto update
+
Seems we're pretty close to being able to build a recipe for
building the LLVMLinux kernel with yocto.
+
Randy introduced us to his co-op student (Muhammad) which is
doing oe-core work for him
+
Muhammad will help with this recipe and upstreaming it to
oe-core (the lowest layer in yocto)
*
(5 mins) Each meeting attendee listed the top 2 items to be worked
on for the next 2 weeks
+
Behan
#
Followup from LinuxConEurope and ELCE
#
LLVMLinux patch work (ARM, cc-option, VLAIS patch, Named
registers)
#
LLVM/clang mailing list work for __builtin_stack_pointer()
#
Course preparation
#
Initial yocto kernel recipe
#
Will push an up to date version of our patches to our
kernel tree and post to lkml for review
+
Jan-Simon
#
cc-option solution for both 3.3 and 3.4
*
warning/error switch
*
", " issue
#
cleanup for x86 side
#
unbreak i586
#
Course prep
+
Vinicius Tinti
#
Work on merged globals
#
Try Raspberry Pi build and see if USB was "magically fixed"
+
Mark
#
Gadget patch comment review (Done)
#
__builtin_stack_pointer patch comment review
#
Test whether other names registers via ASM in kernel
actually work
*
It actually seems to work except for the stack pointer
Next meeting in 3-ish weeks. doodle poll to follow.
*
--
Behan Webster
behanw at converseincode.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxfoundation.org/pipermail/llvmlinux/attachments/20131108/eb05303e/attachment-0001.html>
More information about the LLVMLinux
mailing list