about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2014-05-06 11:55:24 +0200
committerAndreas Schwab <schwab@suse.de>2014-05-06 16:30:48 +0200
commit978a41c35738dbe4592edb7dcaa155fec31dab50 (patch)
tree77194186d69c4cdaff3ec4b6433ba64d8af2b6e6
parentfe6588457a7b66c6cfcd6e51640453de59b8017b (diff)
downloadglibc-978a41c35738dbe4592edb7dcaa155fec31dab50.tar.gz
glibc-978a41c35738dbe4592edb7dcaa155fec31dab50.tar.xz
glibc-978a41c35738dbe4592edb7dcaa155fec31dab50.zip
Don't use catomic functions in mcount (BZ #16912)
mcount cannot use catomic functions since it is called by
__libc_start_main before TLS is set up.  This reverts the change made by
commit 8099361.
-rw-r--r--ChangeLog7
-rw-r--r--NEWS2
-rw-r--r--gmon/mcount.c4
3 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 64d9ed71bb..6ccf04111b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-05-06  Andreas Schwab  <schwab@suse.de>
+
+	[BZ #16912]
+	* gmon/mcount.c (_MCOUNT_DECL): Use
+	atomic_compare_and_exchange_bool_acq instead of
+	catomic_compare_and_exchange_bool_acq.
+
 2014-05-05  Roland McGrath  <roland@hack.frob.com>
 
 	* elf/Makefile (others, install-bin): Remove pldd.
diff --git a/NEWS b/NEWS
index 1351c01e23..47c951bf88 100644
--- a/NEWS
+++ b/NEWS
@@ -16,7 +16,7 @@ Version 2.20
   16677, 16680, 16683, 16689, 16695, 16701, 16706, 16707, 16712, 16713,
   16714, 16731, 16739, 16740, 16743, 16754, 16758, 16759, 16760, 16770,
   16786, 16789, 16791, 16799, 16800, 16815, 16823, 16824, 16831, 16838,
-  16854, 16885, 16888, 16890.
+  16854, 16885, 16888, 16890, 16912.
 
 * The minimum Linux kernel version that this version of the GNU C Library
   can be used with is 2.6.32.
diff --git a/gmon/mcount.c b/gmon/mcount.c
index 0c2acd2890..9d4a1a50fa 100644
--- a/gmon/mcount.c
+++ b/gmon/mcount.c
@@ -69,8 +69,8 @@ _MCOUNT_DECL(frompc, selfpc)	/* _mcount; may be static, inline, etc */
 	 * check that we are profiling
 	 * and that we aren't recursively invoked.
 	 */
-	if (catomic_compare_and_exchange_bool_acq (&p->state, GMON_PROF_BUSY,
-						   GMON_PROF_ON))
+	if (atomic_compare_and_exchange_bool_acq (&p->state, GMON_PROF_BUSY,
+						  GMON_PROF_ON))
 	  return;
 
 	/*