projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PR gdb/18021 - defend against "static virtual" methods
[deliverable/binutils-gdb.git]
/
ld
/
ldexp.h
diff --git
a/ld/ldexp.h
b/ld/ldexp.h
index fc7485fc5886425b2a2ab8c9fe08c577c15f01b5..10fcf3d96ce9b642bae293de6a519140d16a6dc2 100644
(file)
--- a/
ld/ldexp.h
+++ b/
ld/ldexp.h
@@
-1,6
+1,5
@@
/* ldexp.h -
/* ldexp.h -
- Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2007, 2011, 2012 Free Software Foundation, Inc.
+ Copyright (C) 1991-2015 Free Software Foundation, Inc.
This file is part of the GNU Binutils.
This file is part of the GNU Binutils.
@@
-67,6
+66,7
@@
typedef union etree_union {
node_type type;
const char *dst;
union etree_union *src;
node_type type;
const char *dst;
union etree_union *src;
+ bfd_boolean defsym;
bfd_boolean hidden;
} assign;
struct {
bfd_boolean hidden;
} assign;
struct {
@@
-94,11
+94,19
@@
typedef union etree_union {
} assert_s;
} etree_type;
} assert_s;
} etree_type;
-typedef enum {
+/* Expression evaluation control. */
+typedef enum
+{
+ /* Parsing linker script. Will only return "valid" for expressions
+ that evaluate to a constant. */
lang_first_phase_enum,
lang_first_phase_enum,
+ /* Prior to section sizing. */
lang_mark_phase_enum,
lang_mark_phase_enum,
+ /* During section sizing. */
lang_allocating_phase_enum,
lang_allocating_phase_enum,
+ /* During assignment of symbol values when relaxation in progress. */
lang_assigning_phase_enum,
lang_assigning_phase_enum,
+ /* Final assignment of symbol values. */
lang_final_phase_enum
} lang_phase_type;
lang_final_phase_enum
} lang_phase_type;
@@
-130,6
+138,11
@@
struct ldexp_control {
/* Principally used for diagnostics. */
bfd_boolean assigning_to_dot;
/* Principally used for diagnostics. */
bfd_boolean assigning_to_dot;
+ /* If evaluating an assignment, the destination. Cleared if an
+ etree_name NAME matches this, to signal a self-assignment.
+ Note that an etree_name DEFINED does not clear this field, nor
+ does the false branch of a trinary expression. */
+ const char *assign_name;
/* Working results. */
etree_value_type result;
/* Working results. */
etree_value_type result;
@@
-191,7
+204,7
@@
etree_type *exp_unop
etree_type *exp_nameop
(int, const char *);
etree_type *exp_assign
etree_type *exp_nameop
(int, const char *);
etree_type *exp_assign
- (const char *, etree_type *);
+ (const char *, etree_type *
, bfd_boolean
);
etree_type *exp_defsym
(const char *, etree_type *);
etree_type *exp_provide
etree_type *exp_defsym
(const char *, etree_type *);
etree_type *exp_provide
@@
-208,5
+221,7
@@
fill_type *exp_get_fill
(etree_type *, fill_type *, char *);
bfd_vma exp_get_abs_int
(etree_type *, int, char *);
(etree_type *, fill_type *, char *);
bfd_vma exp_get_abs_int
(etree_type *, int, char *);
+void ldexp_init (void);
+void ldexp_finish (void);
#endif
#endif
This page took
0.03186 seconds
and
4
git commands to generate.