今天在随意浏览lldb mailling archive,发现了这样一个邮件,内容大致是关于,lldb和其他的一般debugger 有什么不同。看完之后,收获颇多。
http://lists.cs.uiuc.edu/pipermail/lldb-dev/2011-November/000718.html
今天在随意浏览lldb mailling archive,发现了这样一个邮件,内容大致是关于,lldb和其他的一般debugger 有什么不同。看完之后,收获颇多。
http://lists.cs.uiuc.edu/pipermail/lldb-dev/2011-November/000718.html
从2009年至今,23个Patch,共1512行。主要包括:
1、修复文档、注释、代码中的小错误
2、龙芯2F,3A等相关代码
3、其它遇到的问题
可以通过以下脚本生成上述所有的Patch。
#! /bin/bash
############################################
# Generate patches submitted by me to GCC. #
# Mingjie Xing (mingjie.xing@gmail.com) #
############################################
# r147644 - http://gcc.gnu.org/ml/gcc-cvs/2009-05/msg00620.html
# r155645 - http://gcc.gnu.org/ml/gcc-cvs/2010-01/msg00104.html
# r163028 - http://gcc.gnu.org/ml/gcc-cvs/2010-08/msg00239.html
# r163246 - http://gcc.gnu.org/ml/gcc-cvs/2010-08/msg00457.html
# r163799 - http://gcc.gnu.org/ml/gcc-cvs/2010-09/msg00090.html
# r163986 - http://gcc.gnu.org/ml/gcc-cvs/2010-09/msg00278.html
# r166927 - http://gcc.gnu.org/ml/gcc-cvs/2010-11/msg00816.html
# r167107 - http://gcc.gnu.org/ml/gcc-cvs/2010-11/msg00996.html
# r167290 - http://gcc.gnu.org/ml/gcc-cvs/2010-11/msg01180.html
# r167484 - http://gcc.gnu.org/ml/gcc-cvs/2010-12/msg00165.html
# r168364 - http://gcc.gnu.org/ml/gcc-cvs/2010-12/msg01050.html
# r168396 - http://gcc.gnu.org/ml/gcc-cvs/2011-01/msg00012.html
# r168397 - http://gcc.gnu.org/ml/gcc-cvs/2011-01/msg00013.html
# r168452 - http://gcc.gnu.org/ml/gcc-cvs/2011-01/msg00069.html
# r170041 - http://gcc.gnu.org/ml/gcc-cvs/2011-02/msg00586.html
# r170729 - http://gcc.gnu.org/ml/gcc-cvs/2011-03/msg00150.html
# r170730 - http://gcc.gnu.org/ml/gcc-cvs/2011-03/msg00151.html
# r171206 - http://gcc.gnu.org/ml/gcc-cvs/2011-03/msg00629.html
# r174833 - http://gcc.gnu.org/ml/gcc-cvs/2011-06/msg00322.html
# r181346 - http://gcc.gnu.org/ml/gcc-cvs/2011-11/msg00637.html
# r187392 - http://gcc.gnu.org/ml/gcc-cvs/2012-05/msg00388.html
# r187393 - http://gcc.gnu.org/ml/gcc-cvs/2012-05/msg00389.html
# r190617 - http://gcc.gnu.org/ml/gcc-cvs/2012-08/msg00594.html
r=147644 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=155645 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=163028 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=163246 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=163799 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=163986 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=166927 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=167107 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=167290 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=167484 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=168364 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=168396 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=168397 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=168452 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=170041 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=170729 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=170730 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=171206 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=174833 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=181346 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=187392 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=187393 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
r=190617 && svn diff -c $r svn://gcc.gnu.org/svn/gcc > r$r.patch
今天无意中看到GCC IRC 上的一段对话,
[21:34] <richi> dnovillo: that said – introducing record-builder atthis point seems wrong看来有些global maintainer对现在C++的修改也不满意。而且google目前并不打算把GCC的所有部分都用C++重写。希望我理解错了。
参见:http://gcc.gnu.org/onlinedocs/gccint/Libgcc.html#Libgcc
GCC provides a low-level runtime library, libgcc.a or libgcc_s.so.1 on some platforms. GCC generates calls to routines in this library automatically, whenever it needs to perform some operation that is too complicated to emit inline code for.
Most of the routines in libgcc handle arithmetic operations that the target processor cannot perform directly. This includes integer multiply and divide on some machines, and all floating-point and fixed-point operations on other machines. libgcc also includes routines for exception handling, and a handful of miscellaneous operations.
libgcc是GCC提供的一个低层运行时库,当一些操作/运算在特定平台上不支持时,GCC会自动生成对这些库函数的调用,使用这些库函数来模拟实现。从概念上和源码实现中,又可以分为libgcc1和libgcc2,虽然它们最终会被编译合并为libgcc.a。
参见:http://gcc.gnu.org/ml/gcc-help/2009-03/msg00145.html
libgcc1 exists primarily conceptually. It is the basic set of
operations which can not be reasonably implemented using other
operations. In the good old days libgcc1 was built using the other
compiler on your system. Since these days there is generally no other
compiler, most targets provide assembler code to perform the operations.
For example, see config/arm/lib1funcs.asm.
libgcc1中包含了一套基础操作/运算,这些无法使用其它操作来实现,通常会使用一系列的汇编代码来模拟完成。
libgcc2, conversely, is the set of operations which can be implemented
reasonably. For example, if you have a 32-bit add instruction, it’s
easy to use it to implement 64-bit addition. This code appears in
gcc/libgcc2.c. On many processors it is possible to optimize using
instructions which are not avaliable in C, such as add-with-carry; those
optimizations are written in gcc/longlong.h.
libgcc2,正好相反,这些可以通过已有的一些操作/运算来简单的组合完成。通常是使用C代码来编写。
另参见:http://gcc.gnu.org/ml/gcc/2003-12/msg01191.html
前几天看lldb的 mail list,看见一个Jason Molenda的人的回复。觉得这个名字好像在哪里见过,于是就翻了翻GDB的changelog,发现他在很多年前,给GDB工作过。最开始在cygnus,后来去了apple。无意中在google中搜索了一下,发现了他的一个网站,里边有很多照片。好多照片都是他们这些gnu hacker在一起的,勾起了我无限的兴趣 (我特别喜欢把mail list里边的人和他们的照片对应起来)。下边我来一一介绍,由近及远,
第一个是关于 Richard Henderson http://molenda.us/photos/rth-ildan-test-2005-12-10/ 照片是关于他练习跆拳道的照片吧。Richard 在我心目中是十分牛了,比现在的GCC Global Maintainer要厉害,他现在好像在做qemu。12年在布拉格,我见过他。很cool的一个人。
第二个是 关于Jason Merrill http://molenda.us/photos/wedding-2000-09-16/。 我就认识这个人,他应该是C++ 还是 libstdc++的maintainer。
第三个是 两次GDB picnic 的照片 (1999年和2000年)。http://molenda.us/photos/gdb-picnic-1999/ 和 http://molenda.us/photos/gdb-picnic-2000-08-15/ 里边能找到最早的GDB 开发者。大部分人都陆续离开了GDB,只有两个人仍然留着,Stan 和 Doug。看看大牛的样子,的确是很有意思的事情。
演讲幻灯片下载:http://www.hellogcc.org/?p=188
今天无意中看到了这篇文章,The Short History of GCC development,我个人更愿意把它叫做野史。里边加入了很多有趣的东西,比如egcs如何从gcc fork出去的,怎么又消灭的gcc,然后又改名为gcc。在egcs成立的时候,就有个team (我猜想是cygnus的team),这个文章里边也有名单,有一半的人现在还活跃着。
里边还提到了Mark Mitchell,其中有一个问答(发生在1997年或者98年)比较有意思,
JB: Which systems do currently use GCC as their primary compiler set (not counting *BSD and GNU/Linux)?
Apple’s OS X. If Apple succeeds, there will probably be more OS X developers using GCC than there are GNU/Linux developers.
现在苹果是成功了,但是没有用gcc
里边还引用了不少slashdot上的段子,老外用词都很生猛,自己看吧
演讲者: 齐尧codesourcery/mentorgraphics
简介:我们会介绍如何把GDB移植到一个新的体系结构上,包括支持改体系结构的断点,单步,还会介绍如何支持该体系结构的prologue 分析和epilogue 分析,最后我们介绍在Linux 之上,我们需要做的移植工作,比如对plt stub的支持和signal trampoline的支持。
演讲幻灯片下载:http://www.hellogcc.org/?p=188
刚刚开始GNU 软件开发的人,可能都会被gnu coding standard给搞晕,因为可能自己的编码习惯和这个gnu standard不是很一致,再加上编辑器对tab和space的使用,就使得符合gnu standard变得更加困难。
我个人建议,如果是第一次写gnu的代码,最好去看看gnu standard,不长,
http://www.gnu.org/prep/standards/standards.html
还有一个办法,就是写好了代码,用indent去检查一下,
indent -nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2 -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob