ld: track linker-definedness of symbols
authorJan Beulich <jbeulich@novell.com>
Tue, 5 Jul 2016 09:36:08 +0000 (11:36 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 5 Jul 2016 09:36:08 +0000 (11:36 +0200)
Keep "lineno" as zero while not processing any script, and use it being
zero to set the "linker_def" field to true.

ld/ChangeLog
ld/ldexp.c
ld/ldlex.l

index 7e24b9506adcf97f908a28193886009e8e695e2c..53f24280adb4243380a2f1d2a6094ad7587af487 100644 (file)
@@ -1,3 +1,10 @@
+2016-07-05  Jan Beulich  <jbeulich@suse.com>
+
+       * ldexp.c (exp_fold_tree_1): Set linker_def field based on
+       assignment line number.
+       * ldlex.l (lineno): Drop initializer.
+       (<<EOF>>): Set lineno to zero after reaching top of stack.
+
 2016-07-04  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/20321
index 4e9c03fc554df55d192a7ac4fbb557c14e6ff9f6..649954fbfdcf016c03c66b4659353147708936f7 100644 (file)
@@ -1182,7 +1182,7 @@ exp_fold_tree_1 (etree_type *tree)
              h->type = bfd_link_hash_defined;
              h->u.def.value = expld.result.value;
              h->u.def.section = expld.result.section;
-             h->linker_def = 0;
+             h->linker_def = ! tree->assign.type.lineno;
              if (tree->type.node_class == etree_provide)
                tree->type.node_class = etree_provided;
 
index 2eb8fc1020fbbca22751256b0987176d7047b524..e1394a035762d7767a78c4f2eea17928a6839060 100644 (file)
@@ -39,9 +39,8 @@
    yylex and yyparse (indirectly) both check this.  */
 input_type parser_input;
 
-/* Line number in the current input file.
-   (FIXME Actually, it doesn't appear to get reset for each file?)  */
-unsigned int lineno = 1;
+/* Line number in the current input file.  */
+unsigned int lineno;
 
 /* The string we are currently lexing, or NULL if we are reading a
    file.  */
@@ -460,7 +459,10 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
 <<EOF>> {
   include_stack_ptr--;
   if (include_stack_ptr == 0)
-    yyterminate ();
+    {
+      lineno = 0;
+      yyterminate ();
+    }
   else
     yy_switch_to_buffer (include_stack[include_stack_ptr]);