ELF Hello World Tutorial / .symtab Updated 2025-07-16
Section type: sh_type == SHT_SYMTAB.
Common name: "symbol table".
First the we note that:
  • sh_link = 5
  • sh_info = 6
For SHT_SYMTAB sections, those numbers mean that:
  • strings that give symbol names are in section 5, .strtab
  • the relocation data is in section 6, .rela.text
A good high level tool to disassemble that section is:
nm hello_world.o
which gives:
0000000000000000 T _start
0000000000000000 d hello_world
000000000000000d a hello_world_len
This is however a high level view that omits some types of symbols and in which the symbol types . A more detailed disassembly can be obtained with:
readelf -s hello_world.o
which gives:
Symbol table '.symtab' contains 7 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS hello_world.asm
     2: 0000000000000000     0 SECTION LOCAL  DEFAULT    1
     3: 0000000000000000     0 SECTION LOCAL  DEFAULT    2
     4: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT    1 hello_world
     5: 000000000000000d     0 NOTYPE  LOCAL  DEFAULT  ABS hello_world_len
     6: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT    2 _start
The binary format of the table is documented at www.sco.com/developers/gabi/2003-12-17/ch4.symtab.html
The data is:
readelf -x .symtab hello_world.o
which gives:
Hex dump of section '.symtab':
  0x00000000 00000000 00000000 00000000 00000000 ................
  0x00000010 00000000 00000000 01000000 0400f1ff ................
  0x00000020 00000000 00000000 00000000 00000000 ................
  0x00000030 00000000 03000100 00000000 00000000 ................
  0x00000040 00000000 00000000 00000000 03000200 ................
  0x00000050 00000000 00000000 00000000 00000000 ................
  0x00000060 11000000 00000100 00000000 00000000 ................
  0x00000070 00000000 00000000 1d000000 0000f1ff ................
  0x00000080 0d000000 00000000 00000000 00000000 ................
  0x00000090 2d000000 10000200 00000000 00000000 -...............
  0x000000a0 00000000 00000000                   ........
The entries are of type:
typedef struct {
    Elf64_Word  st_name;
    unsigned char   st_info;
    unsigned char   st_other;
    Elf64_Half  st_shndx;
    Elf64_Addr  st_value;
    Elf64_Xword st_size;
} Elf64_Sym;
Like in the section table, the first entry is magical and set to a fixed meaningless values.
Now that we've done one section manually, let's graduate and use the readelf -S of the other sections:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 2] .text             PROGBITS         0000000000000000  00000210
       0000000000000027  0000000000000000  AX       0     0     16
.text is executable but not writable: if we try to write to it Linux segfaults. Let's see if we really have some code there:
objdump -d hello_world.o
gives:
hello_world.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <_start>:
   0:       b8 01 00 00 00          mov    $0x1,%eax
   5:       bf 01 00 00 00          mov    $0x1,%edi
   a:       48 be 00 00 00 00 00    movabs $0x0,%rsi
  11:       00 00 00
  14:       ba 0d 00 00 00          mov    $0xd,%edx
  19:       0f 05                   syscall
  1b:       b8 3c 00 00 00          mov    $0x3c,%eax
  20:       bf 00 00 00 00          mov    $0x0,%edi
  25:       0f 05                   syscall
If we grep b8 01 00 00 on the hd, we see that this only occurs at 00000210, which is what the section says. And the Size is 27, which matches as well. So we must be talking about the right section.
This looks like the right code: a write followed by an exit.
The most interesting part is line a which does:
movabs $0x0,%rsi
to pass the address of the string to the system call. Currently, the 0x0 is just a placeholder. After linking happens, it will be modified to contain:
4000ba: 48 be d8 00 60 00 00    movabs $0x6000d8,%rsi
This modification is possible because of the data of the .rela.text section.
Eli Benderski Updated 2025-07-16
Amazing systems programming tutorials. Whenever you Google a hard topic, his blog comes up.
Also has many great contributions on Stack Overflow: stackoverflow.com/users/8206/eli-bendersky
As of 2016, Eli worked at Google (reference). TODO before that, I had found his earlier info previously but lost it.
Eli focuses mostly on compiler toolchains.
Elis Regina Updated 2025-07-16
Mostly interpreter of songs written by others. But she's just too amazing, many of her interpretations are better than the original.
God, even Ciro Santilli is slightly shocked by her death, which happened before he was born, can you imagine it at the time? She was MPB's golden girl...
Video 1.
Atrás da Porta performed by Elis Regina
. Source. Composed by Francis Hime and Chico Buarque.
Video 2. . Source. From the 1972 eponymous album. Composed by Antônio Carlos Jobim.
Elliptic-curve Diffie-Hellman Updated 2025-07-16
The algorithm is completely analogous to Diffie-Hellman key exchange in that you efficiently raise a number to a power times and send the result over while keeping as private key.
The only difference is that a different group is used: instead of using the cyclic group, we use the elliptic curve group of an elliptic curve over a finite field.
Video 1. Source. youtu.be/NF1pwjL9-DE?t=143 shows the continuous group well, but then fails to explain the discrete part.
Elliptic curve point addition Updated 2025-07-16
Elliptic curve point addition is the group operation of an elliptic curve group, i.e. it is a function that takes two points of an elliptic curve as input, and returns a third point of the elliptic curve as its output, while obeying the group axioms.
The operation is defined e.g. at en.wikipedia.org/w/index.php?title=Elliptic_curve_point_multiplication&oldid=1168754060#Point_operations. For example, consider the most common case for two different points different. If the two points are given in coordinates:
then the addition is defined in the general case as:
with some slightly different definitions for point doubling and the identity point.
This definition relies only on operations that we know how to do on arbitrary fields:and it therefore works for elliptic curves defined over any field.
Just remember that:
means:
and that always exists because it is the inverse element, which is guaranteed to exist for multiplication due to the group axioms it obeys.
The group function is usually called elliptic curve point addition, and repeated addition as done for DHKE is called elliptic curve point multiplication.
Elon Musk Updated 2025-07-16
Musk is a truly ambivalent personality. Some points are very good. Some are very bad.
Respect on the technical side by Ciro Santilli.
But the way he treated his first wife Justine Musk, is very very weird, incomprehensible: www.marieclaire.com/sex-love/a5380/millionaire-starter-wife/
Positive Cirocoins for possibly going to reverse Twitter's unfair Trump ban if his Twitter acquisition goes through:
Negative Cirocoins for according to Wikipedia:
Within the merged company [Thiel's Confinity + Elon's X.com], Musk returned as CEO. Musk's preference for Microsoft software over Unix created a rift in the company and caused Thiel to resign.
Video 1.
The REAL Reason Why Tesla Made All Patents Open-Source by The not so boring Man (2021)
Source. Supercut from various interviews/presentations in which Elon saying that Tesla has open source patents and pro open source stuff. Can we trust it? Maybe.
Embryonics Updated 2025-07-16
It's like the bootloader stage of biology! It's weird and magic and important: Section "Molecular biology feels like systems programming".
Emergence Updated 2025-07-16
Basically the opposite of reductionism.
Encyclopedia Britannica Updated 2025-07-16
Ciro Santilli is old enough to remember his parents whispering its name with a respectful tone.
Genius: Richard Feynman and Modern Physics by James Gleick (1994) mentions several times how Richard Feynman was a reader of the encyclopedia. E.g. in youtu.be/ivxkd98mDvc?t=50 Richard's sister also talks about it.
Then the Internet came along and killed it.
The motivation model for collaborators was simple: to get famous. To be able to be selected contribute an article meant that you knew something or two! There was some physicist Ciro read the biography of who was really glad to be able to write an article on the encyclopedia after having worshiped it for so long, TODO find the reference.
While this is somewhat a part of Wikipedia motivation, it is much less so because there is no single article authorship. This is something OurBigBook.com aims to improve.
Endocytosis Updated 2025-07-16

Unlisted articles are being shown, click here to show only listed articles.