Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-07-2005, 13:40   #1
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
[gcc] ld -shared -whole-archive saga

Esiste un semplice modo per convertire un archivio statico (.a) in una libreria dinamica (.so):
ld -shared -whole-archive -o libfoo.so libfoo.a [ altri parametri... ]
PURTROPPO questa forma mi "perde" tutte le inizializzazioni/finalizzazioni (le funzioni dichiarate con gli attributi constructor/destructor)
E' singolare che, se a ld fornisco in pasto i singoli oggetti .o che compongono l'archivio .a, funziona tutto alla perfezione
Per "ovviare" alla singolare "feature", ho trovato che un semplice
gcc(g++) -shared -Wl,-whole-archive -o libfoo.so libfoo.a -Wl,-no-whole-archive [...]
funziona come deve. Visto che gcc invoca ld per il linking, che diavolo andrebbe fatto utilizzando direttamente ld per ottenere lo stesso risultato?

Non che abbia una grossa importanza pratica, solo per curiosità...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 19-07-2005 alle 13:45.
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 15:10   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da ilsensine
E' singolare che, se a ld fornisco in pasto i singoli oggetti .o che compongono l'archivio .a, funziona tutto alla perfezione
Umm qui quo qua, neanche questa forma funziona.
Ho visto che ld di suo non mette i simboli __CTOR_LIST__, __CTOR_END__, __do_global_ctors_aux (e i relativi per i destructor); dovrebbero essere loro i colpevoli -- dove cavolo li prende il gcc?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 15:27   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Oh bè, certo, era OVVIO, dovevo semplicemente linkare crti.o, crtn.o, crtbeginS.o, crtendS.o
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 16:45   #4
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
stavo per dirtelo! giuro!!
ri è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 19:59   #5
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
ecco, questi sono i classici post che mi buttano giù di morale perchè mi fanno rendere conto di quanto ignorante sono in un campo che invece amo.

Mi piacerebbe aver dato una risposta tipo:

ma è elementare watson

dato che gcc bli bli bla bla.....

e invece.... il vuoto

e il magone è doppio quando poi si pensa che a ragionare sul problema sono le persone come ilsensine che son sempre a nostra disposizione...mentre noi per lui....

uharg!!
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 19-07-2005, 20:18   #6
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
il suo punto forte è che ragiona cercando il "perchè" la determinata cosa non funziona, non il "come" farla funzionare
è sicuramente un approccio più lento all'inizio, ma con il tempo accumuli un bagaglio d'esperienza che ti velocizzerà tantissimo nel risolvere i problemi futuri
ri è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 05:10   #7
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originariamente inviato da ilsensine
Oh bè, certo, era OVVIO, dovevo semplicemente linkare crti.o, crtn.o, crtbeginS.o, crtendS.o
Ma quelle non stanno in libgcc_s??
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 08:38   #8
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da mjordan
Ma quelle non stanno in libgcc_s??
No; gcc_s contiene delle funzioni ausiliarie. Quei .o che ho elencato servono per fare un pò di black magic in fase iniziale e finale. In particolare, crti.o definisce gli entry/exit point _init/_fini. crtbeginS.o "marca" l'inizio delle sezioni elf .ctor e .dtor, mettendo i simboli __CTOR_LIST__ e __DTOR_LIST__; inoltre definisce la funzione __do_global_dtors_aux. Dopo questo file si possono linkare gli oggetti del programma; le funzioni di costruzione/distruzione finiranno nelle sezioni .ctor e .dtor, accodate ai demarcatori di inizio. Quindi l'oggetto crtendS.o chiude le sezioni, inserendo i simboli __CTOR_END__ e __DTOR_END__; in più definisce la funzione __do_global_ctors_aux.
crtn.o "chiude" l'oggetto elf con dei limitatori; non ho ben capito a cosa serva, ma se non lo metto ottengo un segfault alla chiusura.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 09:12   #9
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originariamente inviato da ilsensine
No; gcc_s contiene delle funzioni ausiliarie. Quei .o che ho elencato servono per fare un pò di black magic in fase iniziale e finale. In particolare, crti.o definisce gli entry/exit point _init/_fini. crtbeginS.o "marca" l'inizio delle sezioni elf .ctor e .dtor, mettendo i simboli __CTOR_LIST__ e __DTOR_LIST__; inoltre definisce la funzione __do_global_dtors_aux. Dopo questo file si possono linkare gli oggetti del programma; le funzioni di costruzione/distruzione finiranno nelle sezioni .ctor e .dtor, accodate ai demarcatori di inizio. Quindi l'oggetto crtendS.o chiude le sezioni, inserendo i simboli __CTOR_END__ e __DTOR_END__; in più definisce la funzione __do_global_ctors_aux.
crtn.o "chiude" l'oggetto elf con dei limitatori; non ho ben capito a cosa serva, ma se non lo metto ottengo un segfault alla chiusura.
crtn.o a quanto ho capito si occupa di "parametrizzare" la sezione .init e .fini del binario ELF in modo da includere istruzioni di ritorno.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 09:15   #10
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da mjordan
crtn.o a quanto ho capito si occupa di "parametrizzare" la sezione .init e .fini del binario ELF in modo da includere istruzioni di ritorno.
...tradotto?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 20-07-2005, 09:40   #11
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originariamente inviato da ilsensine
...tradotto?
No ho letto soltanto on the fly un documento SCO sulle sezioni ELF e relative "black magic" effettuate in fase di linking. Molto interessante.
Tempo fa mi cimentai con il formato ELF in un documento abbastanza tecnico, poi lo abbandonai per studiare i maledetti esami universitari e non ho piu' avuto modo di riprenderlo.
Comunque forse queste sono le questioni piu' interessanti della programmazione.

Non ricordavo dell'utilizzo di quei file *.o, ora ho rispolverato un po. Praticamente sono dei "placeholder" per i binari ELF che il linker utilizza per costruire un binario completo.
mjordan è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Sale LAN, la Manovra 2027 introduce una ...
11 prezzi imperdibili in Amazon: non sol...
Giù i prezzi di Xiaomi 17T e Xiao...
Una tassa di 5,5 centesimi su ogni gigab...
Vuoi clonare un videogioco con l'IA? Cla...
Furto da 6,3 miliardi di dollari, Binanc...
Gli USA dipendono dai robot stranieri: T...
Volkswagen non ha più soldi per l...
Telescopio spaziale Hubble: la NASA cerc...
Più sottile e potente: le nuove i...
Il JPL estende la vita operativa della s...
DAZN Full è in offerta: tutta la ...
GTA 6 su PC potrebbe arrivare prima del ...
Da zero al tracciato in secondi: LibreCo...
Il regista Rian Johnson lancia a 12,99 d...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v