/* Output xcoff-format symbol table information from GNU compiler.
- Copyright (C) 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004,
- 2007 Free Software Foundation, Inc.
+ Copyright (C) 1992-2013 Free Software Foundation, Inc.
This file is part of GCC.
#include "tree.h"
#include "rtl.h"
#include "flags.h"
-#include "toplev.h"
+#include "diagnostic-core.h"
#include "output.h"
#include "ggc.h"
#include "target.h"
char *xcoff_bss_section_name;
char *xcoff_private_data_section_name;
+char *xcoff_tls_data_section_name;
+char *xcoff_tbss_section_name;
char *xcoff_read_only_section_name;
/* Last source file name mentioned in a NOTE insn. */
#define ASM_OUTPUT_LINE(FILE,LINENUM) \
do \
{ \
+ /* Make sure we're in a function and prevent output of .line 0, as \
+ line # 0 is meant for symbol addresses in xcoff. Additionally, \
+ line numbers are 'unsigned short' in 32-bit mode. */ \
if (xcoff_begin_function_line >= 0) \
- fprintf (FILE, "\t.line\t%d\n", ABS_OR_RELATIVE_LINENO (LINENUM)); \
+ { \
+ int lno = ABS_OR_RELATIVE_LINENO (LINENUM); \
+ if (lno > 0 && (TARGET_64BIT || lno <= (int)USHRT_MAX)) \
+ fprintf (FILE, "\t.line\t%d\n", lno); \
+ } \
} \
while (0)
/* ??? Should also handle built-in C++ and Obj-C types. There perhaps
aren't any that C doesn't already have. */
-};
+};
/* Returns an XCOFF fundamental type number for DECL (assumed to be a
TYPE_DECL), or 0 if dbxout.c should assign a type number normally. */
/* Output a line number symbol entry for location (FILENAME, LINE). */
void
-xcoffout_source_line (unsigned int line, const char *filename)
+xcoffout_source_line (unsigned int line, const char *filename,
+ int discriminator ATTRIBUTE_UNUSED,
+ bool is_stmt ATTRIBUTE_UNUSED)
{
bool inline_p = (strcmp (xcoff_current_function_file, filename) != 0
|| (int) line < xcoff_begin_function_line);