Objdump

Gathering the Section information with sed
objdump -x /usr/lib/libcrypt.so | \ sed -n '/Sections:/,/SYMBOL TABLE:/p' | \ sed -n '/Sections:\|SYMBOL TABLE:\|Idx/!p' |\ sed 's/^[ \t]*//' | \ sed '$!N;s/\n/ /'


 * objdump -x dumps the header information
 * sed #1 grabs all data between Sections: and SYMBOL TABLE:
 * sed #2 strips the Sections:, SYMBOL TABLE and Idx*** lines because they aren't relevant
 * sed #3 strips leading whitespace
 * sed #4 joins two adjoining lines into one

Below is an example invocation: «user@host»:~§ objdump -x /usr/lib/libcrypt.so | \ sed -n '/Sections:/,/SYMBOL TABLE:/p' | \ sed -n '/Sections:\|SYMBOL TABLE:\|Idx/!p' | \ sed 's/^[ \t]*//' | \ sed '$!N;s/\n/ /' 0 .note.ABI-tag 00000020 00000134  00000134  00000134  2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 1 .hash        00000134  00000154  00000154  00000154  2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 2 .dynsym      00000240  00000288  00000288  00000288  2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 3 .dynstr      00000119  000004c8  000004c8  000004c8  2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 4 .gnu.version 00000048  000005e2  000005e2  000005e2  2**1 CONTENTS, ALLOC, LOAD, READONLY, DATA 5 .gnu.version_d 00000038 0000062c  0000062c  0000062c  2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 6 .gnu.version_r 00000030 00000664  00000664  00000664  2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 7 .rel.dyn     00000040  00000694  00000694  00000694  2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 8 .rel.plt     00000078  000006d4  000006d4  000006d4  2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 9 .init        00000017  0000074c  0000074c  0000074c  2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 10 .plt         00000100  00000764  00000764  00000764  2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 11 .text        00002a24  00000870  00000870  00000870  2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE 12 .fini        0000001a  00003294  00003294  00003294  2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 13 .rodata      00000f63  000032c0  000032c0  000032c0  2**5 CONTENTS, ALLOC, LOAD, READONLY, DATA 14 .interp      00000013  00004223  00004223  00004223  2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA 15 .eh_frame    00000004  00004238  00004238  00004238  2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA 16 .ctors       00000008  00005ef0  00005ef0  00004ef0  2**2 CONTENTS, ALLOC, LOAD, DATA 17 .dtors       00000008  00005ef8  00005ef8  00004ef8  2**2 CONTENTS, ALLOC, LOAD, DATA 18 .jcr         00000004  00005f00  00005f00  00004f00  2**2 CONTENTS, ALLOC, LOAD, DATA 19 .dynamic     000000d8  00005f04  00005f04  00004f04  2**2 CONTENTS, ALLOC, LOAD, DATA 20 .got         00000018  00005fdc  00005fdc  00004fdc  2**2 CONTENTS, ALLOC, LOAD, DATA 21 .got.plt     00000048  00005ff4  00005ff4  00004ff4  2**2 CONTENTS, ALLOC, LOAD, DATA 22 .data        00000008  0000603c  0000603c  0000503c  2**2 CONTENTS, ALLOC, LOAD, DATA 23 .bss         000270dc  00006060  00006060  00005044  2**5 ALLOC 24 .gnu_debuglink 00000018 00000000  00000000  00005044  2**0 CONTENTS, READONLY

Credits

 * The original content of this tutorial was provided by Ryan S. Arnold, aka RandomTask, from his engineering journal.