Was bedeutet ".hidden" in der Ausgabe der Ausgabe objdump -t?

8

Beispiel:

%Vor%     
MBober 04.07.2012, 13:06
quelle

2 Antworten

1

Dies bedeutet, dass die Sichtbarkeit des Symbols verborgen ist: Ссылка

Gründe für das Ändern der Sichtbarkeit von Symbolen sind:

  • Geringeres Risiko einer Symbolkollision.
  • Kleinere Binärdateien.
  • Reduzierte Startzeit, da der dynamische Linker nicht so viele Symbole verarbeiten muss.
  • Möglichkeiten für effizienteren Code, da der Compiler weiß, dass ein Symbol nicht über ein LD_PRELOAD-System überschrieben werden kann.
  • Verhinderung des Aufrufs von Drittanbietersoftware in undokumentierte APIs.

Weitere Informationen finden Sie unter Ссылка / p>     

Daniel Trebbien 04.07.2012, 13:16
quelle
1

Ein Link, Sichtbarkeit Unterstützung (GCC)

erklärt

Vom Link:

  • Es verbessert wesentlich die Ladezeiten Ihres DSO (Dynamic Shared Object). Zum Beispiel kann eine große C ++ Template-basierte Bibliothek, die (die TnFOX Boost.Python Bindungen Bibliothek) getestet lädt nun in acht Sekunden statt über sechs Minuten!

  • Damit kann der Optimierer besseren Code erzeugen. PLT Indirekt (wenn ein Funktionsaufruf oder variablen Zugriff muss über die Global Offset Tabelle nachgeschlagen wird wie in Code PIC) vollständig somit weitgehend vermieden wird vermieden Pipeline-Blockierungen auf moderne Prozessoren und damit viel schnellen Code. Wenn die meisten Symbole lokal gebunden sind, können sie außerdem vollständig durch das gesamte DSO entfernt (entfernt) werden. Dies gibt einen größeren Spielraum insbesondere für die Inliner, die nicht mehr benötigt einen Einstiegspunkt zu halten, um „just in case“.

  • Reduziert die Größe Ihres DSO um 5-20%. Das exportierte Symboltabellenformat von ELF ist ziemlich space-hog und gibt den vollständigen Namen des Mangelsymbols an, das bei starker Verwendung von Vorlagen ungefähr 1000 Bytes umfassen kann. C ++ Vorlagen speien eine große Anzahl von Symbolen aus und eine typische C ++ Bibliothek kann 30.000 Symbole leicht übertreffen, was ungefähr 5-6 MB ist! Deshalb, wenn Sie das 60-80% der unnötigen Symbole ausschneiden, kann Ihr DSO sein Megabyte kleiner!

  • Deutlich geringere Wahrscheinlichkeit einer Symbolkollision. Das alte Elend zweier Bibliotheken, die intern das gleiche Symbol für verschiedene Dinge verwenden, ist mit diesem Patch endlich hinter uns. Halleluja!

Obwohl die oben angegebene Bibliothek ein Extremfall ist, reduzierte die neue Sichtbarkeitsunterstützung die exportierte Symboltabelle von & gt; 200.000 Symbole auf weniger als 18.000. Einige 21Mb wurden auch von der binären Größe abgeschlagen!

Nutzungsbeispiel und potentielle Fallstricke bei Verwendung des Sichtbarkeitsattributs

    
slashmais 04.07.2012 13:32
quelle

Tags und Links