2016-03-24 19 views
0

Ich habe eine opaque statisch verknüpfte Bibliothek (.a Datei) und einige undurchsichtige Objektdateien (.o), die Funktionen in der statischen Bibliothek aufrufen. Ich möchte Wrapper um einige Funktionsaufrufe in der statischen Bibliothek hinzufügen.Shim-Funktion in der statischen Bibliothek

Wenn es eine dynamische Bibliothek wäre, würde ich LD_PRELOAD zur Laufzeit verwenden, aber da dies statisch verknüpft ist, bin ich sicher, dass ich eine Kompilierzeit-Technik verwenden muss. Ich dachte -Z muldefs, die mir erlauben würde, die Funktionsaufrufe außer Kraft zu setzen, aber ich muss immer noch in der Lage sein, die ursprüngliche Funktion in meinem Shim aufzurufen, so dass ich das nicht direkt verwenden kann.

Die beste Lösung, die ich mir vorstellen kann, ist objcopy --redefine-sym, um die Funktionen innerhalb der Opaque-Bibliothek umzubenennen und dann meinen Shim-Code die Funktionen mit ihrem neuen Namen aufrufen zu lassen. Gibt es einen besseren Weg?

Antwort

1

Gibt es einen besseren Weg?

Nein, das ist das Beste, was Sie tun können.