Hi All, I've a simple program called empty.c. $ cat empty.c int main(int argc, char* argv[]) { return 0; } $ cat empty410.s .file "empty.c" .text .p2align 4,,15 .globl main .type main, @function main: xorl %eax, %eax ret .size main, .-main .ident "GCC: (GNU) 4.1.0 20050922 (experimental)" .section .note.GNU-stack,"", at progbits binutils-2.15.94.0.2.2 produces for this code empty .data and .bss sections: Program Header: PHDR off 0x00000034 vaddr 0x08048034 paddr 0x08048034 align 2**2 filesz 0x000000c0 memsz 0x000000c0 flags r-x INTERP off 0x000000f4 vaddr 0x080480f4 paddr 0x080480f4 align 2**0 filesz 0x0000002a memsz 0x0000002a flags r-- LOAD off 0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12 filesz 0x00000123 memsz 0x00000123 flags r-x LOAD off 0x00000124 vaddr 0x08049124 paddr 0x08049124 align 2**12 filesz 0x00000000 memsz 0x00000000 flags rw- STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2 filesz 0x00000000 memsz 0x00000000 flags rwx PAX_FLAGS off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2 filesz 0x00000000 memsz 0x00000000 flags --- 2800 Sections: Idx Name Size VMA LMA File off Algn 0 .interp 0000002a 080480f4 080480f4 000000f4 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 1 .text 00000003 08048120 08048120 00000120 2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE 2 .data 00000000 08049124 08049124 00000124 2**2 CONTENTS, ALLOC, LOAD, DATA 3 .bss 00000000 08049124 08049124 00000124 2**2 ALLOC and /lib/klibc-*.so interpeter works fine. binutils-2.16.91.0.3 doesn't produce useless empty sections: Program Header: PHDR off 0x00000034 vaddr 0x08048034 paddr 0x08048034 align 2**2 filesz 0x000000a0 memsz 0x000000a0 flags r-x INTERP off 0x000000f4 vaddr 0x080480f4 paddr 0x080480f4 align 2**0 filesz 0x0000002a memsz 0x0000002a flags r-- LOAD off 0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12 filesz 0x00000123 memsz 0x00000123 flags r-x STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2 filesz 0x00000000 memsz 0x00000000 flags rwx PAX_FLAGS off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2 filesz 0x00000000 memsz 0x00000000 flags --- 2800 Sections: Idx Name Size VMA LMA File off Algn 0 .interp 0000002a 080480f4 080480f4 000000f4 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 1 .text 00000003 08048120 08048120 00000120 2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE ...and klibc's loader doesn't reach crt0.o:_start(). It receives sigsegv from kernel. The load_elf_binary() calls padzero() for nonexistent .bss mapping. Attached workaround fixes problem. Could anybody look into this? Regards, Paweł. -- The only thing necessary for the triumph of evil is for good men to do nothing. - Edmund Burke