Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cpl:labs:12 [2017/01/11 01:00]
bogdan.nitulescu [12. Linkers and Loaders]
cpl:labs:12 [2017/01/11 01:06] (current)
bogdan.nitulescu [Exerciții de laborator (15p)]
Line 205: Line 205:
  
 **LD_PRELOAD** - calea către o bibliotecă dinamică ce va fi încărcată în locul unei alte biblioteci; spre exemplu astfel se poate înlocui biblioteca standard C **LD_PRELOAD** - calea către o bibliotecă dinamică ce va fi încărcată în locul unei alte biblioteci; spre exemplu astfel se poate înlocui biblioteca standard C
-======= Exerciții de laborator (11p) =======+======= Exerciții de laborator (15p) =======
  
-În rezolvarea laboratorului folosiți arhiva de sarcini {{:​cpl:​labs:​lab11-tasks.zip|}}.+În rezolvarea laboratorului folosiți arhiva de sarcini {{:​cpl:​labs:​lab12-tasks.zip|}}.
  
 Pe măsura ce rezolvați exercițiile,​ nu uitați că modificarea optiunilor compilării implică și recompilarea fișierelor sursă. Pe măsura ce rezolvați exercițiile,​ nu uitați că modificarea optiunilor compilării implică și recompilarea fișierelor sursă.
Line 311: Line 311:
 Modificați scriptul de linker din cadrul directorului pentru a introduce o secțiune de date specială ''​.cpl''​ care să adune secțiunile ''​.cpl''​ din fiecare fișier obiect de intrare, conform **TODO-ului** din script (revedeți secțiunea [[http://​ocw.cs.pub.ro/​courses/​cpl/​labs/​11#​provide|PROVIDE]]). Apoi, în cadrul fișierului ''​main.c'',​ exportați două simboluri pentru începutul și sfârșitul acestei secțiuni și iterați prin toți pointerii, apelând pe rând funcția către care aceștia trimit (puteți pasa orice întreg ca parametru). Modificați scriptul de linker din cadrul directorului pentru a introduce o secțiune de date specială ''​.cpl''​ care să adune secțiunile ''​.cpl''​ din fiecare fișier obiect de intrare, conform **TODO-ului** din script (revedeți secțiunea [[http://​ocw.cs.pub.ro/​courses/​cpl/​labs/​11#​provide|PROVIDE]]). Apoi, în cadrul fișierului ''​main.c'',​ exportați două simboluri pentru începutul și sfârșitul acestei secțiuni și iterați prin toți pointerii, apelând pe rând funcția către care aceștia trimit (puteți pasa orice întreg ca parametru).
 ===== BONUS ===== ===== BONUS =====
-=== 1 cpl karma - LD_PRELOAD === 
  
 Scopul acestui exercițiu este de a suprascrie o funcție de bibliotecă (similar ca la exercițiul 3). Scopul acestui exercițiu este de a suprascrie o funcție de bibliotecă (similar ca la exercițiul 3).
Line 317: Line 316:
 Implementați acest lucru folosindu-vă de variabila de mediu ''​LD_PRELOAD''​. Implementați acest lucru folosindu-vă de variabila de mediu ''​LD_PRELOAD''​.
  
-=== 1 cpl karma - rpath === 
  
 Refaceți exercițiul 2 fără a folosi variabila de mediu ''​LD_LIBRARY_PATH''​. ​ Refaceți exercițiul 2 fără a folosi variabila de mediu ''​LD_LIBRARY_PATH''​. ​
cpl/labs/12.1484089258.txt.gz · Last modified: 2017/01/11 01:00 by bogdan.nitulescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0