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 ac73bd116794a3431a86424469d0c89412e468e7..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 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.
@@
-46,7
+45,8
@@
enum node_tree_enum {
typedef struct {
int node_code;
unsigned int lineno;
typedef struct {
int node_code;
unsigned int lineno;
- enum node_tree_enum node_class;
+ const char *filename;
+ enum node_tree_enum node_class;
} node_type;
typedef union etree_union {
} node_type;
typedef union etree_union {
@@
-66,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 {
@@
-93,22
+94,36
@@
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,
+ /* Final assignment of symbol values. */
lang_final_phase_enum
} lang_phase_type;
union lang_statement_union;
enum phase_enum {
lang_final_phase_enum
} lang_phase_type;
union lang_statement_union;
enum phase_enum {
+ /* We step through the first four states here as we see the
+ associated linker script tokens. */
exp_dataseg_none,
exp_dataseg_align_seen,
exp_dataseg_relro_seen,
exp_dataseg_end_seen,
exp_dataseg_none,
exp_dataseg_align_seen,
exp_dataseg_relro_seen,
exp_dataseg_end_seen,
+ /* The last three states are final, and affect the value returned
+ by DATA_SEGMENT_ALIGN. */
exp_dataseg_relro_adjust,
exp_dataseg_relro_adjust,
- exp_dataseg_adjust
+ exp_dataseg_adjust,
+ exp_dataseg_done
};
enum relro_enum {
};
enum relro_enum {
@@
-123,11
+138,15
@@
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;
bfd_vma dot;
/* Working results. */
etree_value_type result;
bfd_vma dot;
- bfd_boolean uses_defined;
/* Current dot and section passed to ldexp folder. */
bfd_vma *dotp;
/* Current dot and section passed to ldexp folder. */
bfd_vma *dotp;
@@
-184,8
+203,10
@@
etree_type *exp_unop
(int, etree_type *);
etree_type *exp_nameop
(int, const char *);
(int, etree_type *);
etree_type *exp_nameop
(int, const char *);
-etree_type *exp_assop
- (int, const char *, etree_type *);
+etree_type *exp_assign
+ (const char *, etree_type *, bfd_boolean);
+etree_type *exp_defsym
+ (const char *, etree_type *);
etree_type *exp_provide
(const char *, etree_type *, bfd_boolean);
etree_type *exp_assert
etree_type *exp_provide
(const char *, etree_type *, bfd_boolean);
etree_type *exp_assert
@@
-200,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.024296 seconds
and
4
git commands to generate.