Frage

Ist es möglich, mit GNU-Tools (gcc, binutils, usw.) alle Vorkommen einer Montageanleitung in eine no-op ändern? Insbesondere gcc mit der Option -pg generiert die folgende Anordnung (ARM):

   0x0: e1a0c00d    mov ip, sp
   0x4: e92dd800    stmdb   sp!, {fp, ip, lr, pc}
   0x8: e24cb004    sub fp, ip, #4  ; 0x4
   0xc: ebfffffe    bl  0 <mcount>

Ich mag die Adresse dieser letzten Anweisung erfassen und sie dann wie im folgenden Code zu einer nop ändern

   0x0: e1a0c00d    mov ip, sp
   0x4: e92dd800    stmdb   sp!, {fp, ip, lr, pc}
   0x8: e24cb004    sub fp, ip, #4  ; 0x4
   0xc: e1a00000    nop         (mov r0,r0)

Der Linux-Kernel kann zur Laufzeit etwas ähnliches wie dies tun, aber ich bin für eine Build-time Lösung suchen.

scroll top