Forum: PC-Programmierung Symboltabelle (readelf -s) nach gcc Kompilierung


von Christoph (Gast)


Lesenswert?

Hallo, ich habe folgendes Programm mit dem gcc Kompiler erstellt:

class baseA {
public:
  int  Adat;
  int Ameth (int in, char other);
  int PublicVAR (int pub) {return pub;};
//  virtual int virtVAR (int arg) {return arg;};
protected:
  char ProtectedVAR;
private:
  int PrivateVAR;

};

int funktion (int a = 2, double b = 5) {
  return a;
}

int main() {

  baseA AbaseA;

  int InternVAR = 0;

  funktion();

}

Anschließend habe ich den readelf Befehl durchgeführt um die 
Symboltabelle zu betrachte:

  75: 0000fc36    40 FUNC    GLOBAL DEFAULT    1 _Z8funktionid

Nun verstehe ich nicht, was _Z8 bedeutet?? id ist mir klar, dass steht 
für int und double.

Ich hoffe ihr könnt mir helfen. Vielen Dank......

von Stephan M. (stephanm)


Lesenswert?

Hi,

C++ Name Mangling ist "vendor specific", d.h. g++ hat (im Rahmen der 
ABI) alle Freiheiten der Welt, Namen zu verwursten.

Irgendwo gabs ne Doku zum Mangling von g++, frag mal Google.

Stephan

P.S. '8' -> die nächsten acht Zeichen sind ein Namensliteral

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.