Skip to content

Commit

Permalink
* sysdeps/unix/sysv/linux/powerpc/dl-vdso.c: Move to...
Browse files Browse the repository at this point in the history
	* sysdeps/unix/sysv/linux/dl-vdso.c: ...here.
	* sysdeps/unix/sysv/linux/powerpc/dl-vdso.h: Move to...
	* sysdeps/unix/sysv/linux/dl-vdso.h: ...here.
	* csu/libc-start.c: Pretty printing.
	Use VDSO_SETUP if defined.
	* sysdeps/unix/sysv/linux/powerpc/libc-start.c: Define VDSO_SETUP
	and let generic code call into _libc_vdso_platform_setup.
	* sysdeps/unix/sysv/linux/x86_64/libc-start.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/bits/libc-vdso.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Pretty printing.
	Define INLINE_VSYSCALL and INTERNAL_VSYSCALL.
	* sysdeps/unix/sysv/linux/x86_64/Versions: Export __vdso_clock_gettime
	for GLIBC_PRIVATE.
	* sysdeps/unix/sysv/linux/x86_64/Makefile [subdir=elf]
	(sysdep_rountines): Add dl-vdso.

	* sysdeps/unix/sysv/linux/powerpc/Makefile: Use sysdep_routines instead
	of routines.

	* sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h: Add
	attribute_hidden to __vdso_gettimeofday prototype.
  • Loading branch information
Ulrich Drepper committed Aug 12, 2007
1 parent f47e262 commit 75fb247
Show file tree
Hide file tree
Showing 12 changed files with 266 additions and 104 deletions.
25 changes: 25 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
2007-08-12 Ulrich Drepper <[email protected]>

* sysdeps/unix/sysv/linux/powerpc/dl-vdso.c: Move to...
* sysdeps/unix/sysv/linux/dl-vdso.c: ...here.
* sysdeps/unix/sysv/linux/powerpc/dl-vdso.h: Move to...
* sysdeps/unix/sysv/linux/dl-vdso.h: ...here.
* csu/libc-start.c: Pretty printing.
Use VDSO_SETUP if defined.
* sysdeps/unix/sysv/linux/powerpc/libc-start.c: Define VDSO_SETUP
and let generic code call into _libc_vdso_platform_setup.
* sysdeps/unix/sysv/linux/x86_64/libc-start.c: New file.
* sysdeps/unix/sysv/linux/x86_64/bits/libc-vdso.h: New file.
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Pretty printing.
Define INLINE_VSYSCALL and INTERNAL_VSYSCALL.
* sysdeps/unix/sysv/linux/x86_64/Versions: Export __vdso_clock_gettime
for GLIBC_PRIVATE.
* sysdeps/unix/sysv/linux/x86_64/Makefile [subdir=elf]
(sysdep_rountines): Add dl-vdso.

* sysdeps/unix/sysv/linux/powerpc/Makefile: Use sysdep_routines instead
of routines.

* sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h: Add
attribute_hidden to __vdso_gettimeofday prototype.

2007-08-12 Roland McGrath <[email protected]>

* manual/stdio.texi (Variable Arguments Output): Fix xref to gcc manual.
Expand Down
12 changes: 7 additions & 5 deletions csu/libc-start.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,16 +138,18 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
functions are using thread functions if these are available and
we need to setup errno. */
__pthread_initialize_minimal ();
#endif

# ifndef SHARED
/* Set up the stack checker's canary. */
uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard ();
# ifdef THREAD_SET_STACK_GUARD
# ifdef THREAD_SET_STACK_GUARD
THREAD_SET_STACK_GUARD (stack_chk_guard);
# else
# else
__stack_chk_guard = stack_chk_guard;
# endif
# endif
#endif

#ifdef VDSO_SETUP
VDSO_SETUP ();
#endif

/* Register the destructor of the dynamic linker if there is any. */
Expand Down
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion sysdeps/unix/sysv/linux/powerpc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ gen-as-const-headers += ucontext_i.sym
endif

ifeq ($(subdir),elf)
routines += dl-vdso
sysdep_routines += dl-vdso
endif
2 changes: 1 addition & 1 deletion sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

#ifdef SHARED

extern void *__vdso_gettimeofday;
extern void *__vdso_gettimeofday attribute_hidden;

extern void *__vdso_clock_gettime;

Expand Down
42 changes: 21 additions & 21 deletions sysdeps/unix/sysv/linux/powerpc/libc-start.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,6 @@
#include <bp-start.h>
#include <bp-sym.h>

int __cache_line_size attribute_hidden;
/* The main work is done in the generic function. */
#define LIBC_START_MAIN generic_start_main
#define LIBC_START_DISABLE_INLINE
#define LIBC_START_MAIN_AUXVEC_ARG
#define MAIN_AUXVEC_ARG
#define INIT_MAIN_ARGS
#include <csu/libc-start.c>

struct startup_info
{
void *__unbounded sda_base;
int (*main) (int, char **, char **, void *);
int (*init) (int, char **, char **, void *);
void (*fini) (void);
};


#ifdef SHARED
# include <sys/time.h>
Expand Down Expand Up @@ -69,8 +52,28 @@ static inline void _libc_vdso_platform_setup (void)
__vdso_get_tbfreq = _dl_vdso_vsym ("__kernel_vdso_get_tbfreq",
"LINUX_2.6.15");
}

# define VDSO_SETUP _libc_vdso_platform_setup
#endif


int __cache_line_size attribute_hidden;
/* The main work is done in the generic function. */
#define LIBC_START_MAIN generic_start_main
#define LIBC_START_DISABLE_INLINE
#define LIBC_START_MAIN_AUXVEC_ARG
#define MAIN_AUXVEC_ARG
#define INIT_MAIN_ARGS
#include <csu/libc-start.c>

struct startup_info
{
void *__unbounded sda_base;
int (*main) (int, char **, char **, void *);
int (*init) (int, char **, char **, void *);
void (*fini) (void);
};

int
/* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the
BPs in the arglist of startup_info.main and startup_info.init. */
Expand Down Expand Up @@ -117,10 +120,7 @@ int
__cache_line_size = av->a_un.a_val;
break;
}
#ifdef SHARED
/* Resolve and initialize function pointers for VDSO functions. */
_libc_vdso_platform_setup ();
#endif

return generic_start_main (stinfo->main, argc, ubp_av, auxvec,
stinfo->init, stinfo->fini, rtld_fini,
stack_on_entry);
Expand Down
4 changes: 4 additions & 0 deletions sysdeps/unix/sysv/linux/x86_64/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@ endif
ifeq ($(subdir),csu)
gen-as-const-headers += ucontext_i.sym
endif

ifeq ($(subdir),elf)
sysdep_routines += dl-vdso
endif
3 changes: 3 additions & 0 deletions sysdeps/unix/sysv/linux/x86_64/Versions
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,7 @@ libc {

modify_ldt;
}
GLIBC_PRIVATE {
__vdso_clock_gettime;
}
}
35 changes: 35 additions & 0 deletions sysdeps/unix/sysv/linux/x86_64/bits/libc-vdso.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/* Resolve function pointers to VDSO functions.
Copyright (C) 2005, 2007 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, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */

#ifndef _LIBC_VDSO_H
#define _LIBC_VDSO_H

#include <time.h>
#include <sys/time.h>

#ifdef SHARED

extern int (*__vdso_gettimeofday) (struct timeval *, void *)
attribute_hidden;

extern int (*__vdso_clock_gettime) (clockid_t, struct timespec *);

#endif

#endif /* _LIBC_VDSO_H */
39 changes: 39 additions & 0 deletions sysdeps/unix/sysv/linux/x86_64/libc-start.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/* Copyright (C) 2007 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, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */

#ifdef SHARED
# include <dl-vdso.h>
# include <bits/libc-vdso.h>

int (*__vdso_gettimeofday) (struct timeval *, void *) attribute_hidden;

int (*__vdso_clock_gettime) (clockid_t, struct timespec *);


static inline void
_libc_vdso_platform_setup (void)
{
__vdso_gettimeofday = _dl_vdso_vsym ("gettimeofday", "LINUX_2.6");

__vdso_clock_gettime = _dl_vdso_vsym ("clock_gettime", "LINUX_2.6");
}

# define VDSO_SETUP _libc_vdso_platform_setup
#endif

#include <csu/libc-start.c>
Loading

0 comments on commit 75fb247

Please sign in to comment.