2014开源开发工具大会见闻录

上午因为家里有事,没能看到上午两个精彩话题,也辛苦了明杰和吴伟以及开源协会的各位同学。

中午到达,下午第一个演讲是ARM来的王哲宇介绍的pyOCD,中午发困导致精神松懈,所以体会不深,整体感觉是一个用PYTHON写的OCD软件。
osdt2014_1
附图一张,总让人觉得快要从讲台上掉下来的王同学。

然后就是一代宗师LUBA的话题,因为一些不可抗力,话题从Xposed for ART on Android换成了Beyond Compiler Engineering,一位同学竟然愤然提起了抗议:“原来不是ART话题吗?”。
我现在真想对这位同学说,ART什么都是浮云,没准哪天突然就跟Dalvik一样就随手被GOOGLE换掉了。但是LUBA话题谈的显然是能走的更远的。
话题前一段总结起来就是摩尔定律逐渐衰落后给编译器带来了巨大的机会,最后他还拿出了一张图,对今后40年内,哪一年哪项技术会推动前进,没错具体到年的,不知道这张图是怎么来的,不过台下所有弄编译器的同学心里都兴奋了,沸腾了。明杰同学之后就一直在问我:“编译器真的这么有前途?”
然后话锋一转,大师开心的说,可以开始讲技术了。之后对GCC系和LLVM系进行了比较和分析外加小八卦。
osdt2014_2
忙着创业每天只能睡3个小时,仍然准备了双份精彩话题(有一份Xposed不能讲)的LUBA大神。

接着是硬件人中的软件人软件人中的硬件人——翟哥的话题。我刚进场没看见他,后来才知道,他想演示的板子还没搞定,带着表坐在最后忙活着呢。
最后到时间时还是没搞定,在我的建议下改为现场举起板子让大家看一眼。
整个话题都围绕OPENOCD展开,不过我主要注意点集中到了这玩意脚本支持的部分用的TCL,于是作为一个饱受GDB testsuite中TCL虐待的GDB开发者,在话题讨论时对使用TCL脚本进行了丧心病狂的吐槽,还试图拉齐姚同学一起来吐槽。
齐姚同学不愧是和稀泥的高手,分析说是因为OPENOCD是德国人作的,德国人作事力图严谨,肯定会在通读过整个TCL手册才会开弄。
osdt2014_3
挥舞着板子,致力于向广大屌丝码农提供全栈开源的方式(软硬件都开源)搭建ARM处理器的JTAG调试环境的翟哥。

下午最后一个常规话题是专注于模拟等方向的SKYEYE开发者康老师,小小炫耀一下,我曾经也是SKYEYE开发者。
他的话题比较详细的介绍了符号执行以及其和其他程序分析技术的区别等等,之后又演示了他们的Android的全系统符号执行工具-Android_S2E。
osdt2014_4
话题时间对他来说永远不够,被我们安排到最后一个可以随便拖时间很开心的康老师。

之后两个是闪电演讲,先是一位阿里的同学讲了JAVASCRIPT的相关内容,我走神了没太听仔细,希望看视频能仔细看看。另外阿里工具组我们早有耳闻,希望明年能看见他们的常规话题。
osdt2014_5
我没记住名字的阿里同学。

之后是我的老友,和我一样也是曾经的模拟器开发者,现在专注Android安全的在读博士亚金。对他话题的提问都是问他用什么系统的手机,用什么Android ROM的。
osdt2014_6
专注吓唬Android用户,看我站在台下忍住没黑我小米的亚金。

之后是欢乐的抽奖活动,然后就是更欢乐的演讲者聚餐(最快乐的是吐槽了没到场的同学,老唐我们没说你啦,嘿嘿!),明年再见啦各位。

====================================================================

补几张照片,算是凑成整个大会的见闻录。(by xmj)

上午两场都非常精彩,嘉宾演讲得精彩,工作本身也做得非常出色。对做工具链的同学来说,是很好的学习参考。

qi yao
齐尧,给大家讲述了gdb性能方面的故事

kito
Kito,把经典的寄存器分配算法用实例给大家展现了一遍

中午,有一位报名自由演讲的朋友因为下午有事,改在了午餐后的休息时间,我不在现场,但看起来人气很旺。我这里只有一张,他自己用开源软硬件做的飞行器照片:

开源软硬件搭建的飞行器
开源软硬件做的飞行器

下午,最后是抽奖和合影:
抽奖
盒子,音箱和书,抽奖是个体力活

最后的合影:
合影
大家都笑了,是因为茶总喊了句玩笑口号:“打倒llvm”。

另外,luba给稍微有点绕口的大会名称起了一个好记的绰号,“开开工”。:-)

Call for Topics and Sponsors — Workshop on Open Source Development Tools 2014 (i.e. HelloGCC Workshop)

*************************************************************************
Call for Topics and Sponsors

Workshop on Open Source Development Tools 2014 (i.e. HelloGCC Workshop)
Beijing, China
Sep. 13rd, 2014 (TBD)
HelloGCC Work Group (www.hellogcc.org)
*************************************************************************
Open Source Development Tools Workshop (i.e. HelloGCC Workshop) is
a meeting for open source software developers. You can share your
work, study and
learning experience of open source software development here. Our main
topics is open
source development tools.

The content of topics can be:
* GNU tool chains (gcc, gdb, binutils, etc)
* LLVM or other open source compilers
* other tools of open source development, debug and simulation

The form of topics can be:
* the introduction of your own work
* the introduction of your work did in the past
* tutorial, experience and etc
* other forms of presentation, such as lightning talk

If you have some topics, please contact us:
* send email to hellogcc@freelists.org (need to subscribe
http://www.freelists.org/list/hellogcc first)
* login into freenode IRC #hellogcc room

Important Date:
* the deadline of topics and sponsors solicitation: Aug 1st, 2014

Previous Meetings:
* 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

If you want to sponsor us, we will very appreciate and please contact us via
hellogcc.workgroup@gmail.com

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相关信息请访问这里

1

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相关信息请访问这里