Aussehen
Suche Einloggen
[c] [meta] [fefe] [erp]

5419 Ergebnisse

[0] ... [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] ... [270]
  • [l] Felix Sun, 01 Jun 2025 17:37:37 GMT Nr. 157405
    >>157396
    Der Google-Account von Felix ist im Killfile, weil er mal von unterwegs einen Tip geben wollte und GMail HTML gemacht hat.
  • [l] Felix Sun, 01 Jun 2025 17:24:17 GMT Nr. 157404
    JPG 960×686 41.8k
    >>157238
    >Ja wann ist endlich wieder Hefezeit?!
    Wann immer du dir eines aufmachst und genehmigst.
    Kann doch nicht so schwer sein.
  • [l] Felix Sun, 01 Jun 2025 17:13:23 GMT Nr. 157403
    >>157340
    >Nur Nixon konnte nach China gehen.
    Am Ende ist er aber nicht gegangen, sondern geflogen.
  • [l] Felix Sun, 01 Jun 2025 17:10:40 GMT Nr. 157402
    >>157395
    Wenn du beim Gedanken an harte, männliche Glieder mit haarigen Testikeln, der Vorstellung, Selbige oral zu benetzen und dein Rektum penetrieren zu lassen, und der Idee, maskulines Sperma im Überfluss in die Kehle und dein Rektum gespritzt zu bekommen, etwas anderes als ein akuter Würgereiz kommt, dann solltest du dringendst einen Arzt aufsuchen, denn das ist nicht normal!
  • [l] Felix Sun, 01 Jun 2025 17:07:35 GMT Nr. 157401
    >>157379
    >Es ist alles so mühsam. Warum können Brausierer nicht von sich aus das richtige, vernünftige, erwartbare, naheliegende und sichere tun? Kein Keks sollte jemals von einer anderen Seite ausgelesen werden können ohne explizites Opt-In.
    Mit solch einem Verhalten liesse sich aber bestimmt weniger Geld verdienen! Und Brauser-Entwickler sind doch sowieso alles Arschlochnerds, denen brutal einer abgeht, wenn sie sehen, wie sich andere winden und leiden bei dem Versuch, mit ihrer Gülle zu arbeiten!

    ((repfostiert wegen Zitatversagertum))
  • [l] Felix Sun, 01 Jun 2025 17:04:52 GMT Nr. 157399
    >>157396
    Wahrscheinlich den übelsten Covidioten gelarpt.
  • [l] Felix ☎️ Sun, 01 Jun 2025 16:59:04 GMT Nr. 157398
    >>157394
    Also da steht jetzt auch nichts drin, was wir nicht schon wussten.
  • [l] Felix Sun, 01 Jun 2025 16:54:50 GMT Nr. 157397
    >>157393
    Stimmt, da war was. Änder das bitte auch im ersten Flicken. Alternativ die im Anhang.

    Felix ist aber eingefallen, wie er darauf gekommen ist:
    https://android.googlesource.com/platform/hardware/msm7k/+/donut-release/librpc/svc.c#75

    Schnelles greppen über den Kot zeigt, dass es da auch noch andere Identifizierer mit __ in der Kotbasis... egal.

    >Wem soll ich das Commit widmen?
    Das "Felix" dort ist perfekt, danke.
  • [l] Felix Sun, 01 Jun 2025 16:50:57 GMT Nr. 157396
    PNG 1920×1080 177.3k
    PNG 1920×1080 312.5k
    >>157394
    <Irgendwann bin ich in seinem Kill-File gelandet, als die politische Diskussion ausartete. Easy, ich lese fefe immer noch gern, selbst wenn ich nicht seiner Meinung bin, was seit Corona öfter vorkommt.
    Kök das habe nichtmal ich geschafft mit meiner pro-FDP und pro-Kernenergiehaltung. Fefe hat zwar klargemacht, das er mich persönlich verabscheut, aber mir immerhin Intelligenz attestiert.
    Ich weiß nicht was man bei ihm tun muss, um einen echten Bounce zu bekommen.
  • [l] Felix Sun, 01 Jun 2025 16:37:58 GMT Nr. 157395
    >>157309
    Es gibt genau zwei sexuelle Orientierungen, die in >>157294 genannt wurden (binäre Sexualitätsordnung).
  • [l] Update Felix Sun, 01 Jun 2025 16:33:47 GMT Nr. 157394
    Neuer Artikel über Fefes Verschwinden:

    https://overton-magazin.de/kommentar/kultur-kommentar/was-ist-los-mit-felix-von-leitner/
  • [l] Zuse ## Admin Sun, 01 Jun 2025 15:57:23 GMT Nr. 157393
    >>157389
    Auch hier noch einmal Danke für den Flicken. Einziger Kritikpunkt: Bezeichner, die mit zwei Unterstrichen anfangen, sowie Bezeichner, die auf _t enden, sind reserviert und dürfen in konformem Kot nicht verwendet werden. [0] __buffer_stubborn_op_t ist also gleich doppelt problematisch.

    >The names of all library types, macros, variables and functions that come from the ISO C standard are reserved unconditionally; your program may not redefine these names.
    >...
    >In addition to the names documented in this manual, reserved names include all external identifiers (global functions and variables) that begin with an underscore (‘_’) and all identifiers regardless of use that begin with either two underscores or an underscore followed by a capital letter are reserved names.
    >...
    >Names that end with ‘_t’ are reserved for additional type names.

    Kommt immer wieder rein...

    [0] https://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html
  • [l] Felix Sun, 01 Jun 2025 15:33:00 GMT Nr. 157392
    Fefe hat das mit den 4 Parametern in libowfat Version 0.29 (vom 02.11.2012) hinzugefügt, um Bernsteins dynamische String-Bibliothek (die Datenstruktur für den String heißt stralloc, einfach nur ein char *, len, capacity) irgendwie an die Buffer-Bibliothek ranzuflanschen. So kann man mit dem Schreiben in einen buffer einen String zusammenbauen.

    An ausgewählten Stellen kriegt die op-Funktion dann einen vierten Parameter übergeben, welcher einfach nur ein Zeiger auf den buffer ist, der wiederum einen cookie-Zeiger hat, der auf den dynamischen String zeigt. Dadurch kann dann beim op-Aufruf der String realloziert werden, wenn die Kapazität zu knapp wird.

    Man kann einen Buffer zum Schreiben in einen dynamischen String mit buffer_tosa ("to stralloc") initialisieren, was es dann auch ins Changelog zur Version 0.29 geschafft hat:
    >add buffer_tosa (buffer writing to auto-growing stralloc)
    https://www.fefe.de/libowfat/changes-0.29.txt
  • [l] Felix Sun, 01 Jun 2025 14:04:02 GMT Nr. 157391
    >>157389
    >Da ist extremes Voodoo involviert (das Felix auch im originalen Bernstein-Kot bisher nicht gefunden hat). Denn intern in der libowfat wird die op-Funktion auch schon mal mit 4 statt 3 Parametern aufgerufen.
    Solche Zustände sind normal in Fefes Code. Du bist einfach nur nicht genial genug, um ihn zu verstehen.
  • [l] Felix Sun, 01 Jun 2025 13:53:47 GMT Nr. 157390
    >>157389
    Kot von djb ist per Definition perfekt und enthält keine Bugs.
  • [l] Felix Sun, 01 Jun 2025 13:43:14 GMT Nr. 157389
    >>157355
    Ich habe es zum Kompilieren bekommen, aber sage gleich, dass das, was der Meister zum Teil vom Herrn Bernstein übernommen hat und zum Teil dort selbst verzapft hat, absolut unterirdisch ist. Je mehr ich dort reinschaue, desto schlimmer wird es.

    Es geht um den buffer aus der libowfat (buffer.h):

    typedef struct buffer {
      char *x;              /* actual buffer space */
      size_t p;             /* current position */
      size_t n;             /* current size of string in buffer */
      size_t a;             /* allocated buffer size */
      ssize_t (*op)();      /* use read(2) or write(2) */
      void* cookie;                 /* used internally by the to-stralloc buffers, and for buffer chaining */
      void (*deinit)(void*);        /* called to munmap/free cleanup, with a pointer to the buffer as argument */
      int fd;               /* passed as first argument to op */
    } buffer;


    Wie man sieht, kriegt der Buffer eine op-Funktion übergeben. Und wie man bereits am Kommentar dort sieht: Das können z.B. die POSIX-Funktionen read() oder write() sein, oder auch andere Funktionen (wie intern in der libowfat genutzt). Da kommt man direkt zum ersten Problem, da read() und write() nicht die gleiche Signatur haben:

    ssize_t read(int fd, void *buf, size_t count);

    ssize_t write(int fd, const void *buf, size_t count);


    Also Unterschiede im cv-Qualifizierer des zweiten Parameters.

    Im Internet gibt es Diskussionen darüber, dass es UB sei, weil void * keine "unqualified version" von const void * sei (das wäre wohl bei void * const der Fall), und daher die Funktionsaufrufe inkompatibel seien:
    https://old.reddit.com/r/C_Programming/comments/18fbsfg/is_casting_a_function_pointer_to_the_same_type/

    Darum geht es hier aber nicht, denn das ist ein Luxusproblem im Vergleich zu den nun folgenden Problemen mit externem Kot und internem Kot.

    Erst mal muss man sich an der Stelle oben entscheiden: Nimmt man Signatur 1, Signatur 2, oder einen void *. Da auch externer Kot solche Punktionszeiger z.B. an buffer_init übergibt, muss man void * nehmen, da ansonsten der externe Kot einen Kompilerfehler verursacht, da dieser externe Kot sowohl Signatur 1 als auch Signatur 2 verwenden könnte. Mit void * gibt es nur eine Warnung, auch nicht schön, aber was will man machen.

    Nun zu den Problemen mit dem libowfat-internen Kot. Da ist extremes Voodoo involviert (das Felix auch im originalen Bernstein-Kot bisher nicht gefunden hat). Denn intern in der libowfat wird die op-Funktion auch schon mal mit 4 statt 3 Parametern aufgerufen. Das sieht man in buffer_feed, buffer_flush, buffer_put, buffer_putflush. Diese leiten den op-Funktionszeiger an buffer_stubborn oder buffer_stubborn_read weiter, welche den Funktionszeiger mit 4 Parametern aufrufen/missbrauchen.

    Felix will gar nicht wissen, was passiert, wenn man einen buffer mit read()/write() als op anlegt, und dann eine der obigen Funktionen aufruft, und zwar in einer Calling-Convention, bei dem der Aufgerufene den Stack aufräumen muss (z.B. das standardmäßige stdcall auf 32-Bit-Fenster, wo auch alle Parameter über den Stack gehen, vielleicht deswegen auch das "Please do not port my software to Windows!"). Das geht hier auf Linux bzw. x86/x86_64 nur gut, weil der Aufrufer zwar was in rcx schreibt, aber rcx vom aufgerufenen read()/write/etc. gemäß Calling-Convention ignoriert wird.

    Die Besten der Besten.
  • [l] Zuse ## Admin Sun, 01 Jun 2025 13:07:06 GMT Nr. 157386
    Habe mal nen MR mit dem aktuellen Stand aufgemacht: https://gitgud.io/zuse/dietchan/-/merge_requests/2
  • [l] Felix Sun, 01 Jun 2025 12:48:00 GMT Nr. 157385 SÄGE
    >>157384
    Vergessen, dass MSVC ein ILP32-Speichermodell nutzt und long standardmäßig auch nur 32 Bits sind. Unter diesen Umständen stellt der Microsoft-Compiler ebenfalls immer sicher, dass die oberen 32 Bit genullt sind.
  • [l] Felix Sun, 01 Jun 2025 12:37:16 GMT Nr. 157384
    >>157374
    Die naheliegendste Erklärung für Felix ist, dass {0} wie in vorherigen Versionen von Clang entgegen der Intuition kein spezielles Muster für das Nullen des Unions ist (vor allem, wenn das erste Mitglied kein Standard-Datentyp ist, bei dem der Nullwert nicht vollständig aus Nullbits besteht), sondern schlicht das erste Mitglied auf Null setzt und jetzt das implizite Leeren des Rests wegfällt.

    Felix hat sich aufgrund dieses konstruierten Beispiels mit Godbolt angesehen, was das in der Praxis bedeutet:
    extern void dosomething(long *);
    void bla() {
        union { int i; long l; } U = {-42};
        dosomething(&U.l);
    }


    x86_64, gcc 14.3, -O0: gesamtes Union wird genullt und dann die unteren 32 Bit geschrieben
    x86_64, gcc 14.3, -O1: die oberen 32 Bit werden explizit auf Null gesetzt und dann die unteren 32 Bit geschrieben
    x86_64, gcc 14.3, -O2/-O3: 32 Bit werden in EAX geladen, damit implizit die oberen 32 Bit des Registers auf Null gesetzt und RAX in das Union geschrieben

    x86_64, gcc 15.1, -O0: nur die unteren 32 Bit werden geschrieben
    x86_64, gcc 15.1, -O1: wie gcc 14.3
    x86_64, gcc 15.1, -O2/-O3: wie gcc 14.3

    ARM64-Ausgabe verhält sich jeweils wie x86_64, nur dass für -O1 die stp-Instruktion in Kombination mit dem Nullregister benutzt wird.

    x86_64, clang, -O0: 64 Bit mit Nullpadding werden aus static storage gelesen und geschrieben
    x86_64, clang, -O1/-O2/-O3: wie gcc -O2

    ARM64-Ausgabe verhält sich jeweils wie x86_64, d.h. mit Optimierungen werden die oberen 32 Bit eines 64-Bit-Registers implizit genullt.

    x86_64, ARM64 MSVC unabhängig von Optimizer-Flags: nur die unteren 32 Bit werden geschrieben

    Für dieses Beispiel auf diesen zwei Plattformen macht GCC 15 also zufälligerweise etwas Sinnvolles, außer wenn Optimierungen deaktiviert sind.


[0] ... [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] ... [270]
[c] [meta] [fefe] [erp]