summaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog9
-rw-r--r--libcpp/files.c11
-rw-r--r--libcpp/internal.h3
-rw-r--r--libcpp/macro.c9
4 files changed, 24 insertions, 8 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index dfe18d08760..8a1eb05c5e5 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -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>
* system.h: Prior to #define, #undef fopen and freopen unconditionally.
diff --git a/libcpp/files.c b/libcpp/files.c
index fad8b75fe57..29ccf3b7013 100644
--- a/libcpp/files.c
+++ b/libcpp/files.c
@@ -1,7 +1,7 @@
/* Part of CPP library. File handling.
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+ 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Written by Per Bothner, 1994.
Based on CCCP program by Paul Rubin, June 1986
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. */
struct stat *
_cpp_get_file_stat (_cpp_file *file)
diff --git a/libcpp/internal.h b/libcpp/internal.h
index 7e2932a6035..5b3731bba1d 100644
--- a/libcpp/internal.h
+++ b/libcpp/internal.h
@@ -1,6 +1,6 @@
/* Part of CPP library.
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
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 bool _cpp_save_file_entries (cpp_reader *pfile, FILE *f);
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 *);
/* In expr.c */
diff --git a/libcpp/macro.c b/libcpp/macro.c
index d96b2631a86..32f99ca030a 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -1,7 +1,7 @@
/* Part of CPP library. (Macro and #define handling.)
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
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.
Based on CCCP program by Paul Rubin, June 1986
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);
else
{
- map = linemap_lookup (pfile->line_table, pfile->line_table->highest_line);
- while (! MAIN_FILE_P (map))
- map = INCLUDED_FROM (pfile->line_table, map);
- name = ORDINARY_MAP_FILE_NAME (map);
+ name = _cpp_get_file_name (pfile->main_file);
+ if (!name)
+ abort ();
}
len = strlen (name);
buf = _cpp_unaligned_alloc (pfile, len * 2 + 3);