Recovering LLVM-IR type information using static analysis

Πτυχιακή Εργασία uoadl:3389619 43 Αναγνώσεις

Μονάδα:
Τμήμα Πληροφορικής & Τηλεπικοινωνιών
Πληροφορική
Ημερομηνία κατάθεσης:
2024-02-15
Έτος εκπόνησης:
2024
Συγγραφέας:
ΑΡΓΥΡΟΣ ΑΝΑΡΓΥΡΟΣ
Στοιχεία επιβλεπόντων καθηγητών:
Γιάννης Σμαραγδάκης, Καθηγητής, Τμήμα Πληροφορικής και Τηλεπικοινωνιών, ΕΚΠΑ
Πρωτότυπος Τίτλος:
Recovering LLVM-IR type information using static analysis
Γλώσσες εργασίας:
Αγγλικά
Μεταφρασμένος τίτλος:
Ανάκτηση πληροφορίας τυπών στο LLVM-IR με χρήση στατικής ανάλυσης
Περίληψη:
Το "LLVM Compiler Infrastructure Project" είναι μια εξαιρετικά δημοφιλής συλλογή εργαλείων και τεχνολογίων για την κατασκευή μεταγλωττιστών. Ένα από τα κεντρικά χαρακτηριστικά του LLVM είναι ή αναπαράσταση κώδικα σε μορφή Static Single Assignment (SSA) γνωστή ως LLVM Intermediate Representation (LLVM-IR). Η LLVM-IR αποτελεί την γλώσσα που στοχεύουν να παράξουν πολλοί μεταγλωττιστές που θέλουν να κάνουν χρήση του πλαισίου LLVM όπως οι Clang/Clang++, Rustc, Swift και άλλοι.
Πολλά εργαλεία στατικής ανάλυσης επιλέγουν να εκτελούν τις αναλύσεις τους σε επίπεδο LLVM-IR καθώς σε αυτην κωδικοποιούνται οι απαραίτητες πληροφορίες που απαιτούνται για την εκτέλεση αυτών των αναλύσεων, ενώ ταυτόχρονα φιλτράρονται έννοιες υψηλού επιπέδου που είναι ειδικές μιας γλώσσας και που μπορεί να μπερδέψουν ή να προσθέσουν πολυπλοκότητα στην διαδικασία της ανάλυσης. Επιπλέον, η ανάλυση του στο επίπεδο της ενδιάμεσης αναπαράστασης τους επιτρέπει την συμβατότητα με μια πληθώρα γλωσσών, καθώς το αντίστοιχο LLVM-IR μπορεί να δημιουργηθεί από εγγενείς μεταγλωττιστές της γλώσσας. Το Cclyzer-Soufflé είναι ένα τέτοιο εργαλείο, που χρησιμοποιεί το LLVM framework για την ανάλυση του LLVM-IR που δημιουργείται από τον εγγενή μεταγλωττιστή μιας γλώσσας, καταγράφει έννοιες και γεγονότα σχετικά με τον πηγαίο κώδικα του προγράμματος και στη συνέχεια εκτελεί διάφορους αλγόριθμους στατικής ανάλυσης υλοποιημένους στην γλώσσα datalog.
Στην έκδοση 17 του LLVM framework λήφθηκε η απόφαση να μετακινηθεί από ένα αυστηρό σύστημα τύπων δείκτών σε αδιαφανείς τύπους δεικτών. Αυτή η αλλαγή είχε ως αποτέλεσμα πολλές πληροφορίες σχετικά με τους τύπους δείκτών στο LLVM-IR να αποκρυφθούν, πολλά εργαλεία στατικής ανάλυσης, συμπεριλαμβανομένου του Cclyzer-Soufflé βασιζόντουσαν σε αυτήν την πληροφορία για να λειτουργήσουν αποτελεσματικά. Αν και οι πληροφορίες για τους τύπους των δείκτων δεν είναι πλέον
άμεσα διαθέσιμες στο LLVM-IR, μεγάλο μέρος αυτής της πληροφορίας παραμένει έμμεσα διαθέσιμη και μπορεί να συναχθεί μέσω μεθόδων στατικής ανάλυσης. Σε αυτή την εργασία χρησιμοποιούμε στατική ανάλυση για να ανακτήσουμε τις πληροφορίες που έχουν αποκρυφθεί σχετικά με τους τύπους δεικτών από το επίπεδο LLVM-IR καθώς και ενσωμάτωνουμε τους μηχανισμούς που αναπτύξαμε, στην αλυσίδα εργαλείων του Cclyzer-Soufflé.
Κύρια θεματική κατηγορία:
Τεχνολογία – Πληροφορική
Λέξεις-κλειδιά:
Στατική Ανάλυση, Συναγωγή Τύπων, Datalog, LLVM-IR, Μεταγλωττιστές
Ευρετήριο:
Ναι
Αρ. σελίδων ευρετηρίου:
1
Εικονογραφημένη:
Όχι
Αρ. βιβλιογραφικών αναφορών:
5
Αριθμός σελίδων:
26