bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug gas/847] New: Error: Zero-length symbol is illegal


From: Nick Clifton
Subject: Re: [Bug gas/847] New: Error: Zero-length symbol is illegal
Date: Fri, 15 Apr 2005 12:44:21 +0100
User-agent: Mozilla Thunderbird 1.0 (X11/20041206)

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  <address@hidden>

        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)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]