On 24 April 2007 16:00, Dave Korn wrote:

> I'd say that I've inherited a thinko-fied version of ASM_OUTPUT_EXTERNAL

  Wrong, wrong, wrong.  I don't have an ASM_OUTPUT_EXTERNAL at all.  What I do
have, however, is TARGET_ASM_GLOBALIZE_LABEL, which appears to somehow be
equated with ASM_OUTPUT_EXTERNAL_LIBCALL.

(gdb) bt
#0  rtmi_globalize_label (stream=0x611010e8, name=0xd3a988 "ffs") at
/tools/external_source/gnu/gcc-3.3.3/gcc/config/rtmi/rtmi.c:158
#1  0x0047c05d in assemble_external_libcall (fun=0x7feb1b80) at
/tools/external_source/gnu/gcc-3.3.3/gcc/varasm.c:1742
#2  0x004f37aa in emit_library_call_value_1 (retval=1, orgfun=0x7feb1b80,
value=0x0, fn_type=LCT_CONST, outmode=SImode, nargs=1, p=0x23c37c "") at
/tools/external_source/gnu/gcc-3.3.3/gcc/calls.c:3820

...where it says:

        3818      /* If this machine requires an external definition for
library
        3819         functions, write one out.  */
-       3820      assemble_external_libcall (fun);

  Ah, it's elfos.h that does it:

/* The standard SVR4 assembler seems to require that certain builtin
   library routines (e.g. .udiv) be explicitly declared as .globl
   in each assembly file where they are referenced.  */

#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN)  \
  (*targetm.asm_out.globalize_label) (FILE, XSTR (FUN, 0))


  That comment doesn't apply to me, so I can undef and redefine it in my tm.h
to point to something that emits an .extern instead of a .global.  As I see a
lot of other ports do.  Thanks for the help.


    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....

Reply via email to