re PR target/46655 (invalid '.line 0' directive emitted with -g)

PR target/46655
	* xcoffout.c (ASM_OUTPUT_LINE): Output line only if positive, and only
	if <= USHRT_MAX in 32-bit mode.

Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
Co-Authored-By: Michael Haubenwallner <michael.haubenwallner@salomon.at>

From-SVN: r168897
This commit is contained in:
Olivier Hainque 2011-01-17 12:35:21 +00:00 committed by Eric Botcazou
parent f4c69f53f9
commit b9361af2c3
2 changed files with 16 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2011-01-17 Olivier Hainque <hainque@adacore.com>
Michael Haubenwallner <michael.haubenwallner@salomon.at>
Eric Botcazou <ebotcazou@adacore.com>
PR target/46655
* xcoffout.c (ASM_OUTPUT_LINE): Output line only if positive, and only
if <= USHRT_MAX in 32-bit mode.
2011-01-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* doc/install.texi (Configuration, Specific): Wrap long

View File

@ -81,8 +81,15 @@ const char *xcoff_lastfile;
#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)