This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.22-258-ga435cc4


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  a435cc46e6ba3f8690fa4da719fdec4129fc3c48 (commit)
      from  e5d19c08d12880edbdf8772c8fb1f747c71d866e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=a435cc46e6ba3f8690fa4da719fdec4129fc3c48

commit a435cc46e6ba3f8690fa4da719fdec4129fc3c48
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Fri Sep 18 00:52:07 2015 +0000

    Test for weak undefined symbols in linknamespace.pl.
    
    This patch makes linknamespace.pl require weak undefined symbols to be
    within the standard namespace.  (It remains the case that
    linknamespace.pl does not look for definitions of such symbols or
    require symbols used in those definitions to be within the standard
    namespace.)
    
    Tested for x86_64 and x86.
    
    	* conform/linknamespace.pl: Require weak undefined symbols to be
    	in the standard namespace.
    	(%strong_syms): Rename to %seen_syms.
    	(%strong_seen): Rename to %seen_where.

diff --git a/ChangeLog b/ChangeLog
index dd01ca1..4dad38c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-09-17  Joseph Myers  <joseph@codesourcery.com>
+
+	* conform/linknamespace.pl: Require weak undefined symbols to be
+	in the standard namespace.
+	(%strong_syms): Rename to %seen_syms.
+	(%strong_seen): Rename to %seen_where.
+
 2015-09-17  H.J. Lu  <hongjiu.lu@intel.com>
 
 	[BZ #18970]
diff --git a/conform/linknamespace.pl b/conform/linknamespace.pl
index 15fa613..94ebfd4 100644
--- a/conform/linknamespace.pl
+++ b/conform/linknamespace.pl
@@ -97,8 +97,8 @@ sub list_syms {
 
 # Load information about GLOBAL and WEAK symbols defined or used in
 # the standard libraries.
-# Strong symbols (defined or undefined) from a given object.
-%strong_syms = ();
+# Symbols from a given object, except for weak defined symbols.
+%seen_syms = ();
 # Strong undefined symbols from a given object.
 %strong_undef_syms = ();
 # Objects defining a given symbol (strongly or weakly).
@@ -112,17 +112,17 @@ foreach my $sym (@sym_data) {
     }
     push (@{$sym_objs{$name}}, $file);
   }
-  if ($bind eq "GLOBAL") {
-    if (!defined ($strong_syms{$file})) {
-      $strong_syms{$file} = [];
+  if ($bind eq "GLOBAL" || !$defined) {
+    if (!defined ($seen_syms{$file})) {
+      $seen_syms{$file} = [];
     }
-    push (@{$strong_syms{$file}}, $name);
-    if (!$defined) {
-      if (!defined ($strong_undef_syms{$file})) {
-	$strong_undef_syms{$file} = [];
-      }
-      push (@{$strong_undef_syms{$file}}, $name);
+    push (@{$seen_syms{$file}}, $name);
+  }
+  if ($bind eq "GLOBAL" && !$defined) {
+    if (!defined ($strong_undef_syms{$file})) {
+      $strong_undef_syms{$file} = [];
     }
+    push (@{$strong_undef_syms{$file}}, $name);
   }
 }
 
@@ -132,12 +132,7 @@ foreach my $sym (@sym_data) {
 # The rules followed are heuristic and so may produce false positives
 # and false negatives.
 #
-# * Weak undefined symbols are ignored; however, if a code path that
-# references one (even just to check if its address is 0) is executed,
-# that may conflict with a definition of that symbol in the user's
-# program.
-#
-# * Strong undefined symbols are considered of signficance, but it is
+# * All undefined symbols are considered of signficance, but it is
 # possible that (a) any standard library definition is weak, so can be
 # overridden by the user's definition, and (b) the symbol is only used
 # conditionally and not if the program is limited to standard
@@ -192,14 +187,14 @@ unlink ($cincfile) || die ("unlink $cincfile: $!\n");
 unlink ($cincfile_o) || die ("unlink $cincfile_o: $!\n");
 unlink ($cincfile_sym) || die ("unlink $cincfile_sym: $!\n");
 
-%strong_seen = ();
+%seen_where = ();
 %files_seen = ();
 %all_undef = ();
 %current_undef = ();
 foreach my $sym (@elf_syms) {
   my ($file, $name, $bind, $defined) = @$sym;
   if ($bind eq "GLOBAL" && !$defined) {
-    $strong_seen{$name} = "[initial] $name";
+    $seen_where{$name} = "[initial] $name";
     $all_undef{$name} = "[initial] $name";
     $current_undef{$name} = "[initial] $name";
   }
@@ -213,9 +208,9 @@ while (%current_undef) {
 	next;
       }
       $files_seen{$file} = 1;
-      foreach my $ssym (@{$strong_syms{$file}}) {
-	if (!defined ($strong_seen{$ssym})) {
-	  $strong_seen{$ssym} = "$current_undef{$sym} -> [$file] $ssym";
+      foreach my $ssym (@{$seen_syms{$file}}) {
+	if (!defined ($seen_where{$ssym})) {
+	  $seen_where{$ssym} = "$current_undef{$sym} -> [$file] $ssym";
 	}
       }
       foreach my $usym (@{$strong_undef_syms{$file}}) {
@@ -230,14 +225,14 @@ while (%current_undef) {
 }
 
 $ret = 0;
-foreach my $sym (sort keys %strong_seen) {
+foreach my $sym (sort keys %seen_where) {
   if ($sym =~ /^_/) {
     next;
   }
   if (defined ($stdsyms{$sym})) {
     next;
   }
-  print "$strong_seen{$sym}\n";
+  print "$seen_where{$sym}\n";
   $ret = 1;
 }
 

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                |    7 +++++++
 conform/linknamespace.pl |   43 +++++++++++++++++++------------------------
 2 files changed, 26 insertions(+), 24 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]