~ubuntu-branches/ubuntu/utopic/eglibc/utopic

« back to all changes in this revision

Viewing changes to sysdeps/x86_64/bits/link.h

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2012-10-26 05:14:58 UTC
  • mfrom: (1.5.1) (4.4.22 experimental)
  • Revision ID: package-import@ubuntu.com-20121026051458-oryotr4i03ob5pab
Tags: 2.16-0ubuntu1
* Merge with unreleased 2.16 in Debian experimental, remaining changes:
  - Drop the Breaks line from libc6, which refers to a Debian transition
  - Remove the libc6 recommends on libc6-i686, which we don't build
  - Enable libc6{,-dev}-armel on armhf and libc6{-dev}-armhf on armel
  - Ship update-locale and validlocale in /usr/sbin in libc-bin
  - Don't build locales or locales-all in Ubuntu, we rely on langpacks
  - Heavily mangle the way we do service restarting on major upgrades
  - Use different MIN_KERNEL_SUPPORTED versions than Debian, due to
    buildd needs.  This should be universally bumped to 3.2.0 once all
    our buildds (including the PPA guests) are running precise kernels
  - Build i386 variants as -march=i686, build amd64 with -O3, and build
    ppc64 variants (both 64-bit and 32-bit) with -O3 -fno-tree-vectorize
  - Re-enable unsubmitted-ldconfig-cache-abi.diff and rebuild the cache
    on upgrades from previous versions that used a different constant
  - debian/patches/any/local-CVE-2012-3406.diff: switch to malloc when
    array grows too large to handle via alloca extension (CVE-2012-3406)
  - Build generic i386/i686 flavour with -mno-tls-direct-seg-refs
* Changes added/dropped with this merge while reducing our delta:
  - Stop building glibc docs from the eglibc source, and instead make
    the glibc-docs stub have a hard dependency on glibc-doc-reference
  - Remove outdated conflicts against ancient versions of ia32-libs
  - Drop the tzdata dependency from libc6, it's in required and minimal
  - Use gcc-4.7/g++-4.7 by default on all our supported architectures
  - Save our historical changelog as changelog.ubuntu in the source
  - Drop nscd's libaudit build-dep for now, as libaudit is in universe
  - Drop the unnecessary Breaks from libc6 to locales and locales-all
  - Ship xen's ld.so.conf.d snippet as /etc/ld.so.conf.d/libc6-xen.conf
* Disable hard failures on the test suite for the first upload to raring

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2004, 2005, 2009, 2011 Free Software Foundation, Inc.
2
 
   This file is part of the GNU C Library.
3
 
 
4
 
   The GNU C Library is free software; you can redistribute it and/or
5
 
   modify it under the terms of the GNU Lesser General Public
6
 
   License as published by the Free Software Foundation; either
7
 
   version 2.1 of the License, or (at your option) any later version.
8
 
 
9
 
   The GNU C Library is distributed in the hope that it will be useful,
10
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
 
   Lesser General Public License for more details.
13
 
 
14
 
   You should have received a copy of the GNU Lesser General Public
15
 
   License along with the GNU C Library; if not, write to the Free
16
 
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17
 
   02111-1307 USA.  */
18
 
 
19
 
#ifndef _LINK_H
20
 
# error "Never include <bits/link.h> directly; use <link.h> instead."
21
 
#endif
22
 
 
23
 
 
24
 
#if __ELF_NATIVE_CLASS == 32
25
 
/* Registers for entry into PLT on IA-32.  */
26
 
typedef struct La_i86_regs
27
 
{
28
 
  uint32_t lr_edx;
29
 
  uint32_t lr_ecx;
30
 
  uint32_t lr_eax;
31
 
  uint32_t lr_ebp;
32
 
  uint32_t lr_esp;
33
 
} La_i86_regs;
34
 
 
35
 
/* Return values for calls from PLT on IA-32.  */
36
 
typedef struct La_i86_retval
37
 
{
38
 
  uint32_t lrv_eax;
39
 
  uint32_t lrv_edx;
40
 
  long double lrv_st0;
41
 
  long double lrv_st1;
42
 
} La_i86_retval;
43
 
 
44
 
 
45
 
__BEGIN_DECLS
46
 
 
47
 
extern Elf32_Addr la_i86_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
48
 
                                       uintptr_t *__refcook,
49
 
                                       uintptr_t *__defcook,
50
 
                                       La_i86_regs *__regs,
51
 
                                       unsigned int *__flags,
52
 
                                       const char *__symname,
53
 
                                       long int *__framesizep);
54
 
extern unsigned int la_i86_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
55
 
                                        uintptr_t *__refcook,
56
 
                                        uintptr_t *__defcook,
57
 
                                        const La_i86_regs *__inregs,
58
 
                                        La_i86_retval *__outregs,
59
 
                                        const char *symname);
60
 
 
61
 
__END_DECLS
62
 
 
63
 
#else
64
 
 
65
 
/* Registers for entry into PLT on x86-64.  */
66
 
# if __GNUC_PREREQ (4,0)
67
 
typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16)));
68
 
typedef float La_x86_64_ymm
69
 
    __attribute__ ((__vector_size__ (32), __aligned__ (16)));
70
 
# else
71
 
typedef float La_x86_64_xmm __attribute__ ((__mode__ (__V4SF__)));
72
 
# endif
73
 
 
74
 
typedef union
75
 
{
76
 
# if __GNUC_PREREQ (4,0)
77
 
  La_x86_64_ymm ymm[2];
78
 
# endif
79
 
  La_x86_64_xmm xmm[4];
80
 
} La_x86_64_vector __attribute__ ((__aligned__ (16)));
81
 
 
82
 
typedef struct La_x86_64_regs
83
 
{
84
 
  uint64_t lr_rdx;
85
 
  uint64_t lr_r8;
86
 
  uint64_t lr_r9;
87
 
  uint64_t lr_rcx;
88
 
  uint64_t lr_rsi;
89
 
  uint64_t lr_rdi;
90
 
  uint64_t lr_rbp;
91
 
  uint64_t lr_rsp;
92
 
  La_x86_64_xmm lr_xmm[8];
93
 
  La_x86_64_vector lr_vector[8];
94
 
} La_x86_64_regs;
95
 
 
96
 
/* Return values for calls from PLT on x86-64.  */
97
 
typedef struct La_x86_64_retval
98
 
{
99
 
  uint64_t lrv_rax;
100
 
  uint64_t lrv_rdx;
101
 
  La_x86_64_xmm lrv_xmm0;
102
 
  La_x86_64_xmm lrv_xmm1;
103
 
  long double lrv_st0;
104
 
  long double lrv_st1;
105
 
  La_x86_64_vector lrv_vector0;
106
 
  La_x86_64_vector lrv_vector1;
107
 
} La_x86_64_retval;
108
 
 
109
 
 
110
 
__BEGIN_DECLS
111
 
 
112
 
extern Elf64_Addr la_x86_64_gnu_pltenter (Elf64_Sym *__sym,
113
 
                                          unsigned int __ndx,
114
 
                                          uintptr_t *__refcook,
115
 
                                          uintptr_t *__defcook,
116
 
                                          La_x86_64_regs *__regs,
117
 
                                          unsigned int *__flags,
118
 
                                          const char *__symname,
119
 
                                          long int *__framesizep);
120
 
extern unsigned int la_x86_64_gnu_pltexit (Elf64_Sym *__sym,
121
 
                                           unsigned int __ndx,
122
 
                                           uintptr_t *__refcook,
123
 
                                           uintptr_t *__defcook,
124
 
                                           const La_x86_64_regs *__inregs,
125
 
                                           La_x86_64_retval *__outregs,
126
 
                                           const char *__symname);
127
 
 
128
 
__END_DECLS
129
 
 
130
 
#endif