A toolchain that integrates with Ndless that allows compiling executables for running on Ndless bFLT loader (https://github.com/tangrs/ndless-bflt-loader).
- Shared library support working with workarounds (TODO: fix)
- Data section relocations are working
- Text section relocations are not working
Firstly you need binutils compiled for ARM. Get your binutils from your favourite location.
It's best to let binutils have it's own build directory. mkdir binutils-build && cd binutils-build
../binutils-src/configure --prefix=/usr/local --target=arm-none-eabi --disable-nls and make
Note that you don't actually need to install it. Make a note of the location of the build directory and original source directory.
Next, checkout the source code for elf2flt.
Log into the CVS cvs -d:pserver:anonymous@cvs.uclinux.org:/var/cvs login
Press Enter with no password entered.
Then checkout the source code cvs -z3 -d:pserver:anonymous@cvs.uclinux.org:/var/cvs checkout -P elf2flt
Change into the elf2flt directory and run
./configure --target=arm-none-eabi \
--prefix=/usr/local \
--with-libbfd=/path/to/binutils/src/build/directory/libbfd.a \
--with-libiberty=/path/to/binutils/build/directory/libiberty/libiberty.a \
--with-bfd-include-dir=/path/to/binutils/build/directory/bfd \
--with-binutils-include-dir=/path/to/binutils/src/include
Replace /path/to/binutils/build/directory with the path to your build directory and /path/to/binutils/src with the original binutils source code directory. You may also want to change the prefix if you installed your toolchain elsewhere.
Run make and sudo make install and you'll have a working elf2flt toolset.
Finally you need to change into the tools directory and run make. This will build the nessecary startup files.
To output bFLT executables for your projects, you simply need to change your GCC and LD to nspire-bflt-gcc and nspire-bflt-ld respectively. You also need to remove the call to objcopy.
The output from nspire-bflt-ld will be the executable itself.
Here's a sample Makefile
GCC = nspire-bflt-gcc
LD = nspire-bflt-ld
GCCFLAGS = -Wall -W
LDFLAGS =
EXE = test.bflt.tns
OBJS = $(patsubst %.c,%.o,$(wildcard *.c))
vpath %.tns $(DISTDIR)
all: $(EXE)
%.o: %.c
$(GCC) $(GCCFLAGS) -c $<
%.o: %.S
$(GCC) $(GCCFLAGS) -c $<
$(EXE): $(OBJS)
$(LD) $^ -o $@ $(LDFLAGS)
clean:
rm -f *.o *.gdb a.out
rm -f $(EXE)
See the LICENSE file in each folder to see what the files in that folder are licensed under. The file header also indicates the license used for that particular file.
Any unmarked file is licensed under the Mozilla Public License.