【问题标题】:stack overflow when pass -pie flags to gcc将 -pie 标志传递给 gcc 时堆栈溢出
【发布时间】:2011-05-16 08:55:19
【问题描述】:

我正在尝试将 fedora 移植到 mips cpu,一些包,如“sudo”“krb5”,以下是配置生成的“sudo”的 Makefile,其中“-fpie”“-pie”标志是自动添加的。

SUDO_LIBS =  -laudit -lselinux -lutil -lpam -ldl  -lldap   $(LIBS) $(NET_LIBS)
CFLAGS = -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2  -mabi=32 -march=mips3 -fpie
LDFLAGS = -L. -pie

当我尝试运行 sudo 时,会发生核心转储。 gdb 中的调用框架 --core core.8420:

#0  0x2ad65bdc in elf_dynamic_do_rel (scope=<value optimized out>, reloc_mode=<value       optimized out>, consider_profiling=<value optimized out>)
at do-rel.h:120
#1  _dl_relocate_object (scope=<value optimized out>, reloc_mode=<value optimized out>, consider_profiling=<value optimized out>) at dl-reloc.c:268
#2  0x2ad5bd7c in dl_main (phdr=<value optimized out>, phnum=<value optimized out>, user_entry=<value optimized out>, auxv=<value optimized out>)
at rtld.c:2254
#3  0x2ad73744 in _dl_sysdep_start (start_argptr=<value optimized out>, dl_main=0x2ad5aa38 <dl_main>) at ../elf/dl-sysdep.c:244
#4  0x2ad58f08 in _dl_start_final (arg=0x7fc6d990, info=<value optimized out>) at rtld.c:334
#5  0x2ad590d8 in _dl_start (arg=0x7fc6d990) at rtld.c:562
#6  0x2ad588f8 in __start () from /lib/ld.so.1
Backtrace stopped: frame did not save the PC

当我删除 -pie ld 标志时,一切正常,这是因为 binutils 还是 glibc 库加载器?

【问题讨论】:

    标签: gcc mips fedora glibc binutils


    【解决方案1】:

    这是 binutils 2.20 中的一个已知错误 - 它应该在较新的版本中修复。看 this bugzilla entry.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 2015-04-04
      • 2017-01-20
      • 2018-12-02
      • 2017-09-06
      • 2019-07-08
      • 2015-08-05
      相关资源
      最近更新 更多