From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/6244 Path: news.gmane.org!not-for-mail From: stephen Turner Newsgroups: gmane.linux.lib.musl.general Subject: Re: converting gcc from glibc to musl Date: Wed, 1 Oct 2014 15:11:25 -0400 Message-ID: References: <20141001161020.GO21835@port70.net> <20141001181356.GQ21835@port70.net> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=089e011847d230313c0504614486 X-Trace: ger.gmane.org 1412190705 21511 80.91.229.3 (1 Oct 2014 19:11:45 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 1 Oct 2014 19:11:45 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-6257-gllmg-musl=m.gmane.org@lists.openwall.com Wed Oct 01 21:11:39 2014 Return-path: Envelope-to: gllmg-musl@plane.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1XZPJL-0000Cb-7O for gllmg-musl@plane.gmane.org; Wed, 01 Oct 2014 21:11:39 +0200 Original-Received: (qmail 18045 invoked by uid 550); 1 Oct 2014 19:11:38 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 18037 invoked from network); 1 Oct 2014 19:11:37 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=6yZ/pb/G7H5hK76qMC7SfENiBQwZ69lNaC3PL7IeSqY=; b=KZUcg100Cm4jMdYpNp6ye2eOV5CzEuv9dekg8fHm8BDlvHx4C8Ib5dOrtna93/3kpX gtKEGsTMT+N2OpigGVFAGl++xfnj13R52EPBD+0O+HwYAt0PeHGD4Q9ijORgLaSy6QF2 SHeDEOBnTjVVNG6G9hF95YodzRSWOjTQK0Fd0cs/WK8NqYRIIzamBd7VQSoN1rLbKqTZ ovSv7NGX4n6XcGxTC54swDsBhWtEQBvqWwVaOhf1aChOpKD048M3nQThNRGGpnUMLOys 464sbgHnZ/gBbNvvrsjrU/uE05bcD1DV+4nRNTuQhpalSGr45CTW5NHCQZFsEnrhoVmr o5dQ== X-Received: by 10.52.118.40 with SMTP id kj8mr36695625vdb.30.1412190685877; Wed, 01 Oct 2014 12:11:25 -0700 (PDT) In-Reply-To: <20141001181356.GQ21835@port70.net> Xref: news.gmane.org gmane.linux.lib.musl.general:6244 Archived-At: --089e011847d230313c0504614486 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Wed, Oct 1, 2014 at 2:13 PM, Szabolcs Nagy wrote: > * stephen Turner [2014-10-01 13:54:25 -0400]= : > > On Wed, Oct 1, 2014 at 12:10 PM, Szabolcs Nagy wrote: > > > - can gcc compile a minimal program (empty main)? > > > > > > > I can compile the following program sucessfully to a.out but cannot run > it. > > > > # include > > main() > > { > > printf("hello world\n"); > > } > > > > gcc test.c && chmod +x a.out && ./a.out > > > > > > > - where does gcc/ld fail, how were they invoked (gcc -v)? > > > > > > configure:2078: loading cache /dev/null > ... > > i meant running > > gcc -v test.c > > not the configure thing > > (so we know if the compiler works at all before > starting to debug the configure script) > Using built-in specs. COLLECT_GCC=3Dgcc COLLECT_LTO_WRAPPER=3D/usr/lib/gcc/i486-linux-gnu/4.7/lto-wrapper Target: i486-linux-gnu Configured with: ../src/configure -v --with-pkgversion=3D'Debian 4.7.2-5' --with-bugurl=3Dfile:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=3Dc,c++,go,fortran,objc,obj-c++ --prefix=3D/usr --program-suffix=3D-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=3D/usr/lib --without-included-gettext --enable-threads=3Dposix --with-gxx-include-dir=3D/usr/include/c++/4.7 --libdir=3D/usr/lib --enable-nls --with-sysroot=3D/ --enable-clocale=3Dgnu --enable-libstdcxx-debug --enable-libstdcxx-time=3Dyes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=3Dall --with-arch-32=3Di586 --with-tune=3Dgeneric --enable-checking=3Drelease --build=3Di486-linux-gnu --host=3Di486-linux-gn= u --target=3Di486-linux-gnu Thread model: posix gcc version 4.7.2 (Debian 4.7.2-5) COLLECT_GCC_OPTIONS=3D'-v' '-mtune=3Dgeneric' '-march=3Di586' /usr/lib/gcc/i486-linux-gnu/4.7/cc1 -quiet -v -imultiarch i386-linux-gnu test.c -quiet -dumpbase test.c -mtune=3Dgeneric -march=3Di586 -auxbase test -version -o /tmp/ccc9a5Pc.s GNU C (Debian 4.7.2-5) version 4.7.2 (i486-linux-gnu) compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9 GGC heuristics: --param ggc-min-expand=3D100 --param ggc-min-heapsize=3D131= 072 ignoring nonexistent directory "/usr/local/include/i386-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.7/../../../../i486-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc/i486-linux-gnu/4.7/include /usr/local/include /usr/lib/gcc/i486-linux-gnu/4.7/include-fixed /usr/include/i386-linux-gnu /usr/include End of search list. GNU C (Debian 4.7.2-5) version 4.7.2 (i486-linux-gnu) compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC version 0.9 GGC heuristics: --param ggc-min-expand=3D100 --param ggc-min-heapsize=3D131= 072 Compiler executable checksum: 86d53dcb5a2b688dea58f7b6bd2d835d COLLECT_GCC_OPTIONS=3D'-v' '-mtune=3Dgeneric' '-march=3Di586' as -v --32 -o /tmp/ccHDIj0a.o /tmp/ccc9a5Pc.s GNU assembler version 2.22 (i486-linux-gnu) using BFD version (GNU Binutils for Debian) 2.22 COMPILER_PATH=3D/usr/lib/gcc/i486-linux-gnu/4.7/:/usr/lib/gcc/i486-linux-gn= u/4.7/:/usr/lib/gcc/i486-linux-gnu/:/usr/lib/gcc/i486-linux-gnu/4.7/:/usr/l= ib/gcc/i486-linux-gnu/ LIBRARY_PATH=3D/usr/lib/gcc/i486-linux-gnu/4.7/:/usr/lib/gcc/i486-linux-gnu= /4.7/../../../i386-linux-gnu/:/usr/lib/gcc/i486-linux-gnu/4.7/../../../../l= ib/:/lib/i386-linux-gnu/:/lib/../lib/:/usr/lib/i386-linux-gnu/:/usr/lib/../= lib/:/usr/lib/gcc/i486-linux-gnu/4.7/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS=3D'-v' '-mtune=3Dgeneric' '-march=3Di586' /usr/lib/gcc/i486-linux-gnu/4.7/collect2 --sysroot=3D/ --build-id --no-add-needed --eh-frame-hdr -m elf_i386 --hash-style=3Dboth -dynamic-linker /lib/ld-linux.so.2 /usr/lib/gcc/i486-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o /usr/lib/gcc/i486-linux-gnu/4.7/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i486-linux-gnu/4.7/crtbegin.o -L/usr/lib/gcc/i486-linux-gnu/4.7 -L/usr/lib/gcc/i486-linux-gnu/4.7/../../../i386-linux-gnu -L/usr/lib/gcc/i486-linux-gnu/4.7/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.7/../../.. /tmp/ccHDIj0a.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i486-linux-gnu/4.7/crtend.o /usr/lib/gcc/i486-linux-gnu/4.7/../../../i386-linux-gnu/crtn.o > > > - in the executable is the loader properly set up (readelf)? > > > > check if the machine type/abi is ok: > > readelf -h a.out > ELF Header: 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 (Executable file) Machine: Intel 80386 Version: 0x1 Entry point address: 0x8048240 Start of program headers: 52 (bytes into file) Start of section headers: 1424 (bytes into file) Flags: 0x0 Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 7 Size of section headers: 40 (bytes) Number of section headers: 24 Section header string table index: 21 > check if the musl loader is set up as expected: > > readelf -l a.out > > (in case of dynamic linking the interpreter should be > /lib/ld-musl-ARCH.so.1 otherwise there should be no > interpreter) > Elf file type is EXEC (Executable file) Entry point 0x8048240 There are 7 program headers, starting at offset 52 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align PHDR 0x000034 0x08048034 0x08048034 0x000e0 0x000e0 R E 0x4 INTERP 0x000114 0x08048114 0x08048114 0x00013 0x00013 R 0x1 [Requesting program interpreter: /lib/ld-linux.so.2] LOAD 0x000000 0x08048000 0x08048000 0x0040c 0x0040c R E 0x1000 LOAD 0x00040c 0x0804940c 0x0804940c 0x000c4 0x000e4 RW 0x1000 DYNAMIC 0x000420 0x08049420 0x08049420 0x00098 0x00098 RW 0x4 GNU_EH_FRAME 0x000390 0x08048390 0x08048390 0x0001c 0x0001c R 0x4 GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x10 Section to Segment mapping: Segment Sections... 00 01 .interp 02 .interp .hash .dynsym .dynstr .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame 03 .ctors .dtors .jcr .dynamic .got.plt .data .bss 04 .dynamic 05 .eh_frame_hdr 06 > > > > - check if the loader/libc at the right path > > > > ls -l /lib/ld-musl-* > not exactly, i found /lib/libc.so but no ld-musl* i created a symlink of ld-musl* to libc.so and gcc is able to work (initially gcc doesnt work as it cant find the lib it needs) but a.out continues to fail. > > > - can you run the executable with the loader explicitly? > > run > > /lib/ld-musl-ARCH.so.1 ./a.out > Yes, this works! albiet i used /lib/libc.so > > > > - strace the executable, where does it fail? > > strace ./a.out > execve("./a.out", ["./a.out"], [/* 13 vars */]) =3D 0 brk(0) =3D 0x892b000 access("/etc/ld.so.nohwcap", F_OK) =3D -1 ENOENT (No such file or directory) mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = =3D 0xb775b000 access("/etc/ld.so.preload", R_OK) =3D -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) =3D 3 fstat64(3, {st_mode=3DS_IFREG|0644, st_size=3D14405, ...}) =3D 0 mmap2(NULL, 14405, PROT_READ, MAP_PRIVATE, 3, 0) =3D 0xb7757000 close(3) =3D 0 access("/etc/ld.so.nohwcap", F_OK) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/tls/i686/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/lib/i386-linux-gnu/tls/i686/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/tls/i686/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (= No such file or directory) stat64("/lib/i386-linux-gnu/tls/i686/sse2", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/tls/i686/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (= No such file or directory) stat64("/lib/i386-linux-gnu/tls/i686/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/tls/i686/libc.so", O_RDONLY) =3D -1 ENOENT (No su= ch file or directory) stat64("/lib/i386-linux-gnu/tls/i686", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/tls/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (= No such file or directory) stat64("/lib/i386-linux-gnu/tls/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/tls/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (No su= ch file or directory) stat64("/lib/i386-linux-gnu/tls/sse2", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/tls/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No su= ch file or directory) stat64("/lib/i386-linux-gnu/tls/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/tls/libc.so", O_RDONLY) =3D -1 ENOENT (No such fi= le or directory) stat64("/lib/i386-linux-gnu/tls", 0xbfde3550) =3D -1 ENOENT (No such file o= r directory) open("/lib/i386-linux-gnu/i686/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/lib/i386-linux-gnu/i686/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/i686/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/lib/i386-linux-gnu/i686/sse2", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/i686/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/lib/i386-linux-gnu/i686/cmov", {st_mode=3DS_IFDIR|0755, st_size=3D4096, ...}) =3D 0 open("/lib/i386-linux-gnu/i686/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/lib/i386-linux-gnu/i686", {st_mode=3DS_IFDIR|0755, st_size=3D4096, ...}) =3D 0 open("/lib/i386-linux-gnu/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/lib/i386-linux-gnu/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/lib/i386-linux-gnu/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/lib/i386-linux-gnu/sse2", 0xbfde3550) =3D -1 ENOENT (No such file = or directory) open("/lib/i386-linux-gnu/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/lib/i386-linux-gnu/cmov", 0xbfde3550) =3D -1 ENOENT (No such file = or directory) open("/lib/i386-linux-gnu/libc.so", O_RDONLY) =3D -1 ENOENT (No such file o= r directory) stat64("/lib/i386-linux-gnu", {st_mode=3DS_IFDIR|0755, st_size=3D12288, ...= }) =3D 0 open("/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/usr/lib/i386-linux-gnu/tls/i686/sse2/libc.so", O_RDONLY) =3D -1 ENOE= NT (No such file or directory) stat64("/usr/lib/i386-linux-gnu/tls/i686/sse2", 0xbfde3550) =3D -1 ENOENT (= No such file or directory) open("/usr/lib/i386-linux-gnu/tls/i686/cmov/libc.so", O_RDONLY) =3D -1 ENOE= NT (No such file or directory) stat64("/usr/lib/i386-linux-gnu/tls/i686/cmov", 0xbfde3550) =3D -1 ENOENT (= No such file or directory) open("/usr/lib/i386-linux-gnu/tls/i686/libc.so", O_RDONLY) =3D -1 ENOENT (N= o such file or directory) stat64("/usr/lib/i386-linux-gnu/tls/i686", 0xbfde3550) =3D -1 ENOENT (No su= ch file or directory) open("/usr/lib/i386-linux-gnu/tls/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOE= NT (No such file or directory) stat64("/usr/lib/i386-linux-gnu/tls/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (= No such file or directory) open("/usr/lib/i386-linux-gnu/tls/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (N= o such file or directory) stat64("/usr/lib/i386-linux-gnu/tls/sse2", 0xbfde3550) =3D -1 ENOENT (No su= ch file or directory) open("/usr/lib/i386-linux-gnu/tls/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (N= o such file or directory) stat64("/usr/lib/i386-linux-gnu/tls/cmov", 0xbfde3550) =3D -1 ENOENT (No su= ch file or directory) open("/usr/lib/i386-linux-gnu/tls/libc.so", O_RDONLY) =3D -1 ENOENT (No suc= h file or directory) stat64("/usr/lib/i386-linux-gnu/tls", 0xbfde3550) =3D -1 ENOENT (No such fi= le or directory) open("/usr/lib/i386-linux-gnu/i686/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory) stat64("/usr/lib/i386-linux-gnu/i686/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/usr/lib/i386-linux-gnu/i686/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (= No such file or directory) stat64("/usr/lib/i386-linux-gnu/i686/sse2", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/usr/lib/i386-linux-gnu/i686/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (= No such file or directory) stat64("/usr/lib/i386-linux-gnu/i686/cmov", {st_mode=3DS_IFDIR|0755, st_size=3D4096, ...}) =3D 0 open("/usr/lib/i386-linux-gnu/i686/libc.so", O_RDONLY) =3D -1 ENOENT (No su= ch file or directory) stat64("/usr/lib/i386-linux-gnu/i686", {st_mode=3DS_IFDIR|0755, st_size=3D4= 096, ...}) =3D 0 open("/usr/lib/i386-linux-gnu/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (= No such file or directory) stat64("/usr/lib/i386-linux-gnu/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/usr/lib/i386-linux-gnu/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (No su= ch file or directory) stat64("/usr/lib/i386-linux-gnu/sse2", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/usr/lib/i386-linux-gnu/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No su= ch file or directory) stat64("/usr/lib/i386-linux-gnu/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory) open("/usr/lib/i386-linux-gnu/libc.so", O_RDONLY) =3D 3 read(3, "/* GNU ld script\n Use the shar"..., 512) =3D 283 close(3) =3D 0 writev(2, [{"./a.out", 7}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"/usr/lib/i386-linux-gnu/libc.so", 31}, {": ", 2}, {"invalid ELF header", 18}, {"", 0}, {"", 0}, {"\n", 1}], 10./a.out: error while loading shared libraries: /usr/lib/i386-linux-gnu/libc.so: invalid ELF header ) =3D 99 exit_group(127) =3D ? > > > > > I dont know how to do what your asking here is there a site i can ref o= n > > these troubleshooting steps? > > if you are not experienced with toolchains i'd try > alpine or sabotage linux first > you might be able to customize them to your liking > I tried alpine and have only glanced at sabotage. It never fails, when i use someone elses distro there is something im not happy with. This coupled with the fact that i want to learn all i can about linux and eventually get my linux+ or other cert. Thanks for showing me those tests! looks like i have reading to understand how to use them effectively :) I guess i just need to be different and as independent as possible which is why i have fought with building this system without help for about 3 months now working my way through issue after issue with only google as my friend :) --089e011847d230313c0504614486 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On Wed, Oct 1, 2014 at 2:13 PM, Szabolcs Nagy <nsz@port70.net> wrote:
* stephen Turner <stephen.n.turner@gmail.com> [2014-10-01 13:54= :25 -0400]:
> On Wed, Oct 1, 2014 at 12:10 PM, Szabolcs Nagy <nsz@port70.net> wrote:
> > - can gcc compile a minimal program (empt= y main)?
> >
>
> I can compile the following program sucessfully to a.out but cannot ru= n it.
>
> # include <stdio.h>
> main()
> {
> printf("hello world\n");
> }
>
> gcc test.c && chmod +x a.out && ./a.out
>
>
> > - where does gcc/ld fail, how were they invoked (gcc -v)?
>
>
> configure:2078: loading cache /dev/null
...

i meant running

=C2=A0gcc -v test.c

not the configure thing

(so we know if the compiler works at all before
starting to debug the configure script)

Using built-in specs.
COLLECT_GCC=3Dgcc
COLLECT_L= TO_WRAPPER=3D/usr/lib/gcc/i486-linux-gnu/4.7/lto-wrapper
Target: = i486-linux-gnu
Configured with: ../src/configure -v --with-pkgver= sion=3D'Debian 4.7.2-5' --with-bugurl=3Dfile:///usr/share/doc/gcc-4= .7/README.Bugs --enable-languages=3Dc,c++,go,fortran,objc,obj-c++ --prefix= =3D/usr --program-suffix=3D-4.7 --enable-shared --enable-linker-build-id --= with-system-zlib --libexecdir=3D/usr/lib --without-included-gettext --enabl= e-threads=3Dposix --with-gxx-include-dir=3D/usr/include/c++/4.7 --libdir=3D= /usr/lib --enable-nls --with-sysroot=3D/ --enable-clocale=3Dgnu --enable-li= bstdcxx-debug --enable-libstdcxx-time=3Dyes --enable-gnu-unique-object --en= able-plugin --enable-objc-gc --enable-targets=3Dall --with-arch-32=3Di586 -= -with-tune=3Dgeneric --enable-checking=3Drelease --build=3Di486-linux-gnu -= -host=3Di486-linux-gnu --target=3Di486-linux-gnu
Thread model: po= six
gcc version 4.7.2 (Debian 4.7.2-5)=C2=A0
COLLECT_GC= C_OPTIONS=3D'-v' '-mtune=3Dgeneric' '-march=3Di586'=
=C2=A0/usr/lib/gcc/i486-linux-gnu/4.7/cc1 -quiet -v -imultiarch = i386-linux-gnu test.c -quiet -dumpbase test.c -mtune=3Dgeneric -march=3Di58= 6 -auxbase test -version -o /tmp/ccc9a5Pc.s
GNU C (Debian 4.7.2-5= ) version 4.7.2 (i486-linux-gnu)
compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR= version 3.1.0-p10, MPC version 0.9
GGC heuristics: --param ggc-m= in-expand=3D100 --param ggc-min-heapsize=3D131072
ignoring nonexi= stent directory "/usr/local/include/i386-linux-gnu"
ign= oring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.7/../../../= ../i486-linux-gnu/include"
#include "..." search s= tarts here:
#include <...> search starts here:
= =C2=A0/usr/lib/gcc/i486-linux-gnu/4.7/include
=C2=A0/usr/local/in= clude
=C2=A0/usr/lib/gcc/i486-linux-gnu/4.7/include-fixed
=C2=A0/usr/include/i386-linux-gnu
=C2=A0/usr/include
End of search list.
GNU C (Debian 4.7.2-5) version 4.7.2 (i486-l= inux-gnu)
comp= iled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.0-p10, MPC= version 0.9
GGC heuristics: --param ggc-min-expand=3D100 --param= ggc-min-heapsize=3D131072
Compiler executable checksum: 86d53dcb= 5a2b688dea58f7b6bd2d835d
COLLECT_GCC_OPTIONS=3D'-v' '= -mtune=3Dgeneric' '-march=3Di586'
=C2=A0as -v --32 -o= /tmp/ccHDIj0a.o /tmp/ccc9a5Pc.s
GNU assembler version 2.22 (i486= -linux-gnu) using BFD version (GNU Binutils for Debian) 2.22
COMP= ILER_PATH=3D/usr/lib/gcc/i486-linux-gnu/4.7/:/usr/lib/gcc/i486-linux-gnu/4.= 7/:/usr/lib/gcc/i486-linux-gnu/:/usr/lib/gcc/i486-linux-gnu/4.7/:/usr/lib/g= cc/i486-linux-gnu/
LIBRARY_PATH=3D/usr/lib/gcc/i486-linux-gnu/4.7= /:/usr/lib/gcc/i486-linux-gnu/4.7/../../../i386-linux-gnu/:/usr/lib/gcc/i48= 6-linux-gnu/4.7/../../../../lib/:/lib/i386-linux-gnu/:/lib/../lib/:/usr/lib= /i386-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/i486-linux-gnu/4.7/../../../= :/lib/:/usr/lib/
COLLECT_GCC_OPTIONS=3D'-v' '-mtune= =3Dgeneric' '-march=3Di586'
=C2=A0/usr/lib/gcc/i486-l= inux-gnu/4.7/collect2 --sysroot=3D/ --build-id --no-add-needed --eh-frame-h= dr -m elf_i386 --hash-style=3Dboth -dynamic-linker /lib/ld-linux.so.2 /usr/= lib/gcc/i486-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o /usr/lib/gcc/i486= -linux-gnu/4.7/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i486-linux-gnu/4= .7/crtbegin.o -L/usr/lib/gcc/i486-linux-gnu/4.7 -L/usr/lib/gcc/i486-linux-g= nu/4.7/../../../i386-linux-gnu -L/usr/lib/gcc/i486-linux-gnu/4.7/../../../.= ./lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/= lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.7/../../.. /tmp/ccHDIj0a.o -lgcc= --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-n= eeded /usr/lib/gcc/i486-linux-gnu/4.7/crtend.o /usr/lib/gcc/i486-linux-gnu/= 4.7/../../../i386-linux-gnu/crtn.o


=C2=A0

> - in the executable is the loader properly set up (readelf)?
>

check if the machine type/abi is ok:

=C2=A0readelf -h a.out

ELF Header:
=C2=A0 Magic: =C2=A0 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00= =C2=A0
=C2=A0 Class: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ELF32
=C2= =A0 Data: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A02's complement, little endian<= /div>
=C2=A0 Version: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 1 (current)
=C2=A0 OS/A= BI: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0UNIX - System V
=C2=A0 ABI Version: = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 0
=C2=A0 Type: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0EXEC (Executable= file)
=C2=A0 Machine: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Intel 80386
=C2= =A0 Version: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 0x1
=C2=A0 Entry point address: =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0x8048240
=C2=A0 St= art of program headers: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A052 (bytes into fi= le)
=C2=A0 Start of section headers: =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A01424 (bytes into file)
=C2=A0 Flags: =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 0x0
=C2=A0 Size of this header: =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 52 (bytes)
=C2=A0 Size of program headers: = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 32 (bytes)
=C2=A0 Number of pr= ogram headers: =C2=A0 =C2=A0 =C2=A0 =C2=A0 7
=C2=A0 Size of secti= on headers: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 40 (bytes)
=C2=A0 = Number of section headers: =C2=A0 =C2=A0 =C2=A0 =C2=A0 24
=C2=A0 = Section header string table index: 21
=C2=A0
=C2=A0
check if the musl loader is set up as expected:

=C2=A0readelf -l a.out

(in case of dynamic linking the interpreter should be
/lib/ld-musl-ARCH.so.1 otherwise there should be no
interpreter)


Elf fi= le type is EXEC (Executable file)
Entry point 0x8048240
There are 7 program headers, starting at offset 52

Program Headers:
=C2=A0 Type =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= Offset =C2=A0 VirtAddr =C2=A0 PhysAddr =C2=A0 FileSiz MemSiz =C2=A0Flg Ali= gn
=C2=A0 PHDR =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0x000034 0x0804= 8034 0x08048034 0x000e0 0x000e0 R E 0x4
=C2=A0 INTERP =C2=A0 =C2= =A0 =C2=A0 =C2=A0 0x000114 0x08048114 0x08048114 0x00013 0x00013 R =C2=A0 0= x1
=C2=A0 =C2=A0 =C2=A0 [Requesting program interpreter: /lib/ld-= linux.so.2]
=C2=A0 LOAD =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0x0000= 00 0x08048000 0x08048000 0x0040c 0x0040c R E 0x1000
=C2=A0 LOAD = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 0x00040c 0x0804940c 0x0804940c 0x000c4 0= x000e4 RW =C2=A00x1000
=C2=A0 DYNAMIC =C2=A0 =C2=A0 =C2=A0 =C2=A0= 0x000420 0x08049420 0x08049420 0x00098 0x00098 RW =C2=A00x4
=C2= =A0 GNU_EH_FRAME =C2=A0 0x000390 0x08048390 0x08048390 0x0001c 0x0001c R = =C2=A0 0x4
=C2=A0 GNU_STACK =C2=A0 =C2=A0 =C2=A00x000000 0x000000= 00 0x00000000 0x00000 0x00000 RW =C2=A00x10

=C2=A0= Section to Segment mapping:
=C2=A0 Segment Sections...
= =C2=A0 =C2=A000 =C2=A0 =C2=A0=C2=A0
=C2=A0 =C2=A001 =C2=A0 =C2=A0= .interp=C2=A0
=C2=A0 =C2=A002 =C2=A0 =C2=A0 .interp .hash .dynsy= m .dynstr .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame= =C2=A0
=C2=A0 =C2=A003 =C2=A0 =C2=A0 .ctors .dtors .jcr .dynamic = .got.plt .data .bss=C2=A0
=C2=A0 =C2=A004 =C2=A0 =C2=A0 .dynamic= =C2=A0
=C2=A0 =C2=A005 =C2=A0 =C2=A0 .eh_frame_hdr=C2=A0
=C2=A0 =C2=A006 =C2=A0 =C2=A0=C2=A0


=C2=A0


> - check if the loader/libc at the right path
>

ls -l /lib/ld-musl-*

not exactly= , i found /lib/libc.so but no ld-musl* i created a symlink of ld-musl* to l= ibc.so and gcc is able to work (initially gcc doesnt work as it cant find t= he lib it needs) but a.out continues to fail.
=C2=A0

> - can you run the executable with the loader explicitly?

run

/lib/ld-musl-ARCH.so.1 ./a.out

Yes, thi= s works! albiet i used /lib/libc.so
=C2=A0

> > - strace the executable, where does it fail?

strace ./a.out

execve("= ;./a.out", ["./a.out"], [/* 13 vars */]) =3D 0
brk= (0) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=3D 0x892b000
acc= ess("/etc/ld.so.nohwcap", F_OK) =C2=A0 =C2=A0 =C2=A0=3D -1 ENOENT= (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRI= TE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =3D 0xb775b000
access("= ;/etc/ld.so.preload", R_OK) =C2=A0 =C2=A0 =C2=A0=3D -1 ENOENT (No such= file or directory)
open("/etc/ld.so.cache", O_RDONLY) = =C2=A0 =C2=A0 =C2=A0=3D 3
fstat64(3, {st_mode=3DS_IFREG|0644, st_= size=3D14405, ...}) =3D 0
mmap2(NULL, 14405, PROT_READ, MAP_PRIVA= TE, 3, 0) =3D 0xb7757000
close(3) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0=3D 0
access("/etc/ld.so.nohwcap", F_OK) =C2=A0 = =C2=A0 =C2=A0=3D -1 ENOENT (No such file or directory)
open("= ;/lib/i386-linux-gnu/tls/i686/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENO= ENT (No such file or directory)
stat64("/lib/i386-linux-gnu/= tls/i686/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or direct= ory)
open("/lib/i386-linux-gnu/tls/i686/sse2/libc.so", = O_RDONLY) =3D -1 ENOENT (No such file or directory)
stat64("= /lib/i386-linux-gnu/tls/i686/sse2", 0xbfde3550) =3D -1 ENOENT (No such= file or directory)
open("/lib/i386-linux-gnu/tls/i686/cmov/= libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory)
stat64("/lib/i386-linux-gnu/tls/i686/cmov", 0xbfde3550) =3D -1 = ENOENT (No such file or directory)
open("/lib/i386-linux-gnu= /tls/i686/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory= )
stat64("/lib/i386-linux-gnu/tls/i686", 0xbfde3550) = =3D -1 ENOENT (No such file or directory)
open("/lib/i386-li= nux-gnu/tls/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No such file = or directory)
stat64("/lib/i386-linux-gnu/tls/sse2/cmov"= ;, 0xbfde3550) =3D -1 ENOENT (No such file or directory)
open(&qu= ot;/lib/i386-linux-gnu/tls/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (No = such file or directory)
stat64("/lib/i386-linux-gnu/tls/sse2= ", 0xbfde3550) =3D -1 ENOENT (No such file or directory)
ope= n("/lib/i386-linux-gnu/tls/cmov/libc.so", O_RDONLY) =3D -1 ENOENT= (No such file or directory)
stat64("/lib/i386-linux-gnu/tls= /cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/tls/libc.so", O_RDONLY) =3D -1 ENOENT= (No such file or directory)
stat64("/lib/i386-linux-gnu/tls= ", 0xbfde3550) =3D -1 ENOENT (No such file or directory)
ope= n("/lib/i386-linux-gnu/i686/sse2/cmov/libc.so", O_RDONLY) =3D -1 = ENOENT (No such file or directory)
stat64("/lib/i386-linux-g= nu/i686/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directo= ry)
open("/lib/i386-linux-gnu/i686/sse2/libc.so", O_RDO= NLY) =3D -1 ENOENT (No such file or directory)
stat64("/lib/= i386-linux-gnu/i686/sse2", 0xbfde3550) =3D -1 ENOENT (No such file or = directory)
open("/lib/i386-linux-gnu/i686/cmov/libc.so"= , O_RDONLY) =3D -1 ENOENT (No such file or directory)
stat64(&quo= t;/lib/i386-linux-gnu/i686/cmov", {st_mode=3DS_IFDIR|0755, st_size=3D4= 096, ...}) =3D 0
open("/lib/i386-linux-gnu/i686/libc.so"= ;, O_RDONLY) =3D -1 ENOENT (No such file or directory)
stat64(&qu= ot;/lib/i386-linux-gnu/i686", {st_mode=3DS_IFDIR|0755, st_size=3D4096,= ...}) =3D 0
open("/lib/i386-linux-gnu/sse2/cmov/libc.so&quo= t;, O_RDONLY) =3D -1 ENOENT (No such file or directory)
stat64(&q= uot;/lib/i386-linux-gnu/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No such= file or directory)
open("/lib/i386-linux-gnu/sse2/libc.so&q= uot;, O_RDONLY) =3D -1 ENOENT (No such file or directory)
stat64(= "/lib/i386-linux-gnu/sse2", 0xbfde3550) =3D -1 ENOENT (No such fi= le or directory)
open("/lib/i386-linux-gnu/cmov/libc.so"= ;, O_RDONLY) =3D -1 ENOENT (No such file or directory)
stat64(&qu= ot;/lib/i386-linux-gnu/cmov", 0xbfde3550) =3D -1 ENOENT (No such file = or directory)
open("/lib/i386-linux-gnu/libc.so", O_RDO= NLY) =3D -1 ENOENT (No such file or directory)
stat64("/lib/= i386-linux-gnu", {st_mode=3DS_IFDIR|0755, st_size=3D12288, ...}) =3D 0=
open("/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov/libc.so&qu= ot;, O_RDONLY) =3D -1 ENOENT (No such file or directory)
stat64(&= quot;/usr/lib/i386-linux-gnu/tls/i686/sse2/cmov", 0xbfde3550) =3D -1 E= NOENT (No such file or directory)
open("/usr/lib/i386-linux-= gnu/tls/i686/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or d= irectory)
stat64("/usr/lib/i386-linux-gnu/tls/i686/sse2"= ;, 0xbfde3550) =3D -1 ENOENT (No such file or directory)
open(&qu= ot;/usr/lib/i386-linux-gnu/tls/i686/cmov/libc.so", O_RDONLY) =3D -1 EN= OENT (No such file or directory)
stat64("/usr/lib/i386-linux= -gnu/tls/i686/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or direct= ory)
open("/usr/lib/i386-linux-gnu/tls/i686/libc.so", O= _RDONLY) =3D -1 ENOENT (No such file or directory)
stat64("/= usr/lib/i386-linux-gnu/tls/i686", 0xbfde3550) =3D -1 ENOENT (No such f= ile or directory)
open("/usr/lib/i386-linux-gnu/tls/sse2/cmo= v/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory)
<= div>stat64("/usr/lib/i386-linux-gnu/tls/sse2/cmov", 0xbfde3550) = =3D -1 ENOENT (No such file or directory)
open("/usr/lib/i38= 6-linux-gnu/tls/sse2/libc.so", O_RDONLY) =3D -1 ENOENT (No such file o= r directory)
stat64("/usr/lib/i386-linux-gnu/tls/sse2",= 0xbfde3550) =3D -1 ENOENT (No such file or directory)
open("= ;/usr/lib/i386-linux-gnu/tls/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (N= o such file or directory)
stat64("/usr/lib/i386-linux-gnu/tl= s/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/tls/libc.so", O_RDONLY) =3D -1 E= NOENT (No such file or directory)
stat64("/usr/lib/i386-linu= x-gnu/tls", 0xbfde3550) =3D -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/i686/sse2/cmov/libc.so", O_RD= ONLY) =3D -1 ENOENT (No such file or directory)
stat64("/usr= /lib/i386-linux-gnu/i686/sse2/cmov", 0xbfde3550) =3D -1 ENOENT (No suc= h file or directory)
open("/usr/lib/i386-linux-gnu/i686/sse2= /libc.so", O_RDONLY) =3D -1 ENOENT (No such file or directory)
stat64("/usr/lib/i386-linux-gnu/i686/sse2", 0xbfde3550) =3D -1= ENOENT (No such file or directory)
open("/usr/lib/i386-linu= x-gnu/i686/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (No such file or dir= ectory)
stat64("/usr/lib/i386-linux-gnu/i686/cmov", {st= _mode=3DS_IFDIR|0755, st_size=3D4096, ...}) =3D 0
open("/usr= /lib/i386-linux-gnu/i686/libc.so", O_RDONLY) =3D -1 ENOENT (No such fi= le or directory)
stat64("/usr/lib/i386-linux-gnu/i686",= {st_mode=3DS_IFDIR|0755, st_size=3D4096, ...}) =3D 0
open("= /usr/lib/i386-linux-gnu/sse2/cmov/libc.so", O_RDONLY) =3D -1 ENOENT (N= o such file or directory)
stat64("/usr/lib/i386-linux-gnu/ss= e2/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or directory)
<= div>open("/usr/lib/i386-linux-gnu/sse2/libc.so", O_RDONLY) =3D -1= ENOENT (No such file or directory)
stat64("/usr/lib/i386-li= nux-gnu/sse2", 0xbfde3550) =3D -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/cmov/libc.so", O_RDONLY) = =3D -1 ENOENT (No such file or directory)
stat64("/usr/lib/i= 386-linux-gnu/cmov", 0xbfde3550) =3D -1 ENOENT (No such file or direct= ory)
open("/usr/lib/i386-linux-gnu/libc.so", O_RDONLY) = =3D 3
read(3, "/* GNU ld script\n =C2=A0 Use the shar".= .., 512) =3D 283
close(3) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =3D 0
writev(2, [{"./a.out", 7}, {": ", 2}, {= "error while loading shared libra"..., 36}, {": ", 2}, = {"/usr/lib/i386-linux-gnu/libc.so", 31}, {": ", 2}, {&q= uot;invalid ELF header", 18}, {"", 0}, {"", 0}, {&= quot;\n", 1}], 10./a.out: error while loading shared libraries: /usr/l= ib/i386-linux-gnu/libc.so: invalid ELF header
) =3D 99
= exit_group(127) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =3D ?

=C2=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;pa= dding-left:1ex">
>
> I dont know how to do what your asking here is there a site i can ref = on
> these troubleshooting steps?

if you are not experienced with toolchains i'd try
alpine or sabotage linux first
you might be able to customize them to your liking
I tried alpine and have only glanced at sabotage. It never fail= s, when i use someone elses distro there is something im not happy with. Th= is coupled with the fact that i want to learn all i can about linux and eve= ntually get my linux+ or other cert.=C2=A0 Thanks for showing me those test= s! looks like i have reading to understand how to use them effectively :)= =C2=A0

I guess i just need to be different and as = independent as possible which is why i have fought with building this syste= m without help for about 3 months now working my way through issue after is= sue with only google as my friend :)

--089e011847d230313c0504614486--