Settings

Theme

A whirlwind tutorial on creating teensy ELF executables for Linux (1999)

muppetlabs.com

59 points by xtacy a year ago · 17 comments

Reader

ptspts a year ago

Shameless plug: write your program in C, get almost as little size overhead as in the Whirlwind turorial: https://github.com/pts/minilibc686 (libc, compiler, linker, settings)

dang a year ago

Related. Others?

A Whirlwind Tutorial on Creating Teensy ELF Executables for Linux - https://news.ycombinator.com/item?id=32524007 - Aug 2022 (10 comments)

A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux (1999) - https://news.ycombinator.com/item?id=21846785 - Dec 2019 (22 comments)

A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux (2005) - https://news.ycombinator.com/item?id=11709247 - May 2016 (5 comments)

Creating Really Teensy ELF Executables for Linux - https://news.ycombinator.com/item?id=8745024 - Dec 2014 (13 comments)

The Teensy Files: Creating teensy ELF executables for Linux - https://news.ycombinator.com/item?id=8642734 - Nov 2014 (7 comments)

A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux - https://news.ycombinator.com/item?id=5016434 - Jan 2013 (14 comments)

Tutorial on Creating Really Teensy ELF Executables for Linux - https://news.ycombinator.com/item?id=875077 - Oct 2009 (16 comments)

3998-byte executable reduced to 45 bytes - https://news.ycombinator.com/item?id=68056 - Oct 2007 (10 comments)

cryne a year ago

I tried to replicate this on my 64 bit machine, so

  nasm -f elf64 tiny.s && ld -s tiny.o

  ; tiny.asm
  BITS 64
  GLOBAL _start
  SECTION .text
  _start:
                mov     eax, 1
                mov     ebx, 42  
                int     0x80
and this lands me at 4320 bytes! Why is there such a stark difference?
  • oguz-ismail a year ago

    > Why is there such a stark difference?

    Your linker must align the .text section to the page size (often 4096 bytes). If you open the binary with a hex editor you'll see lots of null padding.

le-mark a year ago

Does anyone recall an “intro to computing” style book that was available free online and starts with using the gas assembler and talked a lot about elf format executables? I lost the link a while ago and don’t recall the name.

deater a year ago

for those excited about tiny ELF executables, or tiny programs in general, check out the Lovebyte size-coding demoparty happening next weekend. It's likely there will be a few tiny ELF entries there.

  • LegionMammal978 a year ago

    That's neat, I didn't know that there was much sizecoding activity with ELFs, except for the BGGP competitions [0]. (Mainly because it's not nearly as easy to output graphics than on all the old-school platforms, I'd imagine.) Does Lovebyte publish previous years' demos anywhere?

    [0] https://binary.golf/

    • deater a year ago

      I don't know if there's a good way to search for them. Most of the Lovebyte entries can be found on pouet or demozoo.org but I don't know if there's an easy way to filter out only Linux entries.

      I've written a few sizecoded raspberry pi entries, there's even a writeup of one of them in tmp.out where I loaded some code into the ELF headers https://tmpout.sh/3/08.html

      • duskwuff a year ago

        Pouet certainly has platform filtering; try:

        https://www.pouet.net/prodlist.php?type[]=32b&type[]=64b&typ...

      • LegionMammal978 a year ago

        Ah, then I suppose you'd be aware of my own forays into 64-bit ELFs (https://tmpout.sh/3/22.html)! I really should get around to publishing my writeup of the 73-byte minimum on Linux. (At least, it's 73 bytes for x86-64, since '\177E' at the start of the file jumps to byte 71, but it may be different under AArch64.) I have a nearly-complete draft, but I got caught on some oddities around the vDSO mapping which may or may not have changed across kernel versions, especially since the time I wrote it. Perhaps I should just jettison that section entirely and get the article out, since it's not like any of the x86 vDSOs have useful gadgets anyway.

    • lifthrasiir a year ago

      https://code.golf/ also has scoreboards for x86-64 Linux binaries.

  • hannob a year ago

    Didn't know about that, will have to take a look.

    I think I am the "inventor" of the first 64 and 32 byte intro competitions. (Just checked, we ran a 64 byte competition at the 0a000h 2002 and added 32 byte in 2003.) See https://0a000h.de/2002/ and https://0a000h.de/2003/ - releases are on scene.org

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection