Avoid a recursive make to speed things up a bit.
A fr30-elf build shows installed objects & libs produce same code.
A lot of code seems like it hasn't been migrated, but that's because
it's all disabled/unused (i.e. all the test & mon code). It looks
like a lot of copy & paste holdovers from the original port.
No sub-Makefile.inc file should ever set CPPFLAGS directly. That is
a global/common variable. Instead, ports should set the per-target
CPPFLAGS to include what they need.
Further, per-target CPPFLAGS should respect $(AM_CPPFLAGS).
The code was loading the common ../sbrk.c file rather than the visium
specific sbrk.c due to VPATH setup. Add an explicit rule for this one
file so we make sure the correct one is used.
Avoid a recursive make to speed things up a bit.
A i386-elf build shows installed objects & libs produce same code other
than a rename from cygmon-gmon.o & cygmon-salib.o to i386_libcygmon_a-*.o
due to the use of custom CPPFLAGS in here.
This was added to specify -Wa,-gdwarf2 when compiling the assembly
files. Considering the size of these .S files, it seems unnecessary
overkill and complicates the build system. All but one of these
compile down to 6 or fewer lines, and those hardly need extra debug
for anyone who is poking msp430 assembly. The 1 file that is larger
than that (crt_move_highdata.S) is still <15 insns.
This will also simplify merging it into the top-level Makefile.
The build system compiles crt0.S many times to produce independent
object files by defining different -DLxxx symbols for each. This
complicates the build, and has led to some bugs in the source and
build (see the previous cleanup commits in here). The crt_bss.S
file has also been duplicated with crt0.S leading to confusion as
to which one is the "real" one. The only reason to keep them in
one file is to make management of the section numbers when calling
START_CRT_FUNC a little easier, but that seems trivial to check
with a quick grep across all the files.
Considering how complicated the build is now, and the bugs we've
had as a result, split the crt0.S file up into multiple source
files so we don't have to compile it multiple times. This will
also simplify merging it into the top-level Makefile.
This object is created by compiling crt0.S with -DLinit, but there
has never been an "#if Linit" check in crt0.S, so this has always
produced a stub object file. Drop compiling it entirely.
The #if 0 & comment imply this code doesn't exist and is never used,
except there's another #if Lrun_fini_array section below which *does*
define this function, which makes this code comment confusing. This
seems to be a hold over of the cleanup of the minrt code in the old
commit 884b05b54e4595433c85f8ca9820e88b4c723e38 ("MSP430: Remove
.init/.fini sections").
This logic is copied from what's used in newlib today. This allows
subdirs to easily define per-directory flags & per-file flags without
having to setup unique automake rules for each one.
A bunch of ports have manual rules to generate disassembly, srec, and
binary files from test programs. Add top-level pattern rules so every
test program gets this for free, and we don't have to duplicate it in
every subdir.
Currently init_semihosting() assumes the return value from _open()
call as the file descriptor handle and that is incorrect.
The semihost _open() call returns the fdtable index returned by the
__add_fdentry() for the file opened.
Set symbol '__jvt_base$' as weak. So if the symbol is not set in the
linker script, the address would be 0. We initialize jvt CSR only if
the address is not 0.
Also use csr number directly instead of using symbolic name to prevent the
backward incompatible issue.
psabi reference:
2d770815dc/riscv-elf.adoc (table-jump-relaxation)
The i960 port has a lot of references to sim files that have never been
included in the tree afaict, and thus has never worked. Delete all the
code to simplify.
This is a .c file, not assembly, and it's a duplicate (same content)
as the existing sim-lseek.c. Delete it since it's unused and doesn't
actually compile.
Similar to what's been done in the ports, but this time in generic code.
Add missing #includes to pick up prototypes. Add prototypes for various
internal functions where needed. Fix signatures of various functions to match
what's provided by the headers (read, sbrk, write, unlink).
Nearly done with this effort ;-)
Pushed to the trunk,
I guess I must have missed this when working through the trivial port specific
changes.
This adds an include of stdlib.h to get a prototype for exit().
Pushed to the trunk.
Commit 8d758283785042589e95c93d7899cecf28ef00ea ("libgloss: merge
sparc configure script up a level") missed including the sparc
acinclude.m4 file which meant none of the sparc-specific vars were
propagating to the sub-makefile.
So in this case we mostly need to include an internal header
(epiphany-syscalls.h). In a few cases an explicit prototype is added. We've
also got a return with no value in a function with a non-void return type.
Finally the asm_syscall interface expects a pointer as its first argument. In
a few cases we've actually got an int (file descriptor) which we just cast to a
void *.
It's slightly more than Jeff J's pre-approval, but I think still reasonable.
Make implicit its explicit, add missing prototypes and header includes. This
does not fix m32r-stub.c which needs more than the trivial work that Jeff J has
pre-approved.
So the prior patch for sysnecv850 was in newlib. This time we're fixing v850
bits in libgloss.
Like other patches submitted recently, this converts implicit ints to explicit
ints, adds a missing prototype and header includes.
By default, only split node html manuals are generated. Change the
default to single page, and add an extra rule to also generate the
split page manual.
Since $(AS) is the assembler, passing it a list of preprocessor include
flags doesn't make much sense. The files aren't preprocessed which means
`#include` lines aren't respected, and while it would affect `.include`
usage, we never use that, and it's extremely unlikely to change. Plus,
it's extremely unlikely we'd have .s files in common places to include vs
contained entirely within a specific arch dir, and at that point, it can
be included directly (with no flags), or the arch can add the unique set
of include paths that it needs for itself.