IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

A quoi correspondent les adresses avec la commande ldd ?


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Points : 10
    Points
    10
    Par défaut A quoi correspondent les adresses avec la commande ldd ?
    Bonjour,

    Le retour de la commande ldd indique un emplacement mémoire des librairies dynamiques:

    linux-gate.so.1 ===========> (0xb7794000) <========= Adresse disque ou RAM ?
    libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb75cd000)
    /lib/ld-linux.so.2 (0xb7797000)

    A quoi correspondent ces adresse ?

    S'agit-il d'une adresse disque?

    ou

    S'agit-il d'une adresse RAM ?

    auquel cas les librairies sont chargées en permanence en RAM ou un segment leur ai réservé d'avance ?

    Si quelqu'un pourrait éclairer ma lanterne ?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je ne connais pas trop les systèmes *n*x, mais je pense que c'est l'adresse, dans l'espace d'adressage du processus, où la bibliothèque sera chargée. Réservée à l'avance, apparemment. Je suppose que c'est ignoré en cas de Address Space Layout Randomization (ASLR).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Citation Envoyé par shin101 Voir le message
    Bonjour,

    Le retour de la commande ldd indique un emplacement mémoire des librairies dynamiques:

    linux-gate.so.1 ===========> (0xb7794000) <========= Adresse disque ou RAM ?
    libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb75cd000)
    /lib/ld-linux.so.2 (0xb7797000)

    A quoi correspondent ces adresse ?

    S'agit-il d'une adresse disque?

    ou

    S'agit-il d'une adresse RAM ?
    Bonjour,
    En gros, ldd charge l'exécutable et les bibliothèques dont il a besoin. L'adresse qui apparaît est simplement l'adresse RAM à laquelle ces bibliothèques ont été chargées lors de l'invocation de ldd.
    Sur un linux moderne qui dispose de l'asrl tu remarques que ces adresses changent d'une invocation à l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ ldd /bin/cat
    	linux-vdso.so.1 =>  (0x00007ffed5386000)
    	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd66c076000)
    	/lib64/ld-linux-x86-64.so.2 (0x0000562bb2bd3000)
    $ ldd /bin/cat
    	linux-vdso.so.1 =>  (0x00007ffded7df000)
    	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f284bf000)
    	/lib64/ld-linux-x86-64.so.2 (0x000055b2b2143000)
    $ ldd /bin/cat
    	linux-vdso.so.1 =>  (0x00007ffcdf9e2000)
    	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc979309000)
    	/lib64/ld-linux-x86-64.so.2 (0x000055e370f08000)
    Citation Envoyé par shin101 Voir le message

    auquel cas les librairies sont chargées en permanence en RAM ou un segment leur ai réservé d'avance ?

    Si quelqu'un pourrait éclairer ma lanterne ?
    Quelques unes comme la libc doivent à mon avis toujours se trouver en mémoire (toujours utilisée par au moins un processus), d'autres sont chargées puis déchargées suivant l'utilisation.
    Chaque processus peut examiner ce qu'il y a dans sa mémoire virtuelle en consultant le fichier /proc/self/maps et qui donerait par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    cat /proc/self/maps
    00400000-0040c000 r-xp 00000000 08:02 1179705                            /bin/cat
    0060b000-0060c000 r--p 0000b000 08:02 1179705                            /bin/cat
    0060c000-0060d000 rw-p 0000c000 08:02 1179705                            /bin/cat
    012ed000-0130e000 rw-p 00000000 00:00 0                                  [heap]
    7fa586f60000-7fa587239000 r--p 00000000 08:02 2098629                    /usr/lib/locale/locale-archive
    7fa587239000-7fa5873f9000 r-xp 00000000 08:02 3020917                    /lib/x86_64-linux-gnu/libc-2.23.so
    7fa5873f9000-7fa5875f8000 ---p 001c0000 08:02 3020917                    /lib/x86_64-linux-gnu/libc-2.23.so
    7fa5875f8000-7fa5875fc000 r--p 001bf000 08:02 3020917                    /lib/x86_64-linux-gnu/libc-2.23.so
    7fa5875fc000-7fa5875fe000 rw-p 001c3000 08:02 3020917                    /lib/x86_64-linux-gnu/libc-2.23.so
    7fa5875fe000-7fa587602000 rw-p 00000000 00:00 0 
    7fa587602000-7fa587628000 r-xp 00000000 08:02 3015840                    /lib/x86_64-linux-gnu/ld-2.23.so
    7fa5877f2000-7fa5877f5000 rw-p 00000000 00:00 0 
    7fa587803000-7fa587827000 rw-p 00000000 00:00 0 
    7fa587827000-7fa587828000 r--p 00025000 08:02 3015840                    /lib/x86_64-linux-gnu/ld-2.23.so
    7fa587828000-7fa587829000 rw-p 00026000 08:02 3015840                    /lib/x86_64-linux-gnu/ld-2.23.so
    7fa587829000-7fa58782a000 rw-p 00000000 00:00 0 
    7ffc6edd6000-7ffc6edf8000 rw-p 00000000 00:00 0                          [stack]
    7ffc6edf8000-7ffc6edfa000 r--p 00000000 00:00 0                          [vvar]
    7ffc6edfa000-7ffc6edfc000 r-xp 00000000 00:00 0                          [vdso]
    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    C'est très clair merci beaucoup pour vos réponses.

    Je n'avais pas fait attention aux adresses qui pouvaient changer dynamiquement au gré des appels.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/04/2012, 02h07
  2. A quoi correspondent les versions ?
    Par Mr_SATAN dans le forum Débuter
    Réponses: 8
    Dernier message: 04/12/2011, 14h04
  3. A quoi correspondent les pages ?&ext_id=
    Par patchi2 dans le forum Débuter
    Réponses: 3
    Dernier message: 12/12/2008, 10h34
  4. A quoi correspondent les requêtes de type "change db" ?
    Par Christophe Charron dans le forum Débuter
    Réponses: 2
    Dernier message: 27/02/2008, 19h22
  5. A quoi correspondent les commandes type AddIcon ?
    Par scda13 dans le forum Administration système
    Réponses: 1
    Dernier message: 22/12/2007, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo