开源开发工具大会2014(原HelloGCC技术讨论会)话题和赞助征集

*************************************************************************
话题和赞助征集

开源开发工具大会2014(原HelloGCC技术讨论会)
中国 北京
2014年9月13日(暂定)
HelloGCC工作组 (www.hellogcc.org)
************************************************************************

开源开发工具大会(原HelloGCC技术讨论会)是开源软件开发者的大会,您可以在这里分享自己在开源软件方面的开发工作,研究成果,经验学习。我们的话题主要面向开源开发工具。

话题内容可以为:
* GNU工具链(gcc,gdb,binutils等)
* LLVM等其它开源编译器
* 其它开源开发、调试、模拟工具

话题形式可以为:
* 对自己工作的介绍
* 对已有工作的介绍
* 教程,经验等
* 其它形式,比如闪电演讲

如果您有相关话题,欢迎和我们联系:
* 发送邮件到 hellogcc@freelists.org (需要先订阅:http://www.freelists.org/list/hellogcc)
* 登陆freenode IRC #hellogcc房间

重要日期:
* 话题征集截止日期:2014年8月1日

往届会议:
* HelloGCC 2013: http://www.hellogcc.org/?p=33518
* HelloGCC 2012: http://linux.chinaunix.net/hellogcc2012
* HelloGCC 2011: http://linux.chinaunix.net/hellogcc2011
* HelloGCC 2010: http://linux.chinaunix.net/hellogcc2010
* HelloGCC 2009: http://www.aka-kernel.org/news/hellogcc/index.html

如果贵公司有意提供赞助,欢迎和我们联系 hellogcc.workgroup@gmail.com。

Android中编译工具链的改动—-LLVM份量的增加

最近,Android中的编译工具链发生了改动,这个改动是Android的runtime(也可以说是VM,这两种说法在Google官方文档中也多次交互出现)改动引发的。之前Android采用的是Dalvik VM,在Android2.2之前,连JIT都没有使用,只是解释执行,所以速度很慢,从Android2.2之后加入了JIT之后,一直用了相当长的时间。直到ART(Android Runtime)的出现,ART的出现也是为了进一步提高运行速度,据早期的测试结果表明,ART上的执行速度可以比Dalvik上的执行速度快一倍。所以总的来说,不管是添加JIT支持,还是现在的ART,都是为了速度更快。

ART是在Android4.4正式出现的,就是它引起了Android中编译工具链的改动。之前Dalvik拿到.dex或者优化过的.odex文件,是使用JIT然后执行的。现在ART是直接使用LLVM去做AOT(Ahead of Time),这样的话,执行速度自然就上来了,带来的牺牲是应用的安装速度会降下来,因为AOT编译是在安装的时候做的,后续的启动和执行,都使用的是AOT之后的结果。所以等于是用一次时间牺牲,换来之后的多次时间节省。
ART目前是和Dalvik同时存在系统中的,用户也可以自己选择。在系统中它们分别以Dalvik runtime (libdvm.so) 和 ART (libart.so)这两个库的形式存在,ART的源码位置也是在和Dalvik的同级位置,直接在Android目录下有个art目录。目前art目录下的设置基本上也是参照Dalvik的形式来的,几个工具也都是类似,只是把与原来的dexopt工具给换成了dex2oat,然后引入了LLVM去做编译的工作。到这个程度,LLVM等于已经参与了Android上的所有应用的编译工作,在art出现之前,LLVM只是处理Android Renderscript中的rs文件。

ART目前所带来的缺点就是占用空间增大和首次安装时间延长,这都是由AOT导致的,目前看来是没有办法避免的。还有一个问题就是目前为了同时支持Dalvik和ART,依然采用dex格式文件作为输入,但是dex格式本身就是给Dalvik所设计的可执行格式,所以如果将来真的丢掉Dalvik的话,这个dex格式就有点不伦不类了,可能到那时候这个dex格式也终将作出改变。

参考资料:

Google关于ART的介绍: https://source.android.com/devices/tech/dalvik/art.html

Dalvik: http://en.wikipedia.org/wiki/Dalvik_(software)

AOT: http://en.wikipedia.org/wiki/AOT_compiler

JIT: http://en.wikipedia.org/wiki/Just-in-time_compilation

CSDN一篇不错的分析ART机制的文章:http://blog.csdn.net/androidsecurity/article/details/17462529

一个关于ART的YOUTUBE视频:http://www.youtube.com/watch?v=USgXkI-NRPo

一篇介绍ART的很通俗易懂的文章:http://www.extremetech.com/computing/170677-android-art-google-finally-moves-to-replace-dalvik-to-boost-performance-and-battery-life

GDB talk in FOSDEM 2014 (slides and video record)

Pedro gave a talk on FOSDEM 2014, named "GDB, so where are we now?
Status of GDB's ongoing target and run control projects".  The slides
can be found here
https://github.com/palves/FOSDEM-2014/blob/master/presentation.pdf
Video record is http://video.fosdem.org/2014/previews/fosdem/fosdem_2014/dv/K4201/2014-02-02/13_58_00.ogv

The PDF is very helpful to understand some confusing concepts for both users
and developers, such as all-stop, non-stop, async, and run all-stop on top of non-stop.

HelloGCC 2013技术讨论会录像

题 目:在Cling上实现空指针解引用检测机制
演讲者:丁保增
中科院软件所博士在读,研究方向:系统安全,虚拟化安全。在GSoC2013项目中,实现了在Cling中动态地检测空指针解引用错误。
简 介:Cling是欧洲核子研究中心(CERN)开发的C++交互式编译器。在报告中将介绍:C++交互式编译器Cling的应用场景,实现以及如何在Cling中实现动态地检测空指针解引用错误。

题 目:Build An Optimized C Runtime for Embedded Linux
演讲者:黃敬群
慣用網路暱稱是 “jserv”,長期投入開源軟件開發工作,並致力於軟硬件系統整合,同時擔任台灣聯發科技和工業技術研究院等單位的顧問,協助銜接開放系統的豐富資源和活躍的社區。近期除了投入於醫療電子產業之外,也在台灣的大學院校授課,與學生一同探討嵌入式系統和操作系統一類的議題。
http://about.me/jserv
简 介:olibc is derived from bionic libc used in Android, which was initially derived from NetBSD libc. olibc is expected to merge the enhancements done by several SoC vendors and partners, such as Qualcomm, TI, Linaro, etc., which is known to be the major difference from glibc, uclibc, and other traditional C library implementations. Typically, the code size of olibc runtime should be highly customizable. For ARM target, olibc would benefit from ARMv7 specific features like NEON, Thumb-2, VFPv3/VFPv4, and latest compiler optimization techniques. Also, olibc is released under BSD License.

题 目:GCC上归纳变量的优化
演讲者:程斌
ARM工程师,开源工具链爱好者, GCC、Newlib开发者,目前在ARM从事GNU工具链开发方面的工作。
简 介:归纳变量是循环优化中非常重要的因素。不同的IV选取方法往往导致生成代码的大小和性能有很大的差距。ARM工程师程斌在GCC的IV Optimization上做了很多的调优和修复,并在目标机上取得了明显的性能提升。他将会介绍IVO的概况和他遇到的一些有趣的问题。

题 目:Port GCC to a new architecture – Case study: nds32
演讲者:Chung-Ju Wu
Chung-Ju Wu is a compiler engineer at Andes Technology Corporation. He is currently working with other engineers on developing a complete toolchain/compiler for supporting Andes nds32 architecture.
He received M.S. degree in Computer Science from National Tsing-Hua University,
HsinChu, where he is also working towards the Ph.D degree. His research interests include GCC/Open64 compiler porting, compiler optimizations, and system software for embedded SoC integrations.
简 介:GCC, GNU Compiler Collection, has been ported to a wide variety of processor architectures. Although there are some documentation describing GCC internal infrastructures and porting mechanism, there is still gap between modifying existing ports and adding new ports in GCC.
In this session, an architecture — nds32 — is taken as case study, we will go through necessary steps of creating a new target port for GCC from scratch. This presentation starts with introducing the source files that are required to be modified and prepared. Then some fundamental naming patterns in machine description will be mentioned. We will also talk about how to improve code generation by utilizing target hooks and refine machine description patterns. Hopefully this tutorial is able to provide some guidelines for ones who are interested in porting GCC for a new architecture.

题 目:The Theory, History and Future of System Linkers
演讲者:Luba Tang
Taiwan Evolution Software Technology, Founder. Luba Tang received his M.S. degree in computer science from the National Tsing-Hua University, Taiwan. He has been a Ph.D. student in computer science department of National Tsing-Hua University, Taiwan since 2007. At the same time, he has been working in the compiler groups at Marvell, Inc. and MediaTek, Inc. since 2010. His research interests include both electronic system level (ESL) design and compilers. He had focused on iterative compiler, ahead-of-time compiler, and link-time optimization. His most recent work focus is on cloud compilation. He was the chief programmer of Starfish DSP simulator, the original author of Marvell iterative compiler, and also the software architect of MCLinker. His most recent position is the founder of Taiwan Evolution Software Technology Inc..
简 介:The tedious and tough details of linking process limit the development of system linkers for more than 30 years. Most works stopped at providing portable infrastructures; Some works ever focused on optimizing linker, but all of them become limited binary rewriter, not real and practical linkers; Only few works ever addressed on modeling linking process.
In this presentation, I will review the history of development of system linkers. I will start from introduction to 1992 OM system – the first work attempts to build an optimizing linker. I will also introduce several famous successors – ATOM and Intel PIN projects, some competitors – 1999 Alto, 2000 ICFG and 2003 Diablo link-time optimizer and eventually introduce modern optimizing linkers – Google gold, Apple ld64 and MCLinker.
Modern optimizing linkers have different models of linking. Every models have its unique strength and weakness. I will introduce the differences, advantages and drawbacks of these linkers. This part will touch ATOM model of ld64 and Fragment-reference model of MCLinker.
Finally, I will introduce a new open source project – bold. The goal of the bold project is to provide a parallel and optimizing linking infrastructure. It’s my introspection of linking models.

题 目:The implementation of AArch64 Neon™ in LLVM
演讲者:刘江宁
现任ARM首席软件工程师(Principal software engineer), 长期从事编译器软件的设计和开发工作。从2000年至2010年任职于英特尔,期间曾在英特尔编译器实验室参与和领导开发多个编译器项目,其中包括UEFI中间代码编译器,英特尔编译器x86-64后端实现,以及动态二进制代码翻译性能优化等等。自2011年起任职ARM软件工具链部门,参与和领带开源软件的开发工作,其中包括针对ARM Cortex-M系列CPU的GCC编译器的性能优化,以及LLVM/Clang编译器针对ARM v7/v8 CPU的实现。
简 介:开发一个LLVM的新后端时,刚开始的时候是往往是比较简单直接的。但是越往后越就会发现要做好一个LLVM后端有很多要考虑的问题。ARM工程师刘江宁在LLVM后段开发时遇到一些问题。他将描述这些问题并分享解决这些问题的经验。

更多HelloGCC 2013相关信息请访问这里