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

« back to all changes in this revision

Viewing changes to ports/sysdeps/ia64/crti.S

  • 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
/* Special .init and .fini section support for IA64.
 
2
   Copyright (C) 2000-2012 Free Software Foundation, Inc.
 
3
   This file is part of the GNU C Library.
 
4
 
 
5
   The GNU C Library is free software; you can redistribute it and/or
 
6
   modify it under the terms of the GNU Lesser General Public
 
7
   License as published by the Free Software Foundation; either
 
8
   version 2.1 of the License, or (at your option) any later version.
 
9
 
 
10
   In addition to the permissions in the GNU Lesser General Public
 
11
   License, the Free Software Foundation gives you unlimited
 
12
   permission to link the compiled version of this file with other
 
13
   programs, and to distribute those programs without any restriction
 
14
   coming from the use of this file. (The GNU Lesser General Public
 
15
   License restrictions do apply in other respects; for example, they
 
16
   cover modification of the file, and distribution when not linked
 
17
   into another program.)
 
18
 
 
19
   Note that people who make modified versions of this file are not
 
20
   obligated to grant this special exception for their modified
 
21
   versions; it is their choice whether to do so. The GNU Lesser
 
22
   General Public License gives permission to release a modified
 
23
   version without this exception; this exception also makes it
 
24
   possible to release a modified version which carries forward this
 
25
   exception.
 
26
 
 
27
   The GNU C Library is distributed in the hope that it will be useful,
 
28
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
29
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
30
   Lesser General Public License for more details.
 
31
 
 
32
   You should have received a copy of the GNU Lesser General Public
 
33
   License along with the GNU C Library.  If not, see
 
34
   <http://www.gnu.org/licenses/>.  */
 
35
 
 
36
/* crti.S puts a function prologue at the beginning of the .init and
 
37
   .fini sections and defines global symbols for those addresses, so
 
38
   they can be called as functions.  The symbols _init and _fini are
 
39
   magic and cause the linker to emit DT_INIT and DT_FINI.  */
 
40
 
 
41
#include <libc-symbols.h>
 
42
#include <sysdep.h>
 
43
#undef ret
 
44
 
 
45
#ifndef PREINIT_FUNCTION
 
46
# define PREINIT_FUNCTION __gmon_start__
 
47
#endif
 
48
 
 
49
#ifndef PREINIT_FUNCTION_WEAK
 
50
# define PREINIT_FUNCTION_WEAK 1
 
51
#endif
 
52
 
 
53
#if PREINIT_FUNCTION_WEAK
 
54
        weak_extern (PREINIT_FUNCTION)
 
55
#else
 
56
        .hidden PREINIT_FUNCTION
 
57
#endif
 
58
 
 
59
/* If we have working .init_array support, we want to keep the .init
 
60
   section empty (apart from the mandatory prologue/epilogue.  This
 
61
   ensures that the default unwind conventions (return-pointer in b0,
 
62
   frame state in ar.pfs, etc.)  will do the Right Thing.  To ensure
 
63
   an empty .init section, we register gmon_initializer() via the
 
64
   .init_array.
 
65
 
 
66
    --davidm 02/10/29 */
 
67
 
 
68
#if PREINIT_FUNCTION_WEAK
 
69
/* This blob of assembly code is one simple C function:
 
70
 
 
71
static void
 
72
__attribute__ ((used))
 
73
gmon_initializer (void)
 
74
{
 
75
  extern void weak_function __gmon_start__ (void);
 
76
 
 
77
  if (__gmon_start__)
 
78
    (*__gmon_start__)();
 
79
}
 
80
 */
 
81
        .text
 
82
        .align 64
 
83
        .proc gmon_initializer#
 
84
gmon_initializer:
 
85
        .prologue 12, 32
 
86
        .mmi
 
87
        .save ar.pfs, r33
 
88
        alloc r33 = ar.pfs, 0, 3, 0, 0
 
89
        addl r14 = @ltoff(@fptr(PREINIT_FUNCTION#)), gp
 
90
        .save rp, r32
 
91
        mov r32 = b0
 
92
        .mmi
 
93
        mov r34 = r1
 
94
        .body
 
95
        ;;
 
96
        ld8 r14 = [r14]
 
97
        nop 0
 
98
        ;;
 
99
        .mib
 
100
        cmp.eq p6, p7 = 0, r14
 
101
        nop 0
 
102
        (p6) br.cond.spnt .L1
 
103
        ;;
 
104
        .mib
 
105
        nop 0
 
106
        nop 0
 
107
        br.call.sptk.many b0 = PREINIT_FUNCTION#
 
108
        ;;
 
109
        .mmi
 
110
        mov r1 = r34
 
111
        nop 0
 
112
        nop 0
 
113
.L1:
 
114
        .mii
 
115
        nop 0
 
116
        mov ar.pfs = r33
 
117
        nop 0
 
118
        ;;
 
119
        .mib
 
120
        nop 0
 
121
        mov b0 = r32
 
122
        br.ret.sptk.many b0
 
123
        .endp gmon_initializer#
 
124
# undef PREINIT_FUNCTION
 
125
# define PREINIT_FUNCTION gmon_initializer
 
126
#endif
 
127
        .section .init_array, "aw"
 
128
        data8 @fptr(PREINIT_FUNCTION)
 
129
 
 
130
        .section .init,"ax",@progbits
 
131
        .global _init#
 
132
        .proc _init#
 
133
_init:
 
134
        .prologue
 
135
        .save ar.pfs, r34
 
136
        alloc r34 = ar.pfs, 0, 3, 0, 0
 
137
        .vframe r32
 
138
        mov r32 = r12
 
139
        .save rp, r33
 
140
        mov r33 = b0
 
141
        .body
 
142
        adds r12 = -16, r12
 
143
        ;;              /* see gmon_initializer() above */
 
144
        .endp _init#
 
145
 
 
146
        .section .fini,"ax",@progbits
 
147
        .global _fini#
 
148
        .proc _fini#
 
149
_fini:
 
150
        .prologue
 
151
        .save ar.pfs, r34
 
152
        alloc r34 = ar.pfs, 0, 3, 0, 0
 
153
        .vframe r32
 
154
        mov r32 = r12
 
155
        .save rp, r33
 
156
        mov r33 = b0
 
157
        .body
 
158
        adds r12 = -16, r12
 
159
        ;;
 
160
        .endp _fini#