Fragen? Antworten! Siehe auch: Alternativlos
Mein Hauptproblem war, dass gcc immer noch Aufrufe via PLT erzeugt hat. Was mir heute nachmittag auffiel: Das waren alles Funktionen, die aus Assembler-Quellen kamen, nicht aus C-Quellen. Da fehlte schlicht überall ein .hidden, wenn man im PIE-Modus kompilierte. -fvisibility=hidden bewirkt nichts bei .S-Quellen.
Oh und für die Variablen braucht man Relozierung, aber da tat mein vorgestern gehackter Code sogar schon. Nur der PLT-Scheiß war noch im Weg.
Das ist ein großer Meilenstein. Jetzt ist noch die Frage, wieviel das kostet, und ob ich das nicht einfach zum Default machen sollte. Der Relokationscode kostet ein paar hundert zusätzliche Bytes im Codesegment.