Hi Andreas,

The ia64 assembler is choking on `.file ""' with the error message "Zero-length symbol is illegal". According to the GAS manual this should be allowed. The problem is that gcc 3.4 and later now uses `.file ""' instead of `.file "<stdin>"' when input comes from stdin.

Hmm, well the documentation does also say that the feature is only supported for backwards compatibility and may go away in the future.


Still a patch for this problem seems fairly straight forward.

Jan, Ian - what do you think of this ?

Cheers
  Nick

gas/ChangeLog
2005-04-15  Nick Clifton  <[EMAIL PROTECTED]>

        PR gas/847
        * read.c (s_app_file): Call tc_convert_file_name, if defined,
        before s_app_file_string.
        * config/tc-ia64.c (ia64_convert_file_name): Define.  Convert
        empty file names into "<stdin>".
        * config/tc-ia64.h (tc_convert_file_name): Define.

Index: gas/config/tc-ia64.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ia64.c,v
retrieving revision 1.152
diff -c -3 -p -r1.152 tc-ia64.c
*** gas/config/tc-ia64.c        5 Apr 2005 04:01:12 -0000       1.152
--- gas/config/tc-ia64.c        15 Apr 2005 11:39:41 -0000
*************** ia64_canonicalize_symbol_name (name)
*** 8031,8036 ****
--- 8031,8049 ----
    return name;
  }

+ /* Avoid producing error messages about zero-length symbol names when
+ GCC produces directives like:
+ .file ""
+ by converting empty names into <stdin>. */
+
+ char *
+ ia64_convert_file_name (char * name)
+ {
+ if (name != NULL && * name == 0)
+ return "<stdin>";
+ return name;
+ }
+
/* Return true if idesc is a conditional branch instruction. This excludes
the modulo scheduled branches, and br.ia. Mod-sched branches are excluded
because they always read/write resources regardless of the value of the
Index: gas/config/tc-ia64.h
===================================================================
RCS file: /cvs/src/src/gas/config/tc-ia64.h,v
retrieving revision 1.38
diff -c -3 -p -r1.38 tc-ia64.h
*** gas/config/tc-ia64.h 3 Mar 2005 11:47:52 -0000 1.38
--- gas/config/tc-ia64.h 15 Apr 2005 11:39:41 -0000
*************** extern void ia64_dwarf2_emit_offset PARA
*** 120,125 ****
--- 120,126 ----
extern void ia64_check_label PARAMS ((symbolS *));
extern int ia64_estimate_size_before_relax (fragS *, asection *);
extern void ia64_convert_frag (fragS *);
+ extern char * ia64_convert_file_name (char *);


  #define md_end()                              ia64_end_of_source ()
  #define md_start_line_hook()          ia64_start_line ()
*************** extern void ia64_convert_frag (fragS *);
*** 132,137 ****
--- 133,139 ----
  #define md_parse_name(s,e,c)          ia64_parse_name (s, e, c)
  #define tc_canonicalize_symbol_name(s)        ia64_canonicalize_symbol_name 
(s)
  #define tc_canonicalize_section_name(s)       ia64_canonicalize_symbol_name 
(s)
+ #define tc_convert_file_name(s)         ia64_convert_file_name (s)
  #define md_optimize_expr(l,o,r)               ia64_optimize_expr (l, o, r)
  #define md_cons_align(n)              ia64_cons_align (n)
  #define TC_FORCE_RELOCATION(f)                ia64_force_relocation (f)


_______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to