From mboxrd@z Thu Jan 1 00:00:00 1970 From: Teng Chee Wan Philip To: Bart Veer Cc: ecos-discuss@sourceware.cygnus.com Subject: Re: [ECOS] Running hello.c on i386 Date: Sun, 11 Feb 2001 17:09:00 -0000 Message-id: <981940151.3a8737b7db17c@demerzel.dso.org.sg> References: <3A80F870.8BA24E06@dso.org.sg> <200102092008.f19K8QS27690@sheesh.cambridge.redhat.com> X-SW-Source: 2001-02/msg00172.html I thought that I made a mistake with the header files and tried to change the Makefile. Yes, I made the hello application under the environment as the stub. Thanks a lot for the helpful advice. I will try it out. Philip Teng Quoting Bart Veer : > >>>>> "Philip" == Philip Teng writes: > > Philip> I tried to make hello.c using the Makefile given in the > /examples. > Philip> bash.exe-2.04$ make hello.o > Philip> i386-elf-gcc -c -o hello.o -g -Wall > Philip> -I//c/users/philip/ecos/stub1_install/include > -ffunction-sections > Philip> -fdata-sections hello.c > Philip> hello.c:2: stdio.h: No such file or directory > Philip> make: *** [hello.o] Error 1 > > Philip> I encountered some errors and I fixed it by adding one > Philip> more include path... > > Philip> bash.exe-2.04$ make hello.o > Philip> i386-elf-gcc -c -o hello.o -g -Wall > Philip> -I//c/users/philip/ecos/stub1_install/include -I/usr/include > -ffunction-sections > Philip> -fdata-sections hello.c > Philip> bash.exe-2.04$ > > Philip> The compilation was successful. The target I used is a > Philip> PIII machine, host is Windows NT. I started up the i386 > Philip> target using the gdb stub floppy and run the following: > > No, that is wrong. The header file /usr/include/stdio.h will be for > use by cygwin applications, not eCos applications. I suspect that you > are trying to re-use the same configuration for the boot floppy and > for "hello world". > > When targetting a PC, you are essentially building two different > applications. The first application is the gdb stub for the boot > floppy, and serves the same purpose as a ROM monitor on a conventional > embedded target. The second application is the "hello world" program. > The two applications run in very different environments, e.g. they > need completely separate startup code, so you need two different > configurations. > > First you need to create a configuration for building the gdb stub, > build that, and install the resulting executable on a floppy. It looks > like you have already done this. The requirements for the gdb stub are > fairly simple, e.g. there is no need for a C library, so the C library > does not get built and its header files do not get installed. > > Now create a new configuration using the default template, i.e. a > configuration suitable for ordinary applications. This will include > the C library, so the header file will get installed. The > two configurations should live in completely separate directories. > > Philip> bash.exe-2.04$ i386-elf-gdb -nw hello.o > Philip> GNU gdb 5.0 > Philip> Copyright 2000 Free Software Foundation, Inc. > Philip> GDB is free software, covered by the GNU General Public > License, and you > Philip> are > Philip> welcome to change it and/or distribute copies of it under > certain > Philip> conditions. > Philip> Type "show copying" to see the conditions. > Philip> There is absolutely no warranty for GDB. Type "show > warranty" for > Philip> details. > Philip> This GDB was configured as "--host=i686-pc-cygwin > --target=i386-elf"... > Philip> (gdb) set remotebaud 38400 > Philip> (gdb) target remote com1 > Philip> Remote debugging using com1 > Philip> 0x37dc in ?? () > Philip> (gdb) continue > Philip> Continuing. > > Philip> Program received signal SIGTRAP, Trace/breakpoint trap. > Philip> 0x37dc in ?? () > > Philip> Anyone has any idea why the program hit a stop? > > Another mistake I am afraid. You are trying to debug hello.o, an > intermediate object file. You must first link the object file with the > appropriate libraries. This will give you an executable file a.out or > hello or hello.exe, depending on exactly how you drive the tools, > and it is this executable which can then be debugged with gdb. > > Bart >