|
|
现在遇到一个问题请各位老大指教:RHEL4支持PIE,在IA32上面我已经验证过了,没有问题(也就是说,每次运行分配的data段,.bss段等数据地址随机变化)。但同样的程序放到EM64T的机器上没有显示出PIE的特征(每次分配的地址都没有变化)。程序及Makefile附下,请大侠指教!谢谢!
test1.c:
- #include <stdio.h>
- char bss_str[100];//bss
- int data_i=0;//data segment
- int main()
- {
- int stack_j;
- printf("To verify text PIE on EL4!&main = %p\n",&main);
- printf("To verify bss PIE on EL4!&bss_str = %p\n",&bss_str);
- printf("To verify data PIE on EL4!&data_i = %p\n",&data_i);
- printf("To verify data Randomization on EL4!&stack_j = %p\n",&stack_j);
- return 0;
- }
复制代码
Makefile:
- # make the test1 command
- #
- CTAGS= ctags -x >tags
- CFLAGS= -fPIE
- LDFLAGS= -pie
- CC=gcc
- SRCS=test1.c
- OBJS=test1.o
- all:test1
- obj: $(SRCS)
- # To make an object from source
- $(CC) $(CFLAGS) -c $(SRCS)
- # To make an executable
- test1: $(OBJS)
- $(CC) $(LDFLAGS) -o $@ $(OBJS)
- # clean out the dross
- clean:
- rm -rf test1 *~ *.o *.bak core
复制代码 |
|