mirror of git://gcc.gnu.org/git/gcc.git
re PR preprocessor/33919 (__BASE_FILE__ does not expand correctly when included from the command line)
libcpp/ PR preprocessor/33919 * files.c (_cpp_get_file_name): New. Implement file name access function. * internal.h (_cpp_get_file_name): New prototype. * macro.c (_cpp_builtin_macro_text): Call _cpp_get_file_name() to use pfile->main_file in lieu of traversing INCLUDED_FROM chain. gcc/testsuite/ PR preprocessor/33919 * gcc.dg/pr33919.c: New test. * gcc.dg/pr33919-0.h: New test header file. * gcc.dg/pr33919-1.h: Ditto. * gcc.dg/pr33919-2.h: Ditto. From-SVN: r183003
This commit is contained in:
parent
fdff9f3d33
commit
b492b6862e
|
@ -1,3 +1,11 @@
|
||||||
|
2012-01-09 Gary Funck <gary@intrepid.com>
|
||||||
|
|
||||||
|
PR preprocessor/33919
|
||||||
|
* gcc.dg/pr33919.c: New test.
|
||||||
|
* gcc.dg/pr33919-0.h: New test header file.
|
||||||
|
* gcc.dg/pr33919-1.h: Ditto.
|
||||||
|
* gcc.dg/pr33919-2.h: Ditto.
|
||||||
|
|
||||||
2012-01-07 Jan Hubicka <jh@suse.cz>
|
2012-01-07 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
PR tree-optimize/51694
|
PR tree-optimize/51694
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
char *pre_inc_base_file = __BASE_FILE__;
|
|
@ -0,0 +1,2 @@
|
||||||
|
#include "pr33919-2.h"
|
||||||
|
char *inc_base_file = __BASE_FILE__;
|
|
@ -0,0 +1 @@
|
||||||
|
char *nested_inc_base_file = __BASE_FILE__;
|
|
@ -0,0 +1,26 @@
|
||||||
|
/* PR preprocessor/pr33919 */
|
||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-options "-I . -include ${srcdir}/gcc.dg/pr33919-0.h" } */
|
||||||
|
|
||||||
|
#include "pr33919-1.h"
|
||||||
|
|
||||||
|
const char *base_file = __BASE_FILE__;
|
||||||
|
|
||||||
|
extern int strcmp (const char *, const char *);
|
||||||
|
extern void abort (void);
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
if (!strcmp (pre_inc_base_file, "<command line>"))
|
||||||
|
abort ();
|
||||||
|
if (strcmp (pre_inc_base_file, __FILE__))
|
||||||
|
abort ();
|
||||||
|
if (strcmp (base_file, __FILE__))
|
||||||
|
abort ();
|
||||||
|
if (strcmp (inc_base_file, __FILE__))
|
||||||
|
abort ();
|
||||||
|
if (strcmp (nested_inc_base_file, __FILE__))
|
||||||
|
abort ();
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -1,3 +1,12 @@
|
||||||
|
2012-01-09 Gary Funck <gary@intrepid.com>
|
||||||
|
|
||||||
|
PR preprocessor/33919
|
||||||
|
* files.c (_cpp_get_file_name): New. Implement file name
|
||||||
|
access function.
|
||||||
|
* internal.h (_cpp_get_file_name): New prototype.
|
||||||
|
* macro.c (_cpp_builtin_macro_text): Call _cpp_get_file_name()
|
||||||
|
to use pfile->main_file in lieu of traversing INCLUDED_FROM chain.
|
||||||
|
|
||||||
2012-01-03 Olivier Hainque <hainque@adacore.com>
|
2012-01-03 Olivier Hainque <hainque@adacore.com>
|
||||||
|
|
||||||
* system.h: Prior to #define, #undef fopen and freopen unconditionally.
|
* system.h: Prior to #define, #undef fopen and freopen unconditionally.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* Part of CPP library. File handling.
|
/* Part of CPP library. File handling.
|
||||||
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998,
|
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998,
|
||||||
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
Free Software Foundation, Inc.
|
2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||||
Written by Per Bothner, 1994.
|
Written by Per Bothner, 1994.
|
||||||
Based on CCCP program by Paul Rubin, June 1986
|
Based on CCCP program by Paul Rubin, June 1986
|
||||||
Adapted to ANSI C, Richard Stallman, Jan 1987
|
Adapted to ANSI C, Richard Stallman, Jan 1987
|
||||||
|
@ -1370,6 +1370,13 @@ _cpp_pop_file_buffer (cpp_reader *pfile, _cpp_file *file)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return the file name associated with FILE. */
|
||||||
|
const char *
|
||||||
|
_cpp_get_file_name (_cpp_file *file)
|
||||||
|
{
|
||||||
|
return file->name;
|
||||||
|
}
|
||||||
|
|
||||||
/* Inteface to file statistics record in _cpp_file structure. */
|
/* Inteface to file statistics record in _cpp_file structure. */
|
||||||
struct stat *
|
struct stat *
|
||||||
_cpp_get_file_stat (_cpp_file *file)
|
_cpp_get_file_stat (_cpp_file *file)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Part of CPP library.
|
/* Part of CPP library.
|
||||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
|
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
|
||||||
2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
This program is free software; you can redistribute it and/or modify it
|
||||||
under the terms of the GNU General Public License as published by the
|
under the terms of the GNU General Public License as published by the
|
||||||
|
@ -635,6 +635,7 @@ extern void _cpp_cleanup_files (cpp_reader *);
|
||||||
extern void _cpp_pop_file_buffer (cpp_reader *, struct _cpp_file *);
|
extern void _cpp_pop_file_buffer (cpp_reader *, struct _cpp_file *);
|
||||||
extern bool _cpp_save_file_entries (cpp_reader *pfile, FILE *f);
|
extern bool _cpp_save_file_entries (cpp_reader *pfile, FILE *f);
|
||||||
extern bool _cpp_read_file_entries (cpp_reader *, FILE *);
|
extern bool _cpp_read_file_entries (cpp_reader *, FILE *);
|
||||||
|
extern const char *_cpp_get_file_name (_cpp_file *);
|
||||||
extern struct stat *_cpp_get_file_stat (_cpp_file *);
|
extern struct stat *_cpp_get_file_stat (_cpp_file *);
|
||||||
|
|
||||||
/* In expr.c */
|
/* In expr.c */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* Part of CPP library. (Macro and #define handling.)
|
/* Part of CPP library. (Macro and #define handling.)
|
||||||
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
|
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
|
||||||
1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||||
Written by Per Bothner, 1994.
|
Written by Per Bothner, 1994.
|
||||||
Based on CCCP program by Paul Rubin, June 1986
|
Based on CCCP program by Paul Rubin, June 1986
|
||||||
Adapted to ANSI C, Richard Stallman, Jan 1987
|
Adapted to ANSI C, Richard Stallman, Jan 1987
|
||||||
|
@ -278,10 +278,9 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
|
||||||
pfile->line_table->highest_line);
|
pfile->line_table->highest_line);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
map = linemap_lookup (pfile->line_table, pfile->line_table->highest_line);
|
name = _cpp_get_file_name (pfile->main_file);
|
||||||
while (! MAIN_FILE_P (map))
|
if (!name)
|
||||||
map = INCLUDED_FROM (pfile->line_table, map);
|
abort ();
|
||||||
name = ORDINARY_MAP_FILE_NAME (map);
|
|
||||||
}
|
}
|
||||||
len = strlen (name);
|
len = strlen (name);
|
||||||
buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);
|
buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);
|
||||||
|
|
Loading…
Reference in New Issue