Acrobase  

Καλώς ήρθατε στην AcroBase.
Δείτε εδώ τα πιο πρόσφατα μηνύματα από όλες τις περιοχές συζητήσεων, καθώς και όλες τις υπηρεσίες της AcroBase.
H εγγραφή σας είναι γρήγορη και εύκολη.

Επιστροφή   Acrobase > Υπολογιστές και Τεχνολογία > Linux
Ομάδες (Groups) Τοίχος Άρθρα acrobase.org Ημερολόγιο Φωτογραφίες Στατιστικά

Δεν έχετε δημιουργήσει όνομα χρήστη στην Acrobase.
Μπορείτε να το δημιουργήσετε εδώ

Απάντηση στο θέμα
 
Εργαλεία Θεμάτων Αξιολογήστε το θέμα Τρόποι εμφάνισης
  #16  
Παλιά 20-11-08, 11:16
Το avatar του χρήστη Archmage
Archmage Ο χρήστης Archmage δεν είναι συνδεδεμένος
Mέλος
 

Τελευταία φορά Online: 04-09-10 11:29
Φύλο: Άντρας
Η διαθεσή μου τώρα:
Αρχική Δημοσίευση από Morgul Εμφάνιση μηνυμάτων
Αυτό φαίνεται στην assembly του printf ("%d\n", sizeof (long double)); ...... Δεν υπάρχει πουθενά κλήση υπορουτίνας... απλά περνάει τη σταθερά 16 ως παράμετρο στην printf() (στο σύστημά μου ένα long double είναι 16 bytes — βρε τι μαθαίνεις κάθε μέρα).
Σε μια gcc 3.4.2 που έχω στο pc για τα quick'n'dirty βγάζει:

Κώδικας:
        call    ___main
        movl    $12, 4(%esp)
        movl    $LC0, (%esp)   # το printf string
        call    _printf
        leave
        ret
Έτσι βλέπουμε ότι στο συγκεκριμένο σύστημα το size του long double είναι 12 και όχι 16!

Αναρωτιέμαι, αν βάλω την ίδια ακριβώς gcc σε άλλο cpu (intel ή amd), το size θα παραμείνει 12; Όμως αυτή υποτίθεται ότι τρέχει τόσο σε απλό pentium 1 όσο και στα τελευταίας τεχνολογίας. O compiler αναγνωρίζει το cpu και ανάλογα "καρφώνει" το sizeof;

Χμμμ... προβληματισμοί...


υγ: ναι, μπορεί όλα αυτά να ανήκουν στο /programming
__________________
Wovon man nicht sprechen kann, darüber muß man schweigen.
Απάντηση με παράθεση
  #17  
Παλιά 20-11-08, 11:19
Το avatar του χρήστη Gildor
Gildor Ο χρήστης Gildor δεν είναι συνδεδεμένος
High Elf
 

Τελευταία φορά Online: Χθες 23:35
Φύλο: Δεν έχω αποφασίσει ακόμα
Η διαθεσή μου τώρα:
Αρχική Δημοσίευση από Archmage Εμφάνιση μηνυμάτων
Κώδικας:
        call    ___main
        movl    $12, 4(%esp)
        movl    $LC0, (%esp)   # το printf string
        call    _printf
        leave
        ret
σορρυ που διακοπτω... αυτα πως εμφανιζονται; με decompiler του binary?
__________________
Υπάρχουν σε όλα δύο απόψεις...
Αυτή που λέω εγώ, και η σωστή!
Απάντηση με παράθεση
  #18  
Παλιά 20-11-08, 11:50
Το avatar του χρήστη Archmage
Archmage Ο χρήστης Archmage δεν είναι συνδεδεμένος
Mέλος
 

Τελευταία φορά Online: 04-09-10 11:29
Φύλο: Άντρας
Η διαθεσή μου τώρα:
Αρχική Δημοσίευση από Gildor Εμφάνιση μηνυμάτων
σορρυ που διακοπτω... αυτα πως εμφανιζονται; με decompiler του binary?
Πχ με τα εξής:

gcc -S test.c
vi test.s
__________________
Wovon man nicht sprechen kann, darüber muß man schweigen.
Απάντηση με παράθεση
  #19  
Παλιά 20-11-08, 18:48
Qluser Ο χρήστης Qluser δεν είναι συνδεδεμένος
Μέλος
 

Τελευταία φορά Online: 04-09-10 11:08
Αρχική Δημοσίευση από Archmage Εμφάνιση μηνυμάτων
Αναρωτιέμαι, αν βάλω την ίδια ακριβώς gcc σε άλλο cpu (intel ή amd), το size θα παραμείνει 12;
Ναί, αν και το άλλο CPU τρέχει σε 32bit mode.

O compiler αναγνωρίζει το cpu και ανάλογα "καρφώνει" το sizeof;
Τα μεγέθη είναι hardwired στον compiler με βάση την target αρχιτεκτονική. Αν έχεις όρεξη ψάξε για '#define.*_TYPE_SIZE' στα gcc/defaults.h και gcc/config/* στον κώδικα του GCC.

Λ.
Απάντηση με παράθεση
  #20  
Παλιά 20-11-08, 21:40
Το avatar του χρήστη Morgul
Morgul Ο χρήστης Morgul δεν είναι συνδεδεμένος
Μέλος
 

Τελευταία φορά Online: Σήμερα 00:04
Φύλο: Δεν έχω αποφασίσει ακόμα
Αρχική Δημοσίευση από Gildor Εμφάνιση μηνυμάτων
σορρυ που διακοπτω... αυτα πως εμφανιζονται; με decompiler του binary?
Δεν υπάρχει κανένας λόγος να κάνεις decompile το binary.

Ο gcc στην ουσία εκτελεί όλο το GNU toolchain για να φτάσει από source σε εκτελέσιμο (ή βιβλιοθήκη). Κάθε βήμα απ'αυτά μπορείς να το εκτελέσεις μόνο του, είτε τρέχοντας τον gcc με τις κατάλληλες παραμέτρους, ή τρέχοντας τα προγράμματα που τρέχει «κρυφά» ο gcc για να κάνει την ίδια δουλειά:
  • Preprocessing: cpp (C σε preprocessed C)
  • Compilation: gcc -S (C σε assembly)
  • Assembly: as (Assembly σε Machine Code)
  • Link: ld (Machine Code σε ELF εκτελέσιμο ή ELF βιβλιοθήκη)
Στην προκειμένη περίπτωση, είπα gcc -S file.c -o file.s.
__________________
Δείτε την τεχνοκρατική σελίδα μου (γραμμένη 100% σε δυαδικό σύστημα)
Απάντηση με παράθεση
Οι παρακάτω χρήστες έχουν πει 'Ευχαριστώ' στον/στην Morgul για αυτό το μήνυμα:
Gildor (21-11-08)
  #21  
Παλιά 21-11-08, 14:02
Το avatar του χρήστη Gildor
Gildor Ο χρήστης Gildor δεν είναι συνδεδεμένος
High Elf
 

Τελευταία φορά Online: Χθες 23:35
Φύλο: Δεν έχω αποφασίσει ακόμα
Η διαθεσή μου τώρα:
Δεν εχει σχεση με τα παραπανω, αλλα συνεχιζω τη διηγηση....

εφτιαξα λοιπον ενα μινι-συστηματακι με binaries κλπ, στο οποιο εκανα chroot για να αρχισω την εγκατασταση

Για καποιο λογο ομως, το συστημα δεν αναγνωριζει το αρχειο gcc το οποιο ειναι απαραιτητο!! οταν παω να το τρεξω: "no such file or directory"

στην αρχη πιστεψα οτι ισως φταιει το PATH αλλα ειναι σωστο. το gcc φαινεται στο ls

απο αλλη κονσολα, μπηκα απο το 'κανονικο' filesystem. Οταν παω να τρεξω το ιδιο το αρχειο, στο ιδιο directory, τρεχει κανονικα. Μονο απο το chroot δεν μπορω!

Δευτερη υποθεση μου ειναι οτι ισως το αρχειο ειναι link στο 'εξωτερικο' πρωτοτυπο, και γιαυτο το αναγνωριζει απεξω, αλλα οχι απο μεσα, οπου το εξωτερικο πρωτοτυπο δεν υπαρχει. Ομως οταν γραφω ls -l δε μου γραφει τιποτα για link. Και τα δικαιωματα ηταν x σε ολα

Μπηκα λοιπον στο bin directory και ετρεξα καποια Bins. Ολα ετρεχαν κανονικα, εκτος απο το gcc. Οταν εκανα ls -l παρατηρησα το εξης: το gcc ειχε διπλα του τον αριθμο 1 ενω τα αρχεια που ετρεχαν ειχαν τον αριθμο 3

εψαξα τα manuals και δε βρηκα τιποτα για το τι ειναι ο αριθμος διπλα. Λετε να παιζει ρολο;
__________________
Υπάρχουν σε όλα δύο απόψεις...
Αυτή που λέω εγώ, και η σωστή!

Τελευταία επεξεργασία από το χρήστη Gildor : 21-11-08 στις 14:10
Απάντηση με παράθεση
  #22  
Παλιά 21-11-08, 15:08
Το avatar του χρήστη Morgul
Morgul Ο χρήστης Morgul δεν είναι συνδεδεμένος
Μέλος
 

Τελευταία φορά Online: Σήμερα 00:04
Φύλο: Δεν έχω αποφασίσει ακόμα
Αρχική Δημοσίευση από Gildor Εμφάνιση μηνυμάτων
Δεν εχει σχεση με τα παραπανω, αλλα συνεχιζω τη διηγηση....

εφτιαξα λοιπον ενα μινι-συστηματακι με binaries κλπ, στο οποιο εκανα chroot για να αρχισω την εγκατασταση

Για καποιο λογο ομως, το συστημα δεν αναγνωριζει το αρχειο gcc το οποιο ειναι απαραιτητο!! οταν παω να το τρεξω: "no such file or directory"

στην αρχη πιστεψα οτι ισως φταιει το PATH αλλα ειναι σωστο. το gcc φαινεται στο ls
Το μήνυμα είναι παραπλανητικό (θυμάσαι αυτό που έλεγα ότι τα διάφορα μηνύματα λάθους μπορεί να σημαίνουν διαφορετικά πράγματα.

Σ'αυτή την περίπτωση, το αρχείο που τρέχεις δεν είναι binary αλλά script κάποιου είδους και από το chrooted σύστημά σου λείπει ο interpreter του (ή είναι σε λάθος θέση). Ως πείραμα, σώζεις το εξής bash script:

Κώδικας:
#!/papaki/bash
echo "Testing."
Αν το σώσεις ως papaki:

Κώδικας:
$ chmod +x papaki
$ ./papaki
bash: ./papaki: /papaki/bash: bad interpreter: No such file or directory
Για να λύσεις το μυστήριο, δες με file gcc αν το αρχείο είναι binary ή text, και δες ποιος είναι ο interpreter του (αναγράφεται στην πρώτη γραμμή ενός script, με τη σύνταξη #!INTERPRETER-PATH). Στο chroot environment πρέπει να υπάρχει αυτός ο interpreter και να τρέχει.

Μπηκα λοιπον στο bin directory και ετρεξα καποια Bins. Ολα ετρεχαν κανονικα, εκτος απο το gcc. Οταν εκανα ls -l παρατηρησα το εξης: το gcc ειχε διπλα του τον αριθμο 1 ενω τα αρχεια που ετρεχαν ειχαν τον αριθμο 3.
Γενικά πρέπει να είσαι πολύ πιο συγκεκριμένος! Το ls -l τυπώνει πολλούς αριθμούς. Ο μόνος που είναι «δίπλα» στο filename είναι η ημερομηνία/ώρα τελευταίας αλλαγής. Φαντάζομαι ότι λες για το μονοψήφιο (συνήθως αριθμό) στη δεύτερη στήλη (μετά από τα permissions). Αυτός είναι ο αριθμός των hard links προς αυτό το αρχείο. Δεν παίζει κανένα ρόλο, αλλά αν ο gcc είναι symlink και το αρχείο στο οποίο δείχνει το symlink δεν είναι στη σωστή θέση, τότε θα πάρεις ξανά ένα File not found.

Αν θες πιο πολλή πληροφορία, το ls -lF /usr/bin/gcc* θα σου πει πιο πολλά (symlinks πχ).
__________________
Δείτε την τεχνοκρατική σελίδα μου (γραμμένη 100% σε δυαδικό σύστημα)
Απάντηση με παράθεση
Οι παρακάτω χρήστες έχουν πει 'Ευχαριστώ' στον/στην Morgul για αυτό το μήνυμα:
Gildor (21-11-08)
  #23  
Παλιά 21-11-08, 15:33
Το avatar του χρήστη Gildor
Gildor Ο χρήστης Gildor δεν είναι συνδεδεμένος
High Elf
 

Τελευταία φορά Online: Χθες 23:35
Φύλο: Δεν έχω αποφασίσει ακόμα
Η διαθεσή μου τώρα:
ELF 32-bit LSB executable, [...] dynamically linked (uses shared libs), not stripped
__________________
Υπάρχουν σε όλα δύο απόψεις...
Αυτή που λέω εγώ, και η σωστή!
Απάντηση με παράθεση
  #24  
Παλιά 21-11-08, 17:09
Το avatar του χρήστη Morgul
Morgul Ο χρήστης Morgul δεν είναι συνδεδεμένος
Μέλος
 

Τελευταία φορά Online: Σήμερα 00:04
Φύλο: Δεν έχω αποφασίσει ακόμα
Αρχική Δημοσίευση από Gildor Εμφάνιση μηνυμάτων
ELF 32-bit LSB executable, [...] dynamically linked (uses shared libs), not stripped
Αυτό το λέει μέσα στο chroot environment, ή στο host;

Μέσα στο chroot environment, τι σου λέει αν του πεις ldd gcc (κάνε cut & paste, όχι αντιγραφή με το μάτι); Τι σου λέει αν του πεις strace gcc; Αν τυπώσει τα αντερά του, δοκίμασε strace gcc 2>&1 | grep -C2 ENOENT.
__________________
Δείτε την τεχνοκρατική σελίδα μου (γραμμένη 100% σε δυαδικό σύστημα)

Τελευταία επεξεργασία από το χρήστη Morgul : 21-11-08 στις 17:11
Απάντηση με παράθεση
Οι παρακάτω χρήστες έχουν πει 'Ευχαριστώ' στον/στην Morgul για αυτό το μήνυμα:
Gildor (21-11-08)
  #25  
Παλιά 21-11-08, 17:35
Το avatar του χρήστη Gildor
Gildor Ο χρήστης Gildor δεν είναι συνδεδεμένος
High Elf
 

Τελευταία φορά Online: Χθες 23:35
Φύλο: Δεν έχω αποφασίσει ακόμα
Η διαθεσή μου τώρα:
to chroot env δεν αναγνωριζει τις εντολες file και strace οποτε δεν μπορω να ξερω

απο chroot, οταν γραφω ldd παλι λεει no such file or directory

νομιζω οτι εχει ενδιαφερον το εξης: απο host, το ldd επιστρεφει σε μια γραμμη /lib/ld-linux.so.2 ενω αλλα αρχεια που δοκιμασα, λενε tools/lib/ld-linux.so.2

να το παλι το γνωστο προβλημα!!!

τωρα, το strace σε καποιες γραμμες γραφει: μπλα μπλα ...specs", Ρ_OK) = -1 ENOENT (No such file or directory)

Δεν μπορω να κανω paste γιατι ειναι αλλο μηχανημα

τιποτα ενδιαφερον;
__________________
Υπάρχουν σε όλα δύο απόψεις...
Αυτή που λέω εγώ, και η σωστή!
Απάντηση με παράθεση
  #26  
Παλιά 22-11-08, 00:36
avel Ο χρήστης avel δεν είναι συνδεδεμένος
Mέλος
 

Φύλο: Δεν έχω αποφασίσει ακόμα
Αρχική Δημοσίευση από Gildor Εμφάνιση μηνυμάτων
τιποτα ενδιαφερον;
Όχι, δε γράφεις τίποτε ενδιαφέρον.

Απάντηση με παράθεση
  #27  
Παλιά 22-11-08, 13:26
Το avatar του χρήστη Gildor
Gildor Ο χρήστης Gildor δεν είναι συνδεδεμένος
High Elf
 

Τελευταία φορά Online: Χθες 23:35
Φύλο: Δεν έχω αποφασίσει ακόμα
Η διαθεσή μου τώρα:
Αρχική Δημοσίευση από avel Εμφάνιση μηνυμάτων
Όχι, δε γράφεις τίποτε ενδιαφέρον.

Κοιταξες και σε αλλα μερη του φορουμ;

ΥΓ. Οκ, το εκανα παλι compile το gcc και τωρα δουλευει και απο μεσα και απο εξω
__________________
Υπάρχουν σε όλα δύο απόψεις...
Αυτή που λέω εγώ, και η σωστή!

Τελευταία επεξεργασία από το χρήστη Gildor : 22-11-08 στις 13:28
Απάντηση με παράθεση
Απάντηση στο θέμα


Συνδεδεμένοι χρήστες που διαβάζουν αυτό το θέμα: 1 (0 μέλη και 1 επισκέπτες)
 
Εργαλεία Θεμάτων
Τρόποι εμφάνισης Αξιολογήστε αυτό το θέμα
Αξιολογήστε αυτό το θέμα:

Δικαιώματα - Επιλογές
You may not post new threads
You may post replies
You may not post attachments
You may not edit your posts

BB code is σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας

Που θέλετε να σας πάμε;


Όλες οι ώρες είναι GMT +3. Η ώρα τώρα είναι 04:42.



Forum engine powered by : vBulletin Version 3.8.2
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.