Skip to content

Instantly share code, notes, and snippets.

@shekkbuilder
Forked from dutc/readelf,nm,objdump.md
Created February 28, 2018 19:56
Show Gist options
  • Save shekkbuilder/f04f08e04f2098760bb7671e48ea181e to your computer and use it in GitHub Desktop.
Save shekkbuilder/f04f08e04f2098760bb7671e48ea181e to your computer and use it in GitHub Desktop.

Revisions

  1. @dutc dutc revised this gist May 1, 2014. 1 changed file with 262 additions and 1 deletion.
    263 changes: 262 additions & 1 deletion readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -101,7 +101,6 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;
    0000000000461445 T PySequence_Count /tmp/Python-3.4.0rc1/Objects/abstract.c:1866
    0000000000460823 T PySequence_DelItem /tmp/Python-3.4.0rc1/Objects/abstract.c:1571


    $ objdump -d python3.4
    python3.4: file format elf64-x86-64

    @@ -215,3 +214,265 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;
    45eb3f: 48 8b 45 e0 mov -0x20(%rbp),%rax
    45eb43: c9 leaveq
    45eb44: c3 retq

    $ readelf -all python3.4
    ELF Header:
    Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
    Class: ELF64
    Data: 2's complement, little endian
    Version: 1 (current)
    OS/ABI: UNIX - System V
    ABI Version: 0
    Type: EXEC (Executable file)
    Machine: Advanced Micro Devices X86-64
    Version: 0x1
    Entry point address: 0x41a9d0
    Start of program headers: 64 (bytes into file)
    Start of section headers: 6131376 (bytes into file)
    Flags: 0x0
    Size of this header: 64 (bytes)
    Size of program headers: 56 (bytes)
    Number of program headers: 9
    Size of section headers: 64 (bytes)
    Number of section headers: 38
    Section header string table index: 35

    Section Headers:
    [Nr] Name Type Address Offset
    Size EntSize Flags Link Info Align
    [ 0] NULL 0000000000000000 00000000
    0000000000000000 0000000000000000 0 0 0
    [ 1] .interp PROGBITS 0000000000400238 00000238
    000000000000001c 0000000000000000 A 0 0 1
    [ 2] .note.ABI-tag NOTE 0000000000400254 00000254
    0000000000000020 0000000000000000 A 0 0 4
    [ 3] .note.gnu.build-i NOTE 0000000000400274 00000274
    0000000000000024 0000000000000000 A 0 0 4
    [ 4] .gnu.hash GNU_HASH 0000000000400298 00000298
    00000000000030b8 0000000000000000 A 5 0 8
    [ 5] .dynsym DYNSYM 0000000000403350 00003350
    000000000000b1a8 0000000000000018 A 6 1 8
    [ 6] .dynstr STRTAB 000000000040e4f8 0000e4f8
    0000000000008172 0000000000000000 A 0 0 1
    [ 7] .gnu.version VERSYM 000000000041666a 0001666a
    0000000000000ece 0000000000000002 A 5 0 2
    [ 8] .gnu.version_r VERNEED 0000000000417538 00017538
    0000000000000130 0000000000000000 A 6 5 8
    [ 9] .rela.dyn RELA 0000000000417668 00017668
    0000000000000078 0000000000000018 A 5 0 8
    [10] .rela.plt RELA 00000000004176e0 000176e0
    0000000000001e78 0000000000000018 A 5 12 8
    [11] .init PROGBITS 0000000000419558 00019558
    000000000000000e 0000000000000000 AX 0 0 4
    [12] .plt PROGBITS 0000000000419570 00019570
    0000000000001460 0000000000000010 AX 0 0 16
    [13] .text PROGBITS 000000000041a9d0 0001a9d0
    000000000024da34 0000000000000000 AX 0 0 16
    [14] .fini PROGBITS 0000000000668404 00268404
    0000000000000009 0000000000000000 AX 0 0 4
    [15] .rodata PROGBITS 0000000000668420 00268420
    000000000006258f 0000000000000000 A 0 0 32
    [16] .eh_frame_hdr PROGBITS 00000000006ca9b0 002ca9b0
    00000000000094e4 0000000000000000 A 0 0 4
    [17] .eh_frame PROGBITS 00000000006d3e98 002d3e98
    0000000000025aec 0000000000000000 A 0 0 8
    [18] .init_array INIT_ARRAY 00000000008f9dd0 002f9dd0
    0000000000000008 0000000000000000 WA 0 0 8
    [19] .fini_array FINI_ARRAY 00000000008f9dd8 002f9dd8
    0000000000000008 0000000000000000 WA 0 0 8
    [20] .jcr PROGBITS 00000000008f9de0 002f9de0
    0000000000000008 0000000000000000 WA 0 0 8
    [21] .dynamic DYNAMIC 00000000008f9de8 002f9de8
    0000000000000210 0000000000000010 WA 6 0 8
    [22] .got PROGBITS 00000000008f9ff8 002f9ff8
    0000000000000008 0000000000000008 WA 0 0 8
    [23] .got.plt PROGBITS 00000000008fa000 002fa000
    0000000000000a40 0000000000000008 WA 0 0 8
    [24] .data PROGBITS 00000000008faa40 002faa40
    0000000000069390 0000000000000000 WA 0 0 32
    [25] .bss NOBITS 0000000000963de0 00363dd0
    000000000001c2e0 0000000000000000 WA 0 0 32
    [26] .comment PROGBITS 0000000000000000 00363dd0
    000000000000006b 0000000000000001 MS 0 0 1
    [27] .debug_aranges PROGBITS 0000000000000000 00363e3b
    0000000000001700 0000000000000000 0 0 1
    [28] .debug_info PROGBITS 0000000000000000 0036553b
    00000000000f4563 0000000000000000 0 0 1
    [29] .debug_abbrev PROGBITS 0000000000000000 00459a9e
    0000000000015b78 0000000000000000 0 0 1
    [30] .debug_line PROGBITS 0000000000000000 0046f616
    00000000000b0554 0000000000000000 0 0 1
    [31] .debug_str PROGBITS 0000000000000000 0051fb6a
    00000000000598ae 0000000000000001 MS 0 0 1
    [32] .debug_ranges PROGBITS 0000000000000000 00579418
    0000000000009590 0000000000000000 0 0 1
    [33] .debug_macro PROGBITS 0000000000000000 005829a8
    00000000000470be 0000000000000000 0 0 1
    [34] .debug_types PROGBITS 0000000000000000 005c9a66
    000000000000f2d8 0000000000000000 0 0 1
    [35] .shstrtab STRTAB 0000000000000000 005d8d3e
    0000000000000170 0000000000000000 0 0 1
    [36] .symtab SYMTAB 0000000000000000 005d9830
    0000000000035fe8 0000000000000018 37 7322 8
    [37] .strtab STRTAB 0000000000000000 0060f818
    0000000000025576 0000000000000000 0 0 1
    Key to Flags:
    W (write), A (alloc), X (execute), M (merge), S (strings), l (large)
    I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
    O (extra OS processing required) o (OS specific), p (processor specific)

    There are no section groups in this file.

    Program Headers:
    Type Offset VirtAddr PhysAddr
    FileSiz MemSiz Flags Align
    PHDR 0x0000000000000040 0x0000000000400040 0x0000000000400040
    0x00000000000001f8 0x00000000000001f8 R E 8
    INTERP 0x0000000000000238 0x0000000000400238 0x0000000000400238
    0x000000000000001c 0x000000000000001c R 1
    [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
    LOAD 0x0000000000000000 0x0000000000400000 0x0000000000400000
    0x00000000002f9984 0x00000000002f9984 R E 200000
    LOAD 0x00000000002f9dd0 0x00000000008f9dd0 0x00000000008f9dd0
    0x000000000006a000 0x00000000000862f0 RW 200000
    DYNAMIC 0x00000000002f9de8 0x00000000008f9de8 0x00000000008f9de8
    0x0000000000000210 0x0000000000000210 RW 8
    NOTE 0x0000000000000254 0x0000000000400254 0x0000000000400254
    0x0000000000000044 0x0000000000000044 R 4
    GNU_EH_FRAME 0x00000000002ca9b0 0x00000000006ca9b0 0x00000000006ca9b0
    0x00000000000094e4 0x00000000000094e4 R 4
    GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
    0x0000000000000000 0x0000000000000000 RW 8
    GNU_RELRO 0x00000000002f9dd0 0x00000000008f9dd0 0x00000000008f9dd0
    0x0000000000000230 0x0000000000000230 R 1

    Section to Segment mapping:
    Segment Sections...
    00
    01 .interp
    02 .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
    03 .init_array .fini_array .jcr .dynamic .got .got.plt .data .bss
    04 .dynamic
    05 .note.ABI-tag .note.gnu.build-id
    06 .eh_frame_hdr
    07
    08 .init_array .fini_array .jcr .dynamic .got

    Dynamic section at offset 0x2f9de8 contains 28 entries:
    Tag Type Name/Value
    0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
    0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
    0x0000000000000001 (NEEDED) Shared library: [libutil.so.1]
    0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
    0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
    0x000000000000000c (INIT) 0x419558
    0x000000000000000d (FINI) 0x668404
    0x0000000000000019 (INIT_ARRAY) 0x8f9dd0
    0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)
    0x000000000000001a (FINI_ARRAY) 0x8f9dd8
    0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)
    0x000000006ffffef5 (GNU_HASH) 0x400298
    0x0000000000000005 (STRTAB) 0x40e4f8
    0x0000000000000006 (SYMTAB) 0x403350
    0x000000000000000a (STRSZ) 33138 (bytes)
    0x000000000000000b (SYMENT) 24 (bytes)
    0x0000000000000015 (DEBUG) 0x0
    0x0000000000000003 (PLTGOT) 0x8fa000
    0x0000000000000002 (PLTRELSZ) 7800 (bytes)
    0x0000000000000014 (PLTREL) RELA
    0x0000000000000017 (JMPREL) 0x4176e0
    0x0000000000000007 (RELA) 0x417668
    0x0000000000000008 (RELASZ) 120 (bytes)
    0x0000000000000009 (RELAENT) 24 (bytes)
    0x000000006ffffffe (VERNEED) 0x417538
    0x000000006fffffff (VERNEEDNUM) 5
    0x000000006ffffff0 (VERSYM) 0x41666a
    0x0000000000000000 (NULL) 0x0

    Relocation section '.rela.dyn' at offset 0x17668 contains 5 entries:
    Offset Info Type Sym. Value Sym. Name + Addend
    0000008f9ff8 009a00000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0
    000000963de0 059b00000005 R_X86_64_COPY 0000000000963de0 stdout + 0
    000000963de8 02aa00000005 R_X86_64_COPY 0000000000963de8 stdin + 0
    000000963df0 015400000005 R_X86_64_COPY 0000000000963df0 __environ + 0
    000000963df8 018e00000005 R_X86_64_COPY 0000000000963df8 stderr + 0

    Relocation section '.rela.plt' at offset 0x176e0 contains 325 entries:
    Offset Info Type Sym. Value Sym. Name + Addend
    0000008fa018 000100000007 R_X86_64_JUMP_SLO 0000000000000000 wcscat + 0
    0000008fa020 000200000007 R_X86_64_JUMP_SLO 0000000000000000 getenv + 0
    0000008fa028 000300000007 R_X86_64_JUMP_SLO 0000000000000000 raise + 0
    0000008fa030 000400000007 R_X86_64_JUMP_SLO 0000000000000000 mkfifoat + 0
    0000008fa038 067700000007 R_X86_64_JUMP_SLO 00000000004195c0 free + 0
    0000008fa040 000500000007 R_X86_64_JUMP_SLO 0000000000000000 wcscmp + 0
    0000008fa048 000600000007 R_X86_64_JUMP_SLO 0000000000000000 utimensat + 0
    0000008fa050 000700000007 R_X86_64_JUMP_SLO 0000000000000000 putchar + 0
    0000008fa058 000800000007 R_X86_64_JUMP_SLO 0000000000000000 pthread_create + 0
    0000008fa060 000900000007 R_X86_64_JUMP_SLO 0000000000000000 pthread_sigmask + 0
    0000008fa068 000a00000007 R_X86_64_JUMP_SLO 0000000000000000 funlockfile + 0
    0000008fa070 000b00000007 R_X86_64_JUMP_SLO 0000000000000000 pthread_detach + 0
    0000008fa078 000c00000007 R_X86_64_JUMP_SLO 0000000000000000 sched_getscheduler + 0
    0000008fa080 000d00000007 R_X86_64_JUMP_SLO 0000000000000000 abort + 0
    0000008fa088 000e00000007 R_X86_64_JUMP_SLO 0000000000000000 __errno_location + 0
    0000008fa090 048600000007 R_X86_64_JUMP_SLO 0000000000419670 fdatasync + 0
    0000008fa098 000f00000007 R_X86_64_JUMP_SLO 0000000000000000 ldexp + 0
    0000008fa0a0 001000000007 R_X86_64_JUMP_SLO 0000000000000000 unlink + 0
    0000008fa0a8 001100000007 R_X86_64_JUMP_SLO 0000000000000000 round + 0
    0000008fa0b0 001200000007 R_X86_64_JUMP_SLO 0000000000000000 strncpy + 0
    0000008fa0b8 001300000007 R_X86_64_JUMP_SLO 0000000000000000 getpriority + 0
    0000008fa0c0 001400000007 R_X86_64_JUMP_SLO 0000000000000000 strncmp + 0
    0000008fa0c8 001600000007 R_X86_64_JUMP_SLO 0000000000000000 _exit + 0
    0000008fa0d0 001700000007 R_X86_64_JUMP_SLO 0000000000000000 wcscoll + 0
    0000008fa0d8 001800000007 R_X86_64_JUMP_SLO 0000000000000000 strcpy + 0
    0000008fa0e0 02af00000007 R_X86_64_JUMP_SLO 0000000000419710 chroot + 0
    0000008fa0e8 001900000007 R_X86_64_JUMP_SLO 0000000000000000 getresgid + 0
    0000008fa0f0 001a00000007 R_X86_64_JUMP_SLO 0000000000000000 mkdir + 0
    0000008fa0f8 001b00000007 R_X86_64_JUMP_SLO 0000000000000000 flistxattr + 0
    0000008fa100 001c00000007 R_X86_64_JUMP_SLO 0000000000000000 writev + 0
    0000008fa108 001d00000007 R_X86_64_JUMP_SLO 0000000000000000 unlinkat + 0
    0000008fa110 001e00000007 R_X86_64_JUMP_SLO 0000000000000000 puts + 0
    0000008fa118 001f00000007 R_X86_64_JUMP_SLO 0000000000000000 ferror + 0
    0000008fa120 002000000007 R_X86_64_JUMP_SLO 0000000000000000 getc_unlocked + 0
    0000008fa128 002100000007 R_X86_64_JUMP_SLO 0000000000000000 qsort + 0
    0000008fa130 002200000007 R_X86_64_JUMP_SLO 0000000000000000 isatty + 0
    0000008fa138 002300000007 R_X86_64_JUMP_SLO 0000000000000000 __isnan + 0
    0000008fa140 002400000007 R_X86_64_JUMP_SLO 0000000000000000 sigaction + 0
    0000008fa148 002500000007 R_X86_64_JUMP_SLO 0000000000000000 fread + 0
    0000008fa150 002600000007 R_X86_64_JUMP_SLO 0000000000000000 __finite + 0
    0000008fa158 002700000007 R_X86_64_JUMP_SLO 0000000000000000 fsetxattr + 0
    0000008fa160 002800000007 R_X86_64_JUMP_SLO 0000000000000000 vsnprintf + 0
    0000008fa168 002900000007 R_X86_64_JUMP_SLO 0000000000000000 exp + 0
    0000008fa170 002a00000007 R_X86_64_JUMP_SLO 0000000000000000 localeconv + 0
    0000008fa178 002b00000007 R_X86_64_JUMP_SLO 0000000000000000 llistxattr + 0
    0000008fa180 002c00000007 R_X86_64_JUMP_SLO 0000000000000000 faccessat + 0
    0000008fa188 002d00000007 R_X86_64_JUMP_SLO 0000000000000000 mbstowcs + 0
    0000008fa190 002e00000007 R_X86_64_JUMP_SLO 0000000000000000 readlink + 0
    0000008fa198 002f00000007 R_X86_64_JUMP_SLO 0000000000000000 fcntl + 0
    0000008fa1a0 003000000007 R_X86_64_JUMP_SLO 0000000000000000 wcsncat + 0
    0000008fa1a8 003100000007 R_X86_64_JUMP_SLO 0000000000000000 write + 0
    0000008fa1b0 003200000007 R_X86_64_JUMP_SLO 0000000000000000 getpid + 0
    0000008fa1b8 003300000007 R_X86_64_JUMP_SLO 0000000000000000 textdomain + 0
    0000008fa1c0 003400000007 R_X86_64_JUMP_SLO 0000000000000000 pthread_kill + 0
    0000008fa1c8 003500000007 R_X86_64_JUMP_SLO 0000000000000000 setresuid + 0
    0000008fa1d0 003600000007 R_X86_64_JUMP_SLO 0000000000000000 dup3 + 0
    0000008fa1d8 003700000007 R_X86_64_JUMP_SLO 0000000000000000 pthread_cond_wait + 0
    0000008fa1e0 003800000007 R_X86_64_JUMP_SLO 0000000000000000 fremovexattr + 0
    0000008fa1e8 003900000007 R_X86_64_JUMP_SLO 0000000000000000 pathconf + 0
    0000008fa1f0 003a00000007 R_X86_64_JUMP_SLO 0000000000000000 clock + 0
    0000008fa1f8 003b00000007 R_X86_64_JUMP_SLO 0000000000000000 wcsrchr + 0
    0000008fa200 003c00000007 R_X86_64_JUMP_SLO 0000000000000000 fclose + 0
    0000008fa208 003d00000007 R_X86_64_JUMP_SLO 0000000000000000 lgetxattr + 0
    0000008fa210 003e00000007 R_X86_64_JUMP_SLO 0000000000000000 __sched_cpucount + 0
    0000008fa218 003f00000007 R_X86_64_JUMP_SLO 0000000000000000 __xstat64 + 0
    0000008fa220 004000000007 R_X86_64_JUMP_SLO 0000000000000000 wait3 + 0
    0000008fa228 004100000007 R_X86_64_JUMP_SLO 0000000000000000 opendir + 0
    0000008fa230 004200000007 R_X86_64_JUMP_SLO 0000000000000000 getloadavg + 0
    0000008fa238 004300000007 R_X86_64_JUMP_SLO 0000000000000000 getpwuid + 0
    0000008fa240 004400000007 R_X86_64_JUMP_SLO 0000000000000000 bindtextdomain + 0
    0000008fa248 004500000007 R_X86_64_JUMP_SLO 0000000000000000 listxattr + 0
    0000008fa250 004600000007 R_X86_64_JUMP_SLO 0000000000000000 rmdir + 0
    0000008fa258 004700000007 R_X86_64_JUMP_SLO 0000000000000000 dcgettext + 0
    0000008fa260 004800000007 R_X86_64_JUMP_SLO 0000000000000000 strlen + 0
    0000008fa268 004900000007 R_X86_64_JUMP_SLO 0000000000000000 chdir + 0
    0000008fa270 004a00000007 R_X86_64_JUMP_SLO 0000000000000000 __stack_chk_fail + 0
    0000008fa278 004b00000007 R_X86_64_JUMP_SLO 0000000000000000 getuid + 0
  2. @dutc dutc revised this gist May 1, 2014. 1 changed file with 114 additions and 0 deletions.
    114 changes: 114 additions & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -101,3 +101,117 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;
    0000000000461445 T PySequence_Count /tmp/Python-3.4.0rc1/Objects/abstract.c:1866
    0000000000460823 T PySequence_DelItem /tmp/Python-3.4.0rc1/Objects/abstract.c:1571


    $ objdump -d python3.4
    python3.4: file format elf64-x86-64


    Disassembly of section .init:

    0000000000419558 <_init>:
    419558: 48 83 ec 08 sub $0x8,%rsp
    41955c: e8 9b 14 00 00 callq 41a9fc <call_gmon_start>
    419561: 48 83 c4 08 add $0x8,%rsp
    419565: c3 retq

    Disassembly of section .plt:

    0000000000419570 <wcscat@plt-0x10>:
    419570: ff 35 92 0a 4e 00 pushq 0x4e0a92(%rip) # 8fa008 <_GLOBAL_OFFSET_TABLE_+0x8>
    419576: ff 25 94 0a 4e 00 jmpq *0x4e0a94(%rip) # 8fa010 <_GLOBAL_OFFSET_TABLE_+0x10>
    41957c: 0f 1f 40 00 nopl 0x0(%rax)

    0000000000419580 <wcscat@plt>:
    419580: ff 25 92 0a 4e 00 jmpq *0x4e0a92(%rip) # 8fa018 <_GLOBAL_OFFSET_TABLE_+0x18>
    419586: 68 00 00 00 00 pushq $0x0
    41958b: e9 e0 ff ff ff jmpq 419570 <_init+0x18>

    000000000045e9fb <PyNumber_Multiply>:
    45e9fb: 55 push %rbp
    45e9fc: 48 89 e5 mov %rsp,%rbp
    45e9ff: 48 83 ec 30 sub $0x30,%rsp
    45ea03: 48 89 7d d8 mov %rdi,-0x28(%rbp)
    45ea07: 48 89 75 d0 mov %rsi,-0x30(%rbp)
    45ea0b: 48 8b 4d d0 mov -0x30(%rbp),%rcx
    45ea0f: 48 8b 45 d8 mov -0x28(%rbp),%rax
    45ea13: ba 10 00 00 00 mov $0x10,%edx
    45ea18: 48 89 ce mov %rcx,%rsi
    45ea1b: 48 89 c7 mov %rax,%rdi
    45ea1e: e8 c6 f4 ff ff callq 45dee9 <binary_op1>
    45ea23: 48 89 45 e0 mov %rax,-0x20(%rbp)
    45ea27: 48 81 7d e0 e0 01 92 cmpq $0x9201e0,-0x20(%rbp)
    45ea2e: 00
    45ea2f: 0f 85 0a 01 00 00 jne 45eb3f <PyNumber_Multiply+0x144>
    45ea35: 48 8b 45 d8 mov -0x28(%rbp),%rax
    45ea39: 48 8b 40 18 mov 0x18(%rax),%rax
    45ea3d: 48 8b 40 78 mov 0x78(%rax),%rax
    45ea41: 48 89 45 e8 mov %rax,-0x18(%rbp)
    45ea45: 48 8b 45 d0 mov -0x30(%rbp),%rax
    45ea49: 48 8b 40 18 mov 0x18(%rax),%rax
    45ea4d: 48 8b 40 78 mov 0x78(%rax),%rax
    45ea51: 48 89 45 f0 mov %rax,-0x10(%rbp)
    45ea55: 48 8b 45 e0 mov -0x20(%rbp),%rax
    45ea59: 48 89 45 f8 mov %rax,-0x8(%rbp)
    45ea5d: 48 8b 05 54 15 52 00 mov 0x521554(%rip),%rax # 97ffb8 <_Py_RefTotal>
    45ea64: 48 83 e8 01 sub $0x1,%rax
    45ea68: 48 89 05 49 15 52 00 mov %rax,0x521549(%rip) # 97ffb8 <_Py_RefTotal>
    45ea6f: 48 8b 45 f8 mov -0x8(%rbp),%rax
    45ea73: 48 8b 40 10 mov 0x10(%rax),%rax
    45ea77: 48 8d 50 ff lea -0x1(%rax),%rdx
    45ea7b: 48 8b 45 f8 mov -0x8(%rbp),%rax
    45ea7f: 48 89 50 10 mov %rdx,0x10(%rax)
    45ea83: 48 8b 45 f8 mov -0x8(%rbp),%rax
    45ea87: 48 8b 40 10 mov 0x10(%rax),%rax
    45ea8b: 48 85 c0 test %rax,%rax
    45ea8e: 74 25 je 45eab5 <PyNumber_Multiply+0xba>
    45ea90: 48 8b 45 f8 mov -0x8(%rbp),%rax
    45ea94: 48 8b 40 10 mov 0x10(%rax),%rax
    45ea98: 48 85 c0 test %rax,%rax
    45ea9b: 79 24 jns 45eac1 <PyNumber_Multiply+0xc6>
    45ea9d: 48 8b 45 f8 mov -0x8(%rbp),%rax
    45eaa1: 48 89 c2 mov %rax,%rdx
    45eaa4: be 9a 03 00 00 mov $0x39a,%esi
    45eaa9: bf f2 2f 67 00 mov $0x672ff2,%edi
    45eaae: e8 08 67 06 00 callq 4c51bb <_Py_NegativeRefcount>
    45eab3: eb 0c jmp 45eac1 <PyNumber_Multiply+0xc6>
    45eab5: 48 8b 45 f8 mov -0x8(%rbp),%rax
    45eab9: 48 89 c7 mov %rax,%rdi
    45eabc: e8 33 a2 06 00 callq 4c8cf4 <_Py_Dealloc>
    45eac1: 48 83 7d e8 00 cmpq $0x0,-0x18(%rbp)
    45eac6: 74 2a je 45eaf2 <PyNumber_Multiply+0xf7>
    45eac8: 48 8b 45 e8 mov -0x18(%rbp),%rax
    45eacc: 48 8b 40 10 mov 0x10(%rax),%rax
    45ead0: 48 85 c0 test %rax,%rax
    45ead3: 74 1d je 45eaf2 <PyNumber_Multiply+0xf7>
    45ead5: 48 8b 45 e8 mov -0x18(%rbp),%rax
    45ead9: 48 8b 40 10 mov 0x10(%rax),%rax
    45eadd: 48 8b 55 d0 mov -0x30(%rbp),%rdx
    45eae1: 48 8b 4d d8 mov -0x28(%rbp),%rcx
    45eae5: 48 89 ce mov %rcx,%rsi
    45eae8: 48 89 c7 mov %rax,%rdi
    45eaeb: e8 72 fe ff ff callq 45e962 <sequence_repeat>
    45eaf0: eb 51 jmp 45eb43 <PyNumber_Multiply+0x148>
    45eaf2: 48 83 7d f0 00 cmpq $0x0,-0x10(%rbp)
    45eaf7: 74 2a je 45eb23 <PyNumber_Multiply+0x128>
    45eaf9: 48 8b 45 f0 mov -0x10(%rbp),%rax
    45eafd: 48 8b 40 10 mov 0x10(%rax),%rax
    45eb01: 48 85 c0 test %rax,%rax
    45eb04: 74 1d je 45eb23 <PyNumber_Multiply+0x128>
    45eb06: 48 8b 45 f0 mov -0x10(%rbp),%rax
    45eb0a: 48 8b 40 10 mov 0x10(%rax),%rax
    45eb0e: 48 8b 55 d8 mov -0x28(%rbp),%rdx
    45eb12: 48 8b 4d d0 mov -0x30(%rbp),%rcx
    45eb16: 48 89 ce mov %rcx,%rsi
    45eb19: 48 89 c7 mov %rax,%rdi
    45eb1c: e8 41 fe ff ff callq 45e962 <sequence_repeat>
    45eb21: eb 20 jmp 45eb43 <PyNumber_Multiply+0x148>
    45eb23: 48 8b 4d d0 mov -0x30(%rbp),%rcx
    45eb27: 48 8b 45 d8 mov -0x28(%rbp),%rax
    45eb2b: ba ec 33 67 00 mov $0x6733ec,%edx
    45eb30: 48 89 ce mov %rcx,%rsi
    45eb33: 48 89 c7 mov %rax,%rdi
    45eb36: e8 8c f6 ff ff callq 45e1c7 <binop_type_error>
    45eb3b: 48 89 45 e0 mov %rax,-0x20(%rbp)
    45eb3f: 48 8b 45 e0 mov -0x20(%rbp),%rax
    45eb43: c9 leaveq
    45eb44: c3 retq
  3. @dutc dutc revised this gist May 1, 2014. 1 changed file with 16 additions and 1 deletion.
    17 changes: 16 additions & 1 deletion readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -85,4 +85,19 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/objdu

    http://linuxcommand.org/man_pages/nm1.html

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;h=2a44a846004885f06f288af6c38fa42eddf5a7f2;hb=HEAD
    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;h=2a44a846004885f06f288af6c38fa42eddf5a7f2;hb=HEAD

    $ nm -l python3.4
    00000000004259c9 T PyRun_SimpleString /tmp/Python-3.4.0rc1/Python/pythonrun.c:2969
    0000000000421d36 T PyRun_SimpleStringFlags /tmp/Python-3.4.0rc1/Python/pythonrun.c:1629
    0000000000425993 T PyRun_String /tmp/Python-3.4.0rc1/Python/pythonrun.c:2962
    0000000000423afc T PyRun_StringFlags /tmp/Python-3.4.0rc1/Python/pythonrun.c:2091
    0000000000496b94 T PySeqIter_New /tmp/Python-3.4.0rc1/Objects/iterobject.c:12
    000000000091a6e0 D PySeqIter_Type /tmp/Python-3.4.0rc1/Objects/iterobject.c:131
    0000000000463e13 T _PySequence_BytesToCharpArray /tmp/Python-3.4.0rc1/Objects/abstract.c:2698
    000000000045fe72 T PySequence_Check /tmp/Python-3.4.0rc1/Objects/abstract.c:1358
    000000000045ff5f T PySequence_Concat /tmp/Python-3.4.0rc1/Objects/abstract.c:1393
    000000000046146f T PySequence_Contains /tmp/Python-3.4.0rc1/Objects/abstract.c:1875
    0000000000461445 T PySequence_Count /tmp/Python-3.4.0rc1/Objects/abstract.c:1866
    0000000000460823 T PySequence_DelItem /tmp/Python-3.4.0rc1/Objects/abstract.c:1571

  4. @dutc dutc revised this gist May 1, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -13,7 +13,7 @@ However, just as I can sketch for you the following...
    分析 = analysis
    工具 = tools

    Linux可執行文件ㄉ內容分析工具 = Linux Tools for Analysing the Contents of Executables
    Linux可執行文件的內容分析工具 = Linux Tools for Analysing the Contents of Executables
    (more specifically, of course, ELF object files)

    ... so can we break down the majority of the complexity behind:
  5. @dutc dutc revised this gist May 1, 2014. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -53,6 +53,7 @@ $ apt-get source binutils
    The three tools discussed here are packaged as `binutils` and distributed by GNU/FSF.

    Here's the homepage for these tools with descriptions of what they each do:

    https://www.gnu.org/software/binutils/
    - nm - Lists symbols from object files.
    - objdump - Displays information from object files.
  6. @dutc dutc revised this gist May 1, 2014. 1 changed file with 22 additions and 7 deletions.
    29 changes: 22 additions & 7 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ However, just as I can sketch for you the following...
    (more specifically, of course, ELF object files)

    ... so can we break down the majority of the complexity behind:
    - the ELF format,
    - the ELF (executable and linkable format),
    - object files,
    - how executables are executed,
    - how C programmes work,
    @@ -26,7 +26,7 @@ However, just as I can sketch for you the following...

    In the end, it comes down to reading source code and understanding the protocols and mechanisms that have evolved around programme execution.

    The purpose of this tutorial isn't to teach you everything about these tools or about executable formats so much as it is to impress upon you how *accessible* these things really are.
    The purpose of this tutorial isn't to teach you everything about these tools or about executable formats. It is to demystify aspects of programme execution on Linux and demonstrate how *accessible* this knowledge is.

    The word ELF in this tutorial refers to a specific format and protocol for executable files. There is no equivalent protocol in Python, because Python is an interpreted language. An interpreter sits between the Python programme you want to execute and the operating system on which the programme is executed. That interpreter may itself be written in an interpreted language, but, inevitably, some piece of code must interact directly with the operating system, and this code will need to be structured in a fashion that the OS can understand. ELF is one such format, and there are many others. You can even write your binary format!

    @@ -36,21 +36,38 @@ ELF How-To: http://cs.mipt.ru/docs/comp/eng/os/linux/howto/howto_english/elf/elf

    Wikipedia also has a decent overview: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

    `fs/exec.c:do_execve_common` https://github.com/torvalds/linux/blob/96c57ade7e9ba2d1deba635a5989cc111f185dca/fs/exec.c#L1428
    As you can see from these documents, ELF is really just a file format that is interpreted by some code in the kernel. If you're curious, take a look at `fs/exec.c:do_execve_common` which is called when we execute a programme:

    `fs/binfmt_elf.c:load_elf_binary` https://github.com/torvalds/linux/blob/master/fs/binfmt_elf.c#L571
    https://github.com/torvalds/linux/blob/96c57ade7e9ba2d1deba635a5989cc111f185dca/fs/exec.c#L1428

    For ELF binaries, take a look at `fs/binfmt_elf.c:load_elf_binary`:

    https://github.com/torvalds/linux/blob/master/fs/binfmt_elf.c#L571

    In the end, this comes down to just formats and code to process files in those formats.

    As a side note, if you use `apt`, you can retrieve the code for any programme installed on your computer using `apt-get source`. For the tools discussed here, do:

    $ apt-get source binutils

    The three tools discussed here are packaged as `binutils` and distributed by GNU/FSF.

    Here's the homepage for these tools with descriptions of what they each do:
    https://www.gnu.org/software/binutils/
    - nm - Lists symbols from object files.
    - objdump - Displays information from object files.
    - readelf - Displays information from any ELF format object file.

    These tools are just programmes written in C that read in files written in the ELF [format] and spits out interesting information about them.

    If you're curious how these tools work, just read the source!

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e9260b41f3cae51d1a8c542a8e8328d3f39c7c18;hb=HEAD

    But before you read the source, read the manpages to get an overview of what these tools do:

    man readelf

    http://linuxcommand.org/man_pages/readelf1.html
    @@ -67,6 +84,4 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/objdu

    http://linuxcommand.org/man_pages/nm1.html

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;h=2a44a846004885f06f288af6c38fa42eddf5a7f2;hb=HEAD

    objdump --disassemble
    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;h=2a44a846004885f06f288af6c38fa42eddf5a7f2;hb=HEAD
  7. @dutc dutc revised this gist May 1, 2014. 1 changed file with 33 additions and 0 deletions.
    33 changes: 33 additions & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,41 @@
    Linux可執行文件ㄉ內容分析工具
    =========================

    ***NOTE: This is a working copy. This tutorial is unfinished and may contain inaccuracies.***

    I've written the title of this tutorial in Chinese, as I suspect that its contents may, at first glance, appear similarly incomprehensible to the audience.

    However, just as I can sketch for you the following...

    可執行文件 = (可 = can) + (執行 = execute) + (文件 = file) = executable (file)

    內容 = contents
    分析 = analysis
    工具 = tools

    Linux可執行文件ㄉ內容分析工具 = Linux Tools for Analysing the Contents of Executables
    (more specifically, of course, ELF object files)

    ... so can we break down the majority of the complexity behind:
    - the ELF format,
    - object files,
    - how executables are executed,
    - how C programmes work,
    - how the C standard library works,
    - and what these three tools are used for.

    In the end, it comes down to reading source code and understanding the protocols and mechanisms that have evolved around programme execution.

    The purpose of this tutorial isn't to teach you everything about these tools or about executable formats so much as it is to impress upon you how *accessible* these things really are.

    The word ELF in this tutorial refers to a specific format and protocol for executable files. There is no equivalent protocol in Python, because Python is an interpreted language. An interpreter sits between the Python programme you want to execute and the operating system on which the programme is executed. That interpreter may itself be written in an interpreted language, but, inevitably, some piece of code must interact directly with the operating system, and this code will need to be structured in a fashion that the OS can understand. ELF is one such format, and there are many others. You can even write your binary format!

    Here's a simple introductory document on:

    ELF How-To: http://cs.mipt.ru/docs/comp/eng/os/linux/howto/howto_english/elf/elf-howto.html

    Wikipedia also has a decent overview: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

    `fs/exec.c:do_execve_common` https://github.com/torvalds/linux/blob/96c57ade7e9ba2d1deba635a5989cc111f185dca/fs/exec.c#L1428

    `fs/binfmt_elf.c:load_elf_binary` https://github.com/torvalds/linux/blob/master/fs/binfmt_elf.c#L571
  8. @dutc dutc revised this gist May 1, 2014. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,7 @@ Linux可執行文件ㄉ內容分析工具
    ELF How-To: http://cs.mipt.ru/docs/comp/eng/os/linux/howto/howto_english/elf/elf-howto.html

    `fs/exec.c:do_execve_common` https://github.com/torvalds/linux/blob/96c57ade7e9ba2d1deba635a5989cc111f185dca/fs/exec.c#L1428

    `fs/binfmt_elf.c:load_elf_binary` https://github.com/torvalds/linux/blob/master/fs/binfmt_elf.c#L571

    $ apt-get source binutils
  9. @dutc dutc revised this gist May 1, 2014. 1 changed file with 7 additions and 2 deletions.
    9 changes: 7 additions & 2 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,10 @@
    Linux可執行文件ㄉ內容分析工具
    =========================

    ELF How-To: http://cs.mipt.ru/docs/comp/eng/os/linux/howto/howto_english/elf/elf-howto-1.html
    ELF How-To: http://cs.mipt.ru/docs/comp/eng/os/linux/howto/howto_english/elf/elf-howto.html

    `fs/exec.c:do_execve_common` https://github.com/torvalds/linux/blob/96c57ade7e9ba2d1deba635a5989cc111f185dca/fs/exec.c#L1428
    `fs/binfmt_elf.c:load_elf_binary` https://github.com/torvalds/linux/blob/master/fs/binfmt_elf.c#L571

    $ apt-get source binutils

    @@ -30,4 +33,6 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/objdu

    http://linuxcommand.org/man_pages/nm1.html

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;h=2a44a846004885f06f288af6c38fa42eddf5a7f2;hb=HEAD
    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;h=2a44a846004885f06f288af6c38fa42eddf5a7f2;hb=HEAD

    objdump --disassemble
  10. @dutc dutc revised this gist May 1, 2014. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,8 @@
    Linux可執行文件ㄉ內容分析工具
    =========================

    ELF How-To: http://cs.mipt.ru/docs/comp/eng/os/linux/howto/howto_english/elf/elf-howto-1.html

    $ apt-get source binutils

    https://www.gnu.org/software/binutils/
  11. @dutc dutc revised this gist May 1, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,8 @@
    Linux可執行文件ㄉ內容分析工具
    =========================

    $ apt-get source binutils

    https://www.gnu.org/software/binutils/
    - nm - Lists symbols from object files.
    - objdump - Displays information from object files.
    @@ -10,8 +12,6 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e9260b41f3cae51d1a8c542a8e8328d3f39c7c18;hb=HEAD

    `apt-get source binutils`

    man readelf

    http://linuxcommand.org/man_pages/readelf1.html
  12. @dutc dutc revised this gist May 1, 2014. 1 changed file with 2 additions and 4 deletions.
    6 changes: 2 additions & 4 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -2,18 +2,16 @@ Linux可執行文件ㄉ內容分析工具
    =========================

    https://www.gnu.org/software/binutils/

    - nm - Lists symbols from object files.
    - objdump - Displays information from object files.
    - readelf - Displays information from any ELF format object file.


    apt-get source binutils

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e9260b41f3cae51d1a8c542a8e8328d3f39c7c18;hb=HEAD

    `apt-get source binutils`

    man readelf

    http://linuxcommand.org/man_pages/readelf1.html
  13. @dutc dutc revised this gist May 1, 2014. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -7,6 +7,7 @@ https://www.gnu.org/software/binutils/
    - objdump - Displays information from object files.
    - readelf - Displays information from any ELF format object file.


    apt-get source binutils

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree
  14. @dutc dutc revised this gist May 1, 2014. 1 changed file with 4 additions and 3 deletions.
    7 changes: 4 additions & 3 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -2,9 +2,10 @@ Linux可執行文件ㄉ內容分析工具
    =========================

    https://www.gnu.org/software/binutils/
    nm - Lists symbols from object files.
    objdump - Displays information from object files.
    readelf - Displays information from any ELF format object file.

    - nm - Lists symbols from object files.
    - objdump - Displays information from object files.
    - readelf - Displays information from any ELF format object file.

    apt-get source binutils

  15. @dutc dutc revised this gist May 1, 2014. 1 changed file with 6 additions and 0 deletions.
    6 changes: 6 additions & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,6 @@
    Linux可執行文件ㄉ內容分析工具
    =========================

    https://www.gnu.org/software/binutils/
    nm - Lists symbols from object files.
    objdump - Displays information from object files.
    @@ -12,14 +15,17 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e92
    man readelf

    http://linuxcommand.org/man_pages/readelf1.html

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/readelf.c;h=9cafd7c4fe01212babfd65b806a53d892552f497;hb=HEAD

    man objdump

    http://linuxcommand.org/man_pages/objdump1.html

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/objdump.c;h=14f412214c96f7d849d70ae3ba17e283966abc51;hb=HEAD

    man nm

    http://linuxcommand.org/man_pages/nm1.html

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;h=2a44a846004885f06f288af6c38fa42eddf5a7f2;hb=HEAD
  16. @dutc dutc revised this gist May 1, 2014. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -12,11 +12,14 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e92
    man readelf

    http://linuxcommand.org/man_pages/readelf1.html
    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/readelf.c;h=9cafd7c4fe01212babfd65b806a53d892552f497;hb=HEAD

    man objdump

    http://linuxcommand.org/man_pages/objdump1.html
    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/objdump.c;h=14f412214c96f7d849d70ae3ba17e283966abc51;hb=HEAD

    man nm

    http://linuxcommand.org/man_pages/nm1.html
    http://linuxcommand.org/man_pages/nm1.html
    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/nm.c;h=2a44a846004885f06f288af6c38fa42eddf5a7f2;hb=HEAD
  17. @dutc dutc revised this gist May 1, 2014. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,7 @@ readelf - Displays information from any ELF format object file.
    apt-get source binutils

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e9260b41f3cae51d1a8c542a8e8328d3f39c7c18;hb=HEAD

    man readelf
  18. @dutc dutc revised this gist May 1, 2014. 1 changed file with 2 additions and 3 deletions.
    5 changes: 2 additions & 3 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -3,11 +3,10 @@ nm - Lists symbols from object files.
    objdump - Displays information from object files.
    readelf - Displays information from any ELF format object file.

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree
    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e9260b41f3cae51d1a8c542a8e8328d3f39c7c18;hb=HEAD

    apt-get source binutils

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree
    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e9260b41f3cae51d1a8c542a8e8328d3f39c7c18;hb=HEAD

    man readelf

  19. @dutc dutc revised this gist May 1, 2014. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -8,6 +8,7 @@ https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e92

    apt-get source binutils


    man readelf

    http://linuxcommand.org/man_pages/readelf1.html
  20. @dutc dutc revised this gist May 1, 2014. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,9 @@ objdump - Displays information from object files.
    readelf - Displays information from any ELF format object file.

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree
    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=binutils;h=e9260b41f3cae51d1a8c542a8e8328d3f39c7c18;hb=HEAD

    apt-get source binutils

    man readelf

  21. @dutc dutc revised this gist May 1, 2014. 1 changed file with 7 additions and 0 deletions.
    7 changes: 7 additions & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,10 @@
    https://www.gnu.org/software/binutils/
    nm - Lists symbols from object files.
    objdump - Displays information from object files.
    readelf - Displays information from any ELF format object file.

    https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree

    man readelf

    http://linuxcommand.org/man_pages/readelf1.html
  22. @dutc dutc revised this gist May 1, 2014. 1 changed file with 11 additions and 3 deletions.
    14 changes: 11 additions & 3 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,11 @@
    man readelf http://linuxcommand.org/man_pages/readelf1.html
    man objdump http://linuxcommand.org/man_pages/objdump1.html
    man nm http://linuxcommand.org/man_pages/nm1.html
    man readelf

    http://linuxcommand.org/man_pages/readelf1.html

    man objdump

    http://linuxcommand.org/man_pages/objdump1.html

    man nm

    http://linuxcommand.org/man_pages/nm1.html
  23. @dutc dutc created this gist May 1, 2014.
    3 changes: 3 additions & 0 deletions readelf,nm,objdump.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    man readelf http://linuxcommand.org/man_pages/readelf1.html
    man objdump http://linuxcommand.org/man_pages/objdump1.html
    man nm http://linuxcommand.org/man_pages/nm1.html