GCC 2.96 merge (Linux/ELF, 32-bit for the time being)
Hi,
I've merged the relevant bits from the puffin.external.hp.com CVS tree with the current GCC 2.96 from sourceware.cygnus.com.
I've tested this by building the kernel with it (it prints a number of warnings but is otherwise okay), building glibc with it, building ash with that glibc, and running that ash binary.
Here is the diff against a checkout of current sourceware CVS. I don't expect this to be merged with mainline GCC as it is still pretty messy, but I wanted to put the patch out for discussion. (That's partly why there is no ChangeLog entry with it, as a lot of this stuff may change again in the near future when I add Linux/ELF64 support).
There are also two small generic updates in this patch, which constitute the entirety of the changes to gcc/config/pa/pa.[ch]. The first one (in pa.c) is from prumpf, it corrects a condition code specifier, and the second one (in pa.h) is from me, to silence a warning when processing the pa.md file. These are at the top of the patch.
I've had to do a lot of "conflict resolution" between the HP/SOM style of assembly language dictated by the other PA-RISC configuration files and headers in GCC and the semi-GNU/ELF style accepted by our current binutils and dictated by the generic Linux configuration files and headers.
The issues in particular are:
1) How global labels are declared.
2) Whether labels use colons.
3) The format of local labels.
I believe the comments in the patch below explain these issues so I won't rehash them here.
This also is a statement of my intention to branch off the current puffin.external.hp.com tree. The branch tag for the old stuff is 'gcc-2_9-hppa-20000707'. I'll add a new vendor tag for the vanilla sourceware tree and put the modified version at the head either tonight or tomorrow morning.
gcc/config/pa/pa.c +1 -1
@@ -3944,7 +3944,7 @@switch (GET_CODE (x)) {case EQ : -fputs ("!=" , file);break ; +fputs ("<>" , file);break ;/* this was "!=" which is bogus. prumpf */ case NE :fputs ("=" , file);break ;case GT :
gcc/config/pa/pa.h +2 -1
@@ -2044,4 +2044,5 @@ {"basereg_operand", {REG}}, \ {"div_operand", {REG, CONST_INT}}, \ {"ireg_operand", {REG}}, \ - {"movb_comparison_operator", {EQ, NE, LT, GE}}, + {"movb_comparison_operator", {EQ, NE, LT, GE}}, \ + {"cmpib_comparison_operator", {EQ, NE, GT, GE, GTU, LT, LE, LEU}},
gcc/config/pa/pa-linux.h +114 -5
139 lines not on this page · raw message
gcc/config/pa/t-linux +11 -0
@@ -1 +1,12 @@ +CROSS_LIBGCC1 = libgcc1-asm.a +LIB1ASMSRC = pa/lib1linux.asm +LIB1ASMFUNCS = _divI _divU _remI _remU _multiply + ADA_CFLAGS=-mdisable-indexing +LIB2FUNCS_EXTRA=lib2funcs-elf.S + +lib2funcs-elf.S: $(srcdir)/config/pa/lib2funcs-elf.S + rm -f lib2funcs-elf.S + cp $(srcdir)/config/pa/lib2funcs-elf.S . + +TARGET_LIBGCC2_CFLAGS =
gcc/configure.in +6 -5
@@ -992,12 +992,13 @@ h8300-*-*) float_format=i32 ;; - hppa*-*-linux*) + hppa1.1-*-linux*) target_cpu_default="(MASK_PA_11 | MASK_GAS | MASK_JUMP_IN_DELAY)" - tm_file="${tm_file} pa/elf.h linux.h pa/pa-linux.h" - tmake_file="t-linux pa/t-linux" - extra_parts="crtbegin.o crtend.o" - xmake_file=none + tm_file="${tm_file} pa/pa32-regs.h pa/pa-linux.h" + xm_file=pa/xm-linux.h + tmake_file=pa/t-linux + xmake_file=x-linux + extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" gas=yes gnu_ld=yes if test x$enable_threads = xyes; then thread_file='posix'
gcc/config/pa/lib1linux.asm +1117 -0
1,117 lines not on this page · raw message
gcc/config/pa/lib2funcs-elf.S +1221 -0
1,221 lines not on this page · raw message