Module Name:    src
Committed By:   joerg
Date:           Tue Mar 13 21:00:32 UTC 2012

Modified Files:
        src/libexec/ld.elf_so: rtld.c rtld.h

Log Message:
Mark _rtld_debug_state as not to be inlined. Add an explicit instruction
barrier to prevent removal of calls to it.


To generate a diff of this commit:
cvs rdiff -u -r1.156 -r1.157 src/libexec/ld.elf_so/rtld.c
cvs rdiff -u -r1.108 -r1.109 src/libexec/ld.elf_so/rtld.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/libexec/ld.elf_so/rtld.c
diff -u src/libexec/ld.elf_so/rtld.c:1.156 src/libexec/ld.elf_so/rtld.c:1.157
--- src/libexec/ld.elf_so/rtld.c:1.156	Thu Feb 16 23:00:39 2012
+++ src/libexec/ld.elf_so/rtld.c	Tue Mar 13 21:00:31 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtld.c,v 1.156 2012/02/16 23:00:39 joerg Exp $	 */
+/*	$NetBSD: rtld.c,v 1.157 2012/03/13 21:00:31 joerg Exp $	 */
 
 /*
  * Copyright 1996 John D. Polstra.
@@ -40,7 +40,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: rtld.c,v 1.156 2012/02/16 23:00:39 joerg Exp $");
+__RCSID("$NetBSD: rtld.c,v 1.157 2012/03/13 21:00:31 joerg Exp $");
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -1385,7 +1385,8 @@ void
 _rtld_debug_state(void)
 {
 
-	/* do nothing */
+	/* Prevent optimizer from removing calls to this function */
+	__insn_barrier();
 }
 
 void

Index: src/libexec/ld.elf_so/rtld.h
diff -u src/libexec/ld.elf_so/rtld.h:1.108 src/libexec/ld.elf_so/rtld.h:1.109
--- src/libexec/ld.elf_so/rtld.h:1.108	Thu Feb 16 23:00:39 2012
+++ src/libexec/ld.elf_so/rtld.h	Tue Mar 13 21:00:32 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtld.h,v 1.108 2012/02/16 23:00:39 joerg Exp $	 */
+/*	$NetBSD: rtld.h,v 1.109 2012/03/13 21:00:32 joerg Exp $	 */
 
 /*
  * Copyright 1996 John D. Polstra.
@@ -338,7 +338,7 @@ void _rtld_error(const char *, ...)
      __attribute__((__format__(__printf__,1,2)));
 void _rtld_die(void) __attribute__((__noreturn__));
 void *_rtld_objmain_sym(const char *);
-__dso_public void _rtld_debug_state(void);
+__dso_public void _rtld_debug_state(void) __noinline;
 void _rtld_linkmap_add(Obj_Entry *);
 void _rtld_linkmap_delete(Obj_Entry *);
 void _rtld_objlist_push_head(Objlist *, Obj_Entry *);

Reply via email to