A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://www.riscos.info/index.php/GCCSDK_Development below:

GCCSDK Development - RISC OS

Introduction

This page lists the current and expected development activities for the GCCSDK project. This should be useful for all GCCSDK developers and contributors to get an idea of its current status and road map. Discussions on development or offers of help should be done via the GCCSDK mailing list.

Focus

The current focus is to complete the port of GCC 4.7.4 (and then later versions). The current version is very solid for static binaries as a cross compiler, and all programs in the last few years on riscos.info are built using it. Work on shared library support is complete and considered stable.

The main uses of the compiler are with the GCCSDK Autobuilder framework (which allows testing with a huge set of code) and as a native RISC OS compiler for native development.

The compiler target, named arm-unknown-riscos, is RISC OS-specific devised ARM ELF flavour which is different from ARM's EABI v2 as we want chunked stack support (in fact implementing the APCS-32 ABI). The compiler creates ELF binaries (RISC OS filetype &e1f) and no longer supports AIF binaries (note that a small utility, called elf2aif, can be used to convert a static ELF binary into an AIF binary so that the ELF loader is not needed).

Support for AOF object files or ALF libraries files is not foreseen. This might impose problems when interfacing with 3rd party (especially closed source) libraries. If that really is going to be a big issue, it is anticipated that such AOF/ALF support could be implemented as extra code in binutils' BFD library. Note that interfacing with existing AOF/ALF files which are built using Norcroft (Acorn C/C++) compiler remains very tricky as the ABI is not 100% the same.

Quick Start

To quickly build everything:

$ svn co svn://svn.riscos.info/gccsdk/trunk/ gccsdk
$ cd gccsdk/gcc4
$ ./build-world

You will get a message about running for the first time, and editing the file 'gccsdk-params'. Traditionally, we have used a layout under /home/riscos for the final binaries, but this may not always be practical. This is the suggested setup instead:

/home/peter/gccsdk/             - checked out from SVN above
                   gcc4/        - compiler and rest of toolchain
                   autobuilder/ - instructions for automatic package generation
                   cross/       - target for installed compiler and toolchain libraries
                   env/         - target for autobuilt libraries and other cross development tools
                   build/       - work directory for running autobuilder commands (you should create this yourself)

You should edit 'gccsdk-params' to refer to the 'env' and 'build' paths, then run './build-world' again.

Source

Development is done in the gccsdk repository at 'trunk/gcc4'.

The SVN repository for GCCSDK 4.x only contains patches and copies of new files for the GCC 4.1.1 and binutils 2.17 release. This should allow us to easily migrate to newer stable versions of GCC and binutils.

The GCCSDK SharedCLibrary stub code lives at 'trunk/gcc4/recipe/files/libscl' and UnixLib at 'trunk/gcc4/recipe/files/libunixlib'. GCCSDK related RISC OS programs (like cmunge, ELF loader, elf2aif, etc) are located in subdirectories of 'trunk/gcc4/riscos'.

Status
/home/joty/projects/gccsdk/gccsdk_svn/gcc4/srcdir/gcc/libgcc2.c: In function '__fixunsdfdi':
/home/joty/projects/gccsdk/gccsdk_svn/gcc4/srcdir/gcc/libgcc2.c:1228: internal compiler error: in compute_frame_pointer_to_cfa_displacement, at dwarf2out.c:10453

Of course this needs more investigation and further checking the rest of the gcc build.

Test results

We are using QEMU with RISC OS support to run the gcc/g++ testsuites (note: other testsuites like binutils one are probably possible but haven't been tried). Those testsuites can be run under different configurations specified by fixed compiler options. Because QEMU with RISC OS support currently only supports static ELF binaries you can only use the static UnixLib as runtime library and this means that for now we always have to specify the '-static' option.

Both hard-float and soft-float UnixLib can be tested efficiently at the same time on a multicore or multiprocessor system as you can run several testsuites under different configurations using:

make -j2 check-gcc//unix/{-mhard-float,-msoft-float}{-static}

The current gcc/g++ testsuite results are:

		=== gcc Summary ===

# of expected passes		36871
# of unexpected failures	32
# of expected failures		77
# of unresolved testcases	36
# of untested testcases		28
# of unsupported tests		356

and:

		=== g++ Summary ===

# of expected passes		11781
# of unexpected failures	14
# of unexpected successes	2
# of expected failures		67
# of unresolved testcases	15
# of unsupported tests		146
		=== gcc Summary ===

# of expected passes		36872
# of unexpected failures	32
# of expected failures		77
# of unresolved testcases	35
# of untested testcases		28
# of unsupported tests		356

and:

		=== g++ Summary ===

# of expected passes		11782
# of unexpected failures	13
# of unexpected successes	2
# of expected failures		67
# of unresolved testcases	15
# of unsupported tests		146

An inventory of the outstanding issues for the gcc testsuite (and those common for the g++ testsuite):

Developer help wanted

In case you are a developer and want to spend some time on the GCCSDK project, this is a non-exhaustive list of ideas to get you inspired:

On the agenda

Things which more or less need to be done before a release.

Nice to have

Discussions, questions, new development ideas or just a statement you're want to help here can be done in GCCSDK mailing list.

Links GCC and GCCSDK pages GCC under RISC OS

GCC for RISC OS, GCC tutorial, GCC common switches, GCC for beginners, UnixLib, ELFLoader
GCCSDK and Unix porting
GCCSDK, GCCSDK Releases, GCCSDK Development, Using GCCSDK, Autobuilder Development and Packaging Cygwin setup, Accelerating autobuilder with apt-proxy, ChoX11, Developer help wanted


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4