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