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.26-574-ga4777c4


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  a4777c46af89649f2282c1703e8117ccd058d719 (commit)
      from  bc3821bb3b19646311d36c82a13b4ce5afea3508 (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=a4777c46af89649f2282c1703e8117ccd058d719

commit a4777c46af89649f2282c1703e8117ccd058d719
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Sat Oct 14 12:58:40 2017 -0700

    Add a test for profiling static executable
    
    The function, main, is added to profiling output of static executable
    which must link against gcrt1.o.
    
    	* Makeconfig (+link-static-before-libc): Use the first of
    	$(CRT-$(@F)) and $(csu-objpfx)$(static-start-installed-name).
    	* gmon/Makefile (tests): Add tst-gmon-static.
    	(tests-static): Likewise.
    	(CFLAGS-tst-gmon-static.c): New.
    	(CRT-tst-gmon-static): Likewise.
    	(DEFAULT-LDFLAGS-tst-gmon-static): Likewise.
    	(tst-gmon-static-ENV): Likewise.
    	(tests-special): Likewise.
    	($(objpfx)tst-gmon-static.out): Likewise.
    	(clean-tst-gmon-static-data): Likewise.
    	($(objpfx)tst-gmon-static-gprof.out): Likewise.
    	* gmon/tst-gmon-static-gprof.sh: New file.
    	* gmon/tst-gmon-static.c: Likewise.

diff --git a/ChangeLog b/ChangeLog
index 3c8c45e..eed7450 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2017-10-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makeconfig (+link-static-before-libc): Use the first of
+	$(CRT-$(@F)) and $(csu-objpfx)$(static-start-installed-name).
+	* gmon/Makefile (tests): Add tst-gmon-static.
+	(tests-static): Likewise.
+	(CFLAGS-tst-gmon-static.c): New.
+	(CRT-tst-gmon-static): Likewise.
+	(DEFAULT-LDFLAGS-tst-gmon-static): Likewise.
+	(tst-gmon-static-ENV): Likewise.
+	(tests-special): Likewise.
+	($(objpfx)tst-gmon-static.out): Likewise.
+	(clean-tst-gmon-static-data): Likewise.
+	($(objpfx)tst-gmon-static-gprof.out): Likewise.
+	* gmon/tst-gmon-static-gprof.sh: New file.
+	* gmon/tst-gmon-static.c: Likewise.
+
 2017-10-13  Carlos O'Donell  <carlos@redhat.com>
 
 	[BZ #22295]
diff --git a/Makeconfig b/Makeconfig
index 5ff6f2e..1346109 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -422,7 +422,7 @@ ifndef +link-static
 +link-static-before-libc = $(CC) -nostdlib -nostartfiles -static -o $@ \
 	      $(DEFAULT-LDFLAGS-$(@F)) \
 	      $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F))  \
-	      $(addprefix $(csu-objpfx),$(static-start-installed-name)) \
+	      $(firstword $(CRT-$(@F)) $(csu-objpfx)$(static-start-installed-name)) \
 	      $(+preinit) $(+prectorT) \
 	      $(filter-out $(addprefix $(csu-objpfx),start.o \
 						     $(start-installed-name))\
diff --git a/gmon/Makefile b/gmon/Makefile
index 2cd077d..89ab3fc 100644
--- a/gmon/Makefile
+++ b/gmon/Makefile
@@ -33,6 +33,9 @@ tests-static	+= tst-profile-static
 LDFLAGS-tst-profile-static = -profile
 endif
 
+tests += tst-gmon-static
+tests-static += tst-gmon-static
+
 ifeq (yesyes,$(have-fpie)$(build-shared))
 tests += tst-gmon-pie
 tests-pie += tst-gmon-pie
@@ -49,6 +52,14 @@ ifeq ($(run-built-tests),yes)
 tests-special += $(objpfx)tst-gmon-gprof.out
 endif
 
+CFLAGS-tst-gmon-static.c := $(PIE-ccflag) -fno-omit-frame-pointer -pg
+CRT-tst-gmon-static := $(csu-objpfx)gcrt1.o
+DEFAULT-LDFLAGS-tst-gmon-static = $(no-pie-ldflag)
+tst-gmon-static-ENV := GMON_OUT_PREFIX=$(objpfx)tst-gmon-static.data
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-gmon-static-gprof.out
+endif
+
 CFLAGS-tst-gmon-pie.c := $(PIE-ccflag) -fno-omit-frame-pointer -pg
 CRT-tst-gmon-pie := $(csu-objpfx)gcrt1.o
 tst-gmon-pie-ENV := GMON_OUT_PREFIX=$(objpfx)tst-gmon-pie.data
@@ -83,6 +94,16 @@ $(objpfx)tst-gmon-gprof.out: tst-gmon-gprof.sh $(objpfx)tst-gmon.out
 	$(SHELL) $< $(GPROF) $(objpfx)tst-gmon $(objpfx)tst-gmon.data.* > $@; \
 	$(evaluate-test)
 
+$(objpfx)tst-gmon-static.out: clean-tst-gmon-static-data
+clean-tst-gmon-static-data:
+	rm -f $(objpfx)tst-gmon-static.data.*
+
+$(objpfx)tst-gmon-static-gprof.out: tst-gmon-static-gprof.sh \
+				    $(objpfx)tst-gmon-static.out
+	$(SHELL) $< $(GPROF) $(objpfx)tst-gmon-static \
+		$(objpfx)tst-gmon-static.data.* > $@; \
+	$(evaluate-test)
+
 $(objpfx)tst-gmon-pie.out: clean-tst-gmon-pie-data
 clean-tst-gmon-pie-data:
 	rm -f $(objpfx)tst-gmon-pie.data.*
diff --git a/gmon/tst-gmon-static-gprof.sh b/gmon/tst-gmon-static-gprof.sh
new file mode 100644
index 0000000..55ac8aa
--- /dev/null
+++ b/gmon/tst-gmon-static-gprof.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+# Check the output of gprof against a carfully crafted static binary.
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+LC_ALL=C
+export LC_ALL
+set -e
+exec 2>&1
+
+GPROF="$1"
+program="$2"
+data="$3"
+
+actual=$(mktemp)
+expected=$(mktemp)
+expected_dot=$(mktemp)
+cleanup () {
+    rm -f "$actual"
+    rm -f "$expected"
+    rm -f "$expected_dot"
+}
+trap cleanup 0
+
+cat > "$expected" <<EOF
+f1 2000
+f2 1000
+main 1
+EOF
+
+# Special version for powerpc with function descriptors.
+cat > "$expected_dot" <<EOF
+.f1 2000
+.f2 1000
+.main 1
+EOF
+
+"$GPROF" -C "$program" "$data" \
+    | awk -F  '[(): ]' '/executions/{print $5, $8}' \
+    | sort > "$actual"
+
+if cmp -s "$actual" "$expected_dot" \
+   || diff -u --label expected "$expected" --label actual "$actual" ; then
+    echo "PASS"
+else
+    echo "FAIL"
+    exit 1
+fi
diff --git a/gmon/tst-gmon-static.c b/gmon/tst-gmon-static.c
new file mode 100644
index 0000000..1eef258
--- /dev/null
+++ b/gmon/tst-gmon-static.c
@@ -0,0 +1 @@
+#include "tst-gmon.c"

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

Summary of changes:
 ChangeLog                                          |   17 ++++++++++++++++
 Makeconfig                                         |    2 +-
 gmon/Makefile                                      |   21 ++++++++++++++++++++
 ...{tst-gmon-gprof.sh => tst-gmon-static-gprof.sh} |    4 ++-
 gmon/{tst-gmon-pie.c => tst-gmon-static.c}         |    0
 5 files changed, 42 insertions(+), 2 deletions(-)
 copy gmon/{tst-gmon-gprof.sh => tst-gmon-static-gprof.sh} (94%)
 copy gmon/{tst-gmon-pie.c => tst-gmon-static.c} (100%)


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]