bug-binutils
[Top][All Lists]
Advanced

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

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


From: nickc at redhat dot com
Subject: [Bug gas/847] Error: Zero-length symbol is illegal
Date: 15 Apr 2005 11:46:24 -0000

------- Additional Comments From nickc at redhat dot com  2005-04-15 11:46 
-------
Subject: Re:  New: Error: Zero-length symbol is illegal

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)


-- 


http://sources.redhat.com/bugzilla/show_bug.cgi?id=847

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




reply via email to

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