Target hook for ASM_FILE_END

Zack Weinberg zack@codesourcery.com
Fri Jun 6 20:10:00 GMT 2003


Richard Sandiford <rsandifo@redhat.com> writes:

>
> Minor niggle, but how about guarding iris6_file_end with TARGET_IRIX6,
> just like the definition is?  Seems more self-documenting than an
> ATTRIBUTE_UNUSED directive.
>
> Also, something like:
>
>     #undef TARGET_ASM_FILE_END
>     #ifdef TARGET_IRIX6
>     static void iris6_file_end PARAMS ((void));
>     #define TARGET_ASM_FILE_END iris6_file_end
>     #else
>     #define TARGET_ASM_FILE_END mips_file_end
>     #endif
>
> (or whatever) would keep everything inside mips.c rather than
> polluting the header files with the names of static functions.
>
> Not really sure if that's better, just thought I'd ask.

Good idea, both - I'll incorporate them into the next revision.

> I think this counts as a bug fix ;).  Shouldn't the old code have
> been passing asm_out_file rather than "stream" to mips_asm_file_end()?
> "Stream" is the temporary file, and is closed by copy_file_data.

That's what I thought, but I couldn't prove it to myself.  I think
there's still a problem, though.

> Running:
>
>     $ cat foo.c
>     extern int x;
>     int f () { return x; }
>     $ gcc foo.c -O2 -mno-abicalls -G8 -S
>
> on irix before your patch, I get:
>
>     foo.c:3: fatal error: can't write to output file: Bad file number
>     compilation terminated.

Aha, that's how you do it.  I can confirm that that same test doesn't
cause a fatal error with my patch; however, the .s file looks wrong to
me.  Note where .LFE3 and the .end f line appear.

        #.file  1 "test.c"
        .set    nobopt
        .section .text,0x1,0x6,4,8
        .data
.LFE3:
        .end    f

        .extern x, 4

        .text
        .text
        .align  2
        .align  3
        .globl  f
        .ent    f
f:
.LFB3:
        .frame  $sp,0,$31               # vars= 0, regs= 0/0, args= 0, extra= 0
        .mask   0x00000000,0
        .fmask  0x00000000,0
        .set    noreorder
        .set    nomacro
        j       $31
        lw      $2,x
        .set    macro
        .set    reorder

I am looking into this.

zw



More information about the Gcc-patches mailing list