[PATCH/RFA] VAX ELF revisited

Jason R Thorpe thorpej@wasabisystems.com
Mon Sep 30 21:10:00 GMT 2002


On Mon, Jul 15, 2002 at 04:46:29PM -0700, Richard Henderson wrote:

 > On Tue, Jun 25, 2002 at 11:12:04PM -0700, Matt Thomas wrote:
 > > Is there any reason the rest of the VAX ELF changes can't be pulled up?
 > > [After Jason Thorpe and I merge our respective diffs.]
 > 
 > Nope.  Do go ahead and post the pieces separately though.
 > 
 > 
 > r~

Right, so, this merging of respective diffs took a bit longer than I'd
hoped (ahem) .. partially because I'm not paid to hack on the VAX at
my Day Job (don't we all wish we could be :-), and then partially because
the compiler just plain broken on VAX for a spell (and I just didn't have
the time to dig into why)...

That said... attached are the rest of the changes required to support
ELF on the VAX.  There's nothing really all that new, here, although I
did one small bit of cleanup suggested by Richard, use an unspec_volatile
for the istream-sync (it actually fixes a bug -- before the change, the
istream-sync would sometimes be emitted before the trampoline was finalized).

The last testsuite run I did is here:

	http://gcc.gnu.org/ml/gcc-testresults/2002-09/msg00973.html

Since that run, I actually fixed another bug, and I need to run the
testsuite again (that takes a while, though, even cross-compiling on
a reasonably fast Athlon).  I'll post those when available.

These patches have bootstrapped with BOOT_CFLAGS="-g -O1" (took around
18 hours on my 4000/60).  At -O2, the gengtype built by stage1/xgcc
crashes in the bison-generated parser.  Since the VAX ELF changes are
largely to get the asm syntax right for ELF, I suspect that the failure
is not caused by these changes.

There is some more cleanup on my TODO list that was suggested by Richard,
but I'm bringing it up again now because I'm hoping that, while we are
kind of late in the game for 3.3, this stuff is pretty isolated, and it
was generally acceptable back in June (read: I'm hoping it can go in :-)

Here's the ChangeLog entry.

2002-09-30  Richard Henderson  <rth@redhat.com>

        * config/vax/vax.md (call_pop, *call_pop, call_value_pop)
        (*call_value_pop, call, call_value): Add dwarf2 EH support.
        (*call): New insn.

2002-09-30  Matt Thomas  <matt@3am-software.com>
            Jason Thorpe  <thorpej@wasabisystems.com>

        * config.gcc (vax-*-netbsdelf*): Enable configuration.
        * config/elfos.h (PCC_BITFIELD_TYPE_MATTERS): Define only
        if not already defined.
        * config/vax/elf.h: New file.
        * config/vax/netbsd-elf.h: New file.
        * config/vax/vax.c: Include "debug.h".
        (vax_output_function_prologue): Add dwarf2 support.  Use
        MAIN_NAME_P when checking for VMS_TARGET stack adjust.
        * config/vax/vax.h (CONST_OK_FOR_LETTER_P): Add cases for
        'J' [0..63], 'K' [-128..127], 'L' [-32768..32767],
        'M' [0..255], 'N' [0..65535], and, 'O' [-63..-1].
        (VAX_ISTREAM_SYNC): Remove.
        (INITIALIZE_TRAMPOLINE): Use gen_sync_istream.
        (JUMP_TABLES_IN_TEXT_SECTION): Define.
        (ASM_OUTPUT_REG_POP): Use reg_names for the stack pointer.
        (ASM_OUTPUT_ADDR_VEC_ELT): Use ASM_GENERATE_INTERNAL_LABEL
        and assemble_name.
        (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
        (PRINT_OPERAND_PUNCT_VALID_P): Accept '|'.
        (PRINT_OPERAND): Output REGISTER_PREFIX for '|'.
        (INCOMING_RETURN_ADDR_RTX): Define.
        * config/vax/vax.md (VUNSPEC_BLOCKAGE)
        (VUNSPEC_SYNC_ISTREAM): Define.
        (blockage): Use VUNSPEC_BLOCKAGE.
        (sync_istream): New insn.

-- 
        -- Jason R. Thorpe <thorpej@wasabisystems.com>



More information about the Gcc-patches mailing list