ChinaUnix.net
相关文章推荐:

gcc标准堆栈结构

这阵子在看内存溢出的相关文章——Smashing The Stack For Fun And Profit,发现时间已经很久远了,linux发行版也发生了很多变化,关于压栈时堆栈桢的结构,已经不能和现在的Fedora Core 7 with gcc 4.1.2一致了,压栈的时候依次压入函数参参数、EIP、EBP、函数内部参数,并且4bytes对齐,但是是在intel x86+FC7+gcc 4.1.2+kernel 2.6.23.17的情况下却不同,应该是gcc版本问题导致的,请问,gcc的版本与压栈流程有什么具体关系?使...

by ruger - CPU与编译器 - 2008-08-18 16:05:15 阅读(2600) 回复(4)

相关讨论

作溢出攻击的时候发现很多shellcode都不能在FC7 with gcc 4.1.2下运运行,而能够在REDHAT 9 下跑谈跑通,查阅了一下关于堆栈保护技术的资料,发现了一下几种Stackguard、Stackshield、Formatguard、Formatguard、堆栈不可执行、数据段不可执行、增强的缓冲区溢出保护及内核MAC、硬件级别的保护等。 面临的主要问题是gcc 4.1.2采用了什么保护技术?不会以补丁的形式打到gcc上,应该是写到源码里面了。 Stackguard、Stackshield比较通...

by ruger - CPU与编译器 - 2008-08-21 23:50:31 阅读(2918) 回复(8)

最近重构一老模块,发现多处直接使用等号进行结构体拷贝,好迷糊…… 求指点

by gigabyte - C/C++ - 2010-06-04 11:20:49 阅读(13903) 回复(49)

在读linux内核时发现使用了很多面向对象的思想。可是c语言没有class的概念。于是gcc在对struct 赋指时 提供了特别的帮助。 example #include 2 #include 3 #include 4 5 6 struct foo { 7 int (*add) (int a,int b); 8 int (*del) (int a,int b); 9 }; 10 11 int foo_a(int a,int b) 12 { 13 return a+b; 14 } 15 int foo_d(int a,int b) 16 { 17 return a-b; 18...

by fanyuanmail - Linux文档专区 - 2008-05-30 16:52:18 阅读(638) 回复(0)

GNU 编译器家族 gcc 内部探密: 探索 gcc 前端的内部结构 未显示需要 JavaScript 的文档选项 赵蔚 ( [email=zhaoway@public1.ptt.js.cn?subject=%E6%8E%A2%E7%B4%A2%20gcc%20%E5%89%8D%E7%AB%AF%E7%9A%84%E5%86%85%E9%83%A8%E7%BB%93%E6%9E%84&cc=]zhaoway@public1.ptt.js.cn[/email] ), Linux 和自由软件技术独立顾问 2003 年 7 月 10 日 我 们在本文中说明 gcc 源码包中的例子编程语言 Treelang 的实现细节。主要目的在于...

by zxgang_andy - Linux文档专区 - 2008-02-07 15:51:48 阅读(1321) 回复(0)

比如不同的线程调用localtime返回不同的地址。

by w_anthony - C/C++ - 2009-02-26 19:42:57 阅读(7146) 回复(4)

具体需求如下: 我有一个头文件里面定义了一个全局变量, 由于某些原因, 不能提供c文件, 所有逻辑都在头文件中, 该头文件可能被多个c文件包含, 这样该全局变量会存在多个拷贝 现在想控制连接, 将所有对该全局变量的引用都引用其中的同一个; 现在这样写: int nk __attribute__((weak)) = 0; static void p() { printf("%d\n", nk); nk++; } 测试结果似乎可行; 但还是担心不能保证所有 printf 都引用同一个内存地址...

by zylthinking - C/C++ - 2012-11-23 13:58:50 阅读(2598) 回复(17)

GNC CC 是一个功能非常强大的跨平台 C 编译器,它对 C 语言提供了很多扩展,
这些扩展对优化、目标代码布局、更安全的检查等方面提供了很强的支持。本文把
支持 GNU 扩展的 C 语言称为 GNU C。

Linux <http://www.nixsky.com/data/linux/> 内核代码使用了大量的 GNU C 扩
展,以至于能够编译...

by Alan0521 - 移动操作系统 - 2011-01-19 14:00:09 阅读(483) 回复(0)

程序里写了这样一句: for (int i = 0; i < 100; ++i) ...... 用gcc编译通不过,才知道原来gcc还不支持在for语句里声明循环变量。 不禁有点奇怪,这个特性似乎不算很“变态”吧,为什么gcc还没有实现呢? 我用的是gcc 4.2.1。不知道更高版本是不是实现了? c99中还有哪些特性gcc没有实现呢?

by ahocat - C/C++ - 2009-06-03 20:31:05 阅读(4762) 回复(6)

SUN OS 5.8上原来就装有一个gcc, 后来因为某个程序只能用旧版本gcc编译过去, 所以需要再装上旧版本. 可是装好以后, 编译一个简单的CPP文件的时候, 出现找不到string. 用原来那个装好的就可以. 请问这是怎么回事? 是装的时候有错误还是需要改配置? 3x

by galaxywar - Solaris - 2006-07-13 15:24:18 阅读(1928) 回复(2)

SUN OS 5.8上原来就装有一个gcc, 后来因为某个程序只能用旧版本gcc编译过去, 所以需要再装上旧版本. 可是装好以后, 编译一个简单的CPP文件的时候, 出现找不到string. 用原来那个装好的就可以.\r\n请问这是怎么回事? 是装的时候有错误还是需要改配置?\r\n3x

by galaxywar - Solaris - 2006-07-13 15:24:18 阅读(3551) 回复(2)