abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:16 | Bezpečnostní upozornění

    Zranitelnost CVE-2026-98432 s CVSS 9.8 odhalila AI od společnosti Anthropic. Jedná se o kritickou chybu v implementaci MPTCP (multipath TCP). Debian vydal patche 16.10. a 22.10., ale např. Ubuntu je zatím bez opravy. Více informací na The Hacker News.

    Max | Komentářů: 1
    včera 23:22 | Zajímavý software

    Na Slovensku vznikla úplne nová rally hra, ktorá je zadarmo a funguje vo Windowse, Linuxe či na Macu. Greenie Rally má viac ako 50 tratí a vozidiel, šampionáty či turnaje. Má retro feeling a imituje automobilové hry z prelomu tisícročí. Vyskúšate prejsť všetky mapy na Škode 130RS?

    Stanislav Hoferek | Komentářů: 1
    včera 14:33 | Komunita

    Do základního systému NetBSD -current byl přidán nový editor atto jako alternativa k editorům vi a xedit.

    Ladislav Hagara | Komentářů: 2
    včera 14:11 | IT novinky

    Společnost System76 představila kompaktní 11litrový Thelio Prime Desktop. S procesorem AMD Ryzen 9000. S Pop!_OS 24.04 LTS s desktopovým prostředím COSMIC nebo Ubuntu 24.04 LTS.

    Ladislav Hagara | Komentářů: 1
    včera 13:44 | Humor

    Čínská státní televize pozastavila vysílání španělské La Ligy a čínské internetové platformy omezily obsah s Kylianem Mbappém poté, co slavný fotbalista ve francouzském pořadu The Bridge mluvil o svém oblíbeném memu, v němž je jeho tvář vložena do portrétu zobrazujícího diktátora Mao Ce-tunga. 'Můj oblíbený mem je ten, na kterém dali můj obličej na čínského diktátora. To mě opravdu rozesmívá. S přáteli ho používám pořád' řekl,

    … více »
    Pendrekama do nich❗ | Komentářů: 5
    včera 13:22 | IT novinky

    Při příležitosti oslav Dne vzniku samostatného československého státu (28. října) byly uděleny medaile Za zásluhy tvůrci aplikace Záchranka Filipu Maleňákovi, vědci v oblasti umělé inteligence Tomáši Mikolovovi a Olze Štěpánkové, vědkyni zabývající se kybernetikou, robotikou a strojovým učením, průkopnici v oblastech výuky a využití umělé inteligence v medicínském inženýrství.

    Pendrekama do nich❗ | Komentářů: 2
    včera 01:33 | IT novinky

    Apple představil nový iPad mini, iMac s čipem M6, 14palcový MacBook Pro s čipem M6 a MacBook Pro s PROLED XDR displejem – první Mac s dotykovým ovládáním.

    Ladislav Hagara | Komentářů: 5
    28.10. 23:22 | Zajímavý projekt

    Nedávno představený projekt mapSTL.com řeší budoucnost. 𝕏: "Netušil jsem, kolik patentů na generování map existuje. Existují patenty na generování fantasy map 🫣. Cokoliv je na 3D tiskárnu a tvoří to produkt, bude to mít patenty. Tak bacha na to!" … více »

    Ladislav Hagara | Komentářů: 3
    28.10. 18:55 | Nová verze

    Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.4 (𝕏). Přehled novinek a vylepšení v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    28.10. 18:22 | Bezpečnostní upozornění

    Byla objevena zranitelnost Tailworm v Tailscale a Headscale umožňující lokální eskalaci práv přihlášeného uživatele. Následně byla v Tailscale v opravené verzi 1.104.4+ změněna architektura aplikace. Viz příspěvek na blogu Tailscale.

    vencour | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (20%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2941 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    Rozcestník

    Dotaz: C a dlsym

    5.11.2010 14:36 Jozef G
    C a dlsym
    Přečteno: 623×
    Mam nieco taketo:
    void *lib=0;
    lib=dlopen("./libeng.so.1.0.0", RTLD_LAZY);
    int (*hello)() = (int(*)()) dlsym(lib, "hello");
    hello();
    dlclose(lib);
    
    prekladam to: gcc -ldl -rdynamic -std=c99 -pedantic -Wall -o test ./main.c a dostanem warning: ISO C forbids conversion of object pointer to function pointer type.

    Neviete prosim, ci mam zle to pretypovanie alebo to proste ISO C zakazuje?

    Odpovědi

    Luboš Doležel (Doli) avatar 5.11.2010 15:15 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: C a dlsym
    Ten problém je složitější, mrkni sem.
    5.11.2010 15:37 l4m4
    Rozbalit Rozbalit vše Re: C a dlsym
    C++ je paranoidní a netahal bych ho sem.

    Na POSIXovém systému je void* a ukazatel na funkci konvertovatelný. Program
    typedef int (*Foo)(int);
    int f(int x) { return x+1; }
    
    int
    main(void)
    {
        void *p = &f;
        Foo g = p;
    
        return 0;
    }
    
    je normálně přeložitelný (a funguje, pokud se g následně k něčemu použije).
    Luboš Doležel (Doli) avatar 5.11.2010 17:46 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: C a dlsym
    Ehm, čtete pořádně. Tohle můžete v C++ udělat samozřejmě taky, stačí tam přidat cast. My tady řešíme to varování.
    8.11.2010 09:17 l4m4
    Rozbalit Rozbalit vše Re: C a dlsym
    Buď na dané platformě jsou pointery na funkce a void* zaměnitelné, tj. je to POSIX či něco jiného příčetného. (Máte snad systém, kde funguje dlsym() a pointery nejsou zaměnitelné?) Potom je příčina problému s varováním v tom, že od kompilátoru požadujete nesmyslné varování, takže to nedělejte.

    Nebo zaměnitelné nejsou, a pak váš problém není žáný warning, ale to že pointery nejsou zaměnitelné, a dlsym() takhle vůbec nejde použít, a nejspíš tam ani neexistuje.
    5.11.2010 16:09 chochi | skóre: 29 | Praha
    Rozbalit Rozbalit vše Re: C a dlsym
    Viz man dlsym :-).
    
               /* Writing: cosine = (double (*)(double)) dlsym(handle, "cos");
                  would seem more natural, but the C99 standard leaves
                  casting from "void *" to a function pointer undefined.
                  The assignment used below is the POSIX.1-2003 (Technical
                  Corrigendum 1) workaround; see the Rationale for the
                  POSIX specification of dlsym(). */
    
               *(void **) (&cosine) = dlsym(handle, "cos");
    
    
    Takze:
    
    int main(){
    	void *lib = NULL;
    	int (*hello)();
    	
       	lib = dlopen("./libeng.so.1.0.0", RTLD_LAZY); 
    	*(void**) (&hello) = dlsym(lib, "hello");
    	hello();
    	dlclose(lib);
    	return 0;
    }
    
    
    5.11.2010 16:55 Jozef G
    Rozbalit Rozbalit vše Re: C a dlsym
    Da sa nejak ludsky vysvetlit *(void**) (&hello)?
    mess avatar 5.11.2010 17:01 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
    Rozbalit Rozbalit vše Re: C a dlsym
    Z "hello" se uděla pointer (pomoci &), ten se následně castuje na void ** a nakonec se provede jeho dereference.
    Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
    5.11.2010 17:07 Jozef G
    Rozbalit Rozbalit vše Re: C a dlsym
    Cize mam funkciu, ktora vracia int. Hello je ukazatel na funkciu, ktora vracia int. &hello - vytvori ukazatel na ukazatel funkcie, ktora vracia int a ten je nasledne typecastnuty na ukazatel na ukazatel na void. Prva hviezdicka z toho spravi ukazatel na void.
    Luboš Doležel (Doli) avatar 5.11.2010 17:43 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: C a dlsym
    Tohle mi dřív házelo varování kvůli strict aliasing rules.

    Založit nové vlákno • Nahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.