Shared Library Symbole Table



  • Hallo,
    ich hoffe meine letzte Frage zu den Shared Librarys.

    Wenn ich selbst eine Shared Library erstellt habe, dann sehe ich in der Symbol Table immer Einträge mit "__" bzw "_".

    Aktuelles Beispiel aus einer Testlibrary von mir:

    SYMBOL TABLE:
    000000b4 l d .hash 00000000
    0000015c l d .dynsym 00000000
    000002cc l d .dynstr 00000000
    00000382 l d .gnu.version 00000000
    000003b0 l d .gnu.version_r 00000000
    000003e0 l d .rel.dyn 00000000
    00000408 l d .rel.plt 00000000
    00000418 l d .init 00000000
    00000430 l d .plt 00000000
    00000460 l d .text 00000000
    00000578 l d .fini 00000000
    00000594 l d .rodata 00000000
    000005b8 l d .eh_frame 00000000
    000015bc l d .ctors 00000000
    000015c4 l d .dtors 00000000
    000015cc l d .jcr 00000000
    000015d0 l d .dynamic 00000000
    00001698 l d .got 00000000
    000016a4 l d .got.plt 00000000
    000016b8 l d .data 00000000
    000016c0 l d .bss 00000000
    00000000 l d .comment 00000000
    00000000 l d *ABS* 00000000
    00000000 l d *ABS* 00000000
    00000000 l d *ABS* 00000000
    00000460 l F .text 00000000 call_gmon_start
    00000000 l df *ABS* 00000000 crtstuff.c
    000015bc l O .ctors 00000000 __CTOR_LIST__
    000015c4 l O .dtors 00000000 __DTOR_LIST__
    000015cc l O .jcr 00000000 __JCR_LIST__
    000016bc l O .data 00000000 p.0
    000016c0 l O .bss 00000001 completed.1
    00000484 l F .text 00000000 __do_global_dtors_aux
    000004e0 l F .text 00000000 frame_dummy
    00000000 l df *ABS* 00000000 crtstuff.c
    000015c0 l O .ctors 00000000 __CTOR_END__
    000015c8 l O .dtors 00000000 __DTOR_END__
    000005b8 l O .eh_frame 00000000 __FRAME_END__
    000015cc l O .jcr 00000000 __JCR_END__
    00000548 l F .text 00000000 __do_global_ctors_aux
    00000000 l df *ABS* 00000000 mylib.c
    000016b8 l O .data 00000000 .hidden __dso_handle
    000015d0 g O *ABS* 00000000 _DYNAMIC
    00000418 g F .init 00000000 _init
    000016c0 g *ABS* 00000000 __bss_start
    0000051c g F .text 0000002a my_print
    00000000 F *UND* 00000036 printf@@GLIBC_2.0
    00000578 g F .fini 00000000 _fini
    00000000 w F *UND* 000000e7 __cxa_finalize@@GLIBC_2.1.3
    000016c0 g *ABS* 00000000 edata
    000016a4 g O *ABS* 00000000 _GLOBAL_OFFSET_TABLE_
    000016c4 g *ABS* 00000000 end
    00000000 w *UND* 00000000 _Jv_RegisterClasses
    00000000 w *UND* 00000000 __gmon_start

    Die einzige Funktion die ich in dieser Testlibrary geschrieben habe ist "my_print".

    Woher kommen nun die anderen Einträge und was bedeuten Sie?

    Danke für euere Hilfe 🙂



  • Die anderen Einträge sind globale Segmente, importirte Funktionen und Variabeln.


Anmelden zum Antworten