1. 源码

#include <stdlib.h>

int main(int argc, char *argv[])
{
printf("hello world\n");
return 0;
}

2. 预处理编译

nuc972-arm-none-linux-gnueabi-gcc -v -E helloworld.c -o -helloworld.i
#-v:输出预处理过程中的调试信息
#-E:预处理编译参数
Using built-in specs.
COLLECT_GCC=nuc972-arm-none-linux-gnueabi-gcc
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)
COLLECT_GCC_OPTIONS='-v' '-E' '-o' '-helloworld.i' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/cc1 -E -quiet -v -iprefix /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/ -isysroot /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc -D __CS_SOURCERYGXX_MAJ__=2014 -D __CS_SOURCERYGXX_MIN__=5 -D __CS_SOURCERYGXX_REV__=29 helloworld.c -o -helloworld.i -march=armv5te -mtls-dialect=gnu -funwind-tables
ignoring duplicate directory "/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.8.3/include"
ignoring nonexistent directory "/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/local/include"
ignoring duplicate directory "/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.8.3/include-fixed"
ignoring duplicate directory "/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/../../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/include"
#include "..." search starts here:
#include <...> search starts here:
/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/include
/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/include-fixed
/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/include
/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/include
End of search list.
COMPILER_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/
LIBRARY_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-E' '-o' '-helloworld.i' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'

3. 汇编

nuc972-arm-none-linux-gnueabi-gcc -v -S helloworld.i -o helloworld.s
#-v:输出预处理过程中的调试信息
#-S:编译为汇编代码
Using built-in specs.
COLLECT_GCC=nuc972-arm-none-linux-gnueabi-gcc
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)
COLLECT_GCC_OPTIONS='-v' '-S' '-o' 'helloworld.s' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/cc1 -fpreprocessed helloworld.i -quiet -dumpbase helloworld.i -march=armv5te -mtls-dialect=gnu -auxbase-strip helloworld.s -version -funwind-tables -o helloworld.s
GNU C (Sourcery CodeBench Lite 2014.05-29) version 4.8.3 20140320 (prerelease) (arm-none-linux-gnueabi)
compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.1-p2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C (Sourcery CodeBench Lite 2014.05-29) version 4.8.3 20140320 (prerelease) (arm-none-linux-gnueabi)
compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.1-p2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 6aba13becf054534a1fc101696595de0
COMPILER_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/
LIBRARY_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-S' '-o' 'helloworld.s' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'

4.目标文件

nuc972-arm-none-linux-gnueabi-gcc -v -c helloworld.s -o helloworld.o
#-v:输出预处理过程中的调试信息
#-o:编译为目标文件
Using built-in specs.
COLLECT_GCC=nuc972-arm-none-linux-gnueabi-gcc
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)
COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'helloworld.o' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/as -v -march=armv5te -meabi=5 -o helloworld.o helloworld.s
GNU assembler version 2.24.51 (arm-none-linux-gnueabi) using BFD version (Sourcery CodeBench Lite 2014.05-29) 2.24.51.20140217
COMPILER_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/
LIBRARY_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'helloworld.o' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'

5.链接

nuc972-arm-none-linux-gnueabi-gcc -v -g -Wall helloworld.c -o helloworld
#-v:输出预处理过程中的调试信息
#-g:增加debug调试
End of search list.
GNU C (Sourcery CodeBench Lite 2014.05-29) version 4.8.3 20140320 (prerelease) (arm-none-linux-gnueabi)
compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.1-p2, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 6aba13becf054534a1fc101696595de0
helloworld.c: In function 'main':
helloworld.c:5:2: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration]
printf("hello world\n");
^
helloworld.c:5:2: warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]
COLLECT_GCC_OPTIONS='-v' '-g' '-Wall' '-o' 'helloworld' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/as -v -march=armv5te -meabi=5 -o /tmp/cccWbISi.o /tmp/ccROSG6e.s
GNU assembler version 2.24.51 (arm-none-linux-gnueabi) using BFD version (Sourcery CodeBench Lite 2014.05-29) 2.24.51.20140217
COMPILER_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/bin/
LIBRARY_PATH=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib/:/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-g' '-Wall' '-o' 'helloworld' '-march=armv5te' '-mtls-dialect=gnu' '-funwind-tables' '-D' '__CS_SOURCERYGXX_MAJ__=2014' '-D' '__CS_SOURCERYGXX_MIN__=5' '-D' '__CS_SOURCERYGXX_REV__=29'
/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/collect2 --sysroot=/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc --eh-frame-hdr -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi -o helloworld /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/crt1.o /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/crti.o /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/crtbegin.o -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3 -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/../../../../arm-none-linux-gnueabi/lib -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/lib -L/home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib /tmp/cccWbISi.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../lib/gcc/arm-none-linux-gnueabi/4.8.3/crtend.o /home/test/smbShare/nuc972/opt/ext-toolchain/bin/../arm-none-linux-gnueabi/libc/usr/lib/crtn.o

6.目标文件查看

readelf -a helloworld
ELF 头:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (可执行文件)
Machine: ARM
Version: 0x1
入口点地址: 0x83e0
程序头起点: 52 (bytes into file)
Start of section headers: 3160 (bytes into file)
标志: 0x5000202, has entry point, Version5 EABI, soft-float ABI
本头的大小: 52 (字节)
程序头大小: 32 (字节)
Number of program headers: 8
节头大小: 40 (字节)
节头数量: 36
字符串表索引节头: 33

节头:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS 00008134 000134 000013 00 A 0 0 1
[ 2] .note.ABI-tag NOTE 00008148 000148 000020 00 A 0 0 4
[ 3] .hash HASH 00008168 000168 00003c 04 A 4 0 4
[ 4] .dynsym DYNSYM 000081a4 0001a4 0000a0 10 A 5 1 4
[ 5] .dynstr STRTAB 00008244 000244 0000cf 00 A 0 0 1
[ 6] .gnu.version VERSYM 00008314 000314 000014 02 A 4 0 2
[ 7] .gnu.version_r VERNEED 00008328 000328 000040 00 A 5 2 4
[ 8] .rel.dyn REL 00008368 000368 000008 08 A 4 0 4
[ 9] .rel.plt REL 00008370 000370 000020 08 AI 4 11 4
[10] .init PROGBITS 00008390 000390 00000c 00 AX 0 0 4
[11] .plt PROGBITS 0000839c 00039c 000044 04 AX 0 0 4
[12] .text PROGBITS 000083e0 0003e0 0001cc 00 AX 0 0 4
[13] .fini PROGBITS 000085ac 0005ac 000008 00 AX 0 0 4
[14] .rodata PROGBITS 000085b4 0005b4 000010 00 A 0 0 4
[15] .ARM.extab PROGBITS 000085c4 0005c4 000030 00 A 0 0 4
[16] .ARM.exidx ARM_EXIDX 000085f4 0005f4 000048 00 AL 12 0 4
[17] .eh_frame PROGBITS 0000863c 00063c 000004 00 A 0 0 4
[18] .init_array INIT_ARRAY 00010640 000640 000004 00 WA 0 0 4
[19] .fini_array FINI_ARRAY 00010644 000644 000004 00 WA 0 0 4
[20] .jcr PROGBITS 00010648 000648 000004 00 WA 0 0 4
[21] .dynamic DYNAMIC 0001064c 00064c 0000f0 08 WA 5 0 4
[22] .got PROGBITS 0001073c 00073c 000020 04 WA 0 0 4
[23] .data PROGBITS 0001075c 00075c 000008 00 WA 0 0 4
[24] .bss NOBITS 00010764 000764 000004 00 WA 0 0 1
[25] .comment PROGBITS 00000000 000764 000046 01 MS 0 0 1
[26] .ARM.attributes ARM_ATTRIBUTES 00000000 0007aa 00002b 00 0 0 1
[27] .debug_aranges PROGBITS 00000000 0007d5 000020 00 0 0 1
[28] .debug_info PROGBITS 00000000 0007f5 0000d9 00 0 0 1
[29] .debug_abbrev PROGBITS 00000000 0008ce 000084 00 0 0 1
[30] .debug_line PROGBITS 00000000 000952 00004b 00 0 0 1
[31] .debug_frame PROGBITS 00000000 0009a0 000070 00 0 0 4
[32] .debug_str PROGBITS 00000000 000a10 0000fa 01 MS 0 0 1
[33] .shstrtab STRTAB 00000000 000b0a 00014b 00 0 0 1
[34] .symtab SYMTAB 00000000 0011f8 0007f0 10 35 100 4
[35] .strtab STRTAB 00000000 0019e8 00048c 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
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.

程序头:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
EXIDX 0x0005f4 0x000085f4 0x000085f4 0x00048 0x00048 R 0x4
PHDR 0x000034 0x00008034 0x00008034 0x00100 0x00100 R E 0x4
INTERP 0x000134 0x00008134 0x00008134 0x00013 0x00013 R 0x1
[Requesting program interpreter: /lib/ld-linux.so.3]
LOAD 0x000000 0x00008000 0x00008000 0x00640 0x00640 R E 0x8000
LOAD 0x000640 0x00010640 0x00010640 0x00124 0x00128 RW 0x8000
DYNAMIC 0x00064c 0x0001064c 0x0001064c 0x000f0 0x000f0 RW 0x4
NOTE 0x000148 0x00008148 0x00008148 0x00020 0x00020 R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10

Section to Segment mapping:
段节...
00 .ARM.exidx
01
02 .interp
03 .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.extab .ARM.exidx .eh_frame
04 .init_array .fini_array .jcr .dynamic .got .data .bss
05 .dynamic
06 .note.ABI-tag
07

Dynamic section at offset 0x64c contains 25 entries:
标记 类型 名称/值
0x00000001 (NEEDED) 共享库:[libgcc_s.so.1]
0x00000001 (NEEDED) 共享库:[libc.so.6]
0x0000000c (INIT) 0x8390
0x0000000d (FINI) 0x85ac
0x00000019 (INIT_ARRAY) 0x10640
0x0000001b (INIT_ARRAYSZ) 4 (bytes)
0x0000001a (FINI_ARRAY) 0x10644
0x0000001c (FINI_ARRAYSZ) 4 (bytes)
0x00000004 (HASH) 0x8168
0x00000005 (STRTAB) 0x8244
0x00000006 (SYMTAB) 0x81a4
0x0000000a (STRSZ) 207 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000015 (DEBUG) 0x0
0x00000003 (PLTGOT) 0x1073c
0x00000002 (PLTRELSZ) 32 (bytes)
0x00000014 (PLTREL) REL
0x00000017 (JMPREL) 0x8370
0x00000011 (REL) 0x8368
0x00000012 (RELSZ) 8 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x6ffffffe (VERNEED) 0x8328
0x6fffffff (VERNEEDNUM) 2
0x6ffffff0 (VERSYM) 0x8314
0x00000000 (NULL) 0x0

重定位节 '.rel.dyn' 位于偏移量 0x368 含有 1 个条目:
Offset Info Type Sym.Value Sym. Name
00010758 00000515 R_ARM_GLOB_DAT 00000000 __gmon_start__

重定位节 '.rel.plt' 位于偏移量 0x370 含有 4 个条目:
Offset Info Type Sym.Value Sym. Name
00010748 00000316 R_ARM_JUMP_SLOT 000083b0 puts
0001074c 00000416 R_ARM_JUMP_SLOT 000083bc __libc_start_main
00010750 00000516 R_ARM_JUMP_SLOT 00000000 __gmon_start__
00010754 00000916 R_ARM_JUMP_SLOT 000083d4 abort

Unwind table index '.ARM.exidx' at offset 0x5f4 contains 9 entries:

0x83e0 <_start>: 0x1 [cantunwind]

0x8440 <deregister_tm_clones>: @0x85c4
Compact model index: 1
0xb1 0x08 pop {r3}
0x84 0x00 pop {r14}
0xb0 finish
0xb0 finish

0x8478 <register_tm_clones>: @0x85d0
Compact model index: 1
0xb1 0x08 pop {r3}
0x84 0x00 pop {r14}
0xb0 finish
0xb0 finish

0x84b8 <__do_global_dtors_aux>: 0x80a8b0b0
Compact model index: 0
0xa8 pop {r4, r14}
0xb0 finish
0xb0 finish

0x84e0 <frame_dummy>: @0x85dc
Compact model index: 1
0xb1 0x08 pop {r3}
0x84 0x00 pop {r14}
0xb0 finish
0xb0 finish

0x8514 <main>: @0x85e8
Compact model index: 1
0x9b vsp = r11
0x40 vsp = vsp - 4
0x84 0x80 pop {r11, r14}
0xb0 finish
0xb0 finish

0x8544 <__libc_csu_init>: 0x80b108ad
Compact model index: 0
0xb1 0x08 pop {r3}
0xad pop {r4, r5, r6, r7, r8, r9, r14}

0x85a8 <__libc_csu_fini>: 0x80b0b0b0
Compact model index: 0
0xb0 finish
0xb0 finish
0xb0 finish

0x85ac <_fini>: 0x1 [cantunwind]


Symbol table '.dynsym' contains 10 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FUNC GLOBAL DEFAULT UND __aeabi_unwind_cpp_pr0@GCC_3.5 (2)
2: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab
3: 000083b0 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.4 (3)
4: 000083bc 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.4 (3)
5: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
6: 00000000 0 FUNC GLOBAL DEFAULT UND __aeabi_unwind_cpp_pr1@GCC_3.5 (2)
7: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses
8: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable
9: 000083d4 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.4 (3)

Symbol table '.symtab' contains 127 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00008134 0 SECTION LOCAL DEFAULT 1
2: 00008148 0 SECTION LOCAL DEFAULT 2
3: 00008168 0 SECTION LOCAL DEFAULT 3
4: 000081a4 0 SECTION LOCAL DEFAULT 4
5: 00008244 0 SECTION LOCAL DEFAULT 5
6: 00008314 0 SECTION LOCAL DEFAULT 6
7: 00008328 0 SECTION LOCAL DEFAULT 7
8: 00008368 0 SECTION LOCAL DEFAULT 8
9: 00008370 0 SECTION LOCAL DEFAULT 9
10: 00008390 0 SECTION LOCAL DEFAULT 10
11: 0000839c 0 SECTION LOCAL DEFAULT 11
12: 000083e0 0 SECTION LOCAL DEFAULT 12
13: 000085ac 0 SECTION LOCAL DEFAULT 13
14: 000085b4 0 SECTION LOCAL DEFAULT 14
15: 000085c4 0 SECTION LOCAL DEFAULT 15
16: 000085f4 0 SECTION LOCAL DEFAULT 16
17: 0000863c 0 SECTION LOCAL DEFAULT 17
18: 00010640 0 SECTION LOCAL DEFAULT 18
19: 00010644 0 SECTION LOCAL DEFAULT 19
20: 00010648 0 SECTION LOCAL DEFAULT 20
21: 0001064c 0 SECTION LOCAL DEFAULT 21
22: 0001073c 0 SECTION LOCAL DEFAULT 22
23: 0001075c 0 SECTION LOCAL DEFAULT 23
24: 00010764 0 SECTION LOCAL DEFAULT 24
25: 00000000 0 SECTION LOCAL DEFAULT 25
26: 00000000 0 SECTION LOCAL DEFAULT 26
27: 00000000 0 SECTION LOCAL DEFAULT 27
28: 00000000 0 SECTION LOCAL DEFAULT 28
29: 00000000 0 SECTION LOCAL DEFAULT 29
30: 00000000 0 SECTION LOCAL DEFAULT 30
31: 00000000 0 SECTION LOCAL DEFAULT 31
32: 00000000 0 SECTION LOCAL DEFAULT 32
33: 00000000 0 FILE LOCAL DEFAULT ABS /scratch/maciej/arm-linux
34: 00008148 0 NOTYPE LOCAL DEFAULT 2 $d
35: 00000000 0 FILE LOCAL DEFAULT ABS /scratch/maciej/arm-linux
36: 000083e0 0 NOTYPE LOCAL DEFAULT 12 $a
37: 000085f4 0 NOTYPE LOCAL DEFAULT 16 $d
38: 00008410 0 NOTYPE LOCAL DEFAULT 12 $d
39: 00000000 0 FILE LOCAL DEFAULT ABS init.c
40: 000085b4 0 NOTYPE LOCAL DEFAULT 14 $d
41: 0001075c 0 NOTYPE LOCAL DEFAULT 23 $d
42: 00000000 0 FILE LOCAL DEFAULT ABS /home/test/smbShare/nuc97
43: 0000841c 0 NOTYPE LOCAL DEFAULT 12 $a
44: 0000841c 0 FUNC LOCAL DEFAULT 12 call_weak_fn
45: 00008438 0 NOTYPE LOCAL DEFAULT 12 $d
46: 00008390 0 NOTYPE LOCAL DEFAULT 10 $a
47: 000085ac 0 NOTYPE LOCAL DEFAULT 13 $a
48: 00000000 0 FILE LOCAL DEFAULT ABS /home/test/smbShare/nuc97
49: 00008398 0 NOTYPE LOCAL DEFAULT 10 $a
50: 000085b0 0 NOTYPE LOCAL DEFAULT 13 $a
51: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
52: 00010648 0 OBJECT LOCAL DEFAULT 20 __JCR_LIST__
53: 00008440 0 NOTYPE LOCAL DEFAULT 12 $a
54: 00008440 0 FUNC LOCAL DEFAULT 12 deregister_tm_clones
55: 0000846c 0 NOTYPE LOCAL DEFAULT 12 $d
56: 000085c4 0 NOTYPE LOCAL DEFAULT 15 $d
57: 000085fc 0 NOTYPE LOCAL DEFAULT 16 $d
58: 00008478 0 NOTYPE LOCAL DEFAULT 12 $a
59: 00008478 0 FUNC LOCAL DEFAULT 12 register_tm_clones
60: 000084ac 0 NOTYPE LOCAL DEFAULT 12 $d
61: 00010760 0 NOTYPE LOCAL DEFAULT 23 $d
62: 000084b8 0 NOTYPE LOCAL DEFAULT 12 $a
63: 000084b8 0 FUNC LOCAL DEFAULT 12 __do_global_dtors_aux
64: 000084dc 0 NOTYPE LOCAL DEFAULT 12 $d
65: 00010764 1 OBJECT LOCAL DEFAULT 24 completed.8879
66: 00010644 0 NOTYPE LOCAL DEFAULT 19 $d
67: 00010644 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fin
68: 000084e0 0 NOTYPE LOCAL DEFAULT 12 $a
69: 000084e0 0 FUNC LOCAL DEFAULT 12 frame_dummy
70: 0000850c 0 NOTYPE LOCAL DEFAULT 12 $d
71: 00010640 0 NOTYPE LOCAL DEFAULT 18 $d
72: 00010640 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_
73: 00010764 0 NOTYPE LOCAL DEFAULT 24 $d
74: 00000000 0 FILE LOCAL DEFAULT ABS helloworld.c
75: 000085b8 0 NOTYPE LOCAL DEFAULT 14 $d
76: 00008514 0 NOTYPE LOCAL DEFAULT 12 $a
77: 00008540 0 NOTYPE LOCAL DEFAULT 12 $d
78: 000085e8 0 NOTYPE LOCAL DEFAULT 15 $d
79: 0000861c 0 NOTYPE LOCAL DEFAULT 16 $d
80: 00000010 0 NOTYPE LOCAL DEFAULT 31 $d
81: 00000000 0 FILE LOCAL DEFAULT ABS elf-init.c
82: 00008544 0 NOTYPE LOCAL DEFAULT 12 $a
83: 000085a0 0 NOTYPE LOCAL DEFAULT 12 $d
84: 00008624 0 NOTYPE LOCAL DEFAULT 16 $d
85: 000085a8 0 NOTYPE LOCAL DEFAULT 12 $a
86: 0000003c 0 NOTYPE LOCAL DEFAULT 31 $d
87: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
88: 0000863c 0 NOTYPE LOCAL DEFAULT 17 $d
89: 0000863c 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__
90: 00010648 0 NOTYPE LOCAL DEFAULT 20 $d
91: 00010648 0 OBJECT LOCAL DEFAULT 20 __JCR_END__
92: 00000000 0 FILE LOCAL DEFAULT ABS
93: 00010644 0 NOTYPE LOCAL DEFAULT 18 __init_array_end
94: 0001064c 0 OBJECT LOCAL DEFAULT 21 _DYNAMIC
95: 00010640 0 NOTYPE LOCAL DEFAULT 18 __init_array_start
96: 0001073c 0 OBJECT LOCAL DEFAULT 22 _GLOBAL_OFFSET_TABLE_
97: 0000839c 0 NOTYPE LOCAL DEFAULT 11 $a
98: 000083ac 0 NOTYPE LOCAL DEFAULT 11 $d
99: 000083b0 0 NOTYPE LOCAL DEFAULT 11 $a
100: 00000000 0 FUNC GLOBAL DEFAULT UND __aeabi_unwind_cpp_pr0@@G
101: 000085a8 4 FUNC GLOBAL DEFAULT 12 __libc_csu_fini
102: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab
103: 0001075c 0 NOTYPE WEAK DEFAULT 23 data_start
104: 00010764 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__
105: 00010768 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__
106: 00010764 0 NOTYPE GLOBAL DEFAULT 23 _edata
107: 000085ac 0 FUNC GLOBAL DEFAULT 13 _fini
108: 00010768 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__
109: 0001075c 0 NOTYPE GLOBAL DEFAULT 23 __data_start
110: 000083b0 0 FUNC GLOBAL DEFAULT UND puts@@GLIBC_2.4
111: 000083bc 0 FUNC GLOBAL DEFAULT UND __libc_start_main@@GLIBC_
112: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
113: 00010760 0 OBJECT GLOBAL HIDDEN 23 __dso_handle
114: 000085b4 4 OBJECT GLOBAL DEFAULT 14 _IO_stdin_used
115: 00008544 100 FUNC GLOBAL DEFAULT 12 __libc_csu_init
116: 00000000 0 FUNC GLOBAL DEFAULT UND __aeabi_unwind_cpp_pr1@@G
117: 00010768 0 NOTYPE GLOBAL DEFAULT 24 _end
118: 000083e0 0 FUNC GLOBAL DEFAULT 12 _start
119: 00010768 0 NOTYPE GLOBAL DEFAULT 24 __end__
120: 00010764 0 NOTYPE GLOBAL DEFAULT 24 __bss_start
121: 00008514 48 FUNC GLOBAL DEFAULT 12 main
122: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses
123: 00010764 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__
124: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable
125: 000083d4 0 FUNC GLOBAL DEFAULT UND abort@@GLIBC_2.4
126: 00008390 0 FUNC GLOBAL DEFAULT 10 _init

Histogram for bucket list length (total of 3 buckets):
Length Number % of total Coverage
0 0 ( 0.0%)
1 0 ( 0.0%) 0.0%
2 2 ( 66.7%) 44.4%
3 0 ( 0.0%) 44.4%
4 0 ( 0.0%) 44.4%
5 1 ( 33.3%) 100.0%

Version symbols section '.gnu.version' contains 10 entries:
地址: 0000000000008314 Offset: 0x000314 Link: 4 (.dynsym)
000: 0 (*本地*) 2 (GCC_3.5) 0 (*本地*) 3 (GLIBC_2.4)
004: 3 (GLIBC_2.4) 0 (*本地*) 2 (GCC_3.5) 0 (*本地*)
008: 0 (*本地*) 3 (GLIBC_2.4)

Version needs section '.gnu.version_r' contains 2 entries:
地址:0x0000000000008328 Offset: 0x000328 Link: 5 (.dynstr)
000000: Version: 1 文件:libc.so.6 计数:1
0x0010: Name: GLIBC_2.4 标志:无 版本:3
0x0020: Version: 1 文件:libgcc_s.so.1 计数:1
0x0030: Name: GCC_3.5 标志:无 版本:2

Displaying notes found at file offset 0x00000148 with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag)
OS: Linux, ABI: 2.6.16
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "5TE"
Tag_CPU_arch: v5TE
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-1
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_rounding: Needed
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_align_preserved: 8-byte, except leaf SP
Tag_ABI_enum_size: int

7.strace调试程序

gcc -v -g -Wall helloworld.c -o helloworld
strace ./helloworld
execve("./helloworld", ["./helloworld"], [/* 23 vars */]) = 0
brk(0) = 0x830c000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76f3000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=98991, ...}) = 0
mmap2(NULL, 98991, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb76da000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\233\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1758972, ...}) = 0
mmap2(NULL, 1763964, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb752b000
mmap2(0xb76d4000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a9000) = 0xb76d4000
mmap2(0xb76d7000, 10876, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76d7000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb752a000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb752a940, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb76d4000, 8192, PROT_READ) = 0
mprotect(0x8049000, 4096, PROT_READ) = 0
mprotect(0xb7716000, 4096, PROT_READ) = 0
munmap(0xb76da000, 98991) = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 23), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76f2000
write(1, "hello world\n", 12hello world
) = 12
exit_group(0) = ?
+++ exited with 0 +++