• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    XCHAOSANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API
    /* Toto je klub především pro lidi, pro které je programování jednou z mnoha massive multiplayer online počítačových her, které lze hrát.
        V tomto klubu hrozí sémantická hereze a nezdravě vysoký obsah syntaktického cukru. Nevhodné pro algoritmické diabetiky.
        Od účastníků debaty se předpokládá automaticky přístup k instalovanému GNU C: sudo apt-get install build-essential
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    C (programovací jazyk)#C99 Heslo na české Wikipedii
    Jazyk C - Základy praktického programování V Praze 2oo7 pro SSPŠ Tomáš Harvie Mudruňka a kolektiv - jak si programování v C představuje většina lidí
    http://stevenkobes.com/ctest.html C Programming Puzzlers - nepouštějte se do flamewars v tomhle klubu, pokud neuhodnete aspoň polovinu správně!
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    http://en.wikipedia.org/wiki/C99 C99 is a modern dialect of the C programming language.
    http://cprogramminglanguage.net/ C programming language
    http://cprogramminglanguage.net/c-programming-language-tutorial.aspx C programming language - úvod
    http://en.wikipedia.org/wiki/Criticism_of_the_C_programming_language C makes it easy to shoot yourself in the foot. (ještě že ne do hlavy...)
    http://en.wikipedia.org/wiki/C_preprocessor
    http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html C99 makra s proměnným počtem argumentů - __VA_ARGS__
    http://gcc.gnu.org/onlinedocs/gcc/ GNU C Compiler
    http://gcc.gnu.org/onlinedocs/gcc-4.2.2/gcc/Optimize-Options.html
    http://bellard.org/tcc/ Tiny C Compiler - prý C99 compliant (min. umí __VA_ARGS__) - vhodný pro skriptování v C - umí #!/usr/bin/tcc -run
    http://en.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest - pokud jste neviděli tohle, tak jste ještě neviděli opravdu nečitelný C zdroják
    http://bellard.org/otcc/ Obfuscated Tiny C Compiler - z tohohle vtípku vznikl Tiny C compiler
    http://en.wikipedia.org/wiki/ANSI_C Jak se střelit do nohy standardizovaným způsobem.
    http://eli-project.sourceforge.net/c_html/c.html ANSI C Specification
    http://www.lysator.liu.se/c/ Různý ANSI C bordel
    http://www.cs.rit.edu/~ats/books/ooc.pdf Object Oriented Programming with ANSI-C - a pak že to nejde
    http://en.wikipedia.org/wiki/Longjmp co jsou to setjmp()/longjmp() knihovní funkce (pro všechny, podle kterých to bez C++ try { } catch() ... nejde)
    http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/dcdc710c27f47c72 C neumí správně počítat (?)
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    http://www.fastcgi.com/ FastCGI is simple because it is actually CGI with only a few extensions.
    http://www.metalshell.com/source_code/18/Mysql_Select.html How to do a simple connection and select with mysql
    http://xmlsoft.org/ The XML C parser and toolkit of Gnome
    http://curl.haxx.se/libcurl/ libcurl - the multiprotocol file transfer library
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    https://dev.arachne.cz/svn/cll1h SVN/Trac jazyka C<<1 (user-friendly nadstavba nad ANSI C99 - ve stylu JQuery vs. JavaScript)
    Benchmark iterace a serializace stringů v různých jazycích vs. v C
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        moderátor se velice zhruba řídí zvyklostmi moderace, která kdysi platila v řadě konferencí sítě FidoNet ... C != 0xdead */
    rozbalit záhlaví
    XCHAOS
    XCHAOS --- ---
    ANT_39: tak je to jen vtip, no.
    ANT_39
    ANT_39 --- ---
    XCHAOS: GCC to nesezere, a standardni to taky neni:
    6.10.2 Source file inclusion
    [...]
    A preprocessing directive of the form
    # include new-line
    XCHAOS
    XCHAOS --- ---
    ANT_39: nezkoušel jsem. mě na tom překvapil ten první řádek, ale asi dává smysl, že se zbytek řádku s direktivou preprocesoru prostě ignoruje, jen jsem o tom nikdy nepřemýšlel. Zbytek by měl jít zkompilovat na první pohled bez větších záludností...
    ANT_39
    ANT_39 --- ---
    XCHAOS: Melo by to jit vybuildit?
    XCHAOS
    XCHAOS --- ---
    WILD_A
    WILD_A --- ---
    XCHAOS: trigraphy a makra jsou zaklad pro C obfuscation contest nicmene za normalnich okolnosti trgraphy nikdy.
    XCHAOS
    XCHAOS --- ---
    To jsem nevěděl, že Python je tak nebezpečný... :-)
    XCHAOS
    XCHAOS --- ---
    ANT_39: tak zase ten zápis vypadá poměrně cool, že jo :-)
    ANT_39
    ANT_39 --- ---
    XCHAOS: A je tomu tak dobre.
    XCHAOS
    XCHAOS --- ---
    Trigraphy jsou hodně zapomenutá věc v C :-)
    What does the ??!??! operator do in C? - Stack Overflow
    https://stackoverflow.com/questions/7825055/what-does-the-operator-do-in-c
    XCHAOS
    XCHAOS --- ---
    LUDO: to je z twitteru :-)
    LUDO
    LUDO --- ---
    dobre photoshop skillz
    XCHAOS
    XCHAOS --- ---
    Neměli by tam radši něco Carbon neutral? :-)
    GIOMIKY
    GIOMIKY --- ---
    JANFROG: jj, rozumim tomu. Jeste jednou moc dekuji.
    Premyslim, ze bych si postavil docker image s debug symbolama na kernel volani a s libc symbolama.
    Dostatcsmysluplnou hlasku nebo naoovedu alespon se jmenem volani je zaklad. Bez toho je to vareni z vody.
    JANFROG
    JANFROG --- ---
    GIOMIKY: Nejsem buh, jen nam zkusenosti. Hodiny stravene v GDB ladenim podobnych (a mnohem "zajimavejsich") problemu :-)

    > za linkovaci figl
    Ta SO odpoved to vysvetluje.
    GIOMIKY
    GIOMIKY --- ---
    JANFROG: Jsi buh. Vyresilo to:
    LIBS = -Wall -O3 -static -pthread -ltre -lssl -lcrypto -ldl -lgpm -lidn -lexpat -lrt -Wl,--whole-archive -lpthread -Wl,--no-whole-archive

    Jeste musim poradne prozkoumat, co jsem to vubec provedl za linkovaci figl, ale binarka funguje. Bezva, super, moc dekuji. ;-]
    Mas u me pivo nebo pohled. ;-]
    JANFROG
    JANFROG --- ---
    GIOMIKY: Mas to IMHO blbe slinkovane:

    Program received signal SIGSEGV, Segmentation fault.
    0x0000000000000000 in ?? ()
    (gdb) up
    #1  0x000000000073ebec in __register_frame_info_bases.part.5 ()
    (gdb) disass
    Dump of assembler code for function __register_frame_info_bases.part.5:
       0x000000000073ebb0 <+0>:	push   %rbp
       0x000000000073ebb1 <+1>:	push   %rbx
       0x000000000073ebb2 <+2>:	mov    %rsi,%rbx
       0x000000000073ebb5 <+5>:	sub    $0x8,%rsp
       0x000000000073ebb9 <+9>:	mov    $0x67ecd0,%rbp
       0x000000000073ebc0 <+16>:	movq   $0xffffffffffffffff,(%rsi)
       0x000000000073ebc7 <+23>:	mov    %rdx,0x8(%rsi)
       0x000000000073ebcb <+27>:	mov    %rcx,0x10(%rsi)
       0x000000000073ebcf <+31>:	mov    %rdi,0x18(%rsi)
       0x000000000073ebd3 <+35>:	movq   $0x7f8,0x20(%rsi)
       0x000000000073ebdb <+43>:	test   %rbp,%rbp
       0x000000000073ebde <+46>:	je     0x73ebec <__register_frame_info_bases.part.5+60>
       0x000000000073ebe0 <+48>:	lea    0x1bf319(%rip),%rdi        # 0x8fdf00 <object_mutex>
       0x000000000073ebe7 <+55>:	call   0x0 ; <--- ?!?
    => 0x000000000073ebec <+60>:	mov    0x1bf345(%rip),%rax        # 0x8fdf38 <unseen_objects>
       0x000000000073ebf3 <+67>:	mov    %rbx,0x1bf33e(%rip)        # 0x8fdf38 <unseen_objects>
       0x000000000073ebfa <+74>:	mov    %rax,0x28(%rbx)
       0x000000000073ebfe <+78>:	mov    0x1bf324(%rip),%eax        # 0x8fdf28 <any_objects_registered>
       0x000000000073ec04 <+84>:	test   %eax,%eax
       0x000000000073ec06 <+86>:	je     0x73ec30 <__register_frame_info_bases.part.5+128>
       0x000000000073ec08 <+88>:	test   %rbp,%rbp
       0x000000000073ec0b <+91>:	je     0x73ec20 <__register_frame_info_bases.part.5+112>
       0x000000000073ec0d <+93>:	add    $0x8,%rsp
       0x000000000073ec11 <+97>:	lea    0x1bf2e8(%rip),%rdi        # 0x8fdf00 <object_mutex>
       0x000000000073ec18 <+104>:	pop    %rbx
       0x000000000073ec19 <+105>:	pop    %rbp
       0x000000000073ec1a <+106>:	jmp    0x0  ; <--- ?!?
       0x000000000073ec1f <+111>:	nop
       0x000000000073ec20 <+112>:	add    $0x8,%rsp
       0x000000000073ec24 <+116>:	pop    %rbx
       0x000000000073ec25 <+117>:	pop    %rbp
       0x000000000073ec26 <+118>:	ret    
       0x000000000073ec27 <+119>:	nopw   0x0(%rax,%rax,1)
    --Type <RET> for more, q to quit, c to continue without paging--
    

    rychle stackoverllowing naslo: https://stackoverflow.com/questions/35116327/when-g-static-link-pthread-cause-segmentation-fault-why.
    GIOMIKY
    GIOMIKY --- ---
    JANFROG: Diky moc, nespecha to, je to jenom ze zvedavosti.
    Program na ssl jsem si vyrobil a funguje mi, staticky nalinkovanej.
    Jeste jsem zkkusel prilinkovat statickej lib c, ale nebylo to k nicemu.
    Jak rikam, je zajimavy, ze kdyz prilinkuju jemalloc, tak to funguje.
    Ale je to na muj vkus moc velka knihovna.
    JANFROG
    JANFROG --- ---
    GIOMIKY: Zkusim na to mrknout vecer, bude-li cas.

    > Ty debug symboly jsem mpodle mne nainstaloval.
    To je sice hezky, ale pokud nema binarka link na ty symboly, GDB nema jak vedet kde je najde. Doporucuji si precist dokumentaci: https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html

    > Stack vypada takhle:
    Muj tip je ze to je spatne slinkovane. Lehne to jeste v inicializaci pred volanim main().
    Udelej si testovaci program co vola openssl a uvidis.
    GIOMIKY
    GIOMIKY --- ---
    JANFROG: Ahoj,
    moc dekuju, posilam sem:
    https://bh.xf.cz/20220521_elinks.zip
    Jsou tam zdrojaky a binarka v src/elinks
    Moc nevim, c s tim. Ty debug symboly jsem mpodle mne nainstaloval.
    Stack vypada takhle:
    (gdb) r
    Starting program: /home/miky/dev/src/exp/elinks/src/elinks 
    
    Program received signal SIGSEGV, Segmentation fault.
    0x0000000000000000 in ?? ()
    (gdb) bt
    #0  0x0000000000000000 in ?? ()
    #1  0x000000000073ebec in __register_frame_info_bases.part.5 ()
    #2  0x00000000004031cd in frame_dummy ()
    #3  0x0000000000000001 in ?? ()
    #4  0x0000000000680944 in __libc_csu_init ()
    #5  0x0000000000680273 in __libc_start_main ()
    #6  0x00000000004030ea in _start ()
    
    


    Kdyby to padalo v programu, tak s tim snad bych neco udelal umel,
    alel tohle mi prijde, ze je jeste predtim. Na kazdy pad, jak rikam,
    lze to "opravit". Prilinkovanim -ljemmaloc, coz mi ale prijde
    neprilis hezke resni. A navadi me to, ze to blbne nekde pri alokaci.
    Static build Core Dumps with OpenSSL · Issue #144 · rkd77/elinks · GitHub
    https://github.com/rkd77/elinks/issues/144

    Je tam prilinkovany openssl 1.1.1d, standardne to, co je v debianu 10

    $ openssl version
    OpenSSL 1.1.1d  10 Sep 2019 (Library: OpenSSL 1.1.1n  15 Mar 2022)
    
    JANFROG
    JANFROG --- ---
    GIOMIKY: dej mi nekam tu statickou binarku, podivam se na to.

    > libc6 z balicku jsem v /usr/src rozbalil a pridal do gdb dir, ale stale mi gdb pise ?? u vetsiny funkci pri core dumlu

    zdrojaky jsou k nicemu, kdyz GDB nema (nevi kde najit) symboly - proto to ??
    Kliknutím sem můžete změnit nastavení reklam