首页 文章
  • 107 votes
     answers
     views

    如何使用GMP,MPFR,MPC,ELF逐个安装GCC,无需共享库?

    如何使用当前版本逐个安装GCC(GNU编译器集合),使用正确版本的依赖项,而不是使用包管理器(如yum,rpm,apt,dpkg),而不使用共享库? 典型的开发人员可能希望以典型的方式安装GCC,使用您的包管理器(yum,rpm,apt,dpkg,port,brew等)或按照此处的说明(http://gcc.gnu.org/wiki/InstallingGCC) . 我的问题是如何一块一块地安装G...
  • 1 votes
     answers
     views

    solaris - 编译64位gcc - 精灵类错误

    我正在solaris上安装现代版的gcc . 我编译了gmp,mpfr和mpc,它们都是64位 . 当我尝试按如下方式配置gcc时,我得到一个错误,抱怨mpc,mpfr和gmp是错误的精灵类 . 是什么赋予了? ./../gcc-4.5.1/configure --prefix=/opt/OurAppDir/gcc --with-gmp=/opt/OurAppDir/gmp --with-mpfr...
  • 18 votes
     answers
     views

    为什么我的可执行文件中的入口点地址是0x8048330(0x330是.text部分的偏移量)

    我写了一个小程序添加到整数和使用“readelf -a executable_name”它显示了elf Headers 中的入口点地址: Entry point address: 0x8048330 我的可执行文件如何事先知道这个地址,甚至在加载器加载到内存之前? elf_format.pdf表示该成员提供系统首先转移控制的虚拟地址,从而启动该过程 . 任何人都可以解释这句话的含义是什么,这里虚...
  • 0 votes
     answers
     views

    ELF文件中的程序头和节头

    这是一个问题的重复,但我无法快速找到我的问题的答案 . 这就是为什么要问它 . 一些ELF文件包含(可执行文件或共享库)程序头,用于解释段 . 它们包含一个称为虚拟地址和文件偏移以及其他一些字段的字段 . 还有相应的部分解释“内存中的地址”和文件偏移 . 现在我对部分和细分如何相关感到困惑 . (对于静态编译的可执行文件和非静态编译的可执行文件 . )静态编译的二进制文件的文件偏移量有何不同?程...
  • 6 votes
     answers
     views

    x86_64:是否可以“在线替代”PLT / GOT参考?

    我不确定这个问题的主题是什么,但是我们走了...... 为了强制代码的关键部分的代码局部性/紧凑性,我正在寻找一种方法,通过直接在呼叫站点的"jump slot"(ELF R_X86_64_JUMP_SLOT 重定位)调用外部(动态加载)库中的函数 - 链接器通常放入PLT / GOT的内容,但是在呼叫站点上有这些内联 . 如果我模仿这样的调用: #include <s...
  • 3 votes
     answers
     views

    在Linux上,ELF头中的ABI设置为Sys V,而不是Linux?

    在Linux下,当我编译以下程序时: int main() {} 使用gcc 4.7: $ gcc test.c 并使用 readelf 检查生成的可执行文件: $ readelf -h a.out ... OS/ABI: UNIX - System V ... 它将ELF头中的 EI_OSABI 字节设置为 ELFOSABI_SYSV ,而不是 ELFOSABI_LINUX . 有谁知道...
  • 1 votes
     answers
     views

    ELF或二进制文件中是否有特定ABI的签名?

    我需要确定用于生成一些二进制文件,程序,动态和静态库的ABI . 我想询问是否有属性或标签或字符串我可以使用一些外部工具检查以查看哪个ABI用于创建该二进制对象 . 我的对象主要是用于x86和ARM的ELF,我将ABI用于调试目的,就像DWARF一样 . 编辑:类似于文件开头的魔术字节,通常用于检测文件的文件格式 .
  • 19 votes
     answers
     views

    ELF目标文件和共享对象之间的ELF头差异是什么?

    首先,我从技术角度问这个问题,而不是图书馆代码用户的角度 . 区别的一个例子是共享对象包含程序头,而普通目标文件则不包含 . 还有什么区别? 至于我的问题的目的,我试图弄清楚需要从共享对象文件中删除哪些内容,以使链接器将其视为普通对象文件并尝试重新定位并将其静态链接到生成的可执行文件中文件,而不是将其标识为共享库并生成 DT_NEEDED 引用 . 这反过来是共享库原始的第一步,可以静态链接(可能...
  • 82 votes
     answers
     views

    ELF文件和bin文件有什么区别?

    编译器生成的最终图像包含bin文件和扩展加载器格式ELf文件,两者之间有什么区别,尤其是ELF文件的实用程序 .
  • 0 votes
     answers
     views

    rails ELF文件OS ABI在服务器linux服务器上无效

    我在使用rails应用程序时遇到问题,在尝试运行rake db:migrate on server(或者例如rails c)时,我得到了这个堆栈跟踪: 耙子流产! LoadError:/home/users/ruby/.gems/extensions/x86_64-linux/2.1.0-static/therubyracer-0.12.2/v8/init.so:ELF文件OS ABI无效 - ...
  • 2 votes
     answers
     views

    在ELF规范中,BA_OS和KE_OS是什么意思?

    在系统V ABI中摘录的ELF spec中,各种函数被引用为 exec(BA_OS) ,如1的第7页 . 其他函数以 KE_OS 引用 . 这些 *_OS 符号是什么意思?
  • 1 votes
     answers
     views

    用mcmodel = medium [closed]编译时C程序崩溃

    当使用mcmodel = medium编译时,C程序会因分段错误而崩溃 . 我们在堆栈上使用了一些非常大的数组,我们需要启用中型mcmodel . 我正在使用g 5.4,当我对应用程序进行扫描时,它会打印出错误 . 请告知如何调试 . strace ./app execve("./app", ["./app"], [/* 65 vars */]) = -1...
  • 3 votes
     answers
     views

    如何将部分映射到ELF输出文件中的段?

    好吧,我已经在程序集中编写了一个bootloader并试图从中加载一个C内核 . 这是引导程序: bits 16 xor ax,ax jmp 0x0000:boot extern kernel_main global boot boot: mov ah, 0x02 ; load second stage to memory mov al, 1 ...
  • 9 votes
     answers
     views

    每个cpu arch的真正ELF TLS ABI要求是什么?

    线程本地存储上的Ulrich Drepper's paper概述了几种不同cpu架构的TLS ABI,但我发现它不足以作为实现TLS的基础,原因有两个: 它省略了许多重要的拱门,如ARM,MIPS等(虽然包括一堆与Itanium完全无关的) 更重要的是,它将大量实现细节与ABI混合在一起,因此很难说出互操作性需要哪些属性,哪些只是其实现的一部分 . 例如,i386唯一的实际ABI要求是...
  • 3 votes
     answers
     views

    如何将Linux内核Bin转换为ELF格式

    我们有一个没有ELF头的Linux内核二进制文件,我们的引导加载程序将根据来自ELF头的计算加载内核映像(早期的QNX内核映像有ELF头),但由于我们的Linux内核映像没有一个ELF头,我们的引导加载程序拒绝将此内核映像加载到内存中 . 由于某些原因,我们没有更改引导加载程序代码的选项,因此我们唯一的选择是将ELF标头插入具有特定入口点的Linux BIN文件中 . 实现它的方法是什么?
  • 0 votes
     answers
     views

    Android共享库的节大小总和大于共享的lib大小

    在Android中,如果我使用objdump工具分析共享库,我会观察到以下内容: 共享库中节大小的总和小于二进制文件大小 . 这是可以理解的,二进制大小= ELF Headers 大小程序 Headers 大小节大小节 Headers 大小 . 但是对于另一个共享库,节大小的总和大于共享库文件大小本身!这似乎非常令人惊讶 . 有没有这种情况会发生? 使用的命令:捕获截面尺寸:prebuilts /...
  • 40 votes
     answers
     views

    arm gcc toolchain as arm-elf or arm-none-eabi,有什么区别?

    当你构建一个gcc工具链时,有可能将它构建为arm-elf或arm-none-eabi,但有什么区别? 我今天使用的是eabi,但这只是因为其他人似乎都这样做了......但是因为这是一个非常糟糕的论点,所以理解它们的区别真的很好 . 注意:此工具链将交叉编译基于Cortex-M3的mcu代码:如stm32 . 谢谢 Some links : EABI: http://en.wikipedi...
  • 15 votes
     answers
     views

    Linux上C字符串和指针的分段故障

    所以我有以下程序: int main(){ char* one = "computer"; char two[] = "another"; two[1]='b'; one[1]='b'; return 0; } 它在“one [1] ='b'”这一行上有段错误,因为指针“one”所指向的内存必须位于只读内存中 . 然而,问题是为什么“2...
  • 3 votes
     answers
     views

    在Linux机器上创建并测试x86-64 ELF可执行shellcode

    我正在创建有关缓冲区溢出和堆栈/堆攻击的培训 . 我正在研究一台Ubuntu 12.04 x86_64 机器,并希望展示一些示例错误程序以及利用这些漏洞的方法 . 我试图从我到目前为止找到的最基本的shellcode开始,简单的退出调用,它应该退出程序溢出 . 特此 exitcall.asm : ;exitcall.asm [SECTION .text] global _start _st...

热门问题