Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

关于GOT表和PIC/PIE #8

@dogtopus

Description

@dogtopus

搜别的东西的时候路过这边,看到readme里提到了:

如果想采用elf加载器来实现gcc编译mrp仍然需要解决r9和r10寄存器的问题,因为斯凯使用armcc编译的elf与gcc编译的elf是不同的,虽然都是静态PIE,但是gcc编译的结果仍然保留了GOT表

从我折腾某些MMUless系统的经验以及这边的描述看,我感觉mrp用的可能不是PIC/PIE而只是单纯的因为没有或者不想用MMU而用了reloc(gcc可以用-Wl,--emit-relocs生成)

如果猜测属实,换成纯reloc应该就可以避免这类bug。程序不会因为r9和r10被用作PIC寄存器(sb和sl)导致寄存器损坏(虽然r9本身是platform dependent所以如果mrp和gcc/eabi对r9默认的使用方法不同可能还是需要patch gcc来彻底修复),也不存在需要处理GOT表的问题。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions