mirror of
git://sourceware.org/git/glibc.git
synced 2026-09-10 05:59:39 +08:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac58450e8c |
@@ -1,2 +1 @@
|
||||
ChangeLog merge=merge-changelog
|
||||
timezone/* -whitespace
|
||||
|
||||
@@ -36,11 +36,6 @@ TODO.html
|
||||
|
||||
autom4te*.cache
|
||||
|
||||
core
|
||||
.gdb_history
|
||||
.gdbinit
|
||||
|
||||
/linuxthreads
|
||||
/linuxthreads_db
|
||||
/rtkaio
|
||||
*.pyc
|
||||
|
||||
@@ -0,0 +1,495 @@
|
||||
_IO_default_finish
|
||||
_IO_default_pbackfail
|
||||
_IO_default_xsgetn
|
||||
_IO_fgets
|
||||
_IO_file_open
|
||||
_IO_file_read
|
||||
_IO_fprintf
|
||||
_IO_free_backup_area
|
||||
_IO_free_wbackup_area
|
||||
_IO_ftell
|
||||
_IO_getc
|
||||
_IO_getline
|
||||
_IO_getline_info
|
||||
_IO_gets
|
||||
_IO_peekc_locked
|
||||
_IO_printf
|
||||
_IO_seekoff
|
||||
_IO_seekpos
|
||||
_IO_sprintf
|
||||
_IO_sscanf
|
||||
_IO_str_pbackfail
|
||||
_IO_unsave_markers
|
||||
_IO_unsave_wmarkers
|
||||
_IO_vfprintf
|
||||
_IO_vfscanf
|
||||
_IO_vsprintf
|
||||
_IO_wdefault_finish
|
||||
_IO_wdefault_pbackfail
|
||||
_IO_wdefault_xsgetn
|
||||
_IO_wfile_seekoff
|
||||
_IO_wfile_underflow
|
||||
__asprintf
|
||||
__assert
|
||||
__assert_fail
|
||||
__assert_perror_fail
|
||||
__backtrace_symbols
|
||||
__backtrace_symbols_fd
|
||||
__close
|
||||
__connect
|
||||
__dcgettext
|
||||
__deregister_frame
|
||||
__deregister_frame_info
|
||||
__deregister_frame_info_bases
|
||||
__dgettext
|
||||
__endmntent
|
||||
__fork
|
||||
__fpurge
|
||||
__freelocale
|
||||
__getdelim
|
||||
__getmntent_r
|
||||
__gmtime_r
|
||||
__internal_endnetgrent
|
||||
__internal_getnetgrent_r
|
||||
__libc_accept
|
||||
__libc_close
|
||||
__libc_connect
|
||||
__libc_fork
|
||||
__libc_free
|
||||
__libc_freeres
|
||||
__libc_fsync
|
||||
__libc_memalign
|
||||
__libc_msgrcv
|
||||
__libc_msgsnd
|
||||
__libc_msync
|
||||
__libc_nanosleep
|
||||
__libc_open
|
||||
__libc_pause
|
||||
__libc_pread
|
||||
__libc_pwrite
|
||||
__libc_read
|
||||
__libc_readv
|
||||
__libc_realloc
|
||||
__libc_recv
|
||||
__libc_recvfrom
|
||||
__libc_recvmsg
|
||||
__libc_send
|
||||
__libc_sendmsg
|
||||
__libc_sendto
|
||||
__libc_start_main
|
||||
__libc_system
|
||||
__libc_tcdrain
|
||||
__libc_valloc
|
||||
__libc_wait
|
||||
__libc_waitpid
|
||||
__libc_write
|
||||
__libc_writev
|
||||
__mbrlen
|
||||
__mbrtowc
|
||||
__nanosleep
|
||||
__newlocale
|
||||
__nss_group_lookup
|
||||
__nss_hostname_digits_dots
|
||||
__nss_hosts_lookup
|
||||
__nss_lookup_function
|
||||
__nss_next
|
||||
__nss_passwd_lookup
|
||||
__open
|
||||
__open_catalog
|
||||
__poll
|
||||
__printf_fp
|
||||
__pselect
|
||||
__read
|
||||
__res_init
|
||||
__res_ninit
|
||||
__select
|
||||
__send
|
||||
__setmntent
|
||||
__sigsuspend
|
||||
__sigtimedwait
|
||||
__sigwait
|
||||
__sigwaitinfo
|
||||
__strcoll_l
|
||||
__strerror_r
|
||||
__strfmon_l
|
||||
__strftime_l
|
||||
__strxfrm_l
|
||||
__uflow
|
||||
__underflow
|
||||
__vfscanf
|
||||
__vsnprintf
|
||||
__vsscanf
|
||||
__wait
|
||||
__waitid
|
||||
__waitpid
|
||||
__wcscoll_l
|
||||
__wcsftime_l
|
||||
__wcsxfrm_l
|
||||
__write
|
||||
__wuflow
|
||||
__wunderflow
|
||||
_dl_close
|
||||
_dl_open
|
||||
accept
|
||||
addmntent
|
||||
addseverity
|
||||
alphasort
|
||||
argp_error
|
||||
argp_failure
|
||||
argp_state_help
|
||||
argp_usage
|
||||
argz_add
|
||||
argz_add_sep
|
||||
argz_append
|
||||
argz_create_sep
|
||||
argz_delete
|
||||
argz_insert
|
||||
argz_replace
|
||||
asctime
|
||||
asctime_r
|
||||
asprintf
|
||||
backtrace_symbols
|
||||
backtrace_symbols_fd
|
||||
btowc
|
||||
canonicalize_file_name
|
||||
catclose
|
||||
catopen
|
||||
cfree
|
||||
clearenv
|
||||
close
|
||||
closedir
|
||||
connect
|
||||
creat
|
||||
ctime
|
||||
ctime_r
|
||||
cuserid
|
||||
dcgettext
|
||||
dcngettext
|
||||
dgettext
|
||||
dngettext
|
||||
dprintf
|
||||
ecvt
|
||||
ecvt_r
|
||||
endaliasent
|
||||
endfsent
|
||||
endgrent
|
||||
endhostent
|
||||
endmntent
|
||||
endmntent
|
||||
endnetent
|
||||
endprotoent
|
||||
endpwent
|
||||
endrpcent
|
||||
endservent
|
||||
endspent
|
||||
endttyent
|
||||
endusershell
|
||||
envz_add
|
||||
envz_merge
|
||||
envz_remove
|
||||
err
|
||||
error
|
||||
error_at_line
|
||||
errx
|
||||
ether_hostton
|
||||
ether_ntoa
|
||||
ether_ntoa_r
|
||||
ether_ntohost
|
||||
exit
|
||||
fcvt
|
||||
fcvt_r
|
||||
fexecve
|
||||
fgetc
|
||||
fgetc_unlocked
|
||||
fgetgrent
|
||||
fgetgrent_r
|
||||
fgetpwent
|
||||
fgetpwent_r
|
||||
fgets
|
||||
fgets_unlocked
|
||||
fgetspent
|
||||
fgetspent_r
|
||||
fgetwc
|
||||
fgetwc_unlocked
|
||||
fgetws
|
||||
fgetws_unlocked
|
||||
fmemopen
|
||||
fmtmsg
|
||||
fopen64
|
||||
fork
|
||||
fprintf
|
||||
free
|
||||
freelocale
|
||||
freopen
|
||||
freopen64
|
||||
fscanf
|
||||
fseek
|
||||
fseeko
|
||||
fseeko64
|
||||
fstatvfs
|
||||
fstatvfs64
|
||||
fsync
|
||||
ftell
|
||||
ftello
|
||||
ftello64
|
||||
fts_children
|
||||
fts_close
|
||||
fts_open
|
||||
fts_read
|
||||
fwprintf
|
||||
fwscanf
|
||||
gcvt
|
||||
get_current_dir_name
|
||||
get_nprocs
|
||||
get_nprocs_conf
|
||||
getaliasbyname
|
||||
getaliasent
|
||||
getc
|
||||
getc_unlocked
|
||||
getchar
|
||||
getchar_unlocked
|
||||
getcwd
|
||||
getdate
|
||||
getdate_r
|
||||
getdelim
|
||||
getgrent
|
||||
getgrgid
|
||||
getgrnam
|
||||
getgrouplist
|
||||
gethostbyaddr
|
||||
gethostbyname
|
||||
gethostbyname2
|
||||
gethostent
|
||||
gethostid
|
||||
getline
|
||||
getmntent
|
||||
getmntent_r
|
||||
getnameinfo
|
||||
getnetbyaddr
|
||||
getnetbyname
|
||||
getnetent
|
||||
getopt
|
||||
getopt_long
|
||||
getopt_long_only
|
||||
getprotobyname
|
||||
getprotobynumber
|
||||
getprotoent
|
||||
getpt
|
||||
getpw
|
||||
getpwent
|
||||
getpwnam
|
||||
getpwuid
|
||||
getrpcbyname
|
||||
getrpcbynumber
|
||||
getrpcent
|
||||
gets
|
||||
getservbyname
|
||||
getservbyport
|
||||
getservent
|
||||
getspent
|
||||
getspnam
|
||||
gettext
|
||||
getttyent
|
||||
getttynam
|
||||
getwc
|
||||
getwc_unlocked
|
||||
getwchar
|
||||
getwchar_unlocked
|
||||
getwd
|
||||
glob
|
||||
globfree
|
||||
globfree64
|
||||
gmtime
|
||||
gmtime_r
|
||||
hdestroy
|
||||
hdestroy_r
|
||||
herror
|
||||
hstrerror
|
||||
iconv
|
||||
iconv_close
|
||||
iconv_open
|
||||
if_freenameindex
|
||||
if_indextoname
|
||||
if_nameindex
|
||||
if_nametoindex
|
||||
inet6_option_alloc
|
||||
inet6_option_append
|
||||
inet_ntoa
|
||||
initgroups
|
||||
lckpwdf
|
||||
localtime
|
||||
localtime_r
|
||||
lockf
|
||||
makecontext
|
||||
mblen
|
||||
mbrlen
|
||||
mbrtowc
|
||||
mbsnrtowcs
|
||||
mbsrtowcs
|
||||
mbstowcs
|
||||
mbtowc
|
||||
mcheck
|
||||
mcheck_pedantic
|
||||
memalign
|
||||
mkdtemp
|
||||
mkstemp
|
||||
mkstemp64
|
||||
mktemp
|
||||
mktime
|
||||
msgrcv
|
||||
msgsnd
|
||||
msync
|
||||
mtrace
|
||||
mtrace
|
||||
muntrace
|
||||
nanosleep
|
||||
newlocale
|
||||
ngettext
|
||||
obstack_printf
|
||||
obstack_vprintf
|
||||
open
|
||||
open_memstream
|
||||
parse_printf_format
|
||||
pause
|
||||
perror
|
||||
poll
|
||||
posix_fallocate
|
||||
posix_memalign
|
||||
posix_openpt
|
||||
posix_spawn
|
||||
posix_spawn_file_actions_addclose
|
||||
posix_spawn_file_actions_adddup2
|
||||
posix_spawn_file_actions_addopen
|
||||
posix_spawn_file_actions_destroy
|
||||
posix_spawnp
|
||||
pread
|
||||
printf
|
||||
printf_size
|
||||
pselect
|
||||
psignal
|
||||
pthread_exit
|
||||
putenv
|
||||
putgrent
|
||||
putpwent
|
||||
putspent
|
||||
pwrite
|
||||
qecvt
|
||||
qecvt_r
|
||||
qfcvt
|
||||
qfcvt_r
|
||||
qgcvt
|
||||
qsort
|
||||
re_comp
|
||||
re_compile_pattern
|
||||
read
|
||||
readv
|
||||
realloc
|
||||
recv
|
||||
recvfrom
|
||||
recvmsg
|
||||
regcomp
|
||||
regerror
|
||||
regfree
|
||||
rewind
|
||||
scandir
|
||||
scanf
|
||||
select
|
||||
send
|
||||
send
|
||||
sendmsg
|
||||
sendto
|
||||
setaliasent
|
||||
setenv
|
||||
setgrent
|
||||
sethostent
|
||||
setlocale
|
||||
setmntent
|
||||
setnetent
|
||||
setprotoent
|
||||
setpwent
|
||||
setrpcent
|
||||
setservent
|
||||
setspent
|
||||
setttyent
|
||||
sgetspent
|
||||
sigpause
|
||||
sigsuspend
|
||||
sigtimedwait
|
||||
sigwait
|
||||
sigwaitinfo
|
||||
sleep
|
||||
snprintf
|
||||
sprintf
|
||||
sprofil
|
||||
sscanf
|
||||
statvfs
|
||||
statvfs64
|
||||
strcoll
|
||||
strcoll_l
|
||||
strerror
|
||||
strerror_r
|
||||
strfmon
|
||||
strfmon_l
|
||||
strftime
|
||||
strftime_l
|
||||
strsignal
|
||||
strxfrm
|
||||
strxfrm_l
|
||||
swprintf
|
||||
swscanf
|
||||
system
|
||||
tcdrain
|
||||
tdelete
|
||||
tempnam
|
||||
textdomain
|
||||
timegm
|
||||
timelocal
|
||||
tmpfile64
|
||||
tmpnam
|
||||
tmpnam_r
|
||||
ttyslot
|
||||
ulckpwdf
|
||||
usleep
|
||||
valloc
|
||||
vasprintf
|
||||
vdprintf
|
||||
verr
|
||||
verrx
|
||||
vfprintf
|
||||
vfscanf
|
||||
vfwprintf
|
||||
vfwscanf
|
||||
vprintf
|
||||
vscanf
|
||||
vsnprintf
|
||||
vsprintf
|
||||
vsscanf
|
||||
vswprintf
|
||||
vswscanf
|
||||
vwarn
|
||||
vwarnx
|
||||
vwprintf
|
||||
vwscanf
|
||||
wait
|
||||
waitid
|
||||
waitpid
|
||||
warn
|
||||
warnx
|
||||
wcrtomb
|
||||
wcscoll
|
||||
wcscoll_l
|
||||
wcsftime
|
||||
wcsftime_l
|
||||
wcsnrtombs
|
||||
wcsrtombs
|
||||
wcstombs
|
||||
wcsxfrm
|
||||
wcsxfrm_l
|
||||
wctob
|
||||
wctomb
|
||||
wordexp
|
||||
wordfree
|
||||
wprintf
|
||||
write
|
||||
writev
|
||||
wscanf
|
||||
@@ -0,0 +1,48 @@
|
||||
mkdtemp.os
|
||||
mktemp.os
|
||||
tmpnam.os
|
||||
tmpnam_r.os
|
||||
tempnam.os
|
||||
__assert.os
|
||||
assert.os
|
||||
assert-perr.os
|
||||
gconv_builtin.os
|
||||
gconv_simple.os
|
||||
gconv.os
|
||||
iconv.os
|
||||
strfmon.os
|
||||
strfmon_l.os
|
||||
argp-xinl.os
|
||||
iofdopen.os
|
||||
printf_fp.os
|
||||
printf_fphex.os
|
||||
printf_size.os
|
||||
strxfrm.os
|
||||
strxfrm_l.os
|
||||
strcoll.os
|
||||
strcoll_l.os
|
||||
alphasort.os
|
||||
alphasort64.os
|
||||
set-freeres.os
|
||||
btowc.os
|
||||
wctob.os
|
||||
mblen.os
|
||||
strops.os
|
||||
wstrops.os
|
||||
fmemopen.os
|
||||
closedir.os
|
||||
hsearch.os
|
||||
hsearch_r.os
|
||||
catgets.os
|
||||
digits_dots.os
|
||||
localealias.os
|
||||
gconv_conf.os
|
||||
mtrace.os
|
||||
tzfile.os
|
||||
tzset.os
|
||||
ruserpass.os
|
||||
mntent_r.os
|
||||
fstab.os
|
||||
getttyent.os
|
||||
nsswitch.os
|
||||
res_init.os
|
||||
@@ -1,12 +1,12 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
@@ -225,7 +225,7 @@ impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
@@ -303,9 +303,10 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
@@ -335,5 +336,5 @@ necessary. Here is a sample; alter the names:
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
|
||||
+46
-38
@@ -1,8 +1,9 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@@ -22,7 +23,8 @@ specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
strategy to use in any particular case, based on the explanations
|
||||
below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
@@ -55,7 +57,7 @@ modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
^L
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
@@ -87,9 +89,9 @@ libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
encourage the widest possible use of a certain library, so that it
|
||||
becomes a de-facto standard. To achieve this, non-free programs must
|
||||
be allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
@@ -111,7 +113,7 @@ modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
^L
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
@@ -136,8 +138,8 @@ included without limitation in the term "modification".)
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
interface definition files, plus the scripts used to control
|
||||
compilation and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
@@ -216,7 +218,7 @@ instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
^L
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
@@ -267,7 +269,7 @@ Library will still fall under Section 6.)
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
^L
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
@@ -303,10 +305,10 @@ of these things:
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
c) Accompany the work with a written offer, valid for at least
|
||||
three years, to give the same user the materials specified in
|
||||
Subsection 6a, above, for a charge no more than the cost of
|
||||
performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
@@ -329,7 +331,7 @@ restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
^L
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
@@ -370,7 +372,7 @@ subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
^L
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
@@ -384,9 +386,10 @@ all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply, and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
@@ -404,11 +407,11 @@ be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
original copyright holder who places the Library under this License
|
||||
may add an explicit geographical distribution limitation excluding those
|
||||
countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
@@ -422,7 +425,7 @@ conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
^L
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
@@ -456,19 +459,21 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
^L
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
redistribution under these terms (or, alternatively, under the terms
|
||||
of the ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library.
|
||||
It is safest to attach them to the start of each source file to most
|
||||
effectively convey the exclusion of warranty; and each file should
|
||||
have at least the "copyright" line and a pointer to where the full
|
||||
notice is found.
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
@@ -485,18 +490,21 @@ convey the exclusion of warranty; and each file should have at least the
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
You should also get your employer (if you work as a programmer) or
|
||||
your school, if any, to sign a "copyright disclaimer" for the library,
|
||||
if necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
library `Frob' (a library for tweaking knobs) written by James
|
||||
Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1017,7 +1017,7 @@
|
||||
* elf/dl-error.c (_dl_signal_error): Allocate memory for objname
|
||||
as well. Reported by Alexander V. Lukyanov <lav@yars.free.net>.
|
||||
|
||||
* iconvdata/gconv-modules: Add aliases for Windows charsets.
|
||||
* iconvdata/gconv-modules: Add aliases for Winblowz charsets.
|
||||
Patch by Joseph S. Myers <jsm28@cam.ac.uk>.
|
||||
|
||||
2000-10-13 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
+1
-1
@@ -525,7 +525,7 @@
|
||||
|
||||
1998-07-29 12:58 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* sysdeps/generic/glob.c: Windows compatibility stuff.
|
||||
* sysdeps/generic/glob.c: Winblowz compatibility stuff.
|
||||
Patch received from Paul D. Smith <psmith@BayNetworks.COM>.
|
||||
|
||||
1998-07-29 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
This file describes changes to the shared files of the ports/ add-on
|
||||
directory. The ports/ directory is no longer used and the files
|
||||
described here are all gone.
|
||||
|
||||
|
||||
|
||||
2014-04-29 Carlos O'Donell <carlos@redhat.com>
|
||||
|
||||
* README: Removed. The ports repository is no longer used.
|
||||
|
||||
2013-10-30 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* README: Change references to preconfigure.in to
|
||||
preconfigure.ac.
|
||||
|
||||
2013-01-02 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* README: Update copyright dates in example.
|
||||
|
||||
2012-12-06 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* README: Use sourceware.org in Bugzilla URL.
|
||||
|
||||
2012-12-05 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* README: Don't refer to ports as a separate repository. Don't
|
||||
refer to scripts/data/.
|
||||
|
||||
2012-07-03 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* .gitignore: Remove file.
|
||||
* Banner: Likewise.
|
||||
* Makefile: Likewise.
|
||||
|
||||
2012-06-21 Carlos O'Donell <carlos_odonell@mentor.com>
|
||||
|
||||
* .gitignore: New file.
|
||||
|
||||
2012-02-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* README: Update.
|
||||
|
||||
2012-02-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* README: Document use of ranges in copyright notices.
|
||||
|
||||
2011-11-29 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* bare, sysdeps/am29k, sysdeps/i860, sysdeps/i960, sysdeps/m88k,
|
||||
sysdeps/mach, sysdeps/rs6000, sysdeps/standalone, sysdeps/tahoe,
|
||||
sysdeps/unix/bsd, sysdeps/unix/sysv/hpux, sysdeps/unix/sysv/i386,
|
||||
sysdeps/unix/sysv/irix4, sysdeps/unix/sysv/isc2.2,
|
||||
sysdeps/unix/sysv/minix, sysdeps/unix/sysv/sco3.2,
|
||||
sysdeps/unix/sysv/sco3.2.4, sysdeps/unix/sysv/sysv4, sysdeps/vax,
|
||||
sysdeps/z8000: Remove.
|
||||
|
||||
2010-04-14 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* libc-abis: Remove.
|
||||
|
||||
2010-04-06 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* libc-abis: New.
|
||||
|
||||
2006-03-06 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile (%.bz2, %.gz): New pattern rules.
|
||||
|
||||
2006-02-28 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile (glibc-port-%-$(dist-version).tar): Don't include top-level
|
||||
stuff.
|
||||
|
||||
* README: Update for new add-on scheme.
|
||||
|
||||
2006-02-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile: Remove libc boilerplate.
|
||||
* Makeconfig: File removed.
|
||||
* configure.in: File removed.
|
||||
* configure: File removed.
|
||||
|
||||
2005-03-22 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* Makefile ($(distname).tar): Fail if sysdeps/.../configure files are
|
||||
not all up to date. Touch configure files after cvs export.
|
||||
(glibc-port-%-$(dist-version).tar): Likewise.
|
||||
|
||||
2004-10-22 Roland McGrath <roland@frob.com>
|
||||
|
||||
* Makefile (dist, dist-ports): New target.
|
||||
(dist-port-%): New pattern rule.
|
||||
* Makeconfig [!subdir] (ports/%): New pattern rule.
|
||||
|
||||
* configure.in: Cope if there are no sysdeps/*/preconfigure files.
|
||||
* configure: Regenerated.
|
||||
|
||||
2004-08-16 Roland McGrath <roland@frob.com>
|
||||
|
||||
* Makefile: New file.
|
||||
|
||||
2004-08-04 Roland McGrath <roland@frob.com>
|
||||
|
||||
New directory implementing glibc add-on infrastructure for
|
||||
ports maintained separate from the core glibc source tree.
|
||||
* README, configure.in, Makeconfig, Banner, ChangeLog: New files.
|
||||
* configure: New generated file.
|
||||
@@ -1,624 +0,0 @@
|
||||
This file describes changes to the AArch64 port while it was in the ports
|
||||
add-on directory. This port is no longer part of an add-on and so
|
||||
future changes to it should be listed in the top-level ChangeLog file,
|
||||
not here.
|
||||
|
||||
|
||||
|
||||
2014-02-11 Marcus Shawcroft <marcus.shawcroft@arm.com>
|
||||
|
||||
* sysdeps/aarch64: Move directory to ../sysdeps/aarch64.
|
||||
* sysdeps/unix/sysv/linux/aarch64: Move directory to
|
||||
../sysdeps/unix/sysv/linux/aarch64.
|
||||
|
||||
2014-01-22 Marcus Shawcroft <marcus.shawcroft@arm.com>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Regenerated.
|
||||
|
||||
2014-01-20 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/Makefile (abi-lp64_be-options): Fix
|
||||
type in define.
|
||||
|
||||
2014-01-20 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
[BZ #16169]
|
||||
* sysdeps/unix/sysv/linux/aarch64/clone.S (__clone): Add CFI
|
||||
directives; Zero x29.
|
||||
|
||||
2014-01-20 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/configure.ac: New file.
|
||||
* sysdeps/aarch64/configure: New file.
|
||||
* sysdeps/aarch64/shlib-versions: Define ld-linux-aarch64_be.so.1
|
||||
* sysdeps/unix/sysv/linux/aarch64/Makefile (abi-variants)
|
||||
(abi-lp64-options, abi-lp64-condition, abi-lp64-ld-soname)
|
||||
(abi-lp64_be-options, abi-lp64_be-condition)
|
||||
(abi-lp64_be-ld-soname) Define.
|
||||
* sysdeps/unix/sysv/linux/aarch64/ldconfig.h
|
||||
(SYSDEP_KNOWN_INTERPRETER_NAMES): Add ld-linux-aarch64_be.so.1
|
||||
|
||||
2014-01-07 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
[BZ #16387]
|
||||
* sysdeps/aarch64/fpu/fpu_control.h (_FPU_FPCR_RM_MASK): Define.
|
||||
* sysdeps/aarch64/soft-fp/sfp-machine.h (FP_ROUNDMODE): Adjust
|
||||
rounding mode mask.
|
||||
|
||||
2014-01-07 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Drop sqrt ULPs.
|
||||
|
||||
2014-01-07 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/dl-trampoline.S (_dl_runtime_resolve): Correct
|
||||
cfi_adjust_cfa_offset offset.
|
||||
|
||||
2014-01-06 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h (ptrace_peeksiginfo_args):
|
||||
Rename to ...
|
||||
(__ptrace_peeksiginfo_args): ... this.
|
||||
|
||||
2014-01-01 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Regenerated.
|
||||
|
||||
2014-01-01 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/abort-instr.h: New file.
|
||||
|
||||
2014-01-01 Venkataramanan Kumar <venkataramanan.kumar@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/__longjmp.S (__longjmp): Demangle sp and lr when
|
||||
restoring register values.
|
||||
* sysdeps/aarch64/setjmp.S (__sigsetjmp): Mangle sp and lr
|
||||
before storing register values.
|
||||
* sysdeps/arm/jmpbuf-unwind.h (_jmpbuf_sp): Remove.
|
||||
* sysdeps/aarch64/jmpbuf-offsets.h (_jmpbuf_sp): Add.
|
||||
(JB_FRAME_ADDRESS): call _jmpbuf_sp.
|
||||
* sysdeps/aarch64/sysdep.h (LDST_PCREL) : New macros.
|
||||
(LDST_GLOBAL): Likewise.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sysdep.h (PTR_MANGLE): New macro.
|
||||
(PTR_DEMANGLE): Likewise.
|
||||
(PTR_MANGLE2): Likewise.
|
||||
(PTR_DEMANGLE2): Likewise.
|
||||
|
||||
2013-12-18 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
[BZ #15128]
|
||||
* sysdeps/aarch64/dl-trampoline.S (_dl_runtime_resolve): Save and
|
||||
restore q0-q7.
|
||||
|
||||
2013-12-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
|
||||
(FUTEX_WAIT_REQUEUE_PI): Define.
|
||||
(FUTEX_CMP_REQUEUE_PI): Likewise.
|
||||
(lll_futex_wait_requeue_pi): Likewise.
|
||||
(lll_futex_timed_wait_requeue_pi): Likewise.
|
||||
(lll_futex_cmp_requeue_pi): Likewise.
|
||||
|
||||
2013-12-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Regenerated.
|
||||
|
||||
2013-12-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Remove sqrt.
|
||||
|
||||
2013-12-11 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Regenerate.
|
||||
|
||||
2013-11-28 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/aarch64/fpu/fegetround.c (fegetround): Use
|
||||
libm_hidden_def.
|
||||
|
||||
2013-11-26 Will Newton <will.newton@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/dl-irel.h: Include ldsodefs.h.
|
||||
(ELF_MACHINE_IRELA): Define. (elf_ifunc_invoke): Pass
|
||||
hwcap to ifunc resolver function. (elf_irela): New function.
|
||||
* sysdeps/aarch64/dl-machine.h: Include dl-irel.h.
|
||||
(elf_machine_rela) Handle STT_GNU_IFUNC symbols and
|
||||
R_AARCH64_IRELATIVE relocations. (elf_machine_lazy_rel):
|
||||
Handle R_AARCH64_IRELATIVE relocations.
|
||||
|
||||
2013-10-30 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/configure.in: Moved to ...
|
||||
* sysdeps/unix/sysv/linux/aarch64/configure.ac: ... here.
|
||||
* sysdeps/unix/sysv/linux/aarch64/configure: Regenerated.
|
||||
|
||||
2013-09-30 Andrew Pinski <andrew.pinski@caviumnetworks.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/sysdep.h (SYSCALL_ERROR_HANDLER):
|
||||
Fix store to errno to use 32bits.
|
||||
|
||||
2013-09-24 Venkataramanan Kumar <venkataramanan.kumar@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/machine-gmon.h (__mcount): Accept parameter and
|
||||
pass it to mcount_internal.
|
||||
|
||||
2013-09-24 Venkataramanan Kumar <venkataramanan.kumar@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h: New file.
|
||||
|
||||
2013-07-26 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/Versions: New file.
|
||||
* sysdeps/aarch64/machine-gmon.h: New file.
|
||||
* sysdeps/aarch64/mcount.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist (_mcount): Add.
|
||||
|
||||
2013-07-12 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/Makefile (CFLAGS-backtrace.c): Define.
|
||||
|
||||
2013-07-09 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/dl-static.c: New file to support
|
||||
variable page size for AArch64.
|
||||
* sysdeps/unix/sysv/linux/aarch64/ldsodefs.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/aarch64/Makefile: Build dl-static in elf.
|
||||
* sysdeps/unix/sysv/linux/aarch64/Versions: Add _dl_var_init.
|
||||
|
||||
2013-07-05 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Regenerate.
|
||||
|
||||
2013-07-04 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
For ChangeLog.aarch64:
|
||||
* sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h (PTRACE_LISTEN):
|
||||
Add define.
|
||||
(PTRACE_PEEKSIGINFO): Add new value from Linux 3.10.
|
||||
(ptrace_peeksiginfo_args): Add.
|
||||
(__ptrace_peeksiginfo_flags): Add.
|
||||
|
||||
2013-06-28 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/dl-machine.h (elf_machine_dynamic): De-reference
|
||||
_GLOBAL_OFFSET_TABLE_.
|
||||
|
||||
2013-06-28 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/getcontext.S (__getcontext): Simplify
|
||||
oPSTATE initialization.
|
||||
|
||||
2013-06-15 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libpthread.abilist:
|
||||
Update.
|
||||
|
||||
2013-06-04 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/getcontext.S (__getcontext):
|
||||
Initialize pstate.
|
||||
* sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym (oPSTATE): Define.
|
||||
|
||||
2013-05-29 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
[BZ #15465]
|
||||
* sysdeps/aarch64/dl-machine.h (elf_machine_rela): Use
|
||||
RTLD_PROGNAME.
|
||||
|
||||
2013-05-23 Venkataranmanan Kumar <venkataramanan.kumar@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/machine-gmon.h: Remove.
|
||||
|
||||
2013-05-22 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Update test names.
|
||||
|
||||
2013-05-21 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
[BZ #15493]
|
||||
* sysdeps/aarch64/setjmp.S (__sigsetjmp): Don't clobber register
|
||||
x1.
|
||||
[NOT_IN_libc && IS_IN_rtld]: Don't call __sigjmp_save.
|
||||
|
||||
2013-05-21 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Regenerate.
|
||||
|
||||
2013-05-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Update names of sincos tests.
|
||||
|
||||
2013-05-16 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
[BZ #15442]
|
||||
* sysdeps/aarch64/soft-fp/sfp-machine.h (_FP_QNANNEGATEDP): New
|
||||
macro.
|
||||
|
||||
2013-05-12 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/clone.S (__clone):
|
||||
Do not call sycall_error directly with a confitional branch.
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/ioctl.S (__ioctl):
|
||||
Do not call sycall_error directly with a confitional branch.
|
||||
|
||||
2013-03-19 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/configure.in: Set
|
||||
libc_cv_rtlddir.
|
||||
* sysdeps/unix/sysv/linux/aarch64/configure: Regenerate.
|
||||
|
||||
2013-03-14 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/configure.in: Set
|
||||
libc_cv_slibdir, libdir and libc_cv_localedir.
|
||||
* sysdeps/unix/sysv/linux/aarch64/configure: Regenerate.
|
||||
|
||||
2013-03-11 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
[BZ #15234]
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libpthread.abilist
|
||||
(GLIBC_2.17): Remove pthread_atfork.
|
||||
|
||||
2013-03-07 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/bits/mman.h: Remove all defines
|
||||
provided by bits/mman-linux.h and include <bits/mman-linux.h>.
|
||||
|
||||
2013-02-18 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist: Add
|
||||
__cxa_thread_atexit_impl.
|
||||
|
||||
2013-02-14 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Regenerate.
|
||||
|
||||
2013-02-13 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #13550]
|
||||
* sysdeps/unix/sysv/linux/aarch64/sigaction.c (__libc_sigaction):
|
||||
Do not use __ptrvalue.
|
||||
|
||||
2013-02-08 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #13550]
|
||||
* sysdeps/unix/sysv/linux/aarch64/gettimeofday.c: Do not include
|
||||
<bp-checks.h>.
|
||||
(__gettimeofday): Do not use CHECK_1.
|
||||
|
||||
2013-01-23 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/strncmp.S: New file.
|
||||
|
||||
2013-01-23 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/sysdep.h (ENTRY_ALIGN_AND_PAD): New.
|
||||
* sysdeps/aarch64/strnlen.S: New file.
|
||||
|
||||
2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/strlen.S: New file.
|
||||
|
||||
2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/strcmp.S: New file.
|
||||
|
||||
2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/bzero.S: New file.
|
||||
|
||||
2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/memmove.S: New file.
|
||||
|
||||
2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/memcpy.S: New file.
|
||||
|
||||
2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/memset.S: New file.
|
||||
|
||||
2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/sysdep.h (ENTRY_ALIGN): New.
|
||||
* sysdeps/aarch64/memcmp.S: New file.
|
||||
|
||||
2013-01-17 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/sysdep.h (ENTRY, END): Adjust
|
||||
whitespace.
|
||||
|
||||
2013-01-10 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/aarch64/bits/setjmp.h (__jmp_buf): Use __extension__
|
||||
with long long.
|
||||
|
||||
2013-01-02 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* All files with FSF copyright notices: Update copyright dates
|
||||
using scripts/update-copyrights.
|
||||
|
||||
2012-12-10 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/sysdep.h (INTERNAL_VSYSCALL):
|
||||
Remove _x0 declarations.
|
||||
|
||||
2012-12-07 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Regenerate.
|
||||
|
||||
2012-12-07 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/sysdep.h (INLINE_VSYSCALL):
|
||||
Remove _x0 and sc_err declarations.
|
||||
|
||||
2012-12-07 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/mmap.c (mmap): Cast return value.
|
||||
|
||||
2012-12-07 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/dl-machine.h (elf_machine_rela): Remove
|
||||
strtab.
|
||||
|
||||
2012-12-04 Steve McIntyre <steve.mcintyre@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/ldconfig.h: Add entries
|
||||
for /lib/ld-linux.so.3 and /lib/ld-linux-armhf.so.3.
|
||||
|
||||
2012-12-04 Steve McIntyre <steve.mcintyre@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/readelflib.c: New file.
|
||||
|
||||
2012-11-29 Steve McIntyre <steve.mcintyre@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/dl-cache.h: New file.
|
||||
|
||||
2012-11-22 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/libm-test-ulps: Regenerate.
|
||||
|
||||
2012-11-21 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h
|
||||
(lll_futex_timed_wait_bitset): Remove INTERNAL_SYSCALL_ERROR_P.
|
||||
|
||||
2012-11-20 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/fpu/s_fma.c (weak_alias_x):
|
||||
Remove and switch to weak_alias.
|
||||
* sysdeps/aarch64/fpu/s_fmin.c (weak_alias_x): Likewise.
|
||||
* sysdeps/aarch64/fpu/s_frint.c (weak_alias_x): Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lrint.c (weak_alias_x): Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lround.c (weak_alias_x): Likewise.
|
||||
|
||||
2012-11-20 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/fpu/s_fma.c (strong_aliasx, NO_LONG_DOUBLE): Remove.
|
||||
* sysdeps/aarch64/fpu/s_fmin.c (strong_aliasx, NO_LONG_DOUBLE): Likewise.
|
||||
* sysdeps/aarch64/fpu/s_frint.c (strong_aliasx, NO_LONG_DOUBLE): Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lrint.c (strong_aliasx, NO_LONG_DOUBLE): Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lround.c (strong_aliasx, NO_LONG_DOUBLE): Likewise.
|
||||
|
||||
2012-11-20 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/fpu/s_fma.c: Indent preprocessor directives.
|
||||
* sysdeps/aarch64/fpu/s_fmin.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_frint.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_frintf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lrint.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lround.c: Likewise.
|
||||
|
||||
2012-11-20 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/dl-tlsdesc.S: Use range for copyright years.
|
||||
* sysdeps/aarch64/dl-tlsdesc.h: Likewise.
|
||||
* sysdeps/aarch64/tlsdesc.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_ceil.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_ceilf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_floor.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_floorf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_fmaf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_fmax.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_fmaxf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_fmin.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_fminf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_frint.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_frintf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_llrint.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_llrintf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_llround.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_llroundf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lrint.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lrintf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lround.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lroundf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_nearbyint.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_nearbyintf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_rint.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_rintf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_round.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_roundf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_trunc.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_truncf.c: Likewise.
|
||||
|
||||
2012-11-20 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/fpu/s_frint.x: Renamed to...
|
||||
* sysdeps/aarch64/fpu/s_frint.c: ... this new file.
|
||||
* sysdeps/aarch64/fpu/s_frintf.x: Renamed to...
|
||||
* sysdeps/aarch64/fpu/s_frintf.c: ... this new file.
|
||||
* sysdeps/aarch64/fpu/s_ceil.c: Include s_frint.c.
|
||||
* sysdeps/aarch64/fpu/s_floor.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_nearbyint.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_rint.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_round.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_trunc.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_ceilf.c: Include s_frintf.c.
|
||||
* sysdeps/aarch64/fpu/s_floorf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_nearbyintf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_rintf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_roundf.c: Likewise.
|
||||
* sysdeps/aarch64/fpu/s_truncf.c: Likewise.
|
||||
|
||||
2012-11-20 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/fpu/s_fma.c (__CONCATX): Don't use K&R.
|
||||
* sysdeps/aarch64/fpu/s_fmin.c (__CONCATX): Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lrint.c (__CONCATX): Likewise.
|
||||
* sysdeps/aarch64/fpu/s_lround.c (__CONCATX): Likewise.
|
||||
* sysdeps/aarch64/fpu/s_frint.x (__CONCATX): Likewise.
|
||||
|
||||
2012-11-19 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/fpu/s_ceil.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_ceilf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_floor.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_floorf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_fma.c: Replace file.
|
||||
* sysdeps/aarch64/fpu/s_fmaf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_fmax.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_fmaxf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_fmin.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_fminf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_frint.x: New file.
|
||||
* sysdeps/aarch64/fpu/s_frintf.x: New file.
|
||||
* sysdeps/aarch64/fpu/s_llrint.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_llrintf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_llround.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_llroundf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_lrint.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_lrintf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_lround.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_lroundf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_nearbyint.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_nearbyintf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_rint.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_rintf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_round.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_roundf.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_trunc.c: New file.
|
||||
* sysdeps/aarch64/fpu/s_truncf.c: New file.
|
||||
|
||||
2012-11-09 Marcus Shawcroft <marcus.shawcroft@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/Implies: New file.
|
||||
* sysdeps/aarch64/Makefile: New file.
|
||||
* sysdeps/aarch64/__longjmp.S: New file.
|
||||
* sysdeps/aarch64/backtrace.c: New file.
|
||||
* sysdeps/aarch64/bits: New file.
|
||||
* sysdeps/aarch64/bits/atomic.h: New file.
|
||||
* sysdeps/aarch64/bits/endian.h: New file.
|
||||
* sysdeps/aarch64/bits/fenv.h: New file.
|
||||
* sysdeps/aarch64/bits/link.h: New file.
|
||||
* sysdeps/aarch64/bits/linkmap.h: New file.
|
||||
* sysdeps/aarch64/bits/mathdef.h: New file.
|
||||
* sysdeps/aarch64/bits/setjmp.h: New file.
|
||||
* sysdeps/aarch64/bsd-_setjmp.S: New file.
|
||||
* sysdeps/aarch64/bsd-setjmp.S: New file.
|
||||
* sysdeps/aarch64/crti.S: New file.
|
||||
* sysdeps/aarch64/crtn.S: New file.
|
||||
* sysdeps/aarch64/dl-irel.h: New file.
|
||||
* sysdeps/aarch64/dl-link.sym: New file.
|
||||
* sysdeps/aarch64/dl-machine.h: New file.
|
||||
* sysdeps/aarch64/dl-sysdep.h: New file.
|
||||
* sysdeps/aarch64/dl-tls.h: New file.
|
||||
* sysdeps/aarch64/dl-tlsdesc.S: New file.
|
||||
* sysdeps/aarch64/dl-tlsdesc.h: New file.
|
||||
* sysdeps/aarch64/dl-trampoline.S: New file.
|
||||
* sysdeps/aarch64/fpu/fclrexcpt.c: New file.
|
||||
* sysdeps/aarch64/fpu/fedisblxcpt.c: New file.
|
||||
* sysdeps/aarch64/fpu/feenablxcpt.c: New file.
|
||||
* sysdeps/aarch64/fpu/fegetenv.c: New file.
|
||||
* sysdeps/aarch64/fpu/fegetexcept.c: New file.
|
||||
* sysdeps/aarch64/fpu/fegetround.c: New file.
|
||||
* sysdeps/aarch64/fpu/feholdexcpt.c: New file.
|
||||
* sysdeps/aarch64/fpu/fesetenv.c: New file.
|
||||
* sysdeps/aarch64/fpu/fesetround.c: New file.
|
||||
* sysdeps/aarch64/fpu/feupdateenv.c: New file.
|
||||
* sysdeps/aarch64/fpu/fgetexcptflg.c: New file.
|
||||
* sysdeps/aarch64/fpu/fraiseexcpt.c: New file.
|
||||
* sysdeps/aarch64/fpu/fsetexcptflg.c: New file.
|
||||
* sysdeps/aarch64/fpu/ftestexcept.c: New file.
|
||||
* sysdeps/aarch64/fpu/get-rounding-mode.h: New file.
|
||||
* sysdeps/aarch64/fpu/s_fma.c: New file.
|
||||
* sysdeps/aarch64/fpu_control.h: New file.
|
||||
* sysdeps/aarch64/jmpbuf-offsets.h: New file.
|
||||
* sysdeps/aarch64/jmpbuf-unwind.h: New file.
|
||||
* sysdeps/aarch64/ldsodefs.h: New file.
|
||||
* sysdeps/aarch64/libc-tls.c: New file.
|
||||
* sysdeps/aarch64/libm-test-ulps: New file.
|
||||
* sysdeps/aarch64/machine-gmon.h: New file.
|
||||
* sysdeps/aarch64/memusage.h: New file.
|
||||
* sysdeps/aarch64/nptl/Makefile: New file.
|
||||
* sysdeps/aarch64/nptl/pthread_spin_lock.c: New file.
|
||||
* sysdeps/aarch64/nptl/pthreaddef.h: New file.
|
||||
* sysdeps/aarch64/nptl/tcb-offsets.sym: New file.
|
||||
* sysdeps/aarch64/nptl/tls.h: New file.
|
||||
* sysdeps/aarch64/sotruss-lib.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/Versions: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/__read_tp.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/bits: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/bits/fcntl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/bits/libc-vdso.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/bits/mman.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/configure: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/configure.in: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/getcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/gettimeofday.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/init-first.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/ioctl.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/kernel-features.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/ldconfig.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/libc-__read_tp.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/makecontext.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/mmap.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/bits: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/bits/local_lim.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/bits/pthreadtypes.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/bits/semaphore.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/c++-types.data: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/createthread.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/fork.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/ld.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libBrokenLocale.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libanl.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libcrypt.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libdl.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libm.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libnsl.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libpthread.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libresolv.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/librt.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libthread_db.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/libutil.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/lowlevellock.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/pt-vfork.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/pthread_once.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/nptl/vfork.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/profil-counter.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/setcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sigaction.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/swapcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sys/elf.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sys/procfs.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sys/user.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/syscall.S: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/syscalls.list: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sysdep.c: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/ucontext-internal.h: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym: New file.
|
||||
* sysdeps/unix/sysv/linux/aarch64/vfork.S: New file.
|
||||
@@ -1,21 +0,0 @@
|
||||
This file describes changes to the AIX port while it was in the ports/
|
||||
add-on directory. That port has since been removed entirely.
|
||||
The ports/ directory is no longer used, so reintroduction of AIX code
|
||||
would be described in the top-level ChangeLog file, not here.
|
||||
|
||||
|
||||
|
||||
2011-11-29 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/aix: Remove.
|
||||
|
||||
2007-07-10 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/aix/bits/fcntl.h: Comment fix.
|
||||
|
||||
2005-12-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/aix/bits/setjmp.h (_JMPBUF_UNWINDS): Take third
|
||||
argument DEMANGLE, and pass SP value through it.
|
||||
|
||||
* sysdeps/unix/sysv/aix/powerpc/memset.c: Don't use sysdeps/generic.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,372 +0,0 @@
|
||||
This file describes changes to the AM33 port while it was in the ports/
|
||||
add-on directory. That port has since been removed entirely.
|
||||
The ports/ directory is no longer used, so reintroduction of AIX code
|
||||
would be described in the top-level ChangeLog file, not here.
|
||||
|
||||
|
||||
|
||||
2014-02-08 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/am33: Remove.
|
||||
* sysdeps/unix/am33: Likewise.
|
||||
* sysdeps/unix/sysv/linux/am33: Likewise.
|
||||
|
||||
2013-11-28 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/am33/fpu/fegetround.c (fegetround): Use libm_hidden_def.
|
||||
|
||||
2013-10-30 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/configure.in: Moved to ...
|
||||
* sysdeps/unix/sysv/linux/am33/configure.ac: ... here.
|
||||
* sysdeps/unix/sysv/linux/am33/configure: Regenerated.
|
||||
|
||||
2013-08-29 Ondřej Bílka <neleai@seznam.cz>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/bits/fcntl.h: Fix typos.
|
||||
|
||||
2013-08-21 Ondřej Bílka <neleai@seznam.cz>
|
||||
|
||||
* sysdeps/am33/fpu/fraiseexcpt.c: Fix typos.
|
||||
|
||||
2013-06-05 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/am33/elf/start.S: Remove trailing whitespace.
|
||||
* sysdeps/am33/fpu/fgetexcptflg.c: Likewise.
|
||||
|
||||
2013-05-01 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/am33/atomicity.h: Add missing #include <stdint.h> due to
|
||||
uint64_t or uint32_t usage.
|
||||
|
||||
2013-03-11 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/bits/mman.h: Remove all defines
|
||||
provided by bits/mman-linux.h and include <bits/mman-linux.h>.
|
||||
|
||||
2013-02-28 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/am33/elf/start.S: Don't include "bp-sym.h".
|
||||
(_start): Don't use BP_SYM.
|
||||
* sysdeps/unix/sysv/linux/am33/clone.S: Don't include <bp-sym.h>.
|
||||
(__clone): Don't use BP_SYM.
|
||||
|
||||
2013-02-14 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #13550]
|
||||
* sysdeps/am33/dl-machine.h [!PROF && !__BOUNDED_POINTERS__]:
|
||||
Remove __BOUNDED_POINTERS__ from condition.
|
||||
|
||||
2013-02-13 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #13550]
|
||||
* sysdeps/am33/dl-machine.h (fixup): Do not use __unbounded.
|
||||
* sysdeps/unix/sysv/linux/am33/brk.c (__brk): Do not use
|
||||
__ptrvalue.
|
||||
|
||||
2013-01-02 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* All files with FSF copyright notices: Update copyright dates
|
||||
using scripts/update-copyrights.
|
||||
|
||||
2013-01-01 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/bits/fcntl.h: Reformat copyright
|
||||
notice.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.S: Likewise.
|
||||
|
||||
2012-11-03 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/am33/fpu/fclrexcpt.c (feclearexcept): Add
|
||||
libm_hidden_ver.
|
||||
|
||||
[BZ #3439]
|
||||
* sysdeps/am33/fpu/bits/fenv.h (FE_INEXACT): Define macro to
|
||||
integer constant usable in #if and use that to give value to enum
|
||||
constant.
|
||||
(FE_UNDERFLOW): Likewise.
|
||||
(FE_OVERFLOW): Likewise.
|
||||
(FE_DIVBYZERO): Likewise.
|
||||
(FE_INVALID): Likewise.
|
||||
(FE_TONEAREST): Likewise.
|
||||
|
||||
2012-10-30 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #14047]
|
||||
* sysdeps/am33/tininess.h: New file.
|
||||
|
||||
2012-10-09 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/configure: Regenerated.
|
||||
|
||||
2012-08-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/configure.in (arch_minimum_kernel):
|
||||
Change to 2.6.25.
|
||||
* sysdeps/unix/sysv/linux/am33/configure: Regenerated.
|
||||
|
||||
2012-08-01 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
[BZ #14138]
|
||||
* sysdeps/unix/sysv/linux/am33/getrlimit.c: File removed.
|
||||
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2011-10-05 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* sysdeps/am33/dl-machine.h (elf_machine_rela)
|
||||
(elf_machine_lazy_rel): Add parameter skip_ifunc.
|
||||
|
||||
2007-10-22 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/bits/fcntl.h (F_DUPFD_CLOEXEC): Define.
|
||||
|
||||
2007-07-10 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/bits/fcntl.h: Comment fix.
|
||||
|
||||
2006-01-12 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/am33/jmpbuf-unwind.h: Include <jmpbuf-offsets.h>.
|
||||
|
||||
2006-01-10 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/am33/bits/setjmp.h (__JMP_BUF_SP): Macro moved ...
|
||||
* sysdeps/am33/jmpbuf-offsets.h: ... here, new file.
|
||||
|
||||
* sysdeps/am33/bits/setjmp.h (_JMPBUF_UNWINDS, __JMP_BUF_SP):
|
||||
Move macros ...
|
||||
* sysdeps/am33/jmpbuf-unwind.h: ... here, new file.
|
||||
|
||||
2005-12-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/am33/bits/setjmp.h (_JMPBUF_UNWINDS): Take third argument
|
||||
DEMANGLE, and pass SP value through it.
|
||||
|
||||
2004-10-25 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* ChangeLog.am33: Added emacs local variables for mode setting and
|
||||
default changelog name.
|
||||
|
||||
* sysdeps/unix/sysv/linux/linuxthreads/sysdep-cancel.h: Moved...
|
||||
* sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h:
|
||||
... here, where it should have been added in the first place.
|
||||
|
||||
2004-10-22 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/bits/mman.h (PROT_GROWSDOWN): New.
|
||||
(PROT_GROWSUP): New.
|
||||
|
||||
2004-08-16 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/shlib-versions: Moved from top level.
|
||||
|
||||
2004-08-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/preconfigure: Renamed from configure.
|
||||
* Makefile: Removed.
|
||||
|
||||
2004-07-20 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
Moved from separate linuxthreads tree into am33/linuxthreads
|
||||
subdirs:
|
||||
2004-07-01 Alexandre Oliva <aoliva@redhat.com>
|
||||
* sysdeps/unix/sysv/linux/am33/linuxthreads/sysdep-cancel.h
|
||||
(PSEUDO): Save value returned by CENABLE and pass it to CDISABLE.
|
||||
* sysdeps/am33/linuxthreads/pt-machine.h (testandset): Take
|
||||
volatile argument. Improve asm statement.
|
||||
2001-10-31 Alexandre Oliva <aoliva@redhat.com>
|
||||
* sysdeps/am33/linuxthreads/pspinlock.c: New file.
|
||||
* sysdeps/am33/linuxthreads/pt-machine.h: New file.
|
||||
|
||||
2004-07-19 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* configure: New.
|
||||
* mach.sh: Removed.
|
||||
* sysdeps/am33/Makefile: Likewise.
|
||||
|
||||
2004-06-28 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/configure.in: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/configure: New file.
|
||||
* mach.sh: New file.
|
||||
|
||||
2004-06-19 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/fpu/bits/fenv.h: New file.
|
||||
* sysdeps/am33/fpu/fpu_control.h: New file.
|
||||
* sysdeps/am33/fpu/fenv_libc.h: New file.
|
||||
* sysdeps/am33/fpu/fclrexcpt.c: New file.
|
||||
* sysdeps/am33/fpu/fedisblxcpt.c: New file.
|
||||
* sysdeps/am33/fpu/feenablxcpt.c: New file.
|
||||
* sysdeps/am33/fpu/fegetenv.c: New file.
|
||||
* sysdeps/am33/fpu/fegetexcept.c: New file.
|
||||
* sysdeps/am33/fpu/fegetround.c: New file.
|
||||
* sysdeps/am33/fpu/feholdexcpt.c: New file.
|
||||
* sysdeps/am33/fpu/fesetenv.c: New file.
|
||||
* sysdeps/am33/fpu/fesetround.c: New file.
|
||||
* sysdeps/am33/fpu/feupdateenv.c: New file.
|
||||
* sysdeps/am33/fpu/fgetexcptflg.c: New file.
|
||||
* sysdeps/am33/fpu/fraiseexcpt.c: New file.
|
||||
* sysdeps/am33/fpu/fsetexcptflg.c: New file.
|
||||
* sysdeps/am33/fpu/ftestexcept.c: New file.
|
||||
|
||||
* sysdeps/unix/am33/sysdep.h: Use relative pathnames.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.S: Likewise.
|
||||
* configure, Makefile: Do nothing.
|
||||
|
||||
2004-06-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/bsd-setjmp.S: Move into...
|
||||
* sysdeps/am33/setjmp.S: ... this file.
|
||||
* sysdeps/am33/bsd-_setjmp.S: Likewise.
|
||||
* sysdeps/am33/dl-machine.h (_dl_start_user): Do not do double
|
||||
indirection to obtain _dl_loaded.
|
||||
(elf_machine_rela_relative): Do not add addend.
|
||||
|
||||
2004-06-08 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/sysdep.h (JUMPTARGET): Undef before redefining.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.h (PSEUDO_NOERROR,
|
||||
PSEUDO_END_NOERROR, ret_NOERROR, PSEUDO_ERRVAL, PSEUDO_END_ERRVAL,
|
||||
ret_ERRVAL, INTERNAL_SYSCALL, INTERNAL_SYSCALL_DECL,
|
||||
INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO): New.
|
||||
(INLINE_SYSCALL): Rewrite in terms of INTERNAL_SYSCALL macros.
|
||||
(DO_CALL): Reorder arguments.
|
||||
* sysdeps/am33/dl-machine.h (elf_machine_rela): Update prototype.
|
||||
|
||||
2003-05-16 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.h (INLINE_SYSCALL1): Drop
|
||||
comma before args when calling inline_syscall0.
|
||||
* sysdeps/unix/sysv/linux/am33/chown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/fchown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/fxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getegid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/geteuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getrlimit.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/lchown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/lockf64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/lxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setegid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/seteuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setfsgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setfsuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setregid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setresgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setresuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setreuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setrlimit.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setuid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/xstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/syscalls.list: Removed, reverting
|
||||
2003-03-26's patch.
|
||||
* sysdeps/unix/sysv/linux/am33/getresgid.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/getresuid.c: New file.
|
||||
|
||||
2003-05-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/getgroups.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/setgroups.c: New file.
|
||||
|
||||
2003-05-07 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/getmsg.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/putmsg.c: New file.
|
||||
|
||||
2003-03-26 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/syscalls.list: Added getresuid and
|
||||
getresgid.
|
||||
|
||||
2003-01-17 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/fcntl.c: New file.
|
||||
|
||||
2002-02-08 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/sys/ucontext.h (fpregset_t): Make it a structure.
|
||||
|
||||
2002-01-07 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/sys/ucontext.h (NFREG): Increment by 1, to make
|
||||
room for FPCR.
|
||||
|
||||
2001-12-13 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* shlib-versions: Set GLIBC_2.2.5 as the earliest symbol set.
|
||||
|
||||
2001-12-07 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/am33/__longjmp.S: Tabify.
|
||||
* sysdeps/am33/setjmp.S: Likewise.
|
||||
* sysdeps/am33/dl-debug.h: Remove.
|
||||
* sysdeps/am33/dl-machine.h: Delete commented-out uses of
|
||||
macros defined in dl-debug.
|
||||
(elf_machine_rela): Optimize if HAVE_Z_COMBRELOC. Fix
|
||||
prediction of R_MN10300_NONE. Don't test for impossible
|
||||
condition.
|
||||
* sysdeps/am33/sysdep.h (ASM_TYPE_DIRECTIVE,
|
||||
ASM_SIZE_DIRECTIVE): Define to nothing if ! HAVE_ELF.
|
||||
|
||||
2001-11-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/clone.S: Avoid branch overflow in
|
||||
static link.
|
||||
|
||||
2001-11-08 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/clone.S: Load arguments correctly
|
||||
for syscall.
|
||||
|
||||
2001-11-07 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/am33/clone.S: Fix argument-passing
|
||||
to thread_start.
|
||||
|
||||
2001-10-31 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* shlib-versions: Added am33_2.0 support.
|
||||
* sysdeps/am33/Implies: New file.
|
||||
* sysdeps/am33/__longjmp.S: New file.
|
||||
* sysdeps/am33/atomicity.h: New file.
|
||||
* sysdeps/am33/bsd-_setjmp.S: New file.
|
||||
* sysdeps/am33/bsd-setjmp.S: New file.
|
||||
* sysdeps/am33/dl-debug.h: New file.
|
||||
* sysdeps/am33/dl-machine.h: New file.
|
||||
* sysdeps/am33/memusage.h: New file.
|
||||
* sysdeps/am33/setjmp.S: New file.
|
||||
* sysdeps/am33/stackinfo.h: New file.
|
||||
* sysdeps/am33/sysdep.h: New file.
|
||||
* sysdeps/am33/bits/endian.h: New file.
|
||||
* sysdeps/am33/bits/setjmp.h: New file.
|
||||
* sysdeps/am33/elf/start.S: New file.
|
||||
* sysdeps/am33/sys/ucontext.h: New file.
|
||||
* sysdeps/unix/am33/sysdep.S: New file.
|
||||
* sysdeps/unix/am33/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/brk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/profil-counter.h: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/socket.S: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/syscall.S: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.S: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/bits/fcntl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/am33/bits/mman.h: New file.
|
||||
|
||||
Local Variables:
|
||||
mode: change-log
|
||||
left-margin: 8
|
||||
fill-column: 74
|
||||
version-control: never
|
||||
change-log-default-name: "ChangeLog.am33"
|
||||
End:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,40 +0,0 @@
|
||||
This file describes changes to the CRIS port while it was in the ports/
|
||||
add-on directory. That port has since been removed entirely.
|
||||
The ports/ directory is no longer used, so reintroduction of AIX code
|
||||
would be described in the top-level ChangeLog file, not here.
|
||||
|
||||
|
||||
|
||||
2012-02-21 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/cris: Remove.
|
||||
* sysdeps/unix/sysv/linux/cris: Likewise.
|
||||
|
||||
2011-10-05 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* sysdeps/cris/dl-machine.h (elf_machine_rela)
|
||||
(elf_machine_lazy_rel): Add parameter skip_ifunc.
|
||||
|
||||
2007-10-22 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/cris/bits/fcntl.h (F_DUPFD_CLOEXEC): Define.
|
||||
|
||||
2007-07-10 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/cris/bits/fcntl.h: Comment fix.
|
||||
|
||||
2005-12-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/cris/bits/setjmp.h (_JMPBUF_UNWINDS): Take third argument
|
||||
DEMANGLE, and pass SP value through it.
|
||||
|
||||
2004-10-25 Roland McGrath <roland@frob.com>
|
||||
|
||||
* sysdeps/cris/configure.in: New file, with test moved out of main
|
||||
libc configure.in file.
|
||||
* sysdeps/cris/configure: New generated file.
|
||||
|
||||
2004-10-23 Roland McGrath <roland@frob.com>
|
||||
|
||||
* sysdeps/cris, sysdeps/unix/sysv/linux/cris: Moved here from main
|
||||
libc source tree.
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,200 +0,0 @@
|
||||
This file describes changes to the linux-generic infrastructure while
|
||||
it was in the ports add-on directory. This code is no longer maintained
|
||||
here and so future changes to it should be listed in the top-level
|
||||
ChangeLog file.
|
||||
|
||||
|
||||
|
||||
2014-02-10 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic: Move directory to
|
||||
../sysdeps/unix/sysv/linux/generic.
|
||||
|
||||
2013-11-13 Chung-Lin Tang <cltang@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/stat.h (__field64): Use
|
||||
__alignof__(type64) in alignment attribute instead of 8.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/statfs.h (__field64): Use
|
||||
__alignof__(type64) in alignment attribute instead of 8.
|
||||
(struct statfs): Remove alignment attribute.
|
||||
(struct statfs64): Likewise.
|
||||
|
||||
2013-06-05 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list:
|
||||
Remove trailing whitespace.
|
||||
|
||||
2013-01-02 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* All files with FSF copyright notices: Update copyright dates
|
||||
using scripts/update-copyrights.
|
||||
|
||||
2013-01-01 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c: Reformat
|
||||
copyright notice.
|
||||
|
||||
2012-11-04 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/sysctl.c: Don't include
|
||||
<stub-tag.h>.
|
||||
* sysdeps/unix/sysv/linux/generic/ustat.c: Likewise.
|
||||
|
||||
2012-10-27 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/fcntl.h: (__O_LARGEFILE)
|
||||
[__WORDSIZE != 64]: Do not define, take value from
|
||||
<bits/fcntl-linux.h>.
|
||||
|
||||
2012-10-23 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/fcntl.h: Remove all
|
||||
definitions and declarations that are provided by
|
||||
<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.
|
||||
|
||||
2012-10-01 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h
|
||||
(__SWBLK_T_TYPE): Macro removed.
|
||||
|
||||
2012-08-02 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h
|
||||
[__LP64__] (__OFF_T_MATCHES_OFF64_T): New macro.
|
||||
|
||||
2012-05-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/syscalls.list: Remove
|
||||
__connect_internal alias.
|
||||
|
||||
2012-05-18 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h
|
||||
(__FSWORD_T_TYPE): New macro.
|
||||
|
||||
2012-05-16 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/not-cancel.h: Add
|
||||
multiple-inclusion guard.
|
||||
|
||||
2012-05-16 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h:
|
||||
Remove now-unused __SNSECONDS_T_TYPE, and add new
|
||||
__SYSCALL_ULONG_TYPE and __SYSCALL_SLONG_TYPE types.
|
||||
|
||||
2012-05-14 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/stat.h,
|
||||
sysdeps/unix/sysv/linux/generic/bits/statfs.h:
|
||||
Use "__aligned__" instead of "aligned" in public headers.
|
||||
|
||||
2012-05-12 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list:
|
||||
Add entries for prlimit64 and fanotify_mark.
|
||||
|
||||
2012-05-12 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h
|
||||
(__SNSECONDS_T_TYPE): New macro.
|
||||
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2012-01-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/not-cancel.h: New file.
|
||||
|
||||
2012-01-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/epoll_wait.c: Remove
|
||||
libc_hidden_proto declaration now it's in sys/epoll.h override.
|
||||
|
||||
2011-12-09 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/bits/msq.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/shm.h: New file.
|
||||
|
||||
2011-12-03 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/generic/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/____longjmp_chk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/access.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/fcntl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/sem.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/stat.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/statfs.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/bits/typesizes.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/brk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/chmod.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/chown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/creat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/dl-origin.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/dup2.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/epoll_create.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/epoll_wait.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/futimesat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/getdents.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/getdents64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/inotify_init.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/kernel_stat.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/lchown.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/link.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/lxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/mkdir.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/nptl/not-cancel.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/open.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/open64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/pause.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/pipe.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/poll.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/readlink.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/readlink_chk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/recv.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/rename.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/rmdir.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/select.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/send.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/symlink.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/syscalls.list: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/sysctl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/umount.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/unlink.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/ustat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/utimes.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/Versions: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/fcntl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/fstatfs.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/ftruncate64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/fxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/fxstatat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/llseek.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/lseek.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/lxstat64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/mmap.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/posix_fadvise.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/statfs.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/syscalls.list: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/truncate.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/truncate64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/xstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/wordsize-32/xstat64.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/xmknod.c: New file.
|
||||
* sysdeps/unix/sysv/linux/generic/xstat.c: New file.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,198 +0,0 @@
|
||||
This file describes changes to the machine while it was in the ports
|
||||
add-on directory. This port is no longer part of an add-on and so
|
||||
future changes to it should be listed in the top-level ChangeLog file,
|
||||
not here.
|
||||
|
||||
|
||||
|
||||
2014-02-17 David Holsgrove <david.holsgrove@xilinx.com>
|
||||
|
||||
* sysdeps/microblaze: Move directory to ../sysdeps/microblaze.
|
||||
* sysdeps/unix/sysv/linux/microblaze: Move directory to
|
||||
../sysdeps/unix/sysv/linux/microblaze.
|
||||
|
||||
2014-02-08 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/microblaze/msgctl.c: Include
|
||||
sysdeps/unix/sysv/linux/arm/msgctl.c instead of
|
||||
sysdeps/unix/sysv/linux/alpha/msgctl.c.
|
||||
* sysdeps/unix/sysv/linux/microblaze/semctl.c: Include
|
||||
sysdeps/unix/sysv/linux/arm/semctl.c instead of
|
||||
sysdeps/unix/sysv/linux/alpha/semctl.c.
|
||||
* sysdeps/unix/sysv/linux/microblaze/shmctl.c: Include
|
||||
sysdeps/unix/sysv/linux/arm/shmctl.c instead of
|
||||
sysdeps/unix/sysv/linux/alpha/shmctl.c.
|
||||
|
||||
2014-02-04 David Holsgrove <david.holsgrove@xilinx.com>
|
||||
|
||||
* sysdeps/microblaze/libm-test-ulps: Update.
|
||||
* sysdeps/microblaze/libm-test-ulps_new: Delete redundant file.
|
||||
|
||||
2014-02-04 David Holsgrove <david.holsgrove@xilinx.com>
|
||||
|
||||
* sysdeps/microblaze/fegetround.c: Delete redundant file.
|
||||
* sysdeps/microblaze/fesetround.c: Likewise.
|
||||
|
||||
2013-11-28 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/microblaze/fegetround.c (fegetround): Use
|
||||
libm_hidden_def.
|
||||
|
||||
2013-11-26 Ondřej Bílka <neleai@seznam.cz>
|
||||
* sysdeps/unix/sysv/linux/microblaze/bits/stat.h: Use __glibc_reserved instead __unused.
|
||||
* sysdeps/unix/sysv/linux/microblaze/kernel_stat.h: Likewise.
|
||||
|
||||
2013-10-30 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/microblaze/configure.in: Moved to ...
|
||||
* sysdeps/unix/sysv/linux/microblaze/configure.ac: ... here.
|
||||
* sysdeps/unix/sysv/linux/microblaze/configure: Regenerated.
|
||||
|
||||
2013-06-15 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libpthread.abilist:
|
||||
Update.
|
||||
|
||||
2013-06-14 David Holsgrove <david.holsgrove@xilinx.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h: Correct
|
||||
return from macros.
|
||||
|
||||
2013-06-05 Ondřej Bílka <neleai@seznam.cz>
|
||||
|
||||
* sysdeps/microblaze/bits/atomic.h: Remove executable mode.
|
||||
* sysdeps/unix/sysv/linux/microblaze/sysdep.h: Likewise.
|
||||
|
||||
2013-05-31 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/microblaze/Makefile ($(objpfx)libm.so): Remove
|
||||
dependency on ld.so.
|
||||
($(objpfx)libcrypt.so): Likewise.
|
||||
($(objpfx)libresolv.so): Likewise.
|
||||
($(objpfx)libnss_dns.so): Likewise.
|
||||
($(objpfx)libnss_files.so): Likewise.
|
||||
($(objpfx)libnss_db.so): Likewise.
|
||||
($(objpfx)libnss_nis.so): Likewise.
|
||||
($(objpfx)libnss_nisplus.so): Likewise.
|
||||
($(objpfx)libnss_hesiod.so): Likewise.
|
||||
($(objpfx)libnss_compat.so): Likewise.
|
||||
($(objpfx)libanl.so): Likewise.
|
||||
($(objpfx)libnsl.so): Likewise.
|
||||
($(objpfx)libcidn.so): Likewise.
|
||||
($(objpfx)libutil.so): Likewise.
|
||||
|
||||
2013-05-29 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
[BZ #15465]
|
||||
* sysdeps/microblaze/dl-machine.h (elf_machine_rela): Use
|
||||
RTLD_PROGNAME.
|
||||
|
||||
2013-05-22 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/microblaze/libm-test-ulps: Update test names.
|
||||
|
||||
2013-05-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/microblaze/libm-test-ulps: Update names of sincos tests.
|
||||
|
||||
2013-03-28 David Holsgrove <david.holsgrove@xilinx.com>
|
||||
|
||||
* sysdeps/microblaze/Implies: New file.
|
||||
* sysdeps/microblaze/Makefile: New file.
|
||||
* sysdeps/microblaze/__longjmp.S: New file.
|
||||
* sysdeps/microblaze/_mcount.S: New file.
|
||||
* sysdeps/microblaze/abort-instr.h: New file.
|
||||
* sysdeps/microblaze/asm-syntax.h: New file.
|
||||
* sysdeps/microblaze/backtrace.c: New file.
|
||||
* sysdeps/microblaze/backtrace_linux.c: New file.
|
||||
* sysdeps/microblaze/bits/atomic.h: New file.
|
||||
* sysdeps/microblaze/bits/endian.h: New file.
|
||||
* sysdeps/microblaze/bits/fenv.h: New file.
|
||||
* sysdeps/microblaze/bits/link.h: New file.
|
||||
* sysdeps/microblaze/bits/setjmp.h: New file.
|
||||
* sysdeps/microblaze/bsd-_setjmp.S: New file.
|
||||
* sysdeps/microblaze/bsd-setjmp.S: New file.
|
||||
* sysdeps/microblaze/crti.S: New file.
|
||||
* sysdeps/microblaze/crtn.S: New file.
|
||||
* sysdeps/microblaze/dl-machine.h: New file.
|
||||
* sysdeps/microblaze/dl-tls.h: New file.
|
||||
* sysdeps/microblaze/dl-trampoline.S: New file.
|
||||
* sysdeps/microblaze/fegetround.c: New file.
|
||||
* sysdeps/microblaze/fesetround.c: New file.
|
||||
* sysdeps/microblaze/gccframe.h: New file.
|
||||
* sysdeps/microblaze/jmpbuf-unwind.h: New file.
|
||||
* sysdeps/microblaze/ldsodefs.h: New file.
|
||||
* sysdeps/microblaze/libc-tls.c: New file.
|
||||
* sysdeps/microblaze/libm-test-ulps: New file.
|
||||
* sysdeps/microblaze/machine-gmon.h: New file.
|
||||
* sysdeps/microblaze/math_private.h: New file.
|
||||
* sysdeps/microblaze/memusage.h: New file.
|
||||
* sysdeps/microblaze/nptl/Makefile: New file.
|
||||
* sysdeps/microblaze/nptl/pthread_spin_lock.c: New file.
|
||||
* sysdeps/microblaze/nptl/pthreaddef.h: New file.
|
||||
* sysdeps/microblaze/nptl/tcb-offsets.sym: New file.
|
||||
* sysdeps/microblaze/nptl/tls.h: New file.
|
||||
* sysdeps/microblaze/preconfigure: New file.
|
||||
* sysdeps/microblaze/setjmp.S: New file.
|
||||
* sysdeps/microblaze/shlib-versions: New file.
|
||||
* sysdeps/microblaze/sotruss-lib.c: New file.
|
||||
* sysdeps/microblaze/stackinfo.h: New file.
|
||||
* sysdeps/microblaze/start.S: New file.
|
||||
* sysdeps/microblaze/sysdep.h: New file.
|
||||
* sysdeps/microblaze/tls-macros.h: New file.
|
||||
* sysdeps/microblaze/tst-audit.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/Versions: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/bits/mman.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/bits/stat.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/brk.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/configure: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/configure.in: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/fcntl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/fxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/fxstatat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/getsysstats.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/kernel-features.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/kernel_stat.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/lxstat.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/mmap.S: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/msgctl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/bits/semaphore.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/c++-types.data: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/createthread.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/fork.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/ld.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libBrokenLocale.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libanl.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libc.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libcrypt.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libdl.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libm.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libnsl.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libpthread.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libresolv.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/librt.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libthread_db.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/libutil.abilist: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/localplt.data: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/pt-vfork.S: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/pthread_once.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/nptl/vfork.S: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/profil-counter.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/semctl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/shmctl.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/setgroups.c: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/socket.S: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/sys/procfs.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/sys/user.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/syscall.S: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/syscalls.list: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/sysdep.S: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/microblaze/xstat.c: New file.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,413 +0,0 @@
|
||||
This file describes changes to the soft-float powerpc port while it
|
||||
was in the ports add-on directory. This port is no longer part of an
|
||||
add-on and so future changes to it should be listed in the top-level
|
||||
ChangeLog file, not here.
|
||||
|
||||
|
||||
|
||||
2013-10-04 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/powerpc32/Makefile: Remove file.
|
||||
* sysdeps/powerpc/nofpu: Move directory to
|
||||
../sysdeps/powerpc/nofpu.
|
||||
* sysdeps/powerpc/soft-fp: Move directory to
|
||||
../sysdeps/powerpc/soft-fp.
|
||||
* sysdeps/powerpc/powerpc32/405: Move directory to
|
||||
../sysdeps/powerpc/powerpc32/405.
|
||||
* sysdeps/powerpc/powerpc32/440: Move directory to
|
||||
../sysdeps/powerpc/powerpc32/440.
|
||||
* sysdeps/powerpc/powerpc32/464: Move directory to
|
||||
../sysdeps/powerpc/powerpc32/464.
|
||||
* sysdeps/powerpc/powerpc32/476: Move directory to
|
||||
../sysdeps/powerpc/powerpc32/476.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu: Move directory
|
||||
to ../sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/405: Move directory to
|
||||
../sysdeps/unix/sysv/linux/powerpc/powerpc32/405.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/440: Move directory to
|
||||
../sysdeps/unix/sysv/linux/powerpc/powerpc32/440.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/464: Move directory to
|
||||
../sysdeps/unix/sysv/linux/powerpc/powerpc32/464.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/476: Move directory to
|
||||
../sysdeps/unix/sysv/linux/powerpc/powerpc32/476.
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/context-e500.h:
|
||||
New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S:
|
||||
Include <context-e500.h>.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S:
|
||||
Likewise.
|
||||
|
||||
2013-08-30 Ondřej Bílka <neleai@seznam.cz>
|
||||
|
||||
* sysdeps/powerpc/powerpc32/405/memcpy.S: Fix typos.
|
||||
|
||||
2013-08-17 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR 15483
|
||||
* sysdeps/powerpc/nofpu/sim-full.c: Add FIXME note about
|
||||
the need for thread-specific variables preserved across signal
|
||||
handlers.
|
||||
* sysdeps/powerpc/nofpu/soft-supp.h: Likewise.
|
||||
* sysdeps/powerpc/soft-fp/sfp-machine.h: Likewise.
|
||||
|
||||
2013-07-03 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Regenerated.
|
||||
|
||||
2013-06-15 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libpthread.abilist:
|
||||
Update.
|
||||
|
||||
2013-06-11 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/dl-procinfo.c: Remove as this is now redundant with
|
||||
glibc/sysdeps/powerpc/dl-procinfo.c.
|
||||
* sysdeps/powerpc/dl-procinfo.h: Remove as this is now redundant with
|
||||
glibc/sysdeps/powerpc/dl-procinfo.h
|
||||
|
||||
2013-06-11 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/dl-procinfo.h: Fix whitespace by correcting
|
||||
spaces with tabs where appropriate.
|
||||
|
||||
2013-06-05 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fenv_const.c: Remove trailing whitespace.
|
||||
* sysdeps/powerpc/nofpu/fenv_libc.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S:
|
||||
Likewise.
|
||||
|
||||
2013-05-22 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Update test names.
|
||||
|
||||
2013-05-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Update names of sincos
|
||||
tests.
|
||||
|
||||
2013-05-16 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
[BZ #15442]
|
||||
* sysdeps/powerpc/soft-fp/sfp-machine.h (_FP_QNANNEGATEDP): New
|
||||
macro.
|
||||
|
||||
2013-02-28 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #13550]
|
||||
* sysdeps/powerpc/powerpc32/405/memcmp.S: Don't include <bp-sym.h>
|
||||
and <bp-asm.h>.
|
||||
(memcmp): Don't use BP_SYM.
|
||||
* sysdeps/powerpc/powerpc32/405/memcpy.S: Don't include <bp-sym.h>
|
||||
and <bp-asm.h>.
|
||||
(memcpy): Don't use BP_SYM.
|
||||
* sysdeps/powerpc/powerpc32/405/memset.S: Don't include <bp-sym.h>
|
||||
and <bp-asm.h>.
|
||||
(memset): Don't use BP_SYM.
|
||||
* sysdeps/powerpc/powerpc32/405/strcmp.S: Don't include <bp-sym.h>
|
||||
and <bp-asm.h>.
|
||||
(strcmp): Don't use BP_SYM.
|
||||
* sysdeps/powerpc/powerpc32/405/strcpy.S: Don't include <bp-sym.h>
|
||||
and <bp-asm.h>.
|
||||
(strcpy): Don't use BP_SYM.
|
||||
* sysdeps/powerpc/powerpc32/405/strlen.S: Don't include <bp-sym.h>
|
||||
and <bp-asm.h>.
|
||||
(strlen): Don't use BP_SYM.
|
||||
* sysdeps/powerpc/powerpc32/405/strncmp.S: Don't include
|
||||
<bp-sym.h> and <bp-asm.h>.
|
||||
(strncmp): Don't use BP_SYM.
|
||||
* sysdeps/powerpc/powerpc32/476/memset.S: Don't include <bp-sym.h>
|
||||
and <bp-asm.h>.
|
||||
(memset): Don't use BP_SYM.
|
||||
|
||||
2013-02-18 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Add __cxa_thread_atexit_impl.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist:
|
||||
Likewise.
|
||||
|
||||
2013-02-14 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #13550]
|
||||
* sysdeps/powerpc/nofpu/fegetenv.c: Do not include <bp-sym.h>.
|
||||
(fegetenv): Do not use BP_SYM in versioned symbols.
|
||||
* sysdeps/powerpc/nofpu/fesetenv.c: Do not include <bp-sym.h>.
|
||||
(fesetenv): Do not use BP_SYM in versioned symbols.
|
||||
* sysdeps/powerpc/nofpu/feupdateenv.c: Do not include <bp-sym.h>.
|
||||
(feupdateenv): Do not use BP_SYM in versioned symbols.
|
||||
* sysdeps/powerpc/nofpu/fgetexcptflg.c: Do not include <bp-sym.h>.
|
||||
(fegetexceptflag): Do not use BP_SYM in versioned symbols.
|
||||
* sysdeps/powerpc/nofpu/fraiseexcpt.c: Do not include <bp-sym.h>.
|
||||
(feraiseexcept): Do not use BP_SYM in versioned symbols.
|
||||
* sysdeps/powerpc/nofpu/fsetexcptflg.c: Do not include <bp-sym.h>.
|
||||
(fesetexceptflag): Do not use BP_SYM in versioned symbols.
|
||||
|
||||
2013-01-02 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* All files with FSF copyright notices: Update copyright dates
|
||||
using scripts/update-copyrights.
|
||||
|
||||
2012-12-05 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fgetexcptflg.c (__fegetexceptflag):
|
||||
Specify return type as int.
|
||||
|
||||
2012-11-30 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Remove fma ulps.
|
||||
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Update.
|
||||
|
||||
2012-11-03 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fclrexcpt.c (feclearexcept): Add
|
||||
libm_hidden_ver.
|
||||
|
||||
2012-10-31 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Fix sort order.
|
||||
|
||||
2012-10-30 Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
|
||||
Ryan S. Arnold <rsa@linux.vnet.ibm.com>
|
||||
|
||||
[BZ #14595]
|
||||
* sysdeps/powerpc/powerpc32/476/memset.S: New file copied from
|
||||
405/memset.S to preserve 128-byte cacheline size.
|
||||
* sysdeps/powerpc/powerpc32/405/memset.S (memset): Fix cacheline size
|
||||
to 32-bytes for 405, 440, and 464 processors.
|
||||
|
||||
2012-10-19 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist
|
||||
(GLIBC_2.17): Add clock_* symbols.
|
||||
|
||||
2012-09-26 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Add __ppc_get_timebase_freq.
|
||||
|
||||
2012-09-12 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/get-rounding-mode.h: New file.
|
||||
|
||||
2012-07-25 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Add secure_getenv.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist:
|
||||
Likewise.
|
||||
|
||||
2012-07-20 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* data/localplt-powerpcsoft-linux-gnu.data: Move to ...
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/localplt.data:
|
||||
... here.
|
||||
|
||||
2012-07-17 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* data/c++-types-powerpcsoft-linux-gnu.data: Move to ...
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/c++-types.data:
|
||||
... here.
|
||||
|
||||
2012-07-03 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platforms): Add
|
||||
"ppca2".
|
||||
* sysdeps/powerpc/dl-procinfo.h (_DL_PLATFORMS_COUNT): Increase to
|
||||
13.
|
||||
(PPC_PLATFORM_PPCA2): Define.
|
||||
(PPC_PLATFORM_PPC405): Increase value.
|
||||
(PPC_PLATFORM_PPC440): Likewise.
|
||||
(PPC_PLATFORM_PPC464): Likewise.
|
||||
(PPC_PLATFORM_PPC476): Likewise.
|
||||
(_dl_string_platform): Handle ppca2.
|
||||
|
||||
2012-06-13 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* data/localplt-powerpcsoft-linux-gnu.data: Allow abort and
|
||||
soft-fp symbols to be absent.
|
||||
|
||||
2012-06-08 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Update.
|
||||
|
||||
2012-05-31 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Regenerated.
|
||||
|
||||
2012-05-30 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/soft-fp/sfp-machine.h (FP_EX_DENORM): Remove.
|
||||
(FP_TRAPPING_EXCEPTIONS): Define.
|
||||
|
||||
2012-05-21 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libm.abilist
|
||||
(__fe_nomask_env): Remove.
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Update.
|
||||
|
||||
2012-05-16 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/ld.abilist:
|
||||
New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libBrokenLocale.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libanl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libcrypt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libdl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libm.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libnsl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libresolv.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/librt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libthread_db.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libutil.abilist:
|
||||
Likewise.
|
||||
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2012-02-20 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Resort with
|
||||
gen-libm-test.pl -n in C locale.
|
||||
|
||||
2010-09-03 Luis Machado <luisgpm@br.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/dl-procinfo.c: New file.
|
||||
* sysdeps/powerpc/dl-procinfo.h: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/memcmp.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/memcpy.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/memset.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/strcmp.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/strcpy.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/strlen.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/405/strncmp.S: New file.
|
||||
* sysdeps/powerpc/powerpc32/440/Implies: New file.
|
||||
* sysdeps/powerpc/powerpc32/464/Implies: New file.
|
||||
* sysdeps/powerpc/powerpc32/476/Implies: New file.
|
||||
* sysdeps/powerpc/powerpc32/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/405/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/440/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/464/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/476/Implies: New file.
|
||||
|
||||
2010-10-11 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/feupdateenv.c (feupdateenv): Add
|
||||
libm_hidden_ver.
|
||||
* sysdeps/powerpc/nofpu/ftestexcept.c (fetestexcept): Add
|
||||
libm_hidden_def.
|
||||
|
||||
2010-02-10 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fegetenv.c: Add hidden alias.
|
||||
|
||||
2008-08-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/shlib-versions: New.
|
||||
* c++-types-powerpcsoft-linux-gnu.data: New.
|
||||
* localplt-powerpcsoft-linux-gnu.data: New.
|
||||
* sysdeps/powerpc/nofpu/feholdexcpt.c (feholdexcept): Use
|
||||
__fegetenv.
|
||||
|
||||
2007-08-29 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fsetexcptflg.c (__fesetexceptflag): Do not
|
||||
clobber other exceptions.
|
||||
* sysdeps/powerpc/nofpu/feupdateenv.c (__feupdateenv): Raise new
|
||||
exceptions.
|
||||
* sysdeps/powerpc/nofpu/fraiseexcpt.c (__feraiseexcept): Handle
|
||||
multiple new exceptions if some are disabled.
|
||||
* sysdeps/powerpc/nofpu/sim-full.c (__simulate_exceptions): Likewise.
|
||||
|
||||
2007-07-13 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/Makefile: Remove fe_nomask from libm-support.
|
||||
|
||||
2007-05-23 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/feholdexcpt.c (feholdexcept): Disable
|
||||
exceptions. Use the updated env in fesetenv().
|
||||
Add libm_hidden_def.
|
||||
|
||||
2007-01-23 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
[BZ #2749]
|
||||
* sysdeps/powerpc/nofpu/fenv_libc.h: New file.
|
||||
|
||||
2007-01-08 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fesetenv.c (__sim_exceptions,
|
||||
__sim_disabled_exceptions, __sim_round_mode): Remove declarations.
|
||||
|
||||
2006-10-05 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
[BZ #2749]
|
||||
* sysdeps/powerpc/nofpu/Makefile
|
||||
[subdirs-soft-fp] (sysdep_routines): Remove gcc-quad-routines.
|
||||
[subdirs-math] (CPPFLAGS): Add -I../soft-fp.
|
||||
[subdirs-math] (CFLAGS-e_powl.c): Add -fno-builtin-fabsl.
|
||||
[subdirs-math] (CFLAGS-s_ccoshl.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_csinhl.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_clogl.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_clog10l.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_csinl.c): Likewise.
|
||||
[subdirs-math] (CFLAGS-s_csqrtl.c): Likewise.
|
||||
* sysdeps/powerpc/nofpu/Versions (GLIBC_2.3.2): Remove __fixtfdi,
|
||||
__fixtfsi, and __trunctfsf2.
|
||||
(GLIBC_2.4): Remove __floatunditf, __floatunsitf, and __unordtf2.
|
||||
Add __nedf2, __nesf2, __gtdf2, __gtsf2, __ltdf2, __ltsf2.
|
||||
* sysdeps/powerpc/nofpu/libm-test-ulps: Update for soft-fp.
|
||||
* sysdeps/powerpc/soft-fp/sfp-machine.h: New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/Implies: New file.
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/getcontext.S:
|
||||
New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/setcontext.S:
|
||||
New file.
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/swapcontext.S:
|
||||
New file.
|
||||
|
||||
2006-01-27 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/Subdirs: New file.
|
||||
|
||||
* sysdeps/powerpc/nofpu/Makefile [$(subdir) = soft-fp]
|
||||
(sysdep_routines): Add $(gcc-quad-routines) here.
|
||||
|
||||
2006-01-06 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/Versions (libc: GLIBC_2.4): New set.
|
||||
Add __floatundidf, __floatundisf, __floatunditf, __floatunsidf,
|
||||
__floatunsisf, __floatunsitf, __unorddf2, __unordsf2, __unordtf2.
|
||||
|
||||
2005-10-11 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/nofpu/fesetround.c: Add libm_hidden_def.
|
||||
@@ -1,741 +0,0 @@
|
||||
This file describes changes to the TILE-Gx and TILEPro ports while they
|
||||
were in the ports add-on directory. These ports are no longer part of
|
||||
an add-on and so future changes to them should be listed in the top-level
|
||||
ChangeLog file, not here.
|
||||
|
||||
|
||||
|
||||
2014-02-10 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile: Move directory to ../sysdeps/tile.
|
||||
* sysdeps/unix/sysv/linux/tile: Move directory to
|
||||
../sysdeps/unix/sysv/linux/tile.
|
||||
|
||||
2014-01-03 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Regenerated.
|
||||
|
||||
2014-01-06 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/sys/ptrace.h (ptrace_peeksiginfo_args):
|
||||
Rename to ...
|
||||
(__ptrace_peeksiginfo_args): ... this.
|
||||
|
||||
2013-10-30 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/configure.in: Moved to ...
|
||||
* sysdeps/unix/sysv/linux/tile/configure.ac: ... here.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/configure.in: Moved to ...
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/configure.ac: ... here.
|
||||
* sysdeps/unix/sysv/linux/tile/configure: Regenerated.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/configure: Likewise.
|
||||
|
||||
2013-09-22 Carlos O'Donell <carlos@redhat.com>
|
||||
|
||||
[BZ #15754]
|
||||
* sysdeps/tile/stackguard-macros.h: Define POINTER_CHK_GUARD.
|
||||
|
||||
2013-09-20 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* sysdeps/tile/ffs.c (__ffs): Define as hidden.
|
||||
|
||||
2013-08-21 Ondřej Bílka <neleai@seznam.cz>
|
||||
|
||||
* sysdeps/tile/jmpbuf-offsets.h: Fix typos.
|
||||
|
||||
2013-07-22 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
[BZ #15759]
|
||||
* sysdeps/tile/dl-runtime.c (sim_dlclose): New function.
|
||||
(_dl_unmap): Call sim_dlclose().
|
||||
|
||||
2013-07-19 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/sys/ptrace.h
|
||||
(__ptrace_peeksiginfo_args): Add missing semicolon.
|
||||
|
||||
2013-07-03 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/dl-static.c: New file to support
|
||||
variable page size for tile.
|
||||
* sysdeps/unix/sysv/linux/tile/ldsodefs.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/Makefile: Build dl-static in elf.
|
||||
* sysdeps/unix/sysv/linux/tile/Versions: Add _dl_var_init.
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Update with new tests.
|
||||
|
||||
* sysdeps/tile/s_fma.c: Use soft-fp version instead of ieee754.
|
||||
* sysdeps/tile/s_fmaf.c: Likewise.
|
||||
* sysdeps/tile/sfp-machine.h: New file.
|
||||
|
||||
2013-07-04 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/sys/ptrace.h (PTRACE_PEEKSIGINFO):
|
||||
Add new value from Linux 3.10.
|
||||
(ptrace_peeksiginfo_args): Add.
|
||||
(__ptrace_peeksiginfo_flags): Add.
|
||||
(PTRACE_SETREGSET, PTRACE_SEIZE, PTRACE_INTERRUPT, PTRACE_LISTEN):
|
||||
Add.
|
||||
|
||||
2013-06-28 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/fegetenv.c: Delete now-redundant file.
|
||||
* sysdeps/tile/fegetround.c: Likewise.
|
||||
* sysdeps/tile/feholdexcpt.c: Likewise.
|
||||
* sysdeps/tile/fesetenv.c: Likewise.
|
||||
* sysdeps/tile/fesetround.c: Likewise.
|
||||
* sysdeps/tile/feupdateenv.c: Likewise.
|
||||
|
||||
2013-06-15 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist:
|
||||
Update.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
|
||||
2013-06-12 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/bits/endian.h (__BYTE_ORDER): Default to little.
|
||||
|
||||
2013-06-05 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/tile/tilepro/memcpy.S: Remove trailing whitespace.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/clone.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/setcontext.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/swapcontext.S: Likewise.
|
||||
|
||||
2013-05-29 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
[BZ #15465]
|
||||
* sysdeps/tile/dl-machine.h (elf_machine_rela): Use
|
||||
RTLD_PROGNAME.
|
||||
|
||||
2013-05-23 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/tilegx/Makefile ($(cflags-mcmodel-large)):
|
||||
Test for assembler and linker support for "-mcmodel=large -fpic"
|
||||
in addition to compiler support; provide -DNO_PLT_PCREL if not.
|
||||
* sysdeps/tile/start.S [NO_PLT_PCREL]: Guard for no PC-relative
|
||||
PLT operators in assembly.
|
||||
* sysdeps/tile/crti.S [NO_PLT_PCREL]: Likewise.
|
||||
|
||||
2013-05-22 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/bits/siginfo.h (siginfo_t): Fix comment
|
||||
formatting. Add si_addr_lsb to _sifields.sigfault.
|
||||
(si_addr_lsb): Define new macro.
|
||||
(BUS_MCEERR_AR, BUS_MCEERR_AO): Define new values.
|
||||
|
||||
2013-05-22 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Update test names.
|
||||
|
||||
2013-05-19 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Update names of sincos tests.
|
||||
|
||||
2013-05-16 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/tile/tilegx/memusage.h: Add missing #include <stdint.h> due
|
||||
to uint64_t or uint32_t usage.
|
||||
* sysdeps/tile/tilegx/string-endian.h: Likewise.
|
||||
|
||||
2013-03-11 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
[BZ #15234]
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist
|
||||
(GLIBC_2.12): Remove pthread_atfork.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist
|
||||
(GLIBC_2.12): Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist
|
||||
(GLIBC_2.12): Likewise.
|
||||
|
||||
2013-03-05 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/bits/mman.h: Remove all defines
|
||||
provided by bits/mman-linux.h and include <bits/mman-linux.h>.
|
||||
|
||||
2013-02-28 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h
|
||||
(FUTEX_WAIT_REQUEUE_PI): Define.
|
||||
(FUTEX_CMP_REQUEUE_PI): Likewise.
|
||||
(lll_futex_wait_requeue_pi): Likewise.
|
||||
(lll_futex_timed_wait_requeue_pi): Likewise.
|
||||
(lll_futex_cmp_requeue_pi): Likewise.
|
||||
|
||||
2013-02-18 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist:
|
||||
Add __cxa_thread_atexit_impl.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist:
|
||||
Likewise.
|
||||
|
||||
2013-01-10 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/configure.in: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/configure: New file.
|
||||
|
||||
2013-01-02 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* All files with FSF copyright notices: Update copyright dates
|
||||
using scripts/update-copyrights.
|
||||
|
||||
2012-12-28 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h
|
||||
(lll_futex_timed_wait_bitset): New macro.
|
||||
|
||||
2012-12-14 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/clone.S: Fix DWARF info.
|
||||
|
||||
2012-11-29 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/s_fmaf.c: Remove redundant #defines now provided
|
||||
in sysdeps/tile/math_private.h.
|
||||
|
||||
2012-11-20 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Account for new tests.
|
||||
|
||||
* sysdeps/tile/bits/byteswap.h: Include <bits/types.h>.
|
||||
(__bswap_64): Use __uint64_t instead of unsigned long long int.
|
||||
|
||||
* sysdeps/tile/s_fma.c: Remove redundant #defines now provided
|
||||
in sysdeps/tile/math_private.h.
|
||||
|
||||
2012-11-06 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/tilegx/memmove.c: New file.
|
||||
|
||||
* sysdeps/tile/nptl/pthread_spin_unlock.c: New file.
|
||||
|
||||
2012-11-05 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/math_private.h: Provide additional no-op defines
|
||||
for exception and rounding macros.
|
||||
|
||||
* sysdeps/tile/tilegx/Makefile: New file.
|
||||
* sysdeps/tile/crti.S: Support large memory model.
|
||||
* sysdeps/tile/start.S: Likewise.
|
||||
|
||||
2012-11-02 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/dl-runtime.c (_dl_after_load): Handle simulator
|
||||
notification better for dlopen() of relative paths.
|
||||
|
||||
* sysdeps/tile/tilegx/memcpy.c (__memcpy): Optimize.
|
||||
* sysdeps/tile/memcopy.h: New file.
|
||||
* sysdeps/tile/wordcopy.c: New file.
|
||||
|
||||
2012-11-03 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #3439]
|
||||
* sysdeps/tile/bits/fenv.h (FE_TONEAREST): Define macro to integer
|
||||
constant usable in #if and use that to give value to enum
|
||||
constant.
|
||||
|
||||
2012-11-03 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Account for new tests.
|
||||
|
||||
2012-10-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/dl-machine.h: Use new DL_AFTER_LOAD macro
|
||||
and rename _dl_arch_map_object to _dl_after_load.
|
||||
* sysdeps/tile/dl-runtime.c: Rename _dl_arch_map_object
|
||||
to _dl_after_load and remove spurious DL_UNMAP definition.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/init-first.c: Use better #include.
|
||||
* sysdeps/unix/sysv/linux/tile/gettimeofday.c: Use gettimeofday
|
||||
aliases that match existing tile ABI.
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Account for new tests.
|
||||
|
||||
2012-10-26 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/Makefile (sysdep_routines):
|
||||
Include dl-vdso.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/gettimeofday.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/init-first.c: New file.
|
||||
|
||||
2012-10-19 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist:
|
||||
(GLIBC_2.17): Add clock_* symbols.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist:
|
||||
Likewise.
|
||||
|
||||
2012-10-11 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c: New file.
|
||||
|
||||
2012-10-02 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h: Fix clone
|
||||
flag name in comment to CLONE_CHILD_CLEARTID.
|
||||
|
||||
2012-09-17 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Account for new tests.
|
||||
|
||||
2012-09-06 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/sys/procfs.h: Fix type of prfpregset_t.
|
||||
|
||||
[BZ #14237]
|
||||
* sysdeps/tile/__tls_get_addr.S: Fix TLS module initialization bug.
|
||||
|
||||
2012-08-27 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h
|
||||
(__ASSUME_STAT64_SYSCALL): Remove.
|
||||
|
||||
2012-08-21 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h
|
||||
(__ASSUME_FADVISE64_64_SYSCALL): Remove.
|
||||
|
||||
2012-08-20 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h
|
||||
(__ASSUME_MMAP2_SYSCALL): Remove.
|
||||
|
||||
2012-08-14 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h
|
||||
(__ASSUME_CLONE_THREAD_FLAGS): Remove.
|
||||
|
||||
2012-08-08 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h
|
||||
(__ASSUME_TGKILL): Remove.
|
||||
|
||||
2012-08-02 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/sysdep.h: Do not define ASM_TYPE_DIRECTIVE.
|
||||
|
||||
2012-08-01 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h
|
||||
(__ASSUME_FCNTL64): Remove.
|
||||
|
||||
2012-07-26 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/sys/ptrace.h (__ptrace_eventcodes):
|
||||
Add new value PTRACE_EVENT_SECCOMP from Linux 3.5.
|
||||
(__ptrace_setoptions): Add new value PTRACE_O_TRACESECCOMP, adjust
|
||||
PTRACE_O_MASK.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/bits/siginfo.h (siginfo_t): Add
|
||||
_sigsys.
|
||||
(si_call_addr, si_syscall, si_arch): Define new macro.
|
||||
|
||||
2012-07-25 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist:
|
||||
Add secure_getenv.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist:
|
||||
Likewise.
|
||||
|
||||
2012-07-17 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/setcontext.S: Ensure exit status is
|
||||
zero if uc_link is NULL.
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Account for new tests.
|
||||
|
||||
* data/c++-types-tilepro-linux-gnu.data: Move to ...
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/c++-types.data: ... here.
|
||||
* data/c++-types-tilegx-linux-gnu.data: Move to ...
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/c++-types.data:
|
||||
... here.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/c++-types.data:
|
||||
New file.
|
||||
|
||||
2012-07-10 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/makecontext.c (__makecontext):
|
||||
Correct typo in comment.
|
||||
|
||||
* sysdeps/tile/sysdep.h (ENTRY): Use .globl, not
|
||||
ASM_GLOBAL_DIRECTIVE.
|
||||
|
||||
2012-05-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/Makefile: Remove test
|
||||
that $(subdir) is "misc" when setting abi- variables.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile: New file.
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Account for new tests.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/Makefile: New file.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c: Replace
|
||||
_internal alias by hidden_def.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h
|
||||
(__ASSUME_NEW_GETRLIMIT_SYSCALL, __ASSUME_TRUNCATE64_SYSCALL): Remove.
|
||||
|
||||
2012-05-23 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/bits/mman.h (MADV_DONTDUMP): Define.
|
||||
(MADV_DODUMP): Likewise.
|
||||
|
||||
2012-05-22 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/bits/libm-test-ulps: Update.
|
||||
|
||||
* sysdeps/tile/bits/wordsize.h (__WORDSIZE_COMPAT32): Rename to
|
||||
__WORDSIZE_TIME64_COMPAT32.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist: Update.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist:
|
||||
Update.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist:
|
||||
Update.
|
||||
|
||||
2012-05-17 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/fegetenv.c: Version fegetenv() like fesetenv().
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist:
|
||||
Add fegetenv.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist: Likewise.
|
||||
|
||||
* sysdeps/tile/stackguard-macros.h: Support tilegx32.
|
||||
|
||||
* data/c++-types-tilepro-linux-gnu.data: Renamed from
|
||||
data/c++-types-tile-linux-gnu.data.
|
||||
* data/c++-types-tilegx-linux-gnu.data: New file.
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: Improved fma() and exp10().
|
||||
|
||||
* sysdeps/tile/s_fma.c: Use ieee754/dbl-64 without rounding or
|
||||
exception support; it's still much better than the generic version.
|
||||
|
||||
2012-05-16 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/ucontext_i: Fix tilegx32 offset bug.
|
||||
* sysdeps/unix/sysv/linux/tile/getcontext.S: Fix tilegx32 bug
|
||||
where we accessed "uc_flags" as an 8-byte field.
|
||||
* sysdeps/unix/sysv/linux/tile/setcontext.S: Likewise,
|
||||
and also fix frame code not to access stack below "sp".
|
||||
* sysdeps/unix/sysv/linux/tile/swapcontext.S: Fix frame code not
|
||||
to access stack below "sp", and add frame unwind to error path.
|
||||
|
||||
2012-05-15 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/sotruss-lib.c: New file.
|
||||
|
||||
* sysdeps/tile/math_private.h (feraiseexcept): Use statement
|
||||
expression syntax to avoid compiler warning.
|
||||
|
||||
* sysdeps/tile/libm-test-ulps: New file.
|
||||
|
||||
* sysdeps/tile/bits/fenv.h (__FE_UNDEFINED): New symbol.
|
||||
|
||||
* sysdeps/tile/ldsodefs.h (ARCH_PLTEXIT_MEMBERS): Add proper
|
||||
const qualifier to "inregs" argument.
|
||||
|
||||
* sysdeps/tile/elf/stackguard-macros.h: Delete unused file.
|
||||
|
||||
2012-05-14 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/ld.abilist:
|
||||
New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libBrokenLocale.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libanl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libcrypt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libdl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libm.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libnsl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libresolv.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/librt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libthread_db.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libutil.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/ld.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libBrokenLocale.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libanl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libcrypt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libdl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libm.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libnsl.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libresolv.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/librt.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libthread_db.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libutil.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/ld.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libBrokenLocale.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libanl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libcrypt.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libdl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libm.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libnsl.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libpthread.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libresolv.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/librt.abilist: Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libthread_db.abilist:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libutil.abilist: Likewise.
|
||||
|
||||
* sysdeps/tile/dl-start.S: Align stack for tilegx32.
|
||||
|
||||
2012-05-12 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/sys/dataplane.h: Add <features.h>.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/clone.S: Add missing CFI.
|
||||
|
||||
* sysdeps/tile/tls-macros.h: Fix buggy TLS_GD, etc., macros.
|
||||
|
||||
* sysdeps/tile/tilegx/memchr.c: Use new copy_byte() function
|
||||
to efficiently generate a large constant for masking.
|
||||
* sysdeps/tile/tilegx/memset.c: Likewise.
|
||||
* sysdeps/tile/tilegx/rawmemchr.c: Likewise.
|
||||
* sysdeps/tile/tilegx/strchr.c: Likewise.
|
||||
* sysdeps/tile/tilegx/strchrnul.c: Likewise.
|
||||
* sysdeps/tile/tilegx/strrchr.c: Likewise.
|
||||
* sysdeps/tile/tilegx/string-endian.h (copy_byte): New function.
|
||||
|
||||
* sysdeps/tile/tilegx/memcpy.c: Allow memcpy(p, p, n)
|
||||
without corrupting memory at "p".
|
||||
|
||||
* sysdeps/tile/__tls_get_addr.S: Use __WORDSIZE, not _LP64.
|
||||
|
||||
* sysdeps/tile/stackguard-macros.h: New file.
|
||||
* sysdeps/tile/elf/stackguard-macros.h: New stub include file.
|
||||
|
||||
* sysdeps/tile/Makefile (ELF_MACHINE_PLTREL_OVERLAP):
|
||||
Remove variable no longer used by core.
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/bits/siginfo.h: Don't name
|
||||
siginfo_t struct. Add forward declaration of pthread_attr_t and
|
||||
use it in sigevent.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h: Name
|
||||
pthread_attr_t union.
|
||||
|
||||
* sysdeps/tile/crti.S: New file, based on compiler output
|
||||
for sysdeps/generic/initfini.c.
|
||||
* sysdeps/tile/crtn.S: Likewise.
|
||||
* sysdeps/tile/Makefile (CFLAGS-initfini.s): Remove variable.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/Makefile
|
||||
(CFLAGS-pt-initfini.s): Likewise.
|
||||
* sysdeps/tile/elf/start.S: Moved to ...
|
||||
* sysdeps/tile/start.S: ...here.
|
||||
|
||||
2012-04-15 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h: Include
|
||||
<_itoa.h> instead of <stdio-common/_itoa.h>.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h: Likewise.
|
||||
|
||||
2012-03-09 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/tile/math_private.h: Use include_next to
|
||||
chain math_private.h.
|
||||
|
||||
2012-03-09 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #13673]
|
||||
Replace FSF snail mail address with URLs, as per GNU coding standards.
|
||||
|
||||
2012-01-31 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/bits/fenv.h: Use const instead of __const.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/cachectl.h: Likewise.
|
||||
|
||||
2012-01-31 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/sysdep.h: Use <feedback.h> not <feedback-asm.h>
|
||||
to reflect change from gcc community giveback.
|
||||
|
||||
2012-01-31 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/math_private.h: Ignore feraiseexcept() internally.
|
||||
|
||||
2012-01-30 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* sysdeps/tile/sysdep.h: Don't check HAVE_ELF or NO_UNDERSCORES.
|
||||
|
||||
2012-01-07 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* sysdeps/tile/backtrace.c: Use x86_64 version of backtrace.c.
|
||||
|
||||
2011-12-03 Chris Metcalf <cmetcalf@tilera.com>
|
||||
|
||||
* data/c++-types-tile-linux-gnu.data: New file.
|
||||
* sysdeps/tile/Implies: New file.
|
||||
* sysdeps/tile/Makefile: New file.
|
||||
* sysdeps/tile/Versions: New file.
|
||||
* sysdeps/tile/__longjmp.S: New file.
|
||||
* sysdeps/tile/__tls_get_addr.S: New file.
|
||||
* sysdeps/tile/_mcount.S: New file.
|
||||
* sysdeps/tile/abort-instr.h: New file.
|
||||
* sysdeps/tile/backtrace.c: New file.
|
||||
* sysdeps/tile/bits/atomic.h: New file.
|
||||
* sysdeps/tile/bits/byteswap.h: New file.
|
||||
* sysdeps/tile/bits/endian.h: New file.
|
||||
* sysdeps/tile/bits/fenv.h: New file.
|
||||
* sysdeps/tile/bits/link.h: New file.
|
||||
* sysdeps/tile/bits/mathdef.h: New file.
|
||||
* sysdeps/tile/bits/mathinline.h: New file.
|
||||
* sysdeps/tile/bits/setjmp.h: New file.
|
||||
* sysdeps/tile/bsd-_setjmp.S: New file.
|
||||
* sysdeps/tile/bsd-setjmp.S: New file.
|
||||
* sysdeps/tile/bzero.S: New file.
|
||||
* sysdeps/tile/dl-lookupcfg.h: New file.
|
||||
* sysdeps/tile/dl-machine.h: New file.
|
||||
* sysdeps/tile/dl-runtime.c: New file.
|
||||
* sysdeps/tile/dl-start.S: New file.
|
||||
* sysdeps/tile/dl-tls.c: New file.
|
||||
* sysdeps/tile/dl-tls.h: New file.
|
||||
* sysdeps/tile/dl-trampoline.S: New file.
|
||||
* sysdeps/tile/elf/start.S: New file.
|
||||
* sysdeps/tile/fegetenv.c: New file.
|
||||
* sysdeps/tile/fegetround.c: New file.
|
||||
* sysdeps/tile/feholdexcpt.c: New file.
|
||||
* sysdeps/tile/fesetenv.c: New file.
|
||||
* sysdeps/tile/fesetround.c: New file.
|
||||
* sysdeps/tile/feupdateenv.c: New file.
|
||||
* sysdeps/tile/ffs.c: New file.
|
||||
* sysdeps/tile/ffsll.c: New file.
|
||||
* sysdeps/tile/gccframe.h: New file.
|
||||
* sysdeps/tile/jmpbuf-offsets.h: New file.
|
||||
* sysdeps/tile/jmpbuf-unwind.h: New file.
|
||||
* sysdeps/tile/ldsodefs.h: New file.
|
||||
* sysdeps/tile/machine-gmon.h: New file.
|
||||
* sysdeps/tile/nptl/Makefile: New file.
|
||||
* sysdeps/tile/nptl/pthread_spin_lock.c: New file.
|
||||
* sysdeps/tile/nptl/pthread_spin_trylock.c: New file.
|
||||
* sysdeps/tile/nptl/pthreaddef.h: New file.
|
||||
* sysdeps/tile/nptl/tcb-offsets.sym: New file.
|
||||
* sysdeps/tile/nptl/tls.h: New file.
|
||||
* sysdeps/tile/preconfigure: New file.
|
||||
* sysdeps/tile/s_fma.c: New file.
|
||||
* sysdeps/tile/s_fmaf.c: New file.
|
||||
* sysdeps/tile/setjmp.S: New file.
|
||||
* sysdeps/tile/shlib-versions: New file.
|
||||
* sysdeps/tile/stackinfo.h: New file.
|
||||
* sysdeps/tile/sysdep.h: New file.
|
||||
* sysdeps/tile/tilegx/bits/atomic.h: New file.
|
||||
* sysdeps/tile/tilegx/bits/wordsize.h: New file.
|
||||
* sysdeps/tile/tilegx/memchr.c: New file.
|
||||
* sysdeps/tile/tilegx/memcpy.c: New file.
|
||||
* sysdeps/tile/tilegx/memset.c: New file.
|
||||
* sysdeps/tile/tilegx/memusage.h: New file.
|
||||
* sysdeps/tile/tilegx/rawmemchr.c: New file.
|
||||
* sysdeps/tile/tilegx/strchr.c: New file.
|
||||
* sysdeps/tile/tilegx/strchrnul.c: New file.
|
||||
* sysdeps/tile/tilegx/string-endian.h: New file.
|
||||
* sysdeps/tile/tilegx/strlen.c: New file.
|
||||
* sysdeps/tile/tilegx/strrchr.c: New file.
|
||||
* sysdeps/tile/tilegx/tilegx32/Implies: New file.
|
||||
* sysdeps/tile/tilegx/tilegx64/Implies: New file.
|
||||
* sysdeps/tile/tilepro/Implies: New file.
|
||||
* sysdeps/tile/tilepro/bits/atomic.h: New file.
|
||||
* sysdeps/tile/tilepro/bits/wordsize.h: New file.
|
||||
* sysdeps/tile/tilepro/memchr.c: New file.
|
||||
* sysdeps/tile/tilepro/memcpy.S: New file.
|
||||
* sysdeps/tile/tilepro/memset.c: New file.
|
||||
* sysdeps/tile/tilepro/memusage.h: New file.
|
||||
* sysdeps/tile/tilepro/rawmemchr.c: New file.
|
||||
* sysdeps/tile/tilepro/strchr.c: New file.
|
||||
* sysdeps/tile/tilepro/strchrnul.c: New file.
|
||||
* sysdeps/tile/tilepro/strlen.c: New file.
|
||||
* sysdeps/tile/tilepro/strrchr.c: New file.
|
||||
* sysdeps/tile/tls-macros.h: New file.
|
||||
* sysdeps/tile/tst-audit.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/Versions: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/environments.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/local_lim.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/mman.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/mman.h~: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/sigaction.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/bits/siginfo.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/cacheflush.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/configure: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/configure.in: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/getcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/kernel-features.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/makecontext.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/Makefile: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/bits/semaphore.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/clone.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/createthread.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/fork.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/lowlevellock.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/pt-vfork.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/pthread_once.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/sysdep-cancel.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/vfork.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/nptl/waitpid.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/profil-counter.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/set_dataplane.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/setcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sigcontextinfo.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/swapcontext.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/cachectl.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/dataplane.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/procfs.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/ptrace.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/reg.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/ucontext.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sys/user.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/syscall.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sysdep.c: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/sysdep.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/Implies: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h: New file.
|
||||
* sysdeps/unix/sysv/linux/tile/ucontext_i.h: New file.
|
||||
@@ -2,13 +2,14 @@ Installing the GNU C Library
|
||||
****************************
|
||||
|
||||
Before you do anything else, you should read the FAQ at
|
||||
<http://sourceware.org/glibc/wiki/FAQ>. It answers common questions and
|
||||
describes problems you may experience with compilation and installation.
|
||||
`http://sourceware.org/glibc/wiki/FAQ'. It answers common questions
|
||||
and describes problems you may experience with compilation and
|
||||
installation.
|
||||
|
||||
Features can be added to the GNU C Library via "add-on" bundles.
|
||||
These are separate tar files, which you unpack into the top level of the
|
||||
source tree. Then you give 'configure' the '--enable-add-ons' option to
|
||||
activate them, and they will be compiled into the library.
|
||||
These are separate tar files, which you unpack into the top level of
|
||||
the source tree. Then you give `configure' the `--enable-add-ons'
|
||||
option to activate them, and they will be compiled into the library.
|
||||
|
||||
You will need recent versions of several GNU tools: definitely GCC
|
||||
and GNU Make, and possibly others. *Note Tools for Compilation::,
|
||||
@@ -19,12 +20,12 @@ Configuring and compiling the GNU C Library
|
||||
|
||||
The GNU C Library cannot be compiled in the source directory. You must
|
||||
build it in a separate build directory. For example, if you have
|
||||
unpacked the GNU C Library sources in '/src/gnu/glibc-VERSION', create a
|
||||
directory '/src/gnu/glibc-build' to put the object files in. This
|
||||
allows removing the whole build directory in case an error occurs, which
|
||||
is the safest way to get a fresh start and should always be done.
|
||||
unpacked the GNU C Library sources in `/src/gnu/glibc-VERSION', create
|
||||
a directory `/src/gnu/glibc-build' to put the object files in. This
|
||||
allows removing the whole build directory in case an error occurs,
|
||||
which is the safest way to get a fresh start and should always be done.
|
||||
|
||||
From your object directory, run the shell script 'configure' located
|
||||
From your object directory, run the shell script `configure' located
|
||||
at the top level of the source tree. In the scenario above, you'd type
|
||||
|
||||
$ ../glibc-VERSION/configure ARGS...
|
||||
@@ -33,199 +34,141 @@ at the top level of the source tree. In the scenario above, you'd type
|
||||
directory, the compilation may need to create or modify files and
|
||||
directories in the source directory.
|
||||
|
||||
'configure' takes many options, but the only one that is usually
|
||||
mandatory is '--prefix'. This option tells 'configure' where you want
|
||||
the GNU C Library installed. This defaults to '/usr/local', but the
|
||||
`configure' takes many options, but the only one that is usually
|
||||
mandatory is `--prefix'. This option tells `configure' where you want
|
||||
the GNU C Library installed. This defaults to `/usr/local', but the
|
||||
normal setting to install as the standard system library is
|
||||
'--prefix=/usr' for GNU/Linux systems and '--prefix=' (an empty prefix)
|
||||
`--prefix=/usr' for GNU/Linux systems and `--prefix=' (an empty prefix)
|
||||
for GNU/Hurd systems.
|
||||
|
||||
It may also be useful to set the CC and CFLAGS variables in the
|
||||
environment when running 'configure'. CC selects the C compiler that
|
||||
environment when running `configure'. CC selects the C compiler that
|
||||
will be used, and CFLAGS sets optimization options for the compiler.
|
||||
|
||||
The following list describes all of the available options for
|
||||
'configure':
|
||||
`configure':
|
||||
|
||||
'--prefix=DIRECTORY'
|
||||
`--prefix=DIRECTORY'
|
||||
Install machine-independent data files in subdirectories of
|
||||
'DIRECTORY'. The default is to install in '/usr/local'.
|
||||
`DIRECTORY'. The default is to install in `/usr/local'.
|
||||
|
||||
'--exec-prefix=DIRECTORY'
|
||||
`--exec-prefix=DIRECTORY'
|
||||
Install the library and other machine-dependent files in
|
||||
subdirectories of 'DIRECTORY'. The default is to the '--prefix'
|
||||
directory if that option is specified, or '/usr/local' otherwise.
|
||||
subdirectories of `DIRECTORY'. The default is to the `--prefix'
|
||||
directory if that option is specified, or `/usr/local' otherwise.
|
||||
|
||||
'--with-headers=DIRECTORY'
|
||||
Look for kernel header files in DIRECTORY, not '/usr/include'. The
|
||||
GNU C Library needs information from the kernel's header files
|
||||
`--with-headers=DIRECTORY'
|
||||
Look for kernel header files in DIRECTORY, not `/usr/include'.
|
||||
The GNU C Library needs information from the kernel's header files
|
||||
describing the interface to the kernel. The GNU C Library will
|
||||
normally look in '/usr/include' for them, but if you specify this
|
||||
normally look in `/usr/include' for them, but if you specify this
|
||||
option, it will look in DIRECTORY instead.
|
||||
|
||||
This option is primarily of use on a system where the headers in
|
||||
'/usr/include' come from an older version of the GNU C Library.
|
||||
`/usr/include' come from an older version of the GNU C Library.
|
||||
Conflicts can occasionally happen in this case. You can also use
|
||||
this option if you want to compile the GNU C Library with a newer
|
||||
set of kernel headers than the ones found in '/usr/include'.
|
||||
set of kernel headers than the ones found in `/usr/include'.
|
||||
|
||||
'--enable-add-ons[=LIST]'
|
||||
`--enable-add-ons[=LIST]'
|
||||
Specify add-on packages to include in the build. If this option is
|
||||
specified with no list, it enables all the add-on packages it finds
|
||||
in the main source directory; this is the default behavior. You
|
||||
may specify an explicit list of add-ons to use in LIST, separated
|
||||
by spaces or commas (if you use spaces, remember to quote them from
|
||||
the shell). Each add-on in LIST can be an absolute directory name
|
||||
or can be a directory name relative to the main source directory,
|
||||
or relative to the build directory (that is, the current working
|
||||
directory). For example,
|
||||
'--enable-add-ons=nptl,../glibc-libidn-VERSION'.
|
||||
specified with no list, it enables all the add-on packages it
|
||||
finds in the main source directory; this is the default behavior.
|
||||
You may specify an explicit list of add-ons to use in LIST,
|
||||
separated by spaces or commas (if you use spaces, remember to
|
||||
quote them from the shell). Each add-on in LIST can be an
|
||||
absolute directory name or can be a directory name relative to the
|
||||
main source directory, or relative to the build directory (that
|
||||
is, the current working directory). For example,
|
||||
`--enable-add-ons=nptl,../glibc-libidn-VERSION'.
|
||||
|
||||
'--enable-kernel=VERSION'
|
||||
`--enable-kernel=VERSION'
|
||||
This option is currently only useful on GNU/Linux systems. The
|
||||
VERSION parameter should have the form X.Y.Z and describes the
|
||||
smallest version of the Linux kernel the generated library is
|
||||
expected to support. The higher the VERSION number is, the less
|
||||
compatibility code is added, and the faster the code gets.
|
||||
|
||||
'--with-binutils=DIRECTORY'
|
||||
Use the binutils (assembler and linker) in 'DIRECTORY', not the
|
||||
`--with-binutils=DIRECTORY'
|
||||
Use the binutils (assembler and linker) in `DIRECTORY', not the
|
||||
ones the C compiler would default to. You can use this option if
|
||||
the default binutils on your system cannot deal with all the
|
||||
constructs in the GNU C Library. In that case, 'configure' will
|
||||
constructs in the GNU C Library. In that case, `configure' will
|
||||
detect the problem and suppress these constructs, so that the
|
||||
library will still be usable, but functionality may be lost--for
|
||||
example, you can't build a shared libc with old binutils.
|
||||
|
||||
'--without-fp'
|
||||
`--without-fp'
|
||||
Use this option if your computer lacks hardware floating-point
|
||||
support and your operating system does not emulate an FPU.
|
||||
|
||||
'--disable-shared'
|
||||
`--disable-shared'
|
||||
Don't build shared libraries even if it is possible. Not all
|
||||
systems support shared libraries; you need ELF support and
|
||||
(currently) the GNU linker.
|
||||
|
||||
'--disable-profile'
|
||||
`--disable-profile'
|
||||
Don't build libraries with profiling information. You may want to
|
||||
use this option if you don't plan to do profiling.
|
||||
|
||||
'--enable-static-nss'
|
||||
`--disable-versioning'
|
||||
Don't compile the shared libraries with symbol version information.
|
||||
Doing this will make the resulting library incompatible with old
|
||||
binaries, so it's not recommended.
|
||||
|
||||
`--enable-static-nss'
|
||||
Compile static versions of the NSS (Name Service Switch) libraries.
|
||||
This is not recommended because it defeats the purpose of NSS; a
|
||||
program linked statically with the NSS libraries cannot be
|
||||
dynamically reconfigured to use a different name database.
|
||||
|
||||
'--enable-hardcoded-path-in-tests'
|
||||
`--without-tls'
|
||||
By default the C library is built with support for thread-local
|
||||
storage if the used tools support it. By using `--without-tls'
|
||||
this can be prevented though there generally is no reason since it
|
||||
creates compatibility problems.
|
||||
|
||||
`--enable-hardcoded-path-in-tests'
|
||||
By default, dynamic tests are linked to run with the installed C
|
||||
library. This option hardcodes the newly built C library path in
|
||||
dynamic tests so that they can be invoked directly.
|
||||
|
||||
'--disable-timezone-tools'
|
||||
By default, timezone related utilities ('zic', 'zdump', and
|
||||
'tzselect') are installed with the GNU C Library. If you are
|
||||
building these independently (e.g. by using the 'tzcode' package),
|
||||
then this option will allow disabling the install of these.
|
||||
`--build=BUILD-SYSTEM'
|
||||
`--host=HOST-SYSTEM'
|
||||
These options are for cross-compiling. If you specify both
|
||||
options and BUILD-SYSTEM is different from HOST-SYSTEM, `configure'
|
||||
will prepare to cross-compile the GNU C Library from BUILD-SYSTEM
|
||||
to be used on HOST-SYSTEM. You'll probably need the
|
||||
`--with-headers' option too, and you may have to override
|
||||
CONFIGURE's selection of the compiler and/or binutils.
|
||||
|
||||
Note that you need to make sure the external tools are kept in sync
|
||||
with the versions that the GNU C Library expects as the data
|
||||
formats may change over time. Consult the 'timezone' subdirectory
|
||||
for more details.
|
||||
|
||||
'--enable-lock-elision=yes'
|
||||
Enable lock elision for pthread mutexes by default.
|
||||
|
||||
'--enable-stack-protector'
|
||||
'--enable-stack-protector=strong'
|
||||
'--enable-stack-protector=all'
|
||||
Compile the C library and all other parts of the glibc package
|
||||
(including the threading and math libraries, NSS modules, and
|
||||
transliteration modules) using the GCC '-fstack-protector',
|
||||
'-fstack-protector-strong' or '-fstack-protector-all' options to
|
||||
detect stack overruns. Only the dynamic linker and a small number
|
||||
of routines called directly from assembler are excluded from this
|
||||
protection.
|
||||
|
||||
'--enable-pt_chown'
|
||||
The file 'pt_chown' is a helper binary for 'grantpt' (*note
|
||||
Pseudo-Terminals: Allocation.) that is installed setuid root to fix
|
||||
up pseudo-terminal ownership. It is not built by default because
|
||||
systems using the Linux kernel are commonly built with the 'devpts'
|
||||
filesystem enabled and mounted at '/dev/pts', which manages
|
||||
pseudo-terminal ownership automatically. By using
|
||||
'--enable-pt_chown', you may build 'pt_chown' and install it setuid
|
||||
and owned by 'root'. The use of 'pt_chown' introduces additional
|
||||
security risks to the system and you should enable it only if you
|
||||
understand and accept those risks.
|
||||
|
||||
'--disable-werror'
|
||||
By default, the GNU C Library is built with '-Werror'. If you wish
|
||||
to build without this option (for example, if building with a newer
|
||||
version of GCC than this version of the GNU C Library was tested
|
||||
with, so new warnings cause the build with '-Werror' to fail), you
|
||||
can configure with '--disable-werror'.
|
||||
|
||||
'--disable-mathvec'
|
||||
By default for x86_64, the GNU C Library is built with the vector
|
||||
math library. Use this option to disable the vector math library.
|
||||
|
||||
'--enable-tunables'
|
||||
Tunables support allows additional library parameters to be
|
||||
customized at runtime. This is an experimental feature and affects
|
||||
startup time and is thus disabled by default. This option can take
|
||||
the following values:
|
||||
|
||||
'no'
|
||||
This is the default if the option is not passed to configure.
|
||||
This disables tunables.
|
||||
|
||||
'yes'
|
||||
This is the default if the option is passed to configure.
|
||||
This enables tunables and selects the default frontend
|
||||
(currently 'valstring').
|
||||
|
||||
'valstring'
|
||||
This enables tunables and selects the 'valstring' frontend for
|
||||
tunables. This frontend allows users to specify tunables as a
|
||||
colon-separated list in a single environment variable
|
||||
'GLIBC_TUNABLES'.
|
||||
|
||||
'--build=BUILD-SYSTEM'
|
||||
'--host=HOST-SYSTEM'
|
||||
These options are for cross-compiling. If you specify both options
|
||||
and BUILD-SYSTEM is different from HOST-SYSTEM, 'configure' will
|
||||
prepare to cross-compile the GNU C Library from BUILD-SYSTEM to be
|
||||
used on HOST-SYSTEM. You'll probably need the '--with-headers'
|
||||
option too, and you may have to override CONFIGURE's selection of
|
||||
the compiler and/or binutils.
|
||||
|
||||
If you only specify '--host', 'configure' will prepare for a native
|
||||
compile but use what you specify instead of guessing what your
|
||||
system is. This is most useful to change the CPU submodel. For
|
||||
example, if 'configure' guesses your machine as 'i686-pc-linux-gnu'
|
||||
but you want to compile a library for 586es, give
|
||||
'--host=i586-pc-linux-gnu' or just '--host=i586-linux' and add the
|
||||
appropriate compiler flags ('-mcpu=i586' will do the trick) to
|
||||
If you only specify `--host', `configure' will prepare for a
|
||||
native compile but use what you specify instead of guessing what
|
||||
your system is. This is most useful to change the CPU submodel.
|
||||
For example, if `configure' guesses your machine as
|
||||
`i686-pc-linux-gnu' but you want to compile a library for 586es,
|
||||
give `--host=i586-pc-linux-gnu' or just `--host=i586-linux' and add
|
||||
the appropriate compiler flags (`-mcpu=i586' will do the trick) to
|
||||
CFLAGS.
|
||||
|
||||
If you specify just '--build', 'configure' will get confused.
|
||||
If you specify just `--build', `configure' will get confused.
|
||||
|
||||
'--with-pkgversion=VERSION'
|
||||
`--with-pkgversion=VERSION'
|
||||
Specify a description, possibly including a build number or build
|
||||
date, of the binaries being built, to be included in '--version'
|
||||
date, of the binaries being built, to be included in `--version'
|
||||
output from programs installed with the GNU C Library. For
|
||||
example, '--with-pkgversion='FooBar GNU/Linux glibc build 123''.
|
||||
The default value is 'GNU libc'.
|
||||
example, `--with-pkgversion='FooBar GNU/Linux glibc build 123''.
|
||||
The default value is `GNU libc'.
|
||||
|
||||
'--with-bugurl=URL'
|
||||
`--with-bugurl=URL'
|
||||
Specify the URL that users should visit if they wish to report a
|
||||
bug, to be included in '--help' output from programs installed with
|
||||
bug, to be included in `--help' output from programs installed with
|
||||
the GNU C Library. The default value refers to the main
|
||||
bug-reporting information for the GNU C Library.
|
||||
|
||||
To build the library and related programs, type 'make'. This will
|
||||
produce a lot of output, some of which may look like errors from 'make'
|
||||
but aren't. Look for error messages from 'make' containing '***'.
|
||||
To build the library and related programs, type `make'. This will
|
||||
produce a lot of output, some of which may look like errors from `make'
|
||||
but isn't. Look for error messages from `make' containing `***'.
|
||||
Those indicate that something is seriously wrong.
|
||||
|
||||
The compilation process can take a long time, depending on the
|
||||
@@ -233,167 +176,129 @@ configuration and the speed of your machine. Some complex modules may
|
||||
take a very long time to compile, as much as several minutes on slower
|
||||
machines. Do not panic if the compiler appears to hang.
|
||||
|
||||
If you want to run a parallel make, simply pass the '-j' option with
|
||||
an appropriate numeric parameter to 'make'. You need a recent GNU
|
||||
'make' version, though.
|
||||
If you want to run a parallel make, simply pass the `-j' option with
|
||||
an appropriate numeric parameter to `make'. You need a recent GNU
|
||||
`make' version, though.
|
||||
|
||||
To build and run test programs which exercise some of the library
|
||||
facilities, type 'make check'. If it does not complete successfully, do
|
||||
not use the built library, and report a bug after verifying that the
|
||||
facilities, type `make check'. If it does not complete successfully,
|
||||
do not use the built library, and report a bug after verifying that the
|
||||
problem is not already known. *Note Reporting Bugs::, for instructions
|
||||
on reporting bugs. Note that some of the tests assume they are not
|
||||
being run by 'root'. We recommend you compile and test the GNU C
|
||||
being run by `root'. We recommend you compile and test the GNU C
|
||||
Library as an unprivileged user.
|
||||
|
||||
Before reporting bugs make sure there is no problem with your system.
|
||||
The tests (and later installation) use some pre-existing files of the
|
||||
system such as '/etc/passwd', '/etc/nsswitch.conf' and others. These
|
||||
system such as `/etc/passwd', `/etc/nsswitch.conf' and others. These
|
||||
files must all contain correct and sensible content.
|
||||
|
||||
Normally, 'make check' will run all the tests before reporting all
|
||||
problems found and exiting with error status if any problems occurred.
|
||||
You can specify 'stop-on-test-failure=y' when running 'make check' to
|
||||
make the test run stop and exit with an error status immediately when a
|
||||
failure occurs.
|
||||
|
||||
The GNU C Library pretty printers come with their own set of scripts
|
||||
for testing, which run together with the rest of the testsuite through
|
||||
'make check'. These scripts require the following tools to run
|
||||
successfully:
|
||||
|
||||
* Python 2.7.6/3.4.3 or later
|
||||
|
||||
Python is required for running the printers' test scripts.
|
||||
|
||||
* PExpect 4.0
|
||||
|
||||
The printer tests drive GDB through test programs and compare its
|
||||
output to the printers'. PExpect is used to capture the output of
|
||||
GDB, and should be compatible with the Python version in your
|
||||
system.
|
||||
|
||||
* GDB 7.8 or later with support for Python 2.7.6/3.4.3 or later
|
||||
|
||||
GDB itself needs to be configured with Python support in order to
|
||||
use the pretty printers. Notice that your system having Python
|
||||
available doesn't imply that GDB supports it, nor that your
|
||||
system's Python and GDB's have the same version.
|
||||
|
||||
If these tools are absent, the printer tests will report themselves as
|
||||
'UNSUPPORTED'. Notice that some of the printer tests require the GNU C
|
||||
Library to be compiled with debugging symbols.
|
||||
|
||||
To format the 'GNU C Library Reference Manual' for printing, type
|
||||
'make dvi'. You need a working TeX installation to do this. The
|
||||
distribution builds the on-line formatted version of the manual, as Info
|
||||
files, as part of the build process. You can build them manually with
|
||||
'make info'.
|
||||
To format the `GNU C Library Reference Manual' for printing, type
|
||||
`make dvi'. You need a working TeX installation to do this. The
|
||||
distribution builds the on-line formatted version of the manual, as
|
||||
Info files, as part of the build process. You can build them manually
|
||||
with `make info'.
|
||||
|
||||
The library has a number of special-purpose configuration parameters
|
||||
which you can find in 'Makeconfig'. These can be overwritten with the
|
||||
file 'configparms'. To change them, create a 'configparms' in your
|
||||
build directory and add values as appropriate for your system. The file
|
||||
is included and parsed by 'make' and has to follow the conventions for
|
||||
makefiles.
|
||||
which you can find in `Makeconfig'. These can be overwritten with the
|
||||
file `configparms'. To change them, create a `configparms' in your
|
||||
build directory and add values as appropriate for your system. The
|
||||
file is included and parsed by `make' and has to follow the conventions
|
||||
for makefiles.
|
||||
|
||||
It is easy to configure the GNU C Library for cross-compilation by
|
||||
setting a few variables in 'configparms'. Set 'CC' to the
|
||||
setting a few variables in `configparms'. Set `CC' to the
|
||||
cross-compiler for the target you configured the library for; it is
|
||||
important to use this same 'CC' value when running 'configure', like
|
||||
this: 'CC=TARGET-gcc configure TARGET'. Set 'BUILD_CC' to the compiler
|
||||
important to use this same `CC' value when running `configure', like
|
||||
this: `CC=TARGET-gcc configure TARGET'. Set `BUILD_CC' to the compiler
|
||||
to use for programs run on the build system as part of compiling the
|
||||
library. You may need to set 'AR' to cross-compiling versions of 'ar'
|
||||
if the native tools are not configured to work with object files for the
|
||||
target you configured for. When cross-compiling the GNU C Library, it
|
||||
may be tested using 'make check
|
||||
library. You may need to set `AR' to cross-compiling versions of `ar'
|
||||
if the native tools are not configured to work with object files for
|
||||
the target you configured for. When cross-compiling the GNU C Library,
|
||||
it may be tested using `make check
|
||||
test-wrapper="SRCDIR/scripts/cross-test-ssh.sh HOSTNAME"', where SRCDIR
|
||||
is the absolute directory name for the main source directory and
|
||||
HOSTNAME is the host name of a system that can run the newly built
|
||||
binaries of the GNU C Library. The source and build directories must be
|
||||
visible at the same locations on both the build system and HOSTNAME.
|
||||
binaries of the GNU C Library. The source and build directories must
|
||||
be visible at the same locations on both the build system and HOSTNAME.
|
||||
|
||||
In general, when testing the GNU C Library, 'test-wrapper' may be set
|
||||
In general, when testing the GNU C Library, `test-wrapper' may be set
|
||||
to the name and arguments of any program to run newly built binaries.
|
||||
This program must preserve the arguments to the binary being run, its
|
||||
working directory and the standard input, output and error file
|
||||
descriptors. If 'TEST-WRAPPER env' will not work to run a program with
|
||||
environment variables set, then 'test-wrapper-env' must be set to a
|
||||
program that runs a newly built program with environment variable
|
||||
assignments in effect, those assignments being specified as 'VAR=VALUE'
|
||||
before the name of the program to be run. If multiple assignments to
|
||||
the same variable are specified, the last assignment specified must take
|
||||
precedence. Similarly, if 'TEST-WRAPPER env -i' will not work to run a
|
||||
program with an environment completely empty of variables except those
|
||||
directly assigned, then 'test-wrapper-env-only' must be set; its use has
|
||||
the same syntax as 'test-wrapper-env', the only difference in its
|
||||
semantics being starting with an empty set of environment variables
|
||||
rather than the ambient set.
|
||||
working directory, all environment variables set as part of testing and
|
||||
the standard input, output and error file descriptors. If
|
||||
`TEST-WRAPPER env' will not work to run a program with environment
|
||||
variables set, then `test-wrapper-env' must be set to a program that
|
||||
runs a newly built program with environment variable assignments in
|
||||
effect, those assignments being specified as `VAR=VALUE' before the
|
||||
name of the program to be run.
|
||||
|
||||
Installing the C Library
|
||||
========================
|
||||
|
||||
To install the library and its header files, and the Info files of the
|
||||
manual, type 'make install'. This will build things, if necessary,
|
||||
before installing them; however, you should still compile everything
|
||||
first. If you are installing the GNU C Library as your primary C
|
||||
library, we recommend that you shut the system down to single-user mode
|
||||
first, and reboot afterward. This minimizes the risk of breaking things
|
||||
when the library changes out from underneath.
|
||||
manual, type `env LANGUAGE=C LC_ALL=C make install'. This will build
|
||||
things, if necessary, before installing them; however, you should still
|
||||
compile everything first. If you are installing the GNU C Library as
|
||||
your primary C library, we recommend that you shut the system down to
|
||||
single-user mode first, and reboot afterward. This minimizes the risk
|
||||
of breaking things when the library changes out from underneath.
|
||||
|
||||
'make install' will do the entire job of upgrading from a previous
|
||||
`make install' will do the entire job of upgrading from a previous
|
||||
installation of the GNU C Library version 2.x. There may sometimes be
|
||||
headers left behind from the previous installation, but those are
|
||||
generally harmless. If you want to avoid leaving headers behind you can
|
||||
do things in the following order.
|
||||
generally harmless. If you want to avoid leaving headers behind you
|
||||
can do things in the following order.
|
||||
|
||||
You must first build the library ('make'), optionally check it ('make
|
||||
check'), switch the include directories and then install ('make
|
||||
You must first build the library (`make'), optionally check it
|
||||
(`make check'), switch the include directories and then install (`make
|
||||
install'). The steps must be done in this order. Not moving the
|
||||
directory before install will result in an unusable mixture of header
|
||||
files from both libraries, but configuring, building, and checking the
|
||||
library requires the ability to compile and run programs against the old
|
||||
library. The new '/usr/include', after switching the include
|
||||
library. The new `/usr/include', after switching the include
|
||||
directories and before installing the library should contain the Linux
|
||||
headers, but nothing else. If you do this, you will need to restore any
|
||||
headers from libraries other than the GNU C Library yourself after
|
||||
headers, but nothing else. If you do this, you will need to restore
|
||||
any headers from libraries other than the GNU C Library yourself after
|
||||
installing the library.
|
||||
|
||||
You can install the GNU C Library somewhere other than where you
|
||||
configured it to go by setting the 'DESTDIR' GNU standard make variable
|
||||
on the command line for 'make install'. The value of this variable is
|
||||
configured it to go by setting the `install_root' variable on the
|
||||
command line for `make install'. The value of this variable is
|
||||
prepended to all the paths for installation. This is useful when
|
||||
setting up a chroot environment or preparing a binary distribution. The
|
||||
directory should be specified with an absolute file name. Installing
|
||||
with the 'prefix' and 'exec_prefix' GNU standard make variables set is
|
||||
not supported.
|
||||
setting up a chroot environment or preparing a binary distribution.
|
||||
The directory should be specified with an absolute file name.
|
||||
|
||||
The GNU C Library includes a daemon called 'nscd', which you may or
|
||||
may not want to run. 'nscd' caches name service lookups; it can
|
||||
The GNU C Library includes a daemon called `nscd', which you may or
|
||||
may not want to run. `nscd' caches name service lookups; it can
|
||||
dramatically improve performance with NIS+, and may help with DNS as
|
||||
well.
|
||||
|
||||
One auxiliary program, '/usr/libexec/pt_chown', is installed setuid
|
||||
'root' if the '--enable-pt_chown' configuration option is used. This
|
||||
program is invoked by the 'grantpt' function; it sets the permissions on
|
||||
a pseudoterminal so it can be used by the calling process. If you are
|
||||
using a Linux kernel with the 'devpts' filesystem enabled and mounted at
|
||||
'/dev/pts', you don't need this program.
|
||||
One auxiliary program, `/usr/libexec/pt_chown', is installed setuid
|
||||
`root'. This program is invoked by the `grantpt' function; it sets the
|
||||
permissions on a pseudoterminal so it can be used by the calling
|
||||
process. This means programs like `xterm' and `screen' do not have to
|
||||
be setuid to get a pty. (There may be other reasons why they need
|
||||
privileges.) If you are using a Linux kernel with the `devptsfs' or
|
||||
`devfs' filesystems providing pty slaves, you don't need this program;
|
||||
otherwise you do. The source for `pt_chown' is in
|
||||
`login/programs/pt_chown.c'.
|
||||
|
||||
After installation you might want to configure the timezone and
|
||||
locale installation of your system. The GNU C Library comes with a
|
||||
locale database which gets configured with 'localedef'. For example, to
|
||||
set up a German locale with name 'de_DE', simply issue the command
|
||||
'localedef -i de_DE -f ISO-8859-1 de_DE'. To configure all locales that
|
||||
are supported by the GNU C Library, you can issue from your build
|
||||
directory the command 'make localedata/install-locales'.
|
||||
locale database which gets configured with `localedef'. For example, to
|
||||
set up a German locale with name `de_DE', simply issue the command
|
||||
`localedef -i de_DE -f ISO-8859-1 de_DE'. To configure all locales
|
||||
that are supported by the GNU C Library, you can issue from your build
|
||||
directory the command `make localedata/install-locales'.
|
||||
|
||||
To configure the locally used timezone, set the 'TZ' environment
|
||||
variable. The script 'tzselect' helps you to select the right value.
|
||||
As an example, for Germany, 'tzselect' would tell you to use
|
||||
'TZ='Europe/Berlin''. For a system wide installation (the given paths
|
||||
are for an installation with '--prefix=/usr'), link the timezone file
|
||||
which is in '/usr/share/zoneinfo' to the file '/etc/localtime'. For
|
||||
Germany, you might execute 'ln -s /usr/share/zoneinfo/Europe/Berlin
|
||||
To configure the locally used timezone, set the `TZ' environment
|
||||
variable. The script `tzselect' helps you to select the right value.
|
||||
As an example, for Germany, `tzselect' would tell you to use
|
||||
`TZ='Europe/Berlin''. For a system wide installation (the given paths
|
||||
are for an installation with `--prefix=/usr'), link the timezone file
|
||||
which is in `/usr/share/zoneinfo' to the file `/etc/localtime'. For
|
||||
Germany, you might execute `ln -s /usr/share/zoneinfo/Europe/Berlin
|
||||
/etc/localtime'.
|
||||
|
||||
Recommended Tools for Compilation
|
||||
@@ -402,30 +307,18 @@ Recommended Tools for Compilation
|
||||
We recommend installing the following GNU tools before attempting to
|
||||
build the GNU C Library:
|
||||
|
||||
* GNU 'make' 3.79 or newer
|
||||
* GNU `make' 3.79 or newer
|
||||
|
||||
You need the latest version of GNU 'make'. Modifying the GNU C
|
||||
Library to work with other 'make' programs would be so difficult
|
||||
that we recommend you port GNU 'make' instead. *Really.* We
|
||||
recommend GNU 'make' version 3.79. All earlier versions have
|
||||
You need the latest version of GNU `make'. Modifying the GNU C
|
||||
Library to work with other `make' programs would be so difficult
|
||||
that we recommend you port GNU `make' instead. *Really.* We
|
||||
recommend GNU `make' version 3.79. All earlier versions have
|
||||
severe bugs or lack features.
|
||||
|
||||
* GCC 4.7 or newer
|
||||
* GCC 4.3 or newer, GCC 4.6 recommended
|
||||
|
||||
GCC 4.7 or higher is required. In general it is recommended to use
|
||||
the newest version of the compiler that is known to work for
|
||||
building the GNU C Library, as newer compilers usually produce
|
||||
better code. As of release time, GCC 6.3 is the newest compiler
|
||||
verified to work to build the GNU C Library.
|
||||
|
||||
For multi-arch support it is recommended to use a GCC which has
|
||||
been built with support for GNU indirect functions. This ensures
|
||||
that correct debugging information is generated for functions
|
||||
selected by IFUNC resolvers. This support can either be enabled by
|
||||
configuring GCC with '--enable-gnu-indirect-function', or by
|
||||
enabling it by default by setting 'default_gnu_indirect_function'
|
||||
variable for a particular architecture in the GCC source file
|
||||
'gcc/config.gcc'.
|
||||
GCC 4.3 or higher is required; as of this writing, GCC 4.6 is the
|
||||
compiler we advise to use to build the GNU C Library.
|
||||
|
||||
You can use whatever compiler you like to compile programs that use
|
||||
the GNU C Library.
|
||||
@@ -433,53 +326,47 @@ build the GNU C Library:
|
||||
Check the FAQ for any special compiler issues on particular
|
||||
platforms.
|
||||
|
||||
* GNU 'binutils' 2.22 or later
|
||||
* GNU `binutils' 2.20 or later
|
||||
|
||||
You must use GNU 'binutils' (as and ld) to build the GNU C Library.
|
||||
You must use GNU `binutils' (as and ld) to build the GNU C Library.
|
||||
No other assembler or linker has the necessary functionality at the
|
||||
moment. As of release time, GNU 'binutils' 2.25 is the newest
|
||||
verified to work to build the GNU C Library.
|
||||
moment.
|
||||
|
||||
* GNU 'texinfo' 4.7 or later
|
||||
* GNU `texinfo' 4.5 or later
|
||||
|
||||
To correctly translate and install the Texinfo documentation you
|
||||
need this version of the 'texinfo' package. Earlier versions do
|
||||
need this version of the `texinfo' package. Earlier versions do
|
||||
not understand all the tags used in the document, and the
|
||||
installation mechanism for the info files is not present or works
|
||||
differently. As of release time, 'texinfo' 6.0 is the newest
|
||||
verified to work to build the GNU C Library.
|
||||
differently.
|
||||
|
||||
* GNU 'awk' 3.1.2, or higher
|
||||
* GNU `awk' 3.0, or higher
|
||||
|
||||
'awk' is used in several places to generate files. Some 'gawk'
|
||||
extensions are used, including the 'asorti' function, which was
|
||||
introduced in version 3.1.2 of 'gawk'. As of release time, 'gawk'
|
||||
version 4.1.3 is the newest verified to work to build the GNU C
|
||||
Library.
|
||||
`Awk' is used in several places to generate files. `gawk' 3.0 is
|
||||
known to work.
|
||||
|
||||
* Perl 5
|
||||
|
||||
Perl is not required, but it is used if present to test the
|
||||
installation. We may decide to use it elsewhere in the future.
|
||||
|
||||
* GNU 'sed' 3.02 or newer
|
||||
* GNU `sed' 3.02 or newer
|
||||
|
||||
'Sed' is used in several places to generate files. Most scripts
|
||||
work with any version of 'sed'. As of release time, 'sed' version
|
||||
4.2.2 is the newest verified to work to build the GNU C Library.
|
||||
`Sed' is used in several places to generate files. Most scripts
|
||||
work with any version of `sed'. The known exception is the script
|
||||
`po2test.sed' in the `intl' subdirectory which is used to generate
|
||||
`msgs.h' for the test suite. This script works correctly only
|
||||
with GNU `sed' 3.02. If you like to run the test suite, you
|
||||
should definitely upgrade `sed'.
|
||||
|
||||
If you change any of the 'configure.ac' files you will also need
|
||||
|
||||
* GNU 'autoconf' 2.69 (exactly)
|
||||
If you change any of the `configure.in' files you will also need
|
||||
|
||||
* GNU `autoconf' 2.53 or higher
|
||||
|
||||
and if you change any of the message translation files you will need
|
||||
|
||||
* GNU 'gettext' 0.10.36 or later
|
||||
|
||||
If you wish to regenerate the 'yacc' parser code in the 'intl'
|
||||
subdirectory you will need
|
||||
|
||||
* GNU 'bison' 2.7 or later
|
||||
* GNU `gettext' 0.10.36 or later
|
||||
|
||||
You may also need these packages if you upgrade your source tree using
|
||||
patches, although we try to avoid this.
|
||||
@@ -488,41 +375,42 @@ Specific advice for GNU/Linux systems
|
||||
=====================================
|
||||
|
||||
If you are installing the GNU C Library on GNU/Linux systems, you need
|
||||
to have the header files from a 3.2 or newer kernel around for
|
||||
reference. These headers must be installed using 'make
|
||||
headers_install'; the headers present in the kernel source directory are
|
||||
not suitable for direct use by the GNU C Library. You do not need to
|
||||
use that kernel, just have its headers installed where the GNU C Library
|
||||
can access them, referred to here as INSTALL-DIRECTORY. The easiest way
|
||||
to do this is to unpack it in a directory such as
|
||||
'/usr/src/linux-VERSION'. In that directory, run 'make headers_install
|
||||
to have the header files from a 2.6.19.1 or newer kernel around for
|
||||
reference. These headers must be installed using `make
|
||||
headers_install'; the headers present in the kernel source directory
|
||||
are not suitable for direct use by the GNU C Library. You do not need
|
||||
to use that kernel, just have its headers installed where the GNU C
|
||||
Library can access them, referred to here as INSTALL-DIRECTORY. The
|
||||
easiest way to do this is to unpack it in a directory such as
|
||||
`/usr/src/linux-VERSION'. In that directory, run `make headers_install
|
||||
INSTALL_HDR_PATH=INSTALL-DIRECTORY'. Finally, configure the GNU C
|
||||
Library with the option '--with-headers=INSTALL-DIRECTORY/include'. Use
|
||||
the most recent kernel you can get your hands on. (If you are
|
||||
Library with the option `--with-headers=INSTALL-DIRECTORY/include'.
|
||||
Use the most recent kernel you can get your hands on. (If you are
|
||||
cross-compiling the GNU C Library, you need to specify
|
||||
'ARCH=ARCHITECTURE' in the 'make headers_install' command, where
|
||||
`ARCH=ARCHITECTURE' in the `make headers_install' command, where
|
||||
ARCHITECTURE is the architecture name used by the Linux kernel, such as
|
||||
'x86' or 'powerpc'.)
|
||||
`x86' or `powerpc'.)
|
||||
|
||||
After installing the GNU C Library, you may need to remove or rename
|
||||
directories such as '/usr/include/linux' and '/usr/include/asm', and
|
||||
replace them with copies of directories such as 'linux' and 'asm' from
|
||||
'INSTALL-DIRECTORY/include'. All directories present in
|
||||
'INSTALL-DIRECTORY/include' should be copied, except that the GNU C
|
||||
Library provides its own version of '/usr/include/scsi'; the files
|
||||
provided by the kernel should be copied without replacing those provided
|
||||
by the GNU C Library. The 'linux', 'asm' and 'asm-generic' directories
|
||||
are required to compile programs using the GNU C Library; the other
|
||||
directories describe interfaces to the kernel but are not required if
|
||||
not compiling programs using those interfaces. You do not need to copy
|
||||
kernel headers if you did not specify an alternate kernel header source
|
||||
using '--with-headers'.
|
||||
directories such as `/usr/include/linux' and `/usr/include/asm', and
|
||||
replace them with copies of directories such as `linux' and `asm' from
|
||||
`INSTALL-DIRECTORY/include'. All directories present in
|
||||
`INSTALL-DIRECTORY/include' should be copied, except that the GNU C
|
||||
Library provides its own version of `/usr/include/scsi'; the files
|
||||
provided by the kernel should be copied without replacing those
|
||||
provided by the GNU C Library. The `linux', `asm' and `asm-generic'
|
||||
directories are required to compile programs using the GNU C Library;
|
||||
the other directories describe interfaces to the kernel but are not
|
||||
required if not compiling programs using those interfaces. You do not
|
||||
need to copy kernel headers if you did not specify an alternate kernel
|
||||
header source using `--with-headers'.
|
||||
|
||||
The Filesystem Hierarchy Standard for GNU/Linux systems expects some
|
||||
components of the GNU C Library installation to be in '/lib' and some in
|
||||
'/usr/lib'. This is handled automatically if you configure the GNU C
|
||||
Library with '--prefix=/usr'. If you set some other prefix or allow it
|
||||
to default to '/usr/local', then all the components are installed there.
|
||||
components of the GNU C Library installation to be in `/lib' and some
|
||||
in `/usr/lib'. This is handled automatically if you configure the GNU
|
||||
C Library with `--prefix=/usr'. If you set some other prefix or allow
|
||||
it to default to `/usr/local', then all the components are installed
|
||||
there.
|
||||
|
||||
Reporting Bugs
|
||||
==============
|
||||
@@ -533,20 +421,20 @@ fixed. If you don't, no one will ever know about them and they will
|
||||
remain unfixed for all eternity, if not longer.
|
||||
|
||||
It is a good idea to verify that the problem has not already been
|
||||
reported. Bugs are documented in two places: The file 'BUGS' describes
|
||||
reported. Bugs are documented in two places: The file `BUGS' describes
|
||||
a number of well known bugs and the central GNU C Library bug tracking
|
||||
system has a WWW interface at <http://sourceware.org/bugzilla/>. The
|
||||
system has a WWW interface at `http://sourceware.org/bugzilla/'. The
|
||||
WWW interface gives you access to open and closed reports. A closed
|
||||
report normally includes a patch or a hint on solving the problem.
|
||||
|
||||
To report a bug, first you must find it. With any luck, this will be
|
||||
the hard part. Once you've found a bug, make sure it's really a bug. A
|
||||
good way to do this is to see if the GNU C Library behaves the same way
|
||||
some other C library does. If so, probably you are wrong and the
|
||||
libraries are right (but not necessarily). If not, one of the libraries
|
||||
is probably wrong. It might not be the GNU C Library. Many historical
|
||||
Unix C libraries permit things that we don't, such as closing a file
|
||||
twice.
|
||||
To report a bug, first you must find it. With any luck, this will
|
||||
be the hard part. Once you've found a bug, make sure it's really a
|
||||
bug. A good way to do this is to see if the GNU C Library behaves the
|
||||
same way some other C library does. If so, probably you are wrong and
|
||||
the libraries are right (but not necessarily). If not, one of the
|
||||
libraries is probably wrong. It might not be the GNU C Library. Many
|
||||
historical Unix C libraries permit things that we don't, such as
|
||||
closing a file twice.
|
||||
|
||||
If you think you have found some way in which the GNU C Library does
|
||||
not conform to the ISO and POSIX standards (*note Standards and
|
||||
@@ -558,7 +446,7 @@ library, you really only need to narrow it down to one library function
|
||||
call, if possible. This should not be too difficult.
|
||||
|
||||
The final step when you have a simple test case is to report the bug.
|
||||
Do this at <http://www.gnu.org/software/libc/bugs.html>.
|
||||
Do this at `http://www.gnu.org/software/libc/bugs.html'.
|
||||
|
||||
If you are not sure how a function should behave, and this manual
|
||||
doesn't tell you, that's a bug in the manual. Report that too! If the
|
||||
|
||||
+118
-271
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1991-2013 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
|
||||
@@ -50,7 +50,7 @@ export sysdep_dir := $(sysdep_dir)
|
||||
include $(common-objpfx)config.make
|
||||
|
||||
# What flags to give to sources which call user provided callbacks
|
||||
uses-callbacks = -fexceptions
|
||||
uses-callbacks = $(exceptions)
|
||||
|
||||
# What flags to give to tests which test stack alignment
|
||||
stack-align-test-flags =
|
||||
@@ -86,18 +86,18 @@ $(common-objpfx)config.make: $(common-objpfx)config.status \
|
||||
$(common-objpfx)config.status: $(..)version.h $(..)configure \
|
||||
$(foreach dir,$(sysdirs),\
|
||||
$(wildcard $(dir)/Implies) \
|
||||
$(patsubst %.ac,%,\
|
||||
$(patsubst %.in,%,\
|
||||
$(firstword $(wildcard \
|
||||
$(addprefix $(dir)/,configure configure.ac))))) \
|
||||
$(patsubst %.ac,%,\
|
||||
$(wildcard $(..)sysdeps/*/preconfigure $(..)sysdeps/*/preconfigure.ac)) \
|
||||
$(patsubst %.ac,%,\
|
||||
$(addprefix $(dir)/,configure configure.in))))) \
|
||||
$(patsubst %.in,%,\
|
||||
$(wildcard $(..)sysdeps/*/preconfigure $(..)sysdeps/*/preconfigure.in)) \
|
||||
$(patsubst %.in,%,\
|
||||
$(foreach add-on,$(add-ons),\
|
||||
$(firstword $(wildcard \
|
||||
$(addprefix $(firstword $(filter /%,$(add-on)) $(..)$(add-on))/,\
|
||||
configure configure.ac))) \
|
||||
configure configure.in))) \
|
||||
$(wildcard $(addprefix $(firstword $(filter /%,$(add-on)) $(..)$(add-on))/,\
|
||||
sysdeps/*/preconfigure sysdeps/*/preconfigure.ac))))
|
||||
sysdeps/*/preconfigure sysdeps/*/preconfigure.in))))
|
||||
@cd $(@D); if test -f $(@F); then exec $(SHELL) $(@F) --recheck; else \
|
||||
echo The GNU C library has not been configured. >&2; \
|
||||
echo Run \`configure\' to configure it before building. >&2; \
|
||||
@@ -190,19 +190,18 @@ zonedir = $(datadir)/zoneinfo
|
||||
endif
|
||||
inst_zonedir = $(install_root)$(zonedir)
|
||||
|
||||
# Where to install the compiled binary locale archive and compiled
|
||||
# binary locale files.
|
||||
ifndef complocaledir
|
||||
complocaledir = $(libdir)/locale
|
||||
# Where to install the locale files.
|
||||
ifndef localedir
|
||||
localedir = $(libdir)/locale
|
||||
endif
|
||||
inst_complocaledir = $(install_root)$(complocaledir)
|
||||
inst_localedir = $(install_root)$(localedir)
|
||||
|
||||
# Where to install the message catalog data files (which are
|
||||
# machine-independent).
|
||||
ifndef localedir
|
||||
localedir = $(datadir)/locale
|
||||
ifndef msgcatdir
|
||||
msgcatdir = $(datadir)/locale
|
||||
endif
|
||||
inst_localedir = $(install_root)$(localedir)
|
||||
inst_msgcatdir = $(install_root)$(msgcatdir)
|
||||
|
||||
# Where to install the locale charmap source files.
|
||||
ifndef i18ndir
|
||||
@@ -346,7 +345,9 @@ endif
|
||||
endif
|
||||
|
||||
# Flags to pass the C compiler when assembling preprocessed assembly code
|
||||
# (`.S' files).
|
||||
# (`.S' files). On some systems the assembler doesn't understand the `#' line
|
||||
# directives the preprocessor produces. If you have troubling compiling
|
||||
# assembly code, try using -P here to suppress these directives.
|
||||
ifndef asm-CPPFLAGS
|
||||
asm-CPPFLAGS =
|
||||
endif
|
||||
@@ -386,17 +387,6 @@ LDFLAGS.so += $(hashstyle-LDFLAGS)
|
||||
LDFLAGS-rtld += $(hashstyle-LDFLAGS)
|
||||
endif
|
||||
|
||||
# Command to run after every final link (executable or shared object).
|
||||
# This is invoked with $(call after-link,...), so it should operate on
|
||||
# the file $1. This can be set to do some sort of post-processing on
|
||||
# binaries, or to perform some sort of static sanity check.
|
||||
ifndef after-link
|
||||
after-link =
|
||||
endif
|
||||
|
||||
# Additional libraries to link into every test.
|
||||
link-extra-libs-tests = $(libsupport)
|
||||
|
||||
# Command for linking PIE programs with the C library.
|
||||
ifndef +link-pie
|
||||
+link-pie-before-libc = $(CC) -pie -Wl,-O1 -nostdlib -nostartfiles -o $@ \
|
||||
@@ -410,20 +400,10 @@ ifndef +link-pie
|
||||
$(common-objpfx)libc% $(+postinit),$^) \
|
||||
$(link-extra-libs)
|
||||
+link-pie-after-libc = $(+postctorS) $(+postinit)
|
||||
define +link-pie
|
||||
$(+link-pie-before-libc) $(rtld-LDFLAGS) $(link-libc) $(+link-pie-after-libc)
|
||||
$(call after-link,$@)
|
||||
endef
|
||||
define +link-pie-tests
|
||||
$(+link-pie-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
|
||||
$(+link-pie-after-libc)
|
||||
$(call after-link,$@)
|
||||
endef
|
||||
define +link-pie-printers-tests
|
||||
$(+link-pie-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
|
||||
$(+link-pie-after-libc)
|
||||
$(call after-link,$@)
|
||||
endef
|
||||
+link-pie = $(+link-pie-before-libc) $(rtld-LDFLAGS) $(link-libc) \
|
||||
$(+link-pie-after-libc)
|
||||
+link-pie-tests = $(+link-pie-before-libc) $(rtld-tests-LDFLAGS) \
|
||||
$(link-libc-tests) $(+link-pie-after-libc)
|
||||
endif
|
||||
# Command for statically linking programs with the C library.
|
||||
ifndef +link-static
|
||||
@@ -437,24 +417,14 @@ ifndef +link-static
|
||||
$(common-objpfx)libc% $(+postinit),$^) \
|
||||
$(link-extra-libs-static)
|
||||
+link-static-after-libc = $(+postctorT) $(+postinit)
|
||||
define +link-static
|
||||
$(+link-static-before-libc) $(link-libc-static) $(+link-static-after-libc)
|
||||
$(call after-link,$@)
|
||||
endef
|
||||
define +link-static-tests
|
||||
$(+link-static-before-libc) $(link-libc-static-tests) $(+link-static-after-libc)
|
||||
$(call after-link,$@)
|
||||
endef
|
||||
+link-static = $(+link-static-before-libc) $(link-libc-static) \
|
||||
$(+link-static-after-libc)
|
||||
+link-static-tests = $(+link-static-before-libc) $(link-libc-static-tests) \
|
||||
$(+link-static-after-libc)
|
||||
endif
|
||||
# Commands for linking programs with the C library.
|
||||
ifndef +link
|
||||
ifeq (yes,$(build-shared))
|
||||
ifeq (yes,$(build-pie-default))
|
||||
no-pie-ldflag = -no-pie
|
||||
+link = $(+link-pie)
|
||||
+link-tests = $(+link-pie-tests)
|
||||
+link-printers-tests = $(+link-pie-printers-tests)
|
||||
else # not build-pie-default
|
||||
+link-before-libc = $(CC) -nostdlib -nostartfiles -o $@ \
|
||||
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
|
||||
$(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
|
||||
@@ -466,96 +436,56 @@ else # not build-pie-default
|
||||
$(common-objpfx)libc% $(+postinit),$^) \
|
||||
$(link-extra-libs)
|
||||
+link-after-libc = $(+postctor) $(+postinit)
|
||||
define +link
|
||||
$(+link-before-libc) $(rtld-LDFLAGS) $(link-libc) $(+link-after-libc)
|
||||
$(call after-link,$@)
|
||||
endef
|
||||
define +link-tests
|
||||
$(+link-before-libc) $(rtld-tests-LDFLAGS) $(link-libc-tests) \
|
||||
$(+link-after-libc)
|
||||
$(call after-link,$@)
|
||||
endef
|
||||
define +link-printers-tests
|
||||
$(+link-before-libc) $(built-rtld-LDFLAGS) $(link-libc-printers-tests) \
|
||||
$(+link-after-libc)
|
||||
$(call after-link,$@)
|
||||
endef
|
||||
endif # build-pie-default
|
||||
else # build-static
|
||||
+link = $(+link-before-libc) $(rtld-LDFLAGS) $(link-libc) \
|
||||
$(+link-after-libc)
|
||||
+link-tests = $(+link-before-libc) $(rtld-tests-LDFLAGS) \
|
||||
$(link-libc-tests) $(+link-after-libc)
|
||||
else
|
||||
+link = $(+link-static)
|
||||
+link-tests = $(+link-static-tests)
|
||||
+link-printers-tests = $(+link-static-tests)
|
||||
endif # build-shared
|
||||
endif # +link
|
||||
|
||||
# The pretty printer test programs need to be compiled without optimizations
|
||||
# so they won't confuse gdb. We could use either the 'GCC optimize' pragma
|
||||
# or the 'optimize' function attribute to achieve this; however, at least on
|
||||
# ARM, gcc always produces different debugging symbols when invoked with
|
||||
# a -O greater than 0 than when invoked with -O0, regardless of anything else
|
||||
# we're using to suppress optimizations. Therefore, we need to explicitly pass
|
||||
# -O0 to it through CFLAGS.
|
||||
# Additionally, the build system will try to -include $(common-objpfx)/config.h
|
||||
# when compiling the tests, which will throw an error if some special macros
|
||||
# (such as __OPTIMIZE__ and IS_IN_build) aren't defined. To avoid this, we
|
||||
# tell gcc to define IS_IN_build.
|
||||
CFLAGS-printers-tests := -O0 -ggdb3 -DIS_IN_build
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
# These indicate whether to link using the built ld.so or the installed one.
|
||||
installed-rtld-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name)
|
||||
built-rtld-LDFLAGS = -Wl,-dynamic-linker=$(elf-objpfx)ld.so
|
||||
|
||||
ifndef rtld-LDFLAGS
|
||||
rtld-LDFLAGS = $(installed-rtld-LDFLAGS)
|
||||
endif
|
||||
|
||||
endif
|
||||
ifeq (yes,$(build-shared))
|
||||
ifndef rtld-LDFLAGS
|
||||
rtld-LDFLAGS = -Wl,-dynamic-linker=$(rtlddir)/$(rtld-installed-name)
|
||||
endif
|
||||
ifndef rtld-tests-LDFLAGS
|
||||
ifeq (yes,$(build-hardcoded-path-in-tests))
|
||||
rtld-tests-LDFLAGS = $(built-rtld-LDFLAGS)
|
||||
rtld-tests-LDFLAGS = -Wl,-dynamic-linker=$(common-objpfx)elf/ld.so
|
||||
else
|
||||
rtld-tests-LDFLAGS = $(installed-rtld-LDFLAGS)
|
||||
endif # build-hardcoded-path-in-tests
|
||||
endif # rtld-tests-LDFLAGS
|
||||
|
||||
endif # build-shared
|
||||
|
||||
rtld-tests-LDFLAGS = $(rtld-LDFLAGS)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifndef link-libc
|
||||
ifeq (yes,$(build-shared))
|
||||
# We need the versioned name of libc.so in the deps of $(others) et al
|
||||
# so that the symlink to libc.so is created before anything tries to
|
||||
# run the linked programs.
|
||||
link-libc-rpath = -Wl,-rpath=$(rpath-link)
|
||||
link-libc-rpath-link = -Wl,-rpath-link=$(rpath-link)
|
||||
|
||||
ifeq (yes,$(build-hardcoded-path-in-tests))
|
||||
link-libc-tests-rpath-link = $(link-libc-rpath)
|
||||
link-libc-tests-rpath-link = -Wl,-rpath=$(rpath-link)
|
||||
else
|
||||
link-libc-tests-rpath-link = $(link-libc-rpath-link)
|
||||
endif # build-hardcoded-path-in-tests
|
||||
|
||||
endif
|
||||
link-libc-before-gnulib = $(common-objpfx)libc.so$(libc.so-version) \
|
||||
$(common-objpfx)$(patsubst %,$(libtype.oS),c) \
|
||||
$(as-needed) $(elf-objpfx)ld.so \
|
||||
$(as-needed) $(common-objpfx)elf/ld.so \
|
||||
$(no-as-needed)
|
||||
link-libc = $(link-libc-rpath-link) $(link-libc-before-gnulib) $(gnulib)
|
||||
|
||||
link-libc-tests-after-rpath-link = $(link-libc-before-gnulib) $(gnulib-tests)
|
||||
link-libc-tests = $(link-libc-tests-rpath-link) \
|
||||
$(link-libc-tests-after-rpath-link)
|
||||
# Pretty printer test programs always require rpath instead of rpath-link.
|
||||
link-libc-printers-tests = $(link-libc-rpath) \
|
||||
$(link-libc-tests-after-rpath-link)
|
||||
|
||||
$(link-libc-before-gnulib) $(gnulib-tests)
|
||||
# This is how to find at build-time things that will be installed there.
|
||||
rpath-dirs = math elf dlfcn nss nis rt resolv crypt mathvec support
|
||||
rpath-dirs = math elf dlfcn nss nis rt resolv crypt
|
||||
rpath-link = \
|
||||
$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
|
||||
else # build-static
|
||||
else
|
||||
link-libc = $(common-objpfx)libc.a $(otherlibs) $(gnulib) $(common-objpfx)libc.a $(gnulib)
|
||||
link-libc-tests = $(common-objpfx)libc.a $(otherlibs) $(gnulib-tests) $(common-objpfx)libc.a $(gnulib-tests)
|
||||
endif # build-shared
|
||||
endif # link-libc
|
||||
endif
|
||||
endif
|
||||
|
||||
elfobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)elf)
|
||||
|
||||
# Differences in the linkers on the various platforms.
|
||||
LDFLAGS-rpath-ORIGIN = -Wl,-rpath,'$$ORIGIN'
|
||||
@@ -646,6 +576,7 @@ endif
|
||||
# Variants of the two previous definitions for statically linking programs.
|
||||
+prectorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginT.o`
|
||||
+postctorT = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
|
||||
+interp = $(addprefix $(elf-objpfx),interp.os)
|
||||
csu-objpfx = $(common-objpfx)csu/
|
||||
elf-objpfx = $(common-objpfx)elf/
|
||||
|
||||
@@ -660,11 +591,6 @@ endif
|
||||
ifndef test-wrapper-env
|
||||
test-wrapper-env = $(test-wrapper) env
|
||||
endif
|
||||
# Likewise, but the program's environment will be empty except for any
|
||||
# explicit <variable>=<value> assignments preceding the program name.
|
||||
ifndef test-wrapper-env-only
|
||||
test-wrapper-env-only = $(test-wrapper) env -i
|
||||
endif
|
||||
|
||||
# Whether to run test programs built for the library's host system.
|
||||
ifndef run-built-tests
|
||||
@@ -675,12 +601,6 @@ run-built-tests = yes
|
||||
endif
|
||||
endif
|
||||
|
||||
# Whether to stop immediately when a test fails. Nonempty means to
|
||||
# stop, empty means not to stop.
|
||||
ifndef stop-on-test-failure
|
||||
stop-on-test-failure =
|
||||
endif
|
||||
|
||||
# How to run a program we just linked with our library.
|
||||
# The program binary is assumed to be $(word 2,$^).
|
||||
built-program-file = $(dir $(word 2,$^))$(notdir $(word 2,$^))
|
||||
@@ -704,30 +624,17 @@ run-via-rtld-prefix = \
|
||||
else
|
||||
run-via-rtld-prefix =
|
||||
endif
|
||||
# $(run-program-env) is the default environment variable settings to
|
||||
# use when running a program built with the newly built library.
|
||||
run-program-env = GCONV_PATH=$(common-objpfx)iconvdata \
|
||||
LOCPATH=$(common-objpfx)localedata LC_ALL=C
|
||||
# $(run-program-prefix) is a command that, when prepended to the name
|
||||
# of a program built with the newly built library, produces a command
|
||||
# that, executed on the build system on which "make" is run, runs that
|
||||
# program. $(run-program-prefix-before-env) and
|
||||
# $(run-program-prefix-after-env) are similar, but separate parts
|
||||
# before and after a list of environment variables.
|
||||
run-program-prefix-before-env = $(test-wrapper-env)
|
||||
run-program-prefix-after-env = $(run-via-rtld-prefix)
|
||||
run-program-prefix = $(run-program-prefix-before-env) $(run-program-env) \
|
||||
$(run-program-prefix-after-env)
|
||||
# program.
|
||||
run-program-prefix = $(test-wrapper) $(run-via-rtld-prefix)
|
||||
# $(built-program-cmd) is a command that, executed on the build system
|
||||
# on which "make" is run, runs the newly built program that is the
|
||||
# second dependency of the makefile target in which
|
||||
# $(built-program-cmd) is used. $(built-program-cmd-before-env) and
|
||||
# $(built-program-cmd-after-env) are similar, before and after a list
|
||||
# of environment variables.
|
||||
built-program-cmd-before-env = $(test-wrapper-env)
|
||||
built-program-cmd-after-env = $(run-via-rtld-prefix) $(built-program-file)
|
||||
built-program-cmd = $(built-program-cmd-before-env) $(run-program-env) \
|
||||
$(built-program-cmd-after-env)
|
||||
# $(built-program-cmd) is used.
|
||||
built-program-cmd = $(test-wrapper) \
|
||||
$(run-via-rtld-prefix) $(built-program-file)
|
||||
# $(host-built-program-cmd) is a command that, executed on the host
|
||||
# for which the library is built, runs the newly built program that is
|
||||
# the second dependency of the makefile target in which
|
||||
@@ -748,16 +655,12 @@ endif
|
||||
# $(test-program-prefix) is a command that, when prepended to the name
|
||||
# of a test program built with the newly built library, produces a command
|
||||
# that, executed on the build system on which "make" is run, runs that
|
||||
# test program. $(test-program-prefix-before-env) and
|
||||
# $(test-program-prefix-after-env) are similar, before and after a
|
||||
# list of environment variables.
|
||||
# test program.
|
||||
|
||||
# $(test-program-cmd) is a command that, executed on the build system
|
||||
# on which "make" is run, runs the newly built test program that is the
|
||||
# second dependency of the makefile target in which
|
||||
# $(test-program-cmd) is used. $(test-program-cmd-before-env) and
|
||||
# $(test-program-cmd-after-env) are similar, before and after a list
|
||||
# of environment variables.
|
||||
# $(test-program-cmd) is used.
|
||||
|
||||
# $(host-test-program-cmd) is a command that, executed on the host
|
||||
# for which the library is built, runs the newly built test program that
|
||||
@@ -766,37 +669,23 @@ endif
|
||||
|
||||
ifeq (yes,$(build-hardcoded-path-in-tests))
|
||||
test-via-rtld-prefix =
|
||||
test-program-prefix-before-env = $(test-wrapper-env)
|
||||
test-program-prefix-after-env =
|
||||
test-program-prefix = $(test-program-prefix-before-env) $(run-program-env) \
|
||||
$(test-program-prefix-after-env)
|
||||
test-program-cmd-before-env = $(test-wrapper-env)
|
||||
test-program-cmd-after-env = $(built-program-file)
|
||||
test-program-cmd = $(test-program-cmd-before-env) $(run-program-env) \
|
||||
$(test-program-cmd-after-env)
|
||||
test-program-prefix = $(test-wrapper)
|
||||
test-program-cmd = $(test-wrapper) $(built-program-file)
|
||||
host-test-program-cmd = $(built-program-file)
|
||||
else
|
||||
test-via-rtld-prefix = $(run-via-rtld-prefix)
|
||||
test-program-prefix-before-env = $(run-program-prefix-before-env)
|
||||
test-program-prefix-after-env = $(run-program-prefix-after-env)
|
||||
test-program-prefix = $(run-program-prefix)
|
||||
test-program-cmd-before-env = $(built-program-cmd-before-env)
|
||||
test-program-cmd-after-env = $(built-program-cmd-after-env)
|
||||
test-program-cmd = $(built-program-cmd)
|
||||
host-test-program-cmd = $(host-built-program-cmd)
|
||||
endif
|
||||
|
||||
# Extra flags to pass to GCC.
|
||||
ifeq ($(all-warnings),yes)
|
||||
+gccwarn := -Wall -Wwrite-strings -Wcast-qual -Wbad-function-cast -Wmissing-noreturn -Wmissing-prototypes -Wmissing-declarations -Wcomment -Wcomments -Wtrigraphs -Wsign-compare -Wfloat-equal -Wmultichar
|
||||
+gccwarn := -Wall -Wwrite-strings -Winline -Wcast-qual -Wbad-function-cast -Wmissing-noreturn -Wmissing-prototypes -Wmissing-declarations -Wcomment -Wcomments -Wtrigraphs -Wsign-compare -Wfloat-equal -Wmultichar
|
||||
else
|
||||
+gccwarn := -Wall -Wwrite-strings
|
||||
+gccwarn := -Wall -Wwrite-strings -Winline
|
||||
endif
|
||||
+gccwarn += -Wundef
|
||||
ifeq ($(enable-werror),yes)
|
||||
+gccwarn += -Werror
|
||||
endif
|
||||
+gccwarn-c = -Wstrict-prototypes -Wold-style-definition
|
||||
+gccwarn-c = -Wstrict-prototypes
|
||||
|
||||
# We do not depend on the address of constants in different files to be
|
||||
# actually different, so allow the compiler to merge them all.
|
||||
@@ -807,11 +696,6 @@ endif
|
||||
# disable any optimization that assume default rounding mode.
|
||||
+math-flags = -frounding-math
|
||||
|
||||
# We might want to compile with some stack-protection flag.
|
||||
ifneq ($(stack-protector),)
|
||||
+stack-protector=$(stack-protector)
|
||||
endif
|
||||
|
||||
# This is the program that generates makefile dependencies from C source files.
|
||||
# The -MP flag tells GCC >= 3.2 (which we now require) to produce dummy
|
||||
# targets for headers so that removed headers don't break the build.
|
||||
@@ -871,8 +755,7 @@ ifeq "$(strip $(+cflags))" ""
|
||||
+cflags := $(default_cflags)
|
||||
endif # $(+cflags) == ""
|
||||
|
||||
+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags) \
|
||||
$(+stack-protector)
|
||||
+cflags += $(cflags-cpu) $(+gccwarn) $(+merge-constants) $(+math-flags)
|
||||
+gcc-nowarn := -w
|
||||
|
||||
# Don't duplicate options if we inherited variables from the parent.
|
||||
@@ -898,55 +781,24 @@ endif # $(+cflags) == ""
|
||||
# of many little headers in the include directory.
|
||||
libio-include = -I$(..)libio
|
||||
|
||||
# List of non-library modules that we build.
|
||||
built-modules = iconvprogs iconvdata ldconfig lddlibc4 libmemusage \
|
||||
libSegFault libpcprofile librpcsvc locale-programs \
|
||||
memusagestat nonlib nscd extramodules libnldbl libsupport
|
||||
|
||||
in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \
|
||||
$(libof-$(<F)) \
|
||||
$(libof-$(@F)) \
|
||||
libc))
|
||||
|
||||
# Build ld.so, libc.so and libpthread.so with -ftls-model=initial-exec
|
||||
tls-model = $(if $(filter libpthread rtld \
|
||||
libc,$(in-module)),-ftls-model=initial-exec,)
|
||||
|
||||
module-cppflags-real = -include $(common-objpfx)libc-modules.h \
|
||||
-DMODULE_NAME=$(in-module)
|
||||
|
||||
# We don't need libc-modules.h and the MODULE_NAME definition for .v.i
|
||||
# files. These targets don't (and will likely never need to) use the IS_IN
|
||||
# facility. In fact, shlib-versions should not use it because that will
|
||||
# create a circular dependency as libc-modules.h is generated from
|
||||
# shlib-versions.
|
||||
module-cppflags = $(if $(filter %.v.i,$(@F)),,$(module-cppflags-real))
|
||||
|
||||
# These are the variables that the implicit compilation rules use.
|
||||
# Note that we can't use -std=* in CPPFLAGS, because it overrides
|
||||
# the implicit -lang-asm and breaks cpp behavior for .S files--notably
|
||||
# it causes cpp to stop predefining __ASSEMBLER__.
|
||||
CPPFLAGS = $(config-extra-cppflags) $(CPPUNDEFS) $(CPPFLAGS-config) \
|
||||
$($(subdir)-CPPFLAGS) \
|
||||
$(+includes) $(defines) $(module-cppflags) \
|
||||
CPPFLAGS = $(CPPUNDEFS) $(CPPFLAGS-config) $($(subdir)-CPPFLAGS) \
|
||||
$(+includes) $(defines) \
|
||||
-include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
|
||||
$(CPPFLAGS-$(suffix $@)) \
|
||||
$(foreach lib,$(libof-$(basename $(@F))) \
|
||||
$(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
|
||||
$(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
|
||||
|
||||
ifneq (no,$(have-tunables))
|
||||
CPPFLAGS += -DTOP_NAMESPACE=glibc
|
||||
endif
|
||||
|
||||
override CFLAGS = -std=gnu11 -fgnu89-inline $(config-extra-cflags) \
|
||||
override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) $(config-extra-cflags) \
|
||||
$(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
|
||||
$(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
|
||||
$(CFLAGS-$(@F)) $(tls-model) \
|
||||
$(CFLAGS-$(@F)) \
|
||||
$(foreach lib,$(libof-$(basename $(@F))) \
|
||||
$(libof-$(<F)) $(libof-$(@F)),$(CFLAGS-$(lib)))
|
||||
# Use our copies of cstdlib and cmath.
|
||||
override CXXFLAGS = -I$(common-objpfx) $(c++-sysincludes) \
|
||||
override CXXFLAGS = $(c++-sysincludes) \
|
||||
$(filter-out %frame-pointer,$(+cflags)) $(sysdep-CFLAGS) \
|
||||
$(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F))
|
||||
|
||||
@@ -961,8 +813,7 @@ endif
|
||||
# The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
|
||||
# to pass different flags for each flavor.
|
||||
libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o))
|
||||
# .op may be added to all-object-suffixes below.
|
||||
all-object-suffixes := .o .os .oS
|
||||
all-object-suffixes := .o .os .op .og .oS
|
||||
object-suffixes :=
|
||||
CPPFLAGS-.o = $(pic-default)
|
||||
CFLAGS-.o = $(filter %frame-pointer,$(+cflags))
|
||||
@@ -987,7 +838,6 @@ PIE-ccflag = -fPIE
|
||||
ifeq (yes,$(build-profile))
|
||||
# Under --enable-profile, we will build a static library of profiled objects.
|
||||
# The profiled object files are named foo.op.
|
||||
all-object-suffixes += .op
|
||||
object-suffixes += .op
|
||||
CPPFLAGS-.op = -DPROF $(pic-default)
|
||||
CFLAGS-.op = -pg
|
||||
@@ -1016,7 +866,7 @@ endif
|
||||
ifndef ASFLAGS
|
||||
ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS))
|
||||
endif
|
||||
ASFLAGS += -Werror=undef $(ASFLAGS-config) $(asflags-cpu)
|
||||
ASFLAGS += $(ASFLAGS-config) $(asflags-cpu)
|
||||
|
||||
ifndef BUILD_CC
|
||||
BUILD_CC = $(CC)
|
||||
@@ -1075,18 +925,26 @@ $(common-objpfx)shlib-versions.v.i: \
|
||||
$(subdir-srcdirs:=/shlib-versions)) \
|
||||
$(..)shlib-versions
|
||||
|
||||
soversions-default-setname = $(patsubst %, %,\
|
||||
$(filter-out %_default,\
|
||||
$(oldest-abi:%=GLIBC_%)))
|
||||
$(common-objpfx)soversions.i: $(..)scripts/soversions.awk \
|
||||
$(common-objpfx)shlib-versions.v
|
||||
$(AWK) -f $^ > $@T
|
||||
$(AWK) -v default_setname='$(soversions-default-setname)' \
|
||||
-v cpu='$(config-machine)' \
|
||||
-v vendor='$(config-vendor)' \
|
||||
-v os='$(config-os)' \
|
||||
-f $^ > $@T
|
||||
mv -f $@T $@
|
||||
$(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
|
||||
(while read which lib number setname; do \
|
||||
eval seen_$$which=1; \
|
||||
test x"$$which" != xABI || echo abi-name = "$$lib"; \
|
||||
test x"$$which" = xDEFAULT || continue; \
|
||||
case $$number in \
|
||||
[0-9]*) echo "$$lib.so-version=.$$number"; \
|
||||
echo "all-sonames+=$$lib=$$lib.so\$$($$lib.so-version)";;\
|
||||
*) echo "$$lib.so-version=$$number"; \
|
||||
*) echo "$$lib.so-version=\$$(if \$$(abi-$(default-abi)-$$lib-soname),\$$(abi-$(default-abi)-$$lib-soname),$$number)"; \
|
||||
echo "all-sonames+=$$lib=\$$($$lib.so-version)";;\
|
||||
esac; \
|
||||
done; \
|
||||
@@ -1098,33 +956,44 @@ endif
|
||||
postclean-generated += soversions.mk soversions.i \
|
||||
shlib-versions.v shlib-versions.v.i
|
||||
|
||||
before-compile += $(common-objpfx)libc-modules.h
|
||||
# Generate the header containing the names of all shared libraries.
|
||||
# We use a stamp file to avoid unnecessary recompilations.
|
||||
before-compile += $(common-objpfx)gnu/lib-names.h
|
||||
ifeq ($(soversions.mk-done),t)
|
||||
# Generate a header with macro definitions for use with the IS_IN macro.
|
||||
# These are the possible values for the MODULE_NAME macro defined when building
|
||||
# sources, to identify which module the translation unit is going to be built
|
||||
# into.
|
||||
$(common-objpfx)libc-modules.h: $(common-objpfx)libc-modules.stmp; @:
|
||||
$(common-objpfx)libc-modules.stmp: $(..)scripts/gen-libc-modules.awk \
|
||||
$(common-objpfx)soversions.i
|
||||
$(AWK) -v buildlist="$(subst -,_,$(built-modules))" -f $^ > ${@:stmp=T}
|
||||
$(common-objpfx)gnu/lib-names.h: $(common-objpfx)gnu/lib-names.stmp; @:
|
||||
$(common-objpfx)gnu/lib-names.stmp: $(..)scripts/lib-names.awk \
|
||||
$(common-objpfx)soversions.i
|
||||
$(make-target-directory)
|
||||
{ \
|
||||
echo '/* This file is automatically generated.';\
|
||||
echo ' It defines macros to allow user program to find the shared'; \
|
||||
echo ' library files which come as part of GNU libc. */'; \
|
||||
echo '#ifndef __GNU_LIB_NAMES_H'; \
|
||||
echo '#define __GNU_LIB_NAMES_H 1'; \
|
||||
echo ''; \
|
||||
$(if $(abi-includes), \
|
||||
$(foreach h,$(abi-includes), echo '#include <$(h)>';) \
|
||||
echo '';) \
|
||||
$(if $(abi-variants), \
|
||||
$(foreach v,$(abi-variants),\
|
||||
$(if $(abi-$(v)-condition),\
|
||||
echo '#if $(abi-$(v)-condition)'; \
|
||||
($(foreach s,$(all-sonames), \
|
||||
$(if $(abi-$(v)-$(firstword $(subst =, ,$(s)))-soname),\
|
||||
echo $(firstword $(subst =, ,$(s)))=$(abi-$(v)-$(firstword $(subst =, ,$(s)))-soname);, \
|
||||
echo $(s);))) \
|
||||
| LC_ALL=C $(AWK) -v multi=1 -f $(firstword $^) | LC_ALL=C sort;) \
|
||||
$(if $(abi-$(v)-condition),echo '#endif';)), \
|
||||
($(foreach s,$(all-sonames), echo $(s);)) \
|
||||
| LC_ALL=C $(AWK) -f $(firstword $^) | LC_ALL=C sort;) \
|
||||
echo ''; \
|
||||
echo '#endif /* gnu/lib-names.h */'; \
|
||||
} > ${@:stmp=T}
|
||||
$(move-if-change) ${@:stmp=T} ${@:stmp=h}
|
||||
touch $@
|
||||
|
||||
endif
|
||||
|
||||
# Build the tunables list header early since it could be used by any module in
|
||||
# glibc.
|
||||
ifneq (no,$(have-tunables))
|
||||
before-compile += $(common-objpfx)dl-tunable-list.h
|
||||
|
||||
$(common-objpfx)dl-tunable-list.h: $(..)scripts/gen-tunables.awk \
|
||||
$(..)elf/dl-tunables.list
|
||||
$(AWK) -f $^ > $@.tmp
|
||||
mv $@.tmp $@
|
||||
endif
|
||||
|
||||
common-generated += libc-modules.h libc-modules.stmp
|
||||
common-generated += gnu/lib-names.h gnu/lib-names.stmp
|
||||
|
||||
# The name under which the run-time dynamic linker is installed.
|
||||
# We are currently going for the convention that `/lib/ld.so.1'
|
||||
@@ -1152,16 +1021,8 @@ endif
|
||||
|
||||
ifeq ($(build-shared),yes)
|
||||
libm = $(common-objpfx)math/libm.so$(libm.so-version)
|
||||
libmvec = $(common-objpfx)mathvec/libmvec.so$(libmvec.so-version)
|
||||
else
|
||||
libm = $(common-objpfx)math/libm.a
|
||||
libmvec = $(common-objpfx)mathvec/libmvec.a
|
||||
endif
|
||||
|
||||
ifeq ($(build-shared),yes)
|
||||
libsupport = $(common-objpfx)support/libsupport_nonshared.a
|
||||
else
|
||||
libsupport = $(common-objpfx)support/libsupport.a
|
||||
endif
|
||||
|
||||
# These are the subdirectories containing the library source. The order
|
||||
@@ -1171,7 +1032,7 @@ all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
|
||||
stdlib stdio-common libio malloc string wcsmbs time dirent \
|
||||
grp pwd posix io termios resource misc socket sysvipc gmon \
|
||||
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
|
||||
crypt localedata timezone rt conform debug mathvec support \
|
||||
crypt localedata timezone rt conform debug \
|
||||
$(add-on-subdirs) dlfcn elf
|
||||
|
||||
ifndef avoid-generated
|
||||
@@ -1180,7 +1041,7 @@ ifndef avoid-generated
|
||||
# existing directory not in all-subdirs, then sysd-sorted needs to
|
||||
# be regenerated, so it depends on existing $(sorted-subdirs:=/Depend) files.
|
||||
all-Depend-files := $(wildcard $(sort \
|
||||
$(foreach dir,$(all-subdirs),\
|
||||
$(foreach dir,$(all-subdirs),\
|
||||
$(firstword $($(dir)-srcdir) \
|
||||
$(..)$(dir))/Depend) \
|
||||
$(sorted-subdirs:=/Depend)))
|
||||
@@ -1219,20 +1080,6 @@ defines += -D_LIBC_REENTRANT
|
||||
libio-mtsafe = -D_IO_MTSAFE_IO
|
||||
endif
|
||||
|
||||
# The name to give to a test in test results summaries.
|
||||
test-name = $(strip $(patsubst %.out, %, $(patsubst $(common-objpfx)%, %, $@)))
|
||||
|
||||
# Likewise, in XFAIL variable names.
|
||||
test-xfail-name = $(strip $(patsubst %.out, %, $(patsubst $(objpfx)%, %, $@)))
|
||||
|
||||
# Command to output a test status line (such as PASS: test-name). If
|
||||
# test-xfail-$(test-xfail-name) has a nonempty value, the status will be
|
||||
# XPASS or XFAIL rather than PASS or FAIL.
|
||||
evaluate-test = $(..)scripts/evaluate-test.sh $(test-name) $$? \
|
||||
$(if $(test-xfail-$(test-xfail-name)),true,false) \
|
||||
$(if $(stop-on-test-failure),true,false) \
|
||||
> $(common-objpfx)$(test-name).test-result
|
||||
|
||||
endif # Makeconfig not yet included
|
||||
|
||||
# Local Variables:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1991-2013 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
|
||||
@@ -38,9 +38,9 @@ chmod a-w$(patsubst %,$(comma)a+x,$(filter .,$(@D))) $@.new
|
||||
mv -f $@.new $@
|
||||
endef
|
||||
|
||||
configure: configure.ac aclocal.m4; $(autoconf-it)
|
||||
%/configure: %/configure.ac aclocal.m4; $(autoconf-it)
|
||||
%/preconfigure: %/preconfigure.ac aclocal.m4; $(autoconf-it)
|
||||
configure: configure.in aclocal.m4; $(autoconf-it)
|
||||
%/configure: %/configure.in aclocal.m4; $(autoconf-it)
|
||||
%/preconfigure: %/preconfigure.in aclocal.m4; $(autoconf-it)
|
||||
|
||||
endif # $(AUTOCONF) = no
|
||||
|
||||
@@ -51,17 +51,15 @@ endif # $(AUTOCONF) = no
|
||||
# These are the targets that are made by making them in each subdirectory.
|
||||
+subdir_targets := subdir_lib objects objs others subdir_mostlyclean \
|
||||
subdir_clean subdir_distclean subdir_realclean \
|
||||
tests xtests \
|
||||
tests xtests subdir_lint.out \
|
||||
subdir_update-abi subdir_check-abi \
|
||||
subdir_update-all-abi \
|
||||
subdir_echo-headers \
|
||||
subdir_install \
|
||||
subdir_objs subdir_stubs subdir_testclean \
|
||||
$(addprefix install-, no-libc.a bin lib data headers others)
|
||||
|
||||
headers := limits.h values.h features.h gnu-versions.h \
|
||||
bits/xopen_lim.h gnu/libc-version.h stdc-predef.h \
|
||||
bits/libc-header-start.h
|
||||
headers := limits.h values.h features.h gnu-versions.h bits/libc-lock.h \
|
||||
bits/xopen_lim.h gnu/libc-version.h stdc-predef.h
|
||||
|
||||
echo-headers: subdir_echo-headers
|
||||
|
||||
@@ -107,9 +105,9 @@ install-symbolic-link: subdir_install
|
||||
rm -f $(symbolic-link-list)
|
||||
|
||||
install:
|
||||
-test ! -x $(elf-objpfx)ldconfig || LC_ALL=C \
|
||||
$(elf-objpfx)ldconfig $(addprefix -r ,$(install_root)) \
|
||||
$(slibdir) $(libdir)
|
||||
-test ! -x $(common-objpfx)elf/ldconfig || LC_ALL=C LANGUAGE=C \
|
||||
$(common-objpfx)elf/ldconfig $(addprefix -r ,$(install_root)) \
|
||||
$(slibdir) $(libdir)
|
||||
ifneq (no,$(PERL))
|
||||
ifeq (/usr,$(prefix))
|
||||
ifeq (,$(install_root))
|
||||
@@ -125,8 +123,28 @@ lib-noranlib: subdir_lib
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
# Build the shared object from the PIC object library.
|
||||
lib: $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so
|
||||
endif # $(build-shared)
|
||||
lib: $(common-objpfx)libc.so
|
||||
|
||||
lib: $(common-objpfx)linkobj/libc.so
|
||||
|
||||
$(common-objpfx)linkobj/libc.so: $(elfobjdir)/soinit.os \
|
||||
$(common-objpfx)linkobj/libc_pic.a \
|
||||
$(elfobjdir)/sofini.os \
|
||||
$(elfobjdir)/interp.os \
|
||||
$(elfobjdir)/ld.so \
|
||||
$(shlib-lds)
|
||||
$(build-shlib)
|
||||
|
||||
$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a \
|
||||
$(common-objpfx)sunrpc/librpc_compat_pic.a
|
||||
$(..)./scripts/mkinstalldirs $(common-objpfx)linkobj
|
||||
(cd $(common-objpfx)linkobj; \
|
||||
$(AR) x ../libc_pic.a; \
|
||||
rm $$($(AR) t ../sunrpc/librpc_compat_pic.a | sed 's/^compat-//'); \
|
||||
$(AR) x ../sunrpc/librpc_compat_pic.a; \
|
||||
$(AR) cr libc_pic.a *.os; \
|
||||
rm *.os)
|
||||
endif
|
||||
|
||||
|
||||
# This is a handy script for running any dynamically linked program against
|
||||
@@ -252,20 +270,18 @@ mostlyclean: parent-mostlyclean
|
||||
tests-clean:
|
||||
@$(MAKE) subdir_testclean no_deps=t
|
||||
|
||||
ifneq (,$(CXX))
|
||||
tests: $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
|
||||
ifneq ($(CXX),no)
|
||||
|
||||
vpath c++-types.data $(+sysdep_dirs)
|
||||
|
||||
tests-special += $(objpfx)c++-types-check.out
|
||||
$(objpfx)c++-types-check.out: c++-types.data scripts/check-c++-types.sh
|
||||
scripts/check-c++-types.sh $< $(CXX) $(filter-out -std=gnu11 $(+gccwarn-c),$(CFLAGS)) $(CPPFLAGS) > $@; \
|
||||
$(evaluate-test)
|
||||
scripts/check-c++-types.sh $< $(CXX) $(filter-out -std=gnu99 -Wstrict-prototypes,$(CFLAGS)) $(CPPFLAGS) > $@
|
||||
endif
|
||||
|
||||
tests-special += $(objpfx)check-local-headers.out
|
||||
$(objpfx)check-local-headers.out: scripts/check-local-headers.sh
|
||||
AWK='$(AWK)' scripts/check-local-headers.sh \
|
||||
"$(includedir)" "$(objpfx)" < /dev/null > $@; \
|
||||
$(evaluate-test)
|
||||
"$(includedir)" "$(objpfx)" > $@
|
||||
|
||||
ifneq ($(PERL),no)
|
||||
installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
|
||||
@@ -286,7 +302,7 @@ installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
|
||||
malloc/obstack.h malloc/mcheck.h math/math.h \
|
||||
math/complex.h math/fenv.h math/tgmath.h misc/sys/uio.h \
|
||||
$(wildcard nis/rpcsvc/*.h) nptl_db/thread_db.h \
|
||||
sysdeps/nptl/pthread.h sysdeps/pthread/semaphore.h \
|
||||
nptl/sysdeps/pthread/pthread.h nptl/semaphore.h \
|
||||
nss/nss.h posix/sys/utsname.h posix/sys/times.h \
|
||||
posix/sys/wait.h posix/sys/types.h posix/unistd.h \
|
||||
posix/glob.h posix/regex.h posix/wordexp.h posix/fnmatch.h\
|
||||
@@ -312,57 +328,11 @@ installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
|
||||
time/sys/time.h time/sys/timeb.h wcsmbs/wchar.h \
|
||||
wctype/wctype.h
|
||||
|
||||
tests-special += $(objpfx)begin-end-check.out
|
||||
tests: $(objpfx)begin-end-check.out
|
||||
$(objpfx)begin-end-check.out: scripts/begin-end-check.pl
|
||||
$(PERL) scripts/begin-end-check.pl $(installed-headers) > $@; \
|
||||
$(evaluate-test)
|
||||
$(PERL) scripts/begin-end-check.pl $(installed-headers) > $@
|
||||
endif
|
||||
|
||||
ifneq "$(headers)" ""
|
||||
# Special test of all the installed headers in this directory.
|
||||
tests-special += $(objpfx)check-installed-headers-c.out
|
||||
libof-check-installed-headers-c := nonlib
|
||||
$(objpfx)check-installed-headers-c.out: \
|
||||
scripts/check-installed-headers.sh $(headers)
|
||||
$(SHELL) $(..)scripts/check-installed-headers.sh c \
|
||||
"$(CC) $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \
|
||||
$(headers) > $@; \
|
||||
$(evaluate-test)
|
||||
|
||||
ifneq "$(CXX)" ""
|
||||
tests-special += $(objpfx)check-installed-headers-cxx.out
|
||||
libof-check-installed-headers-cxx := nonlib
|
||||
$(objpfx)check-installed-headers-cxx.out: \
|
||||
scripts/check-installed-headers.sh $(headers)
|
||||
$(SHELL) $(..)scripts/check-installed-headers.sh c++ \
|
||||
"$(CXX) $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \
|
||||
$(headers) > $@; \
|
||||
$(evaluate-test)
|
||||
endif
|
||||
endif
|
||||
|
||||
define summarize-tests
|
||||
@egrep -v '^(PASS|XFAIL):' $(objpfx)$1 || true
|
||||
@echo "Summary of test results$2:"
|
||||
@sed 's/:.*//' < $(objpfx)$1 | sort | uniq -c
|
||||
@! egrep -q -v '^(X?PASS|XFAIL|UNSUPPORTED):' $(objpfx)$1
|
||||
endef
|
||||
|
||||
tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special))
|
||||
tests: $(tests-special)
|
||||
$(..)scripts/merge-test-results.sh -s $(objpfx) "" \
|
||||
$(sort $(tests-special-notdir:.out=)) \
|
||||
> $(objpfx)subdir-tests.sum
|
||||
$(..)scripts/merge-test-results.sh -t $(objpfx) subdir-tests.sum \
|
||||
$(sort $(subdirs) .) \
|
||||
> $(objpfx)tests.sum
|
||||
$(call summarize-tests,tests.sum)
|
||||
xtests:
|
||||
$(..)scripts/merge-test-results.sh -t $(objpfx) subdir-xtests.sum \
|
||||
$(sort $(subdirs)) \
|
||||
> $(objpfx)xtests.sum
|
||||
$(call summarize-tests,xtests.sum, for extra tests)
|
||||
|
||||
# The realclean target is just like distclean for the parent, but we want
|
||||
# the subdirs to know the difference in case they care.
|
||||
realclean distclean: parent-clean
|
||||
@@ -427,19 +397,41 @@ dist: dist-prepare
|
||||
fi
|
||||
endif
|
||||
|
||||
INSTALL: manual/install-plain.texi manual/macros.texi \
|
||||
$(common-objpfx)manual/pkgvers.texi manual/install.texi
|
||||
INSTALL: manual/install.texi manual/macros.texi \
|
||||
$(common-objpfx)manual/pkgvers.texi
|
||||
makeinfo --no-validate --plaintext --no-number-sections \
|
||||
-I$(common-objpfx)manual $< -o $@-tmp
|
||||
$(AWK) 'NF == 0 { ++n; next } \
|
||||
NF != 0 { while (n-- > 0) print ""; n = 0; print }' \
|
||||
< $@-tmp > $@-tmp2
|
||||
rm -f $@-tmp
|
||||
-chmod a-w $@-tmp2
|
||||
mv -f $@-tmp2 $@
|
||||
-I$(common-objpfx)manual $< -o $@
|
||||
-chmod a-w $@
|
||||
$(common-objpfx)manual/%: FORCE
|
||||
$(MAKE) $(PARALLELMFLAGS) -C manual $@
|
||||
FORCE:
|
||||
|
||||
iconvdata/% localedata/% po/%: FORCE
|
||||
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
|
||||
|
||||
# glibc 2.0 contains some header files which aren't used with glibc 2.1
|
||||
# anymore.
|
||||
# These rules should remove those headers
|
||||
ifeq (,$(install_root))
|
||||
ifeq ($(old-glibc-headers),yes)
|
||||
install: remove-old-headers
|
||||
endif
|
||||
endif
|
||||
|
||||
headers2_0 := __math.h bytesex.h confname.h direntry.h elfclass.h \
|
||||
errnos.h fcntlbits.h huge_val.h ioctl-types.h \
|
||||
ioctls.h iovec.h jmp_buf.h libc-lock.h local_lim.h \
|
||||
mathcalls.h mpool.h nan.h ndbm.h posix1_lim.h \
|
||||
posix2_lim.h posix_opt.h resourcebits.h schedbits.h \
|
||||
selectbits.h semaphorebits.h sigaction.h sigcontext.h \
|
||||
signum.h sigset.h sockaddrcom.h socketbits.h stab.def \
|
||||
statbuf.h statfsbuf.h stdio-lock.h stdio_lim.h \
|
||||
syscall-list.h termbits.h timebits.h ustatbits.h \
|
||||
utmpbits.h utsnamelen.h waitflags.h waitstatus.h \
|
||||
xopen_lim.h gnu/types.h sys/ipc_buf.h \
|
||||
sys/kernel_termios.h sys/msq_buf.h sys/sem_buf.h \
|
||||
sys/shm_buf.h sys/socketcall.h sigstack.h
|
||||
|
||||
.PHONY: remove-old-headers
|
||||
remove-old-headers:
|
||||
rm -f $(addprefix $(inst_includedir)/, $(headers2_0))
|
||||
|
||||
+2
-2
@@ -9,10 +9,10 @@ all .DEFAULT:
|
||||
$(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@
|
||||
|
||||
install:
|
||||
LC_ALL=C; export LC_ALL; \
|
||||
LANGUAGE=C LC_ALL=C; export LANGUAGE LC_ALL; \
|
||||
$(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@
|
||||
|
||||
bench bench-clean bench-build:
|
||||
bench bench-clean:
|
||||
$(MAKE) -C $(srcdir)/benchtests $(PARALLELMFLAGS) objdir=`pwd` $@
|
||||
|
||||
# Convenience target to rebuild ULPs for all math tests.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1991-2013 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
|
||||
@@ -93,12 +93,12 @@ before-compile := $(filter $(common-objpfx)mach% $(common-objpfx)hurd%,\
|
||||
$(before-compile))
|
||||
|
||||
# Even before that, we need abi-versions.h which is generated right here.
|
||||
ifeq ($(build-shared),yes)
|
||||
ifeq ($(versioning),yes)
|
||||
ifndef avoid-generated
|
||||
before-compile := $(common-objpfx)abi-versions.h $(before-compile)
|
||||
$(common-objpfx)abi-versions.h: $(..)scripts/abi-versions.awk \
|
||||
$(common-objpfx)Versions.all
|
||||
LC_ALL=C $(AWK) -f $^ > $@T
|
||||
LC_ALL=C $(AWK) -v oldest_abi=$(oldest-abi) -f $^ > $@T
|
||||
mv -f $@T $@
|
||||
|
||||
$(common-objpfx)%.latest: $(common-objpfx)abi-versions.h
|
||||
@@ -106,29 +106,9 @@ $(common-objpfx)%.latest: $(common-objpfx)abi-versions.h
|
||||
$(common-objpfx)abi-versions.h > $@T
|
||||
mv -f $@T $@
|
||||
endif # avoid-generated
|
||||
endif # $(build-shared) = yes
|
||||
endif # $(versioning) = yes
|
||||
|
||||
ifndef avoid-generated
|
||||
ifneq (,$(CXX))
|
||||
# If C++ headers <cstdlib> or <cmath> are used, GCC 6 will include
|
||||
# /usr/include/stdlib.h or /usr/include/math.h from "#include_next"
|
||||
# (instead of stdlib/stdlib.h or math/math.h in the glibc source
|
||||
# directory), and this turns up as a make dependency. An implicit
|
||||
# rule will kick in and make will try to install stdlib/stdlib.h or
|
||||
# math/math.h as /usr/include/stdlib.h or /usr/include/math.h because
|
||||
# the target is out of date. We make a copy of <cstdlib> and <cmath>
|
||||
# in the glibc build directory so that stdlib/stdlib.h and math/math.h
|
||||
# will be used instead of /usr/include/stdlib.h and /usr/include/math.h.
|
||||
before-compile := $(common-objpfx)cstdlib $(common-objpfx)cmath \
|
||||
$(before-compile)
|
||||
$(common-objpfx)cstdlib: $(c++-cstdlib-header)
|
||||
$(INSTALL_DATA) $< $@T
|
||||
$(move-if-change) $@T $@
|
||||
$(common-objpfx)cmath: $(c++-cmath-header)
|
||||
$(INSTALL_DATA) $< $@T
|
||||
$(move-if-change) $@T $@
|
||||
endif
|
||||
|
||||
before-compile := $(common-objpfx)libc-abis.h $(before-compile)
|
||||
$(common-objpfx)libc-abis.h: $(common-objpfx)libc-abis.stamp; @:
|
||||
$(common-objpfx)libc-abis.stamp: $(..)scripts/gen-libc-abis \
|
||||
@@ -143,16 +123,6 @@ $(common-objpfx)libc-abis.stamp: $(..)scripts/gen-libc-abis \
|
||||
common-generated += $(common-objpfx)libc-abis.h
|
||||
endif # avoid-generated
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
$(common-objpfx)runtime-linker.h: $(common-objpfx)runtime-linker.stamp; @:
|
||||
$(common-objpfx)runtime-linker.stamp: $(common-objpfx)config.make
|
||||
$(make-target-directory)
|
||||
echo '#define RUNTIME_LINKER "$(rtlddir)/$(rtld-installed-name)"' \
|
||||
> ${@:stamp=T}
|
||||
$(move-if-change) ${@:stamp=T} ${@:stamp=h}
|
||||
touch $@
|
||||
endif
|
||||
|
||||
# Make sure the subdirectory for object files gets created.
|
||||
ifdef objpfx
|
||||
ifeq (,$(wildcard $(objpfx).))
|
||||
@@ -210,52 +180,6 @@ sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' \
|
||||
-e 's@^\([^ \/$$][^ \]*\)@$$(..)\1@g'
|
||||
endif
|
||||
|
||||
ifdef gen-py-const-headers
|
||||
# We'll use a static pattern rule to match .pysym files with their
|
||||
# corresponding generated .py files.
|
||||
# The generated .py files go in the submodule's dir in the glibc build dir.
|
||||
py-const-files := $(patsubst %.pysym,%.py,$(gen-py-const-headers))
|
||||
py-const-dir := $(objpfx)
|
||||
py-const := $(addprefix $(py-const-dir),$(py-const-files))
|
||||
py-const-script := $(..)scripts/gen-py-const.awk
|
||||
|
||||
# This is a hack we use to generate .py files with constants for Python
|
||||
# pretty printers. It works the same way as gen-as-const.
|
||||
# See scripts/gen-py-const.awk for details on how the awk | gcc mechanism
|
||||
# works.
|
||||
#
|
||||
# $@.tmp and $@.tmp2 are temporary files we use to store the partial contents
|
||||
# of the target file. We do this instead of just writing on $@ because, if the
|
||||
# build process terminates prematurely, re-running Make wouldn't run this rule
|
||||
# since Make would see that the target file already exists (despite it being
|
||||
# incomplete).
|
||||
#
|
||||
# The sed line replaces "@name@SOME_NAME@value@SOME_VALUE@" strings from the
|
||||
# output of 'gcc -S' with "SOME_NAME = SOME_VALUE" strings.
|
||||
# The '-n' option, combined with the '/p' command, makes sed output only the
|
||||
# modified lines instead of the whole input file. The output is redirected
|
||||
# to a .py file; we'll import it in the pretty printers file to read
|
||||
# the constants generated by gen-py-const.awk.
|
||||
# The regex has two capturing groups, for SOME_NAME and SOME_VALUE
|
||||
# respectively. Notice SOME_VALUE may be prepended by a special character,
|
||||
# depending on the assembly syntax (e.g. immediates are prefixed by a '$'
|
||||
# in AT&T x86, and by a '#' in ARM). We discard it using a complemented set
|
||||
# before the second capturing group.
|
||||
$(py-const): $(py-const-dir)%.py: %.pysym $(py-const-script) \
|
||||
$(common-before-compile)
|
||||
$(make-target-directory)
|
||||
$(AWK) -f $(py-const-script) $< \
|
||||
| $(CC) -S -o $@.tmp $(CFLAGS) $(CPPFLAGS) -x c -
|
||||
echo '# GENERATED FILE\n' > $@.tmp2
|
||||
echo '# Constant definitions for pretty printers.' >> $@.tmp2
|
||||
echo '# See gen-py-const.awk for details.\n' >> $@.tmp2
|
||||
sed -n -r 's/^.*@name@([^@]+)@value@[^[:xdigit:]Xx-]*([[:xdigit:]Xx-]+)@.*/\1 = \2/p' \
|
||||
$@.tmp >> $@.tmp2
|
||||
mv -f $@.tmp2 $@
|
||||
rm -f $@.tmp
|
||||
|
||||
generated += $(py-const)
|
||||
endif # gen-py-const-headers
|
||||
|
||||
ifdef gen-as-const-headers
|
||||
# Generating headers for assembly constants.
|
||||
@@ -287,82 +211,20 @@ $(objpfx)test-as-const-%.c: $(..)scripts/gen-as-const.awk $(..)Makerules \
|
||||
mv -f $@T $@
|
||||
endif
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
# Generate the header containing the names of all shared libraries.
|
||||
# We use a stamp file to avoid unnecessary recompilations.
|
||||
before-compile += $(common-objpfx)gnu/lib-names.h
|
||||
ifeq ($(soversions.mk-done),t)
|
||||
ifndef abi-variants
|
||||
lib-names-h-abi = gnu/lib-names.h
|
||||
lib-names-stmp-abi = gnu/lib-names.stmp
|
||||
else
|
||||
lib-names-h-abi = gnu/lib-names-$(default-abi).h
|
||||
lib-names-stmp-abi = gnu/lib-names-$(default-abi).stmp
|
||||
before-compile += $(common-objpfx)$(lib-names-h-abi)
|
||||
common-generated += gnu/lib-names.h
|
||||
install-others-nosubdir: $(inst_includedir)/$(lib-names-h-abi)
|
||||
$(common-objpfx)gnu/lib-names.h:
|
||||
$(make-target-directory)
|
||||
{ \
|
||||
echo '/* This file is automatically generated.';\
|
||||
echo ' It defines macros to allow user program to find the shared'; \
|
||||
echo ' library files which come as part of GNU libc. */'; \
|
||||
echo '#ifndef __GNU_LIB_NAMES_H'; \
|
||||
echo '#define __GNU_LIB_NAMES_H 1'; \
|
||||
echo ''; \
|
||||
$(if $(abi-includes), \
|
||||
$(foreach h,$(abi-includes), echo '#include <$(h)>';) \
|
||||
echo '';) \
|
||||
$(foreach v,$(abi-variants),\
|
||||
$(if $(abi-$(v)-condition),\
|
||||
echo '#if $(abi-$(v)-condition)'; \
|
||||
echo '# include <gnu/lib-names-$(v).h>'); \
|
||||
$(if $(abi-$(v)-condition),echo '#endif';)) \
|
||||
echo ''; \
|
||||
echo '#endif /* gnu/lib-names.h */'; \
|
||||
} > $@
|
||||
endif
|
||||
$(common-objpfx)$(lib-names-h-abi): $(common-objpfx)$(lib-names-stmp-abi); @:
|
||||
$(common-objpfx)$(lib-names-stmp-abi): $(..)scripts/lib-names.awk \
|
||||
$(common-objpfx)soversions.i
|
||||
$(make-target-directory)
|
||||
{ \
|
||||
$(if $(abi-variants), \
|
||||
echo '/* This file is automatically generated. */';\
|
||||
echo '#ifndef __GNU_LIB_NAMES_H'; \
|
||||
echo '# error "Never use <$(lib-names-h-abi)> directly; include <gnu/lib-names.h> instead."'; \
|
||||
echo '#endif';, \
|
||||
echo '/* This file is automatically generated.';\
|
||||
echo ' It defines macros to allow user program to find the shared'; \
|
||||
echo ' library files which come as part of GNU libc. */'; \
|
||||
echo '#ifndef __GNU_LIB_NAMES_H'; \
|
||||
echo '#define __GNU_LIB_NAMES_H 1';) \
|
||||
echo ''; \
|
||||
($(foreach s,$(all-sonames), echo $(s);)) \
|
||||
| LC_ALL=C $(AWK) -f $(firstword $^) | LC_ALL=C sort; \
|
||||
$(if $(abi-variants),, \
|
||||
echo ''; \
|
||||
echo '#endif /* gnu/lib-names.h */';) \
|
||||
} > ${@:stmp=T}
|
||||
$(move-if-change) ${@:stmp=T} ${@:stmp=h}
|
||||
touch $@
|
||||
endif
|
||||
common-generated += $(lib-names-h-abi) $(lib-names-stmp-abi)
|
||||
endif
|
||||
|
||||
###############################################################################
|
||||
# NOTE! Everything adding to before-compile needs to come before this point! #
|
||||
###############################################################################
|
||||
|
||||
# Generate an ordered list of implicit rules which find the source files in
|
||||
# each sysdep directory. The old method was to use vpath to search all the
|
||||
# sysdep directories. However, that had the problem that a .S file in a
|
||||
# later directory would be chosen over a .c file in an earlier directory,
|
||||
# which does not preserve the desired sysdeps ordering behavior.
|
||||
|
||||
# System-dependent makefiles can put in `inhibit-sysdep-asm' regexps
|
||||
# matching sysdep directories whose assembly source files should be
|
||||
# suppressed.
|
||||
# System-dependent makefiles can put in `inhibit-sysdep-asm' wildcard
|
||||
# patterns matching sysdep directories whose assembly source files should
|
||||
# be suppressed.
|
||||
ifdef inhibit-sysdep-asm
|
||||
define check-inhibit-asm
|
||||
case $$sysdir in $(subst $(empty) ,|,$(inhibit-sysdep-asm))) asm= ;; esac;
|
||||
endef
|
||||
endif
|
||||
|
||||
-include $(common-objpfx)sysd-rules
|
||||
ifneq ($(sysd-rules-sysdirs),$(config-sysdirs))
|
||||
@@ -371,16 +233,34 @@ ifneq ($(sysd-rules-sysdirs),$(config-sysdirs))
|
||||
sysd-rules-force = FORCE
|
||||
FORCE:
|
||||
endif
|
||||
$(common-objpfx)sysd-rules: $(..)scripts/sysd-rules.awk \
|
||||
$(common-objpfx)config.make $(..)Makerules \
|
||||
$(common-objpfx)sysd-rules: $(common-objpfx)config.make $(..)Makerules \
|
||||
$(sysdep-makefiles) $(sysdep-makeconfigs) \
|
||||
$(sysd-rules-force)
|
||||
-@rm -f $@T
|
||||
LC_ALL=C $(AWK) -f $< > $@T \
|
||||
-v all_object_suffixes='$(all-object-suffixes)' \
|
||||
-v inhibit_sysdep_asm='$(inhibit-sysdep-asm)' \
|
||||
-v sysd_rules_patterns='$(sysd-rules-patterns)' \
|
||||
-v config_sysdirs='$(config-sysdirs)'
|
||||
(echo 'sysd-rules-sysdirs := $(config-sysdirs)'; \
|
||||
for dir in $(config-sysdirs); do \
|
||||
case "$$dir" in \
|
||||
/*) ;; \
|
||||
*) dir="\$$(..)$$dir" ;; \
|
||||
esac; \
|
||||
asm='.S'; \
|
||||
$(check-inhibit-asm) \
|
||||
for o in $(all-object-suffixes); do \
|
||||
set $(subst :, ,$(sysd-rules-patterns)); \
|
||||
while [ $$# -ge 2 ]; do \
|
||||
t=$$1; shift; \
|
||||
d=$$1; shift; \
|
||||
v=$${t%%%}; [ x"$$v" = x ] || v="\$$($${v}CPPFLAGS)"; \
|
||||
for s in $$asm .c; do \
|
||||
echo "\$$(objpfx)$$t$$o: $$dir/$$d$$s \$$(before-compile)"; \
|
||||
echo " \$$(compile-command$$s) $$v"; \
|
||||
done; \
|
||||
done; \
|
||||
done; \
|
||||
echo "\$$(inst_includedir)/%.h: $$dir/%.h \$$(+force)"; \
|
||||
echo " \$$(do-install)"; \
|
||||
done; \
|
||||
echo 'sysd-rules-done = t') > $@T
|
||||
mv -f $@T $@
|
||||
|
||||
ifndef sysd-rules-done
|
||||
@@ -426,27 +306,24 @@ endif
|
||||
|
||||
# Generate version maps, but wait until sysdep-subdirs is known
|
||||
ifeq ($(sysd-sorted-done),t)
|
||||
ifeq ($(build-shared),yes)
|
||||
ifeq ($(versioning),yes)
|
||||
-include $(common-objpfx)sysd-versions
|
||||
$(addprefix $(common-objpfx),$(version-maps)): $(common-objpfx)sysd-versions
|
||||
common-generated += $(version-maps)
|
||||
postclean-generated += sysd-versions Versions.all abi-versions.h \
|
||||
Versions.def Versions.v.i Versions.v
|
||||
Versions.def.v.i Versions.def.v Versions.v.i Versions.v
|
||||
|
||||
ifndef avoid-generated
|
||||
ifneq ($(sysd-versions-subdirs),$(sorted-subdirs) $(config-sysdirs))
|
||||
sysd-versions-force = FORCE
|
||||
FORCE:
|
||||
endif
|
||||
|
||||
$(common-objpfx)Versions.def: $(..)scripts/versionlist.awk \
|
||||
$(common-objpfx)Versions.v
|
||||
LC_ALL=C $(AWK) -f $^ > $@T
|
||||
mv -f $@T $@
|
||||
|
||||
# See %.v/%.v.i implicit rules in Makeconfig.
|
||||
$(common-objpfx)Versions.def.v.i: $(..)Versions.def \
|
||||
$(wildcard $(add-ons:%=$(..)%/Versions.def))
|
||||
$(common-objpfx)Versions.all: $(..)scripts/firstversions.awk \
|
||||
$(common-objpfx)soversions.i \
|
||||
$(common-objpfx)Versions.def
|
||||
$(common-objpfx)Versions.def.v
|
||||
{ while read which lib version setname; do \
|
||||
test x"$$which" = xDEFAULT || continue; \
|
||||
test -z "$$setname" || echo "$$lib : $$setname"; \
|
||||
@@ -457,6 +334,7 @@ $(common-objpfx)Versions.all: $(..)scripts/firstversions.awk \
|
||||
# See %.v/%.v.i implicit rules in Makeconfig.
|
||||
$(common-objpfx)Versions.v.i: $(wildcard $(subdirs:%=$(..)%/Versions)) \
|
||||
$(wildcard $(sysdirs:%=%/Versions)) \
|
||||
$(common-objpfx)abi-versions.h \
|
||||
$(sysd-versions-force)
|
||||
$(common-objpfx)sysd-versions: $(common-objpfx)Versions.all \
|
||||
$(common-objpfx)Versions.v \
|
||||
@@ -469,7 +347,7 @@ $(common-objpfx)sysd-versions: $(common-objpfx)Versions.all \
|
||||
) > $@T
|
||||
mv -f $@T $@
|
||||
endif # avoid-generated
|
||||
endif # $(build-shared) = yes
|
||||
endif # $(versioning) = yes
|
||||
endif # sysd-sorted-done
|
||||
|
||||
# Generate .dT files as we compile.
|
||||
@@ -539,51 +417,31 @@ elide-routines.os += $(static-only-routines)
|
||||
# static libraries.
|
||||
elide-routines.o += $(shared-only-routines)
|
||||
elide-routines.op += $(shared-only-routines)
|
||||
elide-routines.og += $(shared-only-routines)
|
||||
|
||||
# Shared library building.
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
|
||||
# Reference map file only when shared libraries are built and a map file name
|
||||
# Reference map file only when versioning is selected and a map file name
|
||||
# is given.
|
||||
ifeq ($(build-shared),yes)
|
||||
ifeq ($(versioning),yes)
|
||||
map-file = $(firstword $($(@F:.so=-map)) \
|
||||
$(addprefix $(common-objpfx), \
|
||||
$(filter $(@F:.so=.map),$(version-maps))))
|
||||
load-map-file = $(map-file:%=-Wl,--version-script=%)
|
||||
endif
|
||||
|
||||
# Compiler arguments to use to link a shared object with libc and
|
||||
# ld.so. This is intended to be as similar as possible to a default
|
||||
# link with an installed libc.
|
||||
link-libc-args = -Wl,--start-group \
|
||||
$(libc-for-link) \
|
||||
$(common-objpfx)libc_nonshared.a \
|
||||
$(as-needed) $(elf-objpfx)ld.so $(no-as-needed) \
|
||||
-Wl,--end-group
|
||||
|
||||
# The corresponding shared libc to use. This may be modified for a
|
||||
# particular target.
|
||||
libc-for-link = $(common-objpfx)libc.so
|
||||
|
||||
# The corresponding dependencies. As these are used in dependencies,
|
||||
# not just commands, they cannot use target-specific variables so need
|
||||
# to name both possible libc.so objects.
|
||||
link-libc-deps = $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so \
|
||||
$(common-objpfx)libc_nonshared.a $(elf-objpfx)ld.so
|
||||
|
||||
# Pattern rule to build a shared object from an archive of PIC objects.
|
||||
# This must come after the installation rules so Make doesn't try to
|
||||
# build shared libraries in place from the installed *_pic.a files.
|
||||
# $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
|
||||
# on other shared objects. The linking with libc and ld.so is intended
|
||||
# to be as similar as possible to a default link with an installed libc.
|
||||
lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(link-libc-deps)
|
||||
$(build-shlib) $(link-libc-args)
|
||||
$(call after-link,$@)
|
||||
# on other shared objects.
|
||||
lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(+interp)
|
||||
$(build-shlib)
|
||||
|
||||
define build-shlib-helper
|
||||
$(LINK.o) -shared -static-libgcc -Wl,-O1 $(sysdep-LDFLAGS) \
|
||||
$(LINK.o) -shared $(static-libgcc) -Wl,-O1 $(sysdep-LDFLAGS) \
|
||||
$(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) $(rtld-LDFLAGS) \
|
||||
$(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
|
||||
$(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
|
||||
@@ -627,9 +485,6 @@ $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
|
||||
PROVIDE(__start___libc_thread_subfreeres = .);\
|
||||
__libc_thread_subfreeres : { *(__libc_thread_subfreeres) }\
|
||||
PROVIDE(__stop___libc_thread_subfreeres = .);\
|
||||
PROVIDE(__start___libc_IO_vtables = .);\
|
||||
__libc_IO_vtables : { *(__libc_IO_vtables) }\
|
||||
PROVIDE(__stop___libc_IO_vtables = .);\
|
||||
/DISCARD/ : { *(.gnu.glibc-stub.*) }@'
|
||||
test -s $@T
|
||||
mv -f $@T $@
|
||||
@@ -645,7 +500,7 @@ $(build-shlib-helper) -o $@ $(shlib-lds-flags) \
|
||||
endef
|
||||
|
||||
define build-module-helper
|
||||
$(LINK.o) -shared -static-libgcc $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \
|
||||
$(LINK.o) -shared $(static-libgcc) $(sysdep-LDFLAGS) $(rtld-LDFLAGS) \
|
||||
$(if $($(@F)-no-z-defs)$(no-z-defs),,-Wl,-z,defs) \
|
||||
-B$(csu-objpfx) $(load-map-file) \
|
||||
$(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \
|
||||
@@ -658,21 +513,17 @@ endef
|
||||
# not for shared objects
|
||||
define build-module
|
||||
$(build-module-helper) -o $@ $(shlib-lds-flags) \
|
||||
$(csu-objpfx)abi-note.o $(build-module-objlist) $(link-libc-args)
|
||||
$(call after-link,$@)
|
||||
$(csu-objpfx)abi-note.o $(build-module-objlist)
|
||||
endef
|
||||
define build-module-asneeded
|
||||
$(build-module-helper) -o $@ $(shlib-lds-flags) \
|
||||
$(csu-objpfx)abi-note.o \
|
||||
-Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \
|
||||
$(link-libc-args)
|
||||
$(call after-link,$@)
|
||||
-Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed
|
||||
endef
|
||||
|
||||
build-module-helper-objlist = \
|
||||
$(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\
|
||||
$(filter-out %.lds $(map-file) $(+preinit) $(+postinit) \
|
||||
$(link-libc-deps),$^))
|
||||
$(filter-out %.lds $(map-file) $(+preinit) $(+postinit),$^))
|
||||
|
||||
build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so)
|
||||
build-shlib-objlist = $(build-module-helper-objlist) \
|
||||
@@ -715,50 +566,14 @@ generated += libc_pic.opts libc_pic.os.clean
|
||||
libc_pic_clean := .clean
|
||||
endif
|
||||
|
||||
# Build a possibly-modified version of libc_pic.a for use in building
|
||||
# linkobj/libc.so.
|
||||
ifeq (,$(filter sunrpc,$(subdirs)))
|
||||
$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a
|
||||
$(make-target-directory)
|
||||
ln -f $< $@
|
||||
else
|
||||
$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a \
|
||||
$(common-objpfx)sunrpc/librpc_compat_pic.a
|
||||
$(make-target-directory)
|
||||
(cd $(common-objpfx)linkobj; \
|
||||
$(AR) x ../libc_pic.a; \
|
||||
rm $$($(AR) t ../sunrpc/librpc_compat_pic.a | sed 's/^compat-//'); \
|
||||
$(AR) x ../sunrpc/librpc_compat_pic.a; \
|
||||
$(AR) cr libc_pic.a *.os; \
|
||||
rm *.os)
|
||||
endif # $(subdirs) contains sunrpc
|
||||
|
||||
# Clear link-libc-deps for the libc.so libraries so build-shlibs does not
|
||||
# filter ld.so out of the list of linked objects.
|
||||
$(common-objpfx)libc.so: link-libc-deps = # empty
|
||||
$(common-objpfx)linkobj/libc.so: link-libc-deps = # empty
|
||||
|
||||
# Use our own special initializer and finalizer files for the libc.so
|
||||
# libraries.
|
||||
$(common-objpfx)libc.so: $(elf-objpfx)soinit.os \
|
||||
# Use our own special initializer and finalizer files for libc.so.
|
||||
$(common-objpfx)libc.so: $(elfobjdir)/soinit.os \
|
||||
$(common-objpfx)libc_pic.os$(libc_pic_clean) \
|
||||
$(elf-objpfx)sofini.os \
|
||||
$(elf-objpfx)interp.os \
|
||||
$(elf-objpfx)ld.so \
|
||||
$(elfobjdir)/sofini.os \
|
||||
$(elfobjdir)/interp.os $(elfobjdir)/ld.so \
|
||||
$(shlib-lds)
|
||||
$(build-shlib)
|
||||
$(call after-link,$@)
|
||||
|
||||
$(common-objpfx)linkobj/libc.so: $(elf-objpfx)soinit.os \
|
||||
$(common-objpfx)linkobj/libc_pic.a \
|
||||
$(elf-objpfx)sofini.os \
|
||||
$(elf-objpfx)interp.os \
|
||||
$(elf-objpfx)ld.so \
|
||||
$(shlib-lds)
|
||||
$(build-shlib)
|
||||
$(call after-link,$@)
|
||||
|
||||
ifeq ($(build-shared),yes)
|
||||
ifeq ($(versioning),yes)
|
||||
$(common-objpfx)libc.so: $(common-objpfx)libc.map
|
||||
endif
|
||||
common-generated += libc.so libc_pic.os
|
||||
@@ -806,7 +621,8 @@ include $(patsubst %,$(..)extra-modules.mk,$(modules-names))
|
||||
|
||||
extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
|
||||
$(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
|
||||
$(objpfx)%.os $(shlib-lds) $(link-libs-deps)
|
||||
$(objpfx)%.os $(shlib-lds) \
|
||||
$(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
|
||||
$(build-module)
|
||||
endif
|
||||
|
||||
@@ -984,26 +800,6 @@ endef
|
||||
installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\
|
||||
$(inst_libdir)/$(patsubst %,$(libtype$o),\
|
||||
$(libprefix)$(libc-name)))
|
||||
|
||||
.PHONY: check-install-supported
|
||||
check-install-supported:
|
||||
|
||||
# Check to see if the prefix or exec_prefix GNU standard variable
|
||||
# has been overridden on the command line and, if so, fail with
|
||||
# an error message since doing so is not supported (set DESTDIR
|
||||
# instead).
|
||||
ifeq ($(origin prefix),command line)
|
||||
check-install-supported:
|
||||
$(error Overriding prefix is not supported. Set DESTDIR instead.)
|
||||
endif
|
||||
|
||||
ifeq ($(origin exec_prefix),command line)
|
||||
check-install-supported:
|
||||
$(error Overriding exec_prefix is not supported. Set DESTDIR instead.)
|
||||
endif
|
||||
|
||||
install: check-install-supported
|
||||
|
||||
install: $(installed-libcs)
|
||||
$(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force)
|
||||
$(make-target-directory)
|
||||
@@ -1065,8 +861,8 @@ endif
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
ifeq (no,$(cross-compiling))
|
||||
symbolic-link-prog := $(elf-objpfx)sln
|
||||
symbolic-link-list := $(elf-objpfx)symlink.list
|
||||
symbolic-link-prog := $(common-objpfx)elf/sln
|
||||
symbolic-link-list := $(common-objpfx)elf/symlink.list
|
||||
define make-shlib-link
|
||||
echo `$(..)scripts/rellns-sh -p $< $@` $@ >> $(symbolic-link-list)
|
||||
endef
|
||||
@@ -1200,8 +996,7 @@ endif
|
||||
|
||||
define do-install-so
|
||||
$(do-install-program)
|
||||
$(patsubst %,$(LN_S) -f $(@F) \
|
||||
$(@D)/$(patsubst %$*.so,%,$(<F))$(libprefix)$*.so,\
|
||||
$(patsubst %,ln -s -f $(@F) $(@D)/$(patsubst %$*.so,%,$(<F))$(libprefix)$*.so,\
|
||||
$(filter-out %.so,$@))
|
||||
endef
|
||||
|
||||
@@ -1237,7 +1032,6 @@ $(addprefix $(inst_sbindir)/,$(install-sbin)): \
|
||||
endif
|
||||
ifdef install-lib
|
||||
install-lib.a := $(filter lib%.a,$(install-lib))
|
||||
install-lib.a := $(filter-out $(install-lib-ldscripts),$(install-lib.a))
|
||||
install-lib-non.a := $(filter-out lib%.a,$(install-lib))
|
||||
ifdef install-lib-non.a
|
||||
$(addprefix $(inst_libdir)/$(libprefix),$(install-lib-non.a)): \
|
||||
@@ -1328,13 +1122,16 @@ xcheck: xtests
|
||||
|
||||
all-nonlib = $(strip $(tests) $(xtests) $(test-srcs) $(test-extras) $(others))
|
||||
ifneq (,$(all-nonlib))
|
||||
cpp-srcs-left = $(all-nonlib)
|
||||
cpp-srcs-left = $(all-nonlib:=.c) $(all-nonlib:=.cc)
|
||||
lib := nonlib
|
||||
include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
|
||||
endif
|
||||
|
||||
# The include magic above causes those files to use this variable for flags.
|
||||
CPPFLAGS-nonlib = -DNOT_IN_libc=1
|
||||
|
||||
ifeq ($(build-shared),yes)
|
||||
|
||||
ifeq ($(versioning),yes)
|
||||
# Generate normalized lists of symbols, versions, and data sizes.
|
||||
# This is handy for checking against existing library binaries.
|
||||
|
||||
@@ -1346,14 +1143,6 @@ ifeq ($(build-shared),yes)
|
||||
LC_ALL=C $(OBJDUMP) --dynamic-syms $< > $@T
|
||||
mv -f $@T $@
|
||||
|
||||
# A sysdeps/.../Makefile can set abilist-pattern to something like
|
||||
# %-foo.abilist to look for libc-foo.abilist instead of libc.abilist.
|
||||
# This makes sense if multiple ABIs can be most cleanly supported by a
|
||||
# configuration without using separate sysdeps directories for each.
|
||||
ifdef abilist-pattern
|
||||
vpath $(abilist-pattern) $(+sysdep_dirs)
|
||||
endif
|
||||
|
||||
vpath %.abilist $(+sysdep_dirs)
|
||||
|
||||
# The .PRECIOUS rule prevents the files built by an implicit rule whose
|
||||
@@ -1363,50 +1152,18 @@ vpath %.abilist $(+sysdep_dirs)
|
||||
.PRECIOUS: %.symlist
|
||||
generated += $(extra-libs:=.symlist)
|
||||
|
||||
ifdef abilist-pattern
|
||||
$(objpfx)check-abi-%.out: $(common-objpfx)config.make $(abilist-pattern) \
|
||||
$(objpfx)%.symlist
|
||||
$(check-abi-pattern); \
|
||||
$(evaluate-test)
|
||||
$(objpfx)check-abi-%.out: $(common-objpfx)config.make $(abilist-pattern) \
|
||||
$(common-objpfx)%.symlist
|
||||
$(check-abi-pattern); \
|
||||
$(evaluate-test)
|
||||
endif
|
||||
$(objpfx)check-abi-%.out: $(common-objpfx)config.make %.abilist \
|
||||
$(objpfx)%.symlist
|
||||
$(check-abi); \
|
||||
$(evaluate-test)
|
||||
$(objpfx)check-abi-%.out: $(common-objpfx)config.make %.abilist \
|
||||
$(common-objpfx)%.symlist
|
||||
$(check-abi); \
|
||||
$(evaluate-test)
|
||||
define check-abi-pattern
|
||||
diff -p -U 0 $(filter $(abilist-pattern),$^) $(filter %.symlist,$^) \
|
||||
> $@
|
||||
endef
|
||||
check-abi-%: $(common-objpfx)config.make %.abilist $(objpfx)%.symlist
|
||||
$(check-abi)
|
||||
check-abi-%: $(common-objpfx)config.make %.abilist $(common-objpfx)%.symlist
|
||||
$(check-abi)
|
||||
define check-abi
|
||||
diff -p -U 0 $(filter %.abilist,$^) $(filter %.symlist,$^) > $@
|
||||
diff -p -U 0 $(filter %.abilist,$^) $(filter %.symlist,$^)
|
||||
endef
|
||||
|
||||
ifdef abilist-pattern
|
||||
update-abi-%: $(objpfx)%.symlist $(abilist-pattern)
|
||||
$(update-abi-pattern)
|
||||
update-abi-%: $(common-objpfx)%.symlist $(abilist-pattern)
|
||||
$(update-abi-pattern)
|
||||
endif
|
||||
update-abi-%: $(objpfx)%.symlist %.abilist
|
||||
$(update-abi)
|
||||
update-abi-%: $(common-objpfx)%.symlist %.abilist
|
||||
$(update-abi)
|
||||
define update-abi-pattern
|
||||
@if cmp -s $^ 2> /dev/null; \
|
||||
then \
|
||||
echo '+++ $(filter $(abilist-pattern),$^) is unchanged'; \
|
||||
else cp -f $^; \
|
||||
echo '*** Now check $(filter $(abilist-pattern),$^) changes for correctness ***'; \
|
||||
fi
|
||||
endef
|
||||
define update-abi
|
||||
@if cmp -s $^ 2> /dev/null; \
|
||||
then \
|
||||
@@ -1416,65 +1173,31 @@ define update-abi
|
||||
fi
|
||||
endef
|
||||
|
||||
# Patch all .abilist files for one DSO. The find command locates
|
||||
# abilist files for all architectures. The regular expression in the
|
||||
# find invocation is needed to separate libc.abilist and
|
||||
# libcrypt.abilist, for example. It assumes that abilist-pattern, if
|
||||
# set, is of the form "%-SUFFIX", and not "%SUFFIX", that is, there is
|
||||
# a non-alphanumeric seperator between the pattern and the suffix
|
||||
# added. The abilist files in /generic/ are filtered out because
|
||||
# these are expected to remain empty.
|
||||
define update-all-abi
|
||||
$(SHELL) $(..)scripts/update-abilist.sh $^ \
|
||||
$$(find $(..)sysdeps \
|
||||
-regextype posix-egrep -regex '.*/$*([^a-z0-9].*)?\.abilist$$' \
|
||||
\! -regex '.*/generic/.*')
|
||||
endef
|
||||
ifdef abilist-pattern
|
||||
update-all-abi-%: $(abilist-pattern) $(objpfx)%.symlist
|
||||
$(update-all-abi)
|
||||
update-all-abi-%: $(abilist-pattern) $(common-objpfx)%.symlist
|
||||
$(update-all-abi)
|
||||
endif
|
||||
update-all-abi-%: %.abilist $(objpfx)%.symlist
|
||||
$(update-all-abi)
|
||||
update-all-abi-%: %.abilist $(common-objpfx)%.symlist
|
||||
$(update-all-abi)
|
||||
|
||||
.PHONY: update-abi update-all-abi check-abi
|
||||
.PHONY: update-abi check-abi
|
||||
update-abi: $(patsubst %.so,update-abi-%,$(install-lib.so-versioned))
|
||||
update-all-abi: $(patsubst %.so,update-all-abi-%,$(install-lib.so-versioned))
|
||||
check-abi-list = $(patsubst %.so,$(objpfx)check-abi-%.out, \
|
||||
$(install-lib.so-versioned))
|
||||
check-abi: $(check-abi-list)
|
||||
check-abi: $(patsubst %.so,check-abi-%,$(install-lib.so-versioned))
|
||||
ifdef subdir
|
||||
subdir_check-abi: check-abi
|
||||
subdir_update-abi: update-abi
|
||||
subdir_update-all-abi: update-all-abi
|
||||
else
|
||||
check-abi: subdir_check-abi
|
||||
if grep -q '^FAIL:' $(objpfx)*/check-abi*.test-result; then \
|
||||
cat $(objpfx)*/check-abi*.out && exit 1; fi
|
||||
update-abi: subdir_update-abi
|
||||
update-all-abi: subdir_update-all-abi
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
check-abi: $(objpfx)check-abi-libc.out
|
||||
tests-special += $(objpfx)check-abi-libc.out
|
||||
check-abi: check-abi-libc
|
||||
update-abi: update-abi-libc
|
||||
update-all-abi: update-all-abi-libc
|
||||
common-generated += libc.symlist
|
||||
endif
|
||||
|
||||
ifeq ($(build-shared),yes)
|
||||
ifdef subdir
|
||||
tests-special += $(check-abi-list)
|
||||
tests: check-abi
|
||||
endif
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
|
||||
# These will have been set by sysdeps/posix/Makefile.
|
||||
L_tmpnam ?= 1
|
||||
TMP_MAX ?= 0
|
||||
@@ -1541,10 +1264,7 @@ mostlyclean: common-mostlyclean
|
||||
|
||||
do-tests-clean:
|
||||
-rm -f $(addprefix $(objpfx),$(addsuffix .out,$(tests) $(xtests) \
|
||||
$(test-srcs)) \
|
||||
$(addsuffix .test-result,$(tests) \
|
||||
$(xtests) \
|
||||
$(test-srcs)))
|
||||
$(test-srcs)))
|
||||
|
||||
# Remove the object files.
|
||||
common-mostlyclean:
|
||||
@@ -1554,10 +1274,7 @@ common-mostlyclean:
|
||||
$(test-srcs) $(others) \
|
||||
$(sysdep-others)) \
|
||||
$(addsuffix .out,$(tests) $(xtests) \
|
||||
$(test-srcs)) \
|
||||
$(addsuffix .test-result,$(tests) \
|
||||
$(xtests) \
|
||||
$(test-srcs)))
|
||||
$(test-srcs)))
|
||||
-rm -f $(addprefix $(objpfx),$(extra-objs) $(extra-test-objs) \
|
||||
$(install-lib) $(install-lib.so) \
|
||||
$(install-lib.so:%.so=%_pic.a))
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
Open jobs for finishing GNU libc:
|
||||
---------------------------------
|
||||
Status: October 2004
|
||||
|
||||
If you have time and talent to take over any of the jobs below please
|
||||
contact <bug-glibc@gnu.org>.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
[ 1] Port to new platforms or test current version on formerly supported
|
||||
platforms.
|
||||
|
||||
**** See http://www.gnu.org/software/libc/porting.html for more details.
|
||||
|
||||
|
||||
[ 2] Test compliance with standards. If you have access to recent
|
||||
standards (IEEE, ISO, ANSI, X/Open, ...) and/or test suites you
|
||||
could do some checks as the goal is to be compliant with all
|
||||
standards if they do not contradict each other.
|
||||
|
||||
|
||||
[ 3] The IMHO opinion most important task is to write a more complete
|
||||
test suite. We cannot get too many people working on this. It is
|
||||
not difficult to write a test, find a definition of the function
|
||||
which I normally can provide, if necessary, and start writing tests
|
||||
to test for compliance. Beside this, take a look at the sources
|
||||
and write tests which in total test as many paths of execution as
|
||||
possible.
|
||||
|
||||
|
||||
[ 4] Write translations for the GNU libc message for the so far
|
||||
unsupported languages. GNU libc is fully internationalized and
|
||||
users can immediately benefit from this.
|
||||
|
||||
Take a look at the matrix in
|
||||
ftp://ftp.gnu.org/pub/gnu/ABOUT-NLS
|
||||
for the current status (of course better use a mirror of ftp.gnu.org).
|
||||
|
||||
|
||||
[ 8] If you enjoy assembler programming (as I do --drepper :-) you might
|
||||
be interested in writing optimized versions for some functions.
|
||||
Especially the string handling functions can be optimized a lot.
|
||||
|
||||
Take a look at
|
||||
|
||||
Faster String Functions
|
||||
Henry Spencer, University of Toronto
|
||||
Usenix Winter '92, pp. 419--428
|
||||
|
||||
or just ask. Currently mostly i?86 and Alpha optimized versions
|
||||
exist. Please ask before working on this to avoid duplicate
|
||||
work.
|
||||
|
||||
|
||||
[11] Write access function for netmasks, bootparams, and automount
|
||||
databases for nss_files, nss_nis, and nss_nisplus modules.
|
||||
The functions should be embedded in the nss scheme. This is not
|
||||
hard and not all services must be supported at once.
|
||||
|
||||
|
||||
[15] Cleaning up the header files. Ideally, each header style should
|
||||
follow the "good examples". Each variable and function should have
|
||||
a short description of the function and its parameters. The prototypes
|
||||
should always contain variable names which can help to identify their
|
||||
meaning; better than
|
||||
|
||||
int foo (int, int, int, int);
|
||||
|
||||
Blargh!
|
||||
|
||||
*** The conformtest.pl tool helps cleaning the namespace. As far as
|
||||
known the prototypes all contain parameter names. But maybe some
|
||||
comments can be improved.
|
||||
|
||||
|
||||
[18] Based on the sprof program we need tools to analyze the output. The
|
||||
result should be a link map which specifies in which order the .o
|
||||
files are placed in the shared object. This should help to improve
|
||||
code locality and result in a smaller footprint (in code and data
|
||||
memory) since less pages are only used in small parts.
|
||||
|
||||
|
||||
[19] A user-level STREAMS implementation should be available if the
|
||||
kernel does not provide the support.
|
||||
|
||||
*** This is a much lower priority job now that STREAMS are optional in
|
||||
XPG.
|
||||
|
||||
|
||||
[20] More conversion modules for iconv(3). Existing modules should be
|
||||
extended to do things like transliteration if this is wanted.
|
||||
For often used conversion a direct conversion function should be
|
||||
available.
|
||||
|
||||
|
||||
[23] The `strptime' function needs to be completed. This includes among
|
||||
other things that it must get teached about timezones. The solution
|
||||
envisioned is to extract the timezones from the ADO timezone
|
||||
specifications. Special care must be given names which are used
|
||||
multiple times. Here the precedence should (probably) be according
|
||||
to the geograhical distance. E.g., the timezone EST should be
|
||||
treated as the `Eastern Australia Time' instead of the US `Eastern
|
||||
Standard Time' if the current TZ variable is set to, say,
|
||||
Australia/Canberra or if the current locale is en_AU.
|
||||
|
||||
|
||||
[27] ...deleted...
|
||||
@@ -17,33 +17,37 @@ GNU/Hurd support requires out-of-tree patches that will eventually be
|
||||
incorporated into an official GNU C Library release.
|
||||
|
||||
When working with Linux kernels, this version of the GNU C Library
|
||||
requires Linux kernel version 3.2 or later on all architectures except
|
||||
i[4567]86 and x86_64, where Linux kernel version 2.6.32 or later
|
||||
suffices.
|
||||
requires Linux kernel version 2.6.16 or later.
|
||||
|
||||
Also note that the shared version of the libgcc_s library must be
|
||||
installed for the pthread library to work correctly.
|
||||
|
||||
The GNU C Library supports these configurations for using Linux kernels:
|
||||
|
||||
aarch64*-*-linux-gnu
|
||||
alpha*-*-linux-gnu
|
||||
arm-*-linux-gnueabi
|
||||
hppa-*-linux-gnu Not currently functional without patches.
|
||||
i[4567]86-*-linux-gnu
|
||||
x86_64-*-linux-gnu Can build either x86_64 or x32
|
||||
ia64-*-linux-gnu
|
||||
m68k-*-linux-gnu
|
||||
microblaze*-*-linux-gnu
|
||||
mips-*-linux-gnu
|
||||
mips64-*-linux-gnu
|
||||
powerpc-*-linux-gnu Hardware or software floating point, BE only.
|
||||
powerpc64*-*-linux-gnu Big-endian and little-endian.
|
||||
powerpc-*-linux-gnu Hardware floating point required
|
||||
powerpc64-*-linux-gnu
|
||||
s390-*-linux-gnu
|
||||
s390x-*-linux-gnu
|
||||
sh[34]-*-linux-gnu
|
||||
sparc*-*-linux-gnu
|
||||
sparc64*-*-linux-gnu
|
||||
|
||||
The code for other CPU configurations supported by volunteers outside of
|
||||
the core glibc maintenance effort is contained in the `ports' add-on,
|
||||
located in the `ports' subdirectory of the source tree.
|
||||
|
||||
aarch64*-*-linux-gnu
|
||||
alpha*-*-linux-gnu
|
||||
am33*-*-linux-gnu Not currently functional
|
||||
arm-*-linux-gnueabi
|
||||
hppa-*-linux-gnu Not currently functional without patches.
|
||||
ia64-*-linux-gnu
|
||||
m68k-*-linux-gnu
|
||||
mips-*-linux-gnu
|
||||
mips64-*-linux-gnu
|
||||
powerpc-*-linux-gnu Software floating point (--without-fp)
|
||||
tilegx-*-linux-gnu
|
||||
tilepro-*-linux-gnu
|
||||
|
||||
@@ -71,6 +75,6 @@ This web page gives detailed information on how to report bugs properly.
|
||||
The GNU C Library is free software. See the file COPYING.LIB for copying
|
||||
conditions, and LICENSES for notices about a few contributions that require
|
||||
these additional notices to be distributed. License copyright years may be
|
||||
listed using range notation, e.g., 1996-2015, indicating that every year in
|
||||
listed using range notation, e.g., 2000-2013, indicating that every year in
|
||||
the range, inclusive, is a copyrightable year that would otherwise be listed
|
||||
individually.
|
||||
|
||||
@@ -1,175 +0,0 @@
|
||||
README for the glibc Python pretty printers
|
||||
===========================================
|
||||
|
||||
Pretty printers are gdb extensions that allow it to print useful, human-readable
|
||||
information about a program's variables. For example, for a pthread_mutex_t
|
||||
gdb would usually output something like this:
|
||||
|
||||
(gdb) print mutex
|
||||
$1 = {
|
||||
__data = {
|
||||
__lock = 22020096,
|
||||
__count = 0,
|
||||
__owner = 0,
|
||||
__nusers = 0,
|
||||
__kind = 576,
|
||||
__spins = 0,
|
||||
__elision = 0,
|
||||
__list = {
|
||||
__prev = 0x0,
|
||||
__next = 0x0
|
||||
}
|
||||
},
|
||||
__size = "\000\000P\001", '\000' <repeats 12 times>, "@\002", '\000' <repeats 21 times>,
|
||||
__align = 22020096
|
||||
}
|
||||
|
||||
However, with a pretty printer gdb will output something like this:
|
||||
|
||||
(gdb) print mutex
|
||||
$1 = pthread_mutex_t = {
|
||||
Type = Normal,
|
||||
Status = Not acquired,
|
||||
Robust = No,
|
||||
Shared = No,
|
||||
Protocol = Priority protect,
|
||||
Priority ceiling = 42
|
||||
}
|
||||
|
||||
Before printing a value, gdb will first check if there's a pretty printer
|
||||
registered for it. If there is, it'll use it, otherwise it'll print the value
|
||||
as usual. Pretty printers can be registered in various ways; for our purposes
|
||||
we register them for the current objfile by calling
|
||||
gdb.printing.register_pretty_printer().
|
||||
|
||||
Currently our printers are based on gdb.RegexpCollectionPrettyPrinter, which
|
||||
means they'll be triggered if the type of the variable we're printing matches
|
||||
a given regular expression. For example, MutexPrinter will be triggered if
|
||||
our variable's type matches the regexp '^pthread_mutex_t$'.
|
||||
|
||||
Besides the printers themselves, each module may have a constants file which the
|
||||
printers will import. These constants are generated from C headers during the
|
||||
build process, and need to be in the Python search path when loading the
|
||||
printers.
|
||||
|
||||
|
||||
Installing and loading
|
||||
----------------------
|
||||
|
||||
The pretty printers and their constant files may be installed in different paths
|
||||
for each distro, though gdb should be able to automatically load them by itself.
|
||||
When in doubt, you can use the 'info pretty-printer' gdb command to list the
|
||||
loaded pretty printers.
|
||||
|
||||
If the printers aren't automatically loaded for some reason, you should add the
|
||||
following to your .gdbinit:
|
||||
|
||||
python
|
||||
import sys
|
||||
sys.path.insert(0, '/path/to/constants/file/directory')
|
||||
end
|
||||
|
||||
source /path/to/printers.py
|
||||
|
||||
If you're building glibc manually, '/path/to/constants/file/directory' should be
|
||||
'/path/to/glibc-build/submodule', where 'submodule' is e.g. nptl.
|
||||
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
||||
The pretty printers come with a small test suite based on PExpect, which is a
|
||||
Python module with Expect-like features for spawning and controlling interactive
|
||||
programs. Each printer has a corresponding C program and a Python script
|
||||
that uses PExpect to drive gdb through the program and compare its output to
|
||||
the expected printer's.
|
||||
|
||||
The tests run on the glibc host, which is assumed to have both gdb and PExpect;
|
||||
if any of those is absent the tests will fail with code 77 (UNSUPPORTED).
|
||||
Native builds can be tested simply by doing 'make check'; cross builds must use
|
||||
cross-test-ssh.sh as test-wrapper, like this:
|
||||
|
||||
make test-wrapper='/path/to/scripts/cross-test-ssh.sh user@host' check
|
||||
|
||||
(Remember to share the build system's filesystem with the glibc host's through
|
||||
NFS or something similar).
|
||||
|
||||
Running 'make check' on a cross build will only compile the test programs,
|
||||
without running the scripts.
|
||||
|
||||
|
||||
Adding new pretty printers
|
||||
--------------------------
|
||||
|
||||
Adding new pretty printers to glibc requires following these steps:
|
||||
|
||||
1. Identify which constants must be generated from C headers, and write the
|
||||
corresponding .pysym file. See scripts/gen-py-const.awk for more information
|
||||
on how this works. The name of the .pysym file must be added to the
|
||||
'gen-py-const-headers' variable in your submodule's Makefile (without the .pysym
|
||||
extension).
|
||||
|
||||
2. Write the pretty printer code itself. For this you can follow the gdb
|
||||
Python API documentation, and use the existing printers as examples. The printer
|
||||
code must import the generated constants file (which will have the same name
|
||||
as your .pysym file). The names of the pretty printer files must be added
|
||||
to the 'pretty-printers' variable in your submodule's Makefile (without the .py
|
||||
extension).
|
||||
|
||||
3. Write the unit tests for your pretty printers. The build system calls each
|
||||
test script passing it the paths to the test program source, the test program
|
||||
binary, and the printer files you added to 'pretty-printers' in the previous
|
||||
step. The test scripts, in turn, must import scripts/test_printers_common
|
||||
and call the init_test function passing it, among other things, the name of the
|
||||
set of pretty printers to enable (as seen by running 'info pretty-printer').
|
||||
You can use the existing unit tests as examples.
|
||||
|
||||
4. Add the names of the pretty printer tests to the 'tests-printers' variable
|
||||
in your submodule's Makefile (without extensions). In addition, for each test
|
||||
program you must define a corresponding CFLAGS-* and CPPFLAGS-* variable and
|
||||
set it to $(CFLAGS-printers-tests) to ensure they're compiled correctly. For
|
||||
example, test-foo-printer.c requires the following:
|
||||
|
||||
CFLAGS-test-foo-printer.c := $(CFLAGS-printers-tests)
|
||||
CPPFLAGS-test-foo-printer.c := $(CFLAGS-printers-tests)
|
||||
|
||||
Finally, if your programs need to be linked with a specific library, you can add
|
||||
its name to the 'tests-printers-libs' variable in your submodule's Makefile.
|
||||
|
||||
|
||||
Known issues
|
||||
------------
|
||||
|
||||
* Pretty printers are inherently coupled to the code they're targetting, thus
|
||||
any changes to the target code must also update the corresponding printers.
|
||||
On the plus side, the printer code itself may serve as a kind of documentation
|
||||
for the target code.
|
||||
|
||||
* There's no guarantee that the information the pretty printers provide is
|
||||
complete, i.e. some details might be left off. For example, the pthread_mutex_t
|
||||
printers won't report whether a thread is spin-waiting in an attempt to acquire
|
||||
the mutex.
|
||||
|
||||
* Older versions of the gdb Python API have a bug where
|
||||
gdb.RegexpCollectionPrettyPrinter would not be able to get a value's real type
|
||||
if it was typedef'd. This would cause gdb to ignore the pretty printers for
|
||||
types like pthread_mutex_t, which is defined as:
|
||||
|
||||
typedef union
|
||||
{
|
||||
...
|
||||
} pthread_mutex_t;
|
||||
|
||||
This was fixed in commit 1b588015839caafc608a6944a78aea170f5fb2f6, and released
|
||||
as part of gdb 7.8. However, typedef'ing an already typedef'd type may cause
|
||||
a similar issue, e.g.:
|
||||
|
||||
typedef pthread_mutex_t mutex;
|
||||
mutex a_mutex;
|
||||
|
||||
Here, trying to print a_mutex won't trigger the pthread_mutex_t printer.
|
||||
|
||||
* The test programs must be compiled without optimizations. This is necessary
|
||||
because the test scripts rely on the C code structure being preserved when
|
||||
stepping through the programs. Things like aggressive instruction reordering
|
||||
or optimizing variables out may make this kind of testing impossible.
|
||||
@@ -1,85 +0,0 @@
|
||||
TUNABLE FRAMEWORK
|
||||
=================
|
||||
|
||||
Tunables is a feature in the GNU C Library that allows application authors and
|
||||
distribution maintainers to alter the runtime library behaviour to match their
|
||||
workload.
|
||||
|
||||
The tunable framework allows modules within glibc to register variables that
|
||||
may be tweaked through an environment variable. It aims to enforce a strict
|
||||
namespace rule to bring consistency to naming of these tunable environment
|
||||
variables across the project. This document is a guide for glibc developers to
|
||||
add tunables to the framework.
|
||||
|
||||
ADDING A NEW TUNABLE
|
||||
--------------------
|
||||
|
||||
The TOP_NAMESPACE macro is defined by default as 'glibc'. If distributions
|
||||
intend to add their own tunables, they should do so in a different top
|
||||
namespace by overriding the TOP_NAMESPACE macro for that tunable. Downstream
|
||||
implementations are discouraged from using the 'glibc' top namespace for
|
||||
tunables they don't already have consensus to push upstream.
|
||||
|
||||
There are two steps to adding a tunable:
|
||||
|
||||
1. Add a tunable ID:
|
||||
|
||||
Modules that wish to use the tunables interface must define the
|
||||
TUNABLE_NAMESPACE macro. Following this, for each tunable you want to
|
||||
add, make an entry in elf/dl-tunables.list. The format of the file is as
|
||||
follows:
|
||||
|
||||
TOP_NAMESPACE {
|
||||
NAMESPACE1 {
|
||||
TUNABLE1 {
|
||||
# tunable attributes, one per line
|
||||
}
|
||||
# A tunable with default attributes, i.e. string variable.
|
||||
TUNABLE2
|
||||
TUNABLE3 {
|
||||
# its attributes
|
||||
}
|
||||
}
|
||||
NAMESPACE2 {
|
||||
...
|
||||
}
|
||||
}
|
||||
|
||||
The list of allowed attributes are:
|
||||
|
||||
- type: Data type. Defaults to STRING. Allowed types are:
|
||||
INT_32, SIZE_T and STRING.
|
||||
|
||||
- minval: Optional minimum acceptable value. For a string type
|
||||
this is the minimum length of the value.
|
||||
|
||||
- maxval: Optional maximum acceptable value. For a string type
|
||||
this is the maximum length of the value.
|
||||
|
||||
- env_alias: An alias environment variable
|
||||
|
||||
- is_secure: Specify whether the tunable should be read for setuid
|
||||
binaries. True allows the tunable to be read for
|
||||
setuid binaries while false disables it. Note that
|
||||
even if this is set as true and the value is read, it
|
||||
may not be used if it does not validate against the
|
||||
acceptable values or is not considered safe by the
|
||||
module.
|
||||
|
||||
2. Call either the TUNABLE_SET_VALUE and pass into it the tunable name and a
|
||||
pointer to the variable that should be set with the tunable value.
|
||||
If additional work needs to be done after setting the value, use the
|
||||
TUNABLE_SET_VALUE_WITH_CALLBACK instead and additionally pass a pointer to
|
||||
the function that should be called if the tunable value has been set.
|
||||
|
||||
FUTURE WORK
|
||||
-----------
|
||||
|
||||
The framework currently only allows a one-time initialization of variables
|
||||
through environment variables and in some cases, modification of variables via
|
||||
an API call. A future goals for this project include:
|
||||
|
||||
- Setting system-wide and user-wide defaults for tunables through some
|
||||
mechanism like a configuration file.
|
||||
|
||||
- Allow tweaking of some tunables at runtime
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1991-2013 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
|
||||
@@ -80,43 +80,13 @@ $(common-objpfx)dummy.c:
|
||||
(echo 'extern void __dummy__ (void);'; \
|
||||
echo 'void __dummy__ (void) { }') > $@
|
||||
common-generated += dummy.o dummy.c
|
||||
|
||||
ifneq "$(headers)" ""
|
||||
# Special test of all the installed headers in this directory.
|
||||
tests-special += $(objpfx)check-installed-headers-c.out
|
||||
libof-check-installed-headers-c := nonlib
|
||||
$(objpfx)check-installed-headers-c.out: \
|
||||
$(..)scripts/check-installed-headers.sh $(headers)
|
||||
$(SHELL) $(..)scripts/check-installed-headers.sh c \
|
||||
"$(CC) $(filter-out -std=%,$(CFLAGS)) -D_ISOMAC $(+includes)" \
|
||||
$(headers) > $@; \
|
||||
$(evaluate-test)
|
||||
|
||||
ifneq "$(CXX)" ""
|
||||
tests-special += $(objpfx)check-installed-headers-cxx.out
|
||||
libof-check-installed-headers-cxx := nonlib
|
||||
$(objpfx)check-installed-headers-cxx.out: \
|
||||
$(..)scripts/check-installed-headers.sh $(headers)
|
||||
$(SHELL) $(..)scripts/check-installed-headers.sh c++ \
|
||||
"$(CXX) $(filter-out -std=%,$(CXXFLAGS)) -D_ISOMAC $(+includes)" \
|
||||
$(headers) > $@; \
|
||||
$(evaluate-test)
|
||||
endif
|
||||
endif
|
||||
|
||||
# This makes all the auxiliary and test programs.
|
||||
|
||||
.PHONY: others tests bench bench-build
|
||||
|
||||
# Test programs for the pretty printers.
|
||||
tests-printers-programs := $(addprefix $(objpfx),$(tests-printers))
|
||||
|
||||
# .out files with the output of running the pretty printer tests.
|
||||
tests-printers-out := $(patsubst %,$(objpfx)%.out,$(tests-printers))
|
||||
|
||||
ifndef PYTHON
|
||||
# Mark tests-printers tests as unsupported if we don't have PYTHON.
|
||||
tests-unsupported += $(tests-printers)
|
||||
.PHONY: others tests bench
|
||||
ifeq ($(multi-arch),no)
|
||||
tests := $(filter-out $(tests-ifunc), $(tests))
|
||||
xtests := $(filter-out $(xtests-ifunc), $(xtests))
|
||||
endif
|
||||
|
||||
ifeq ($(build-programs),yes)
|
||||
@@ -124,36 +94,14 @@ others: $(addprefix $(objpfx),$(others) $(sysdep-others) $(extra-objs))
|
||||
else
|
||||
others: $(addprefix $(objpfx),$(extra-objs))
|
||||
endif
|
||||
|
||||
# Generate constant files for Python pretty printers if required.
|
||||
others: $(py-const)
|
||||
|
||||
ifeq ($(run-built-tests),no)
|
||||
tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported),$(tests)) \
|
||||
$(test-srcs)) $(tests-special) \
|
||||
$(tests-printers-programs)
|
||||
xtests: tests $(xtests-special)
|
||||
tests: $(addprefix $(objpfx),$(tests) $(test-srcs))
|
||||
xtests: tests
|
||||
else
|
||||
tests: $(tests:%=$(objpfx)%.out) $(tests-special) $(tests-printers-out)
|
||||
xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-special)
|
||||
tests: $(tests:%=$(objpfx)%.out)
|
||||
xtests: tests $(xtests:%=$(objpfx)%.out)
|
||||
endif
|
||||
|
||||
tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special))
|
||||
xtests-special-notdir = $(patsubst $(objpfx)%, %, $(xtests-special))
|
||||
ifeq ($(run-built-tests),no)
|
||||
tests-expected =
|
||||
else
|
||||
tests-expected = $(tests) $(tests-printers)
|
||||
endif
|
||||
tests:
|
||||
$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
|
||||
$(sort $(tests-expected) $(tests-special-notdir:.out=)) \
|
||||
> $(objpfx)subdir-tests.sum
|
||||
xtests:
|
||||
$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
|
||||
$(sort $(xtests) $(xtests-special-notdir:.out=)) \
|
||||
> $(objpfx)subdir-xtests.sum
|
||||
|
||||
ifeq ($(build-programs),yes)
|
||||
binaries-all-notests = $(others) $(sysdep-others)
|
||||
binaries-all-tests = $(tests) $(xtests) $(test-srcs)
|
||||
@@ -194,7 +142,6 @@ endif
|
||||
|
||||
ifneq "$(strip $(binaries-shared-tests))" ""
|
||||
$(addprefix $(objpfx),$(binaries-shared-tests)): %: %.o \
|
||||
$(link-extra-libs-tests) \
|
||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
||||
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||
$(+link-tests)
|
||||
@@ -202,7 +149,6 @@ endif
|
||||
|
||||
ifneq "$(strip $(binaries-pie-tests))" ""
|
||||
$(addprefix $(objpfx),$(binaries-pie-tests)): %: %.o \
|
||||
$(link-extra-libs-tests) \
|
||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
||||
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||
$(+link-pie-tests)
|
||||
@@ -224,7 +170,6 @@ endif
|
||||
|
||||
ifneq "$(strip $(binaries-static-tests))" ""
|
||||
$(addprefix $(objpfx),$(binaries-static-tests)): %: %.o \
|
||||
$(link-extra-libs-tests) \
|
||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc-static-tests))) \
|
||||
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||
$(+link-static-tests)
|
||||
@@ -234,57 +179,16 @@ ifneq "$(strip $(tests) $(xtests) $(test-srcs))" ""
|
||||
# These are the implicit rules for making test outputs
|
||||
# from the test programs and whatever input files are present.
|
||||
|
||||
define make-test-out
|
||||
$(if $($*-ENV-only),$(test-wrapper-env-only) $($*-ENV-only),\
|
||||
$(test-wrapper-env) $(run-program-env) $($*-ENV)) \
|
||||
$(host-test-program-cmd) $($*-ARGS)
|
||||
endef
|
||||
make-test-out = $(test-wrapper-env) \
|
||||
GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
|
||||
$($*-ENV) $(host-test-program-cmd) $($*-ARGS)
|
||||
$(objpfx)%.out: %.input $(objpfx)%
|
||||
$(make-test-out) > $@ < $(word 1,$^); \
|
||||
$(evaluate-test)
|
||||
$(make-test-out) > $@ < $(word 1,$^)
|
||||
$(objpfx)%.out: /dev/null $(objpfx)% # Make it 2nd arg for canned sequence.
|
||||
$(make-test-out) > $@; \
|
||||
$(evaluate-test)
|
||||
|
||||
# tests-unsupported lists tests that we will not try to build at all in
|
||||
# this configuration. Note this runs every time because it does not
|
||||
# actually create its target. The dependency on Makefile is meant to
|
||||
# ensure that it runs after a Makefile change to add a test to the list
|
||||
# when it previously ran and produced a .out file (probably for a failure).
|
||||
ifneq "$(strip $(tests-unsupported))" ""
|
||||
$(tests-unsupported:%=$(objpfx)%.out): $(objpfx)%.out: Makefile
|
||||
@rm -f $@
|
||||
$(..)scripts/evaluate-test.sh $(patsubst $(common-objpfx)%.out,%,$@) \
|
||||
77 false false > $(@:.out=.test-result)
|
||||
endif
|
||||
$(make-test-out) > $@
|
||||
|
||||
endif # tests
|
||||
|
||||
ifdef PYTHON
|
||||
ifneq "$(strip $(tests-printers))" ""
|
||||
|
||||
# Static pattern rule for building the test programs for the pretty printers.
|
||||
$(tests-printers-programs): %: %.o $(tests-printers-libs) \
|
||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc-static-tests))) \
|
||||
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||
$(+link-printers-tests)
|
||||
|
||||
# Add the paths to the generated constants file and test_common_printers.py
|
||||
# to PYTHONPATH so the test scripts can find them.
|
||||
py-env := PYTHONPATH=$(py-const-dir):$(..)scripts:$${PYTHONPATH}
|
||||
|
||||
# Static pattern rule that matches the test-* targets to their .c and .py
|
||||
# prerequisites. It'll run the corresponding test script for each test program
|
||||
# we compiled and place its output in the corresponding .out file.
|
||||
# The pretty printer files and test_common_printers.py must be present for all.
|
||||
$(tests-printers-out): $(objpfx)%.out: $(objpfx)% %.py %.c $(pretty-printers) \
|
||||
$(..)scripts/test_printers_common.py
|
||||
$(test-wrapper-env) $(py-env) \
|
||||
$(PYTHON) $*.py $*.c $(objpfx)$* $(pretty-printers) > $@; \
|
||||
$(evaluate-test)
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
.PHONY: distclean realclean subdir_distclean subdir_realclean \
|
||||
subdir_clean subdir_mostlyclean subdir_testclean
|
||||
|
||||
+145
@@ -0,0 +1,145 @@
|
||||
libBrokenLocale {
|
||||
GLIBC_2.0
|
||||
}
|
||||
libc {
|
||||
GLIBC_2.0
|
||||
GLIBC_2.1
|
||||
GLIBC_2.1.1
|
||||
GLIBC_2.1.2
|
||||
GLIBC_2.1.3
|
||||
GLIBC_2.1.4
|
||||
GLIBC_2.2
|
||||
GLIBC_2.2.1
|
||||
GLIBC_2.2.2
|
||||
GLIBC_2.2.3
|
||||
GLIBC_2.2.4
|
||||
GLIBC_2.2.5
|
||||
GLIBC_2.2.6
|
||||
GLIBC_2.3
|
||||
GLIBC_2.3.1
|
||||
GLIBC_2.3.2
|
||||
GLIBC_2.3.3
|
||||
GLIBC_2.3.4
|
||||
GLIBC_2.4
|
||||
GLIBC_2.5
|
||||
GLIBC_2.6
|
||||
GLIBC_2.7
|
||||
GLIBC_2.8
|
||||
GLIBC_2.9
|
||||
GLIBC_2.10
|
||||
GLIBC_2.11
|
||||
GLIBC_2.12
|
||||
GLIBC_2.13
|
||||
GLIBC_2.14
|
||||
GLIBC_2.15
|
||||
GLIBC_2.16
|
||||
GLIBC_2.17
|
||||
GLIBC_2.18
|
||||
HURD_CTHREADS_0.3
|
||||
%ifdef EXPORT_UNWIND_FIND_FDE
|
||||
GCC_3.0
|
||||
%endif
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libcrypt {
|
||||
GLIBC_2.0
|
||||
}
|
||||
libdl {
|
||||
GLIBC_2.0
|
||||
GLIBC_2.1
|
||||
GLIBC_2.3.3
|
||||
GLIBC_2.3.4
|
||||
}
|
||||
libm {
|
||||
GLIBC_2.0
|
||||
GLIBC_2.1
|
||||
GLIBC_2.2
|
||||
GLIBC_2.2.3
|
||||
GLIBC_2.3.4
|
||||
GLIBC_2.4
|
||||
GLIBC_2.15
|
||||
GLIBC_2.18
|
||||
}
|
||||
libnsl {
|
||||
GLIBC_2.0
|
||||
GLIBC_2.1
|
||||
GLIBC_2.2
|
||||
}
|
||||
libnss_compat {
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libnss_dns {
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libnss_db {
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libnss_files {
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libnss_hesiod {
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libnss_nis {
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libnss_nisplus {
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libpthread {
|
||||
GLIBC_2.0
|
||||
GLIBC_2.1
|
||||
GLIBC_2.1.1
|
||||
GLIBC_2.1.2
|
||||
GLIBC_2.2
|
||||
GLIBC_2.2.3
|
||||
GLIBC_2.2.6
|
||||
GLIBC_2.3
|
||||
GLIBC_2.3.2
|
||||
GLIBC_2.3.3
|
||||
GLIBC_2.3.4
|
||||
GLIBC_2.4
|
||||
GLIBC_2.6
|
||||
GLIBC_2.11
|
||||
GLIBC_2.12
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libresolv {
|
||||
GLIBC_2.0
|
||||
GLIBC_2.2
|
||||
GLIBC_2.3.2
|
||||
GLIBC_2.9
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
librt {
|
||||
GLIBC_2.1
|
||||
GLIBC_2.2
|
||||
GLIBC_2.3
|
||||
GLIBC_2.3.3
|
||||
GLIBC_2.3.4
|
||||
GLIBC_2.4
|
||||
GLIBC_2.7
|
||||
}
|
||||
libutil {
|
||||
GLIBC_2.0
|
||||
GLIBC_2.9
|
||||
}
|
||||
ld {
|
||||
GLIBC_2.0
|
||||
GLIBC_2.1
|
||||
GLIBC_2.3
|
||||
GLIBC_2.4
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
libthread_db {
|
||||
GLIBC_2.1.3
|
||||
GLIBC_2.2.3
|
||||
GLIBC_2.3
|
||||
GLIBC_2.3.3
|
||||
}
|
||||
libanl {
|
||||
GLIBC_2.2.3
|
||||
}
|
||||
libcidn {
|
||||
GLIBC_PRIVATE
|
||||
}
|
||||
@@ -28,7 +28,5 @@
|
||||
|
||||
.*-.*-syllable.* 5 2.0.0 # just an arbitrary value
|
||||
|
||||
.*-.*-nacl.* 6 42.0.0 # earliest compatible Chromium version
|
||||
|
||||
# There is no catch-all default here because every supported OS that uses
|
||||
# ELF must have its own unique ABI tag.
|
||||
|
||||
Vendored
+8
-27
@@ -1,8 +1,7 @@
|
||||
dnl We require that everyone use exactly the same Autoconf version so that
|
||||
dnl the internal functions defined and used by the main configure script
|
||||
dnl match those expected by the fragments. When changing this version,
|
||||
dnl install.texi also needs to be updated.
|
||||
m4_define([GLIBC_AUTOCONF_VERSION], [2.69])
|
||||
dnl match those expected by the fragments.
|
||||
m4_define([GLIBC_AUTOCONF_VERSION], [2.68])
|
||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), GLIBC_AUTOCONF_VERSION, [],
|
||||
[m4_fatal(m4_flatten(
|
||||
Exactly version GLIBC_AUTOCONF_VERSION of Autoconf is required but you have
|
||||
@@ -10,8 +9,8 @@ m4_defn([AC_AUTOCONF_VERSION])
|
||||
), [63])])dnl
|
||||
dnl
|
||||
dnl We define the macro GLIBC_PROVIDES to do an AC_PROVIDE for each macro
|
||||
dnl which appears in configure.ac before the sysdep configure scripts are run.
|
||||
dnl Each sysdep configure.ac does GLIBC_PROVIDES first, to avoid any
|
||||
dnl which appears in configure.in before the sysdep configure scripts are run.
|
||||
dnl Each sysdep configure.in does GLIBC_PROVIDES first, to avoid any
|
||||
dnl AC_REQUIREs or AC_BEFOREs duplicating their code.
|
||||
dnl
|
||||
define([GLIBC_PROVIDES], [dnl
|
||||
@@ -40,7 +39,7 @@ dnl Ripped out of AS_INIT, which does more cruft we do not want.
|
||||
m4_wrap([m4_divert_pop([BODY])[]])
|
||||
m4_divert_push([BODY])[]dnl
|
||||
dnl End of ripped out of AS_INIT.
|
||||
# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
|
||||
# This file is generated from configure.in by Autoconf. DO NOT EDIT!
|
||||
define([_AC_LANG], [C])dnl
|
||||
])dnl
|
||||
dnl
|
||||
@@ -141,7 +140,7 @@ int _start (void) { return 0; }
|
||||
int __start (void) { return 0; }
|
||||
$1
|
||||
EOF
|
||||
AS_IF([AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -o conftest
|
||||
AS_IF([AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest
|
||||
conftest.c -static -nostartfiles -nostdlib
|
||||
1>&AS_MESSAGE_LOG_FD])],
|
||||
[$2], [$3])
|
||||
@@ -226,7 +225,7 @@ if test x"$gnu_ld" = x"yes"; then
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { return 42; }
|
||||
EOF
|
||||
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
|
||||
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
|
||||
$2 -nostdlib -nostartfiles
|
||||
-fPIC -shared -o conftest.so conftest.c
|
||||
1>&AS_MESSAGE_LOG_FD])
|
||||
@@ -268,7 +267,7 @@ libc_compiler_builtin_inlined=no
|
||||
cat > conftest.c <<EOF
|
||||
int _start (void) { $2 return 0; }
|
||||
EOF
|
||||
if ! AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
|
||||
if ! AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
|
||||
$3 -nostdlib -nostartfiles
|
||||
-S conftest.c -o - | fgrep "$1"
|
||||
1>&AS_MESSAGE_LOG_FD])
|
||||
@@ -282,21 +281,3 @@ else
|
||||
$5
|
||||
fi
|
||||
AC_MSG_RESULT($libc_compiler_builtin_inlined)])
|
||||
|
||||
dnl Default to slibdir named SLIBDIR instead of "lib", and rtlddir
|
||||
dnl named RTLDDIR instead of "lib". This is used to put 64-bit
|
||||
dnl libraries in /lib64.
|
||||
dnl LIBC_SLIBDIR_RTLDDIR([slibdir], [rtlddir])
|
||||
AC_DEFUN([LIBC_SLIBDIR_RTLDDIR],
|
||||
[test -n "$libc_cv_slibdir" ||
|
||||
case "$prefix" in
|
||||
/usr | /usr/)
|
||||
libc_cv_slibdir=/$1
|
||||
libc_cv_rtlddir=/$2
|
||||
if test "$libdir" = '${exec_prefix}/lib'; then
|
||||
libdir='${exec_prefix}/$1';
|
||||
# Locale data can be shared between 32-bit and 64-bit libraries.
|
||||
libc_cv_complocaledir='${exec_prefix}/lib/locale'
|
||||
fi
|
||||
;;
|
||||
esac])
|
||||
|
||||
+1
-3
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997-2013 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
|
||||
@@ -20,8 +20,6 @@
|
||||
#
|
||||
subdir := argp
|
||||
|
||||
include ../Makeconfig
|
||||
|
||||
headers = argp.h
|
||||
routines = $(addprefix argp-, ba fmtstream fs-xinl help parse pv \
|
||||
pvh xinl eexst)
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/* Default definition for ARGP_PROGRAM_BUG_ADDRESS.
|
||||
Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/* Default definition for ARGP_ERR_EXIT_STATUS
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Word-wrapping and line-truncating streams
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
@@ -100,11 +100,7 @@ __argp_fmtstream_free (argp_fmtstream_t fs)
|
||||
__argp_fmtstream_update (fs);
|
||||
if (fs->p > fs->buf)
|
||||
{
|
||||
#ifdef _LIBC
|
||||
__fxprintf (fs->stream, "%.*s", (int) (fs->p - fs->buf), fs->buf);
|
||||
#else
|
||||
fwrite_unlocked (fs->buf, 1, fs->p - fs->buf, fs->stream);
|
||||
#endif
|
||||
}
|
||||
free (fs->buf);
|
||||
free (fs);
|
||||
|
||||
+14
-5
@@ -1,5 +1,5 @@
|
||||
/* Word-wrapping and line-truncating streams.
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
@@ -29,6 +29,19 @@
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifndef __attribute__
|
||||
/* This feature is available in gcc versions 2.5 and later. */
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
|
||||
# define __attribute__(Spec) /* empty */
|
||||
# endif
|
||||
/* The __-protected variants of `format' and `printf' attributes
|
||||
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || __STRICT_ANSI__
|
||||
# define __format__ format
|
||||
# define __printf__ printf
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined (__GNU_LIBRARY__) && defined (HAVE_LINEWRAP_H)
|
||||
/* line_wrap_stream is available, so use that. */
|
||||
#define ARGP_FMTSTREAM_USE_LINEWRAP
|
||||
@@ -96,8 +109,6 @@ struct argp_fmtstream
|
||||
|
||||
typedef struct argp_fmtstream *argp_fmtstream_t;
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Return an argp_fmtstream that outputs to STREAM, and which prefixes lines
|
||||
written on it with LMARGIN spaces and limits them to RMARGIN columns
|
||||
total. If WMARGIN >= 0, words that extend past RMARGIN are wrapped by
|
||||
@@ -284,8 +295,6 @@ __argp_fmtstream_point (argp_fmtstream_t __fs)
|
||||
|
||||
#endif /* __OPTIMIZE__ */
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* ARGP_FMTSTREAM_USE_LINEWRAP */
|
||||
|
||||
#endif /* argp-fmtstream.h */
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/* Real definitions for extern inline functions in argp-fmtstream.h
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
|
||||
+9
-9
@@ -1,5 +1,5 @@
|
||||
/* Hierarchial argument parsing help output
|
||||
Copyright (C) 1995-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
@@ -160,7 +160,7 @@ static const struct uparam_name uparam_names[] =
|
||||
};
|
||||
#define nuparam_names (sizeof (uparam_names) / sizeof (uparam_names[0]))
|
||||
|
||||
/* Read user options from the environment, and fill in UPARAMS appropriately. */
|
||||
/* Read user options from the environment, and fill in UPARAMS appropiately. */
|
||||
static void
|
||||
fill_in_uparams (const struct argp_state *state)
|
||||
{
|
||||
@@ -275,11 +275,11 @@ fill_in_uparams (const struct argp_state *state)
|
||||
-xARG, -yARG, --long1=ARG, --long2=ARG Documentation...
|
||||
|
||||
Where ARG will be omitted if there's no argument, for this option, or
|
||||
will be surrounded by "[" and "]" appropriately if the argument is
|
||||
optional. The documentation string is word-wrapped appropriately, and if
|
||||
will be surrounded by "[" and "]" appropiately if the argument is
|
||||
optional. The documentation string is word-wrapped appropiately, and if
|
||||
the list of options is long enough, it will be started on a separate line.
|
||||
If there are no short options for a given option, the first long option is
|
||||
indented slightly in a way that's supposed to make most long options appear
|
||||
indented slighly in a way that's supposed to make most long options appear
|
||||
to be in a separate column.
|
||||
|
||||
For example, the following output (from ps):
|
||||
@@ -357,7 +357,7 @@ struct hol_entry
|
||||
/* A pointers into the HOL's short_options field, to the first short option
|
||||
letter for this entry. The order of the characters following this point
|
||||
corresponds to the order of options pointed to by OPT, and there are at
|
||||
most NUM. A short option recorded in an option following OPT is only
|
||||
most NUM. A short option recorded in a option following OPT is only
|
||||
valid if it occurs in the right place in SHORT_OPTIONS (otherwise it's
|
||||
probably been shadowed by some other entry). */
|
||||
char *short_options;
|
||||
@@ -736,12 +736,12 @@ hol_entry_cmp (const struct hol_entry *entry1,
|
||||
if (entry1->cluster != entry2->cluster)
|
||||
{
|
||||
/* The entries are not within the same cluster, so we can't compare them
|
||||
directly, we have to use the appropriate clustering level too. */
|
||||
directly, we have to use the appropiate clustering level too. */
|
||||
if (! entry1->cluster)
|
||||
/* ENTRY1 is at the `base level', not in a cluster, so we have to
|
||||
compare it's group number with that of the base cluster in which
|
||||
ENTRY2 resides. Note that if they're in the same group, the
|
||||
clustered option always comes last. */
|
||||
clustered option always comes laster. */
|
||||
return group_cmp (group1, hol_cluster_base (entry2->cluster)->group, -1);
|
||||
else if (! entry2->cluster)
|
||||
/* Likewise, but ENTRY2's not in a cluster. */
|
||||
@@ -998,7 +998,7 @@ filter_doc (const char *doc, int key, const struct argp *argp,
|
||||
return doc;
|
||||
}
|
||||
|
||||
/* Prints STR as a header line, with the margin lines set appropriately, and
|
||||
/* Prints STR as a header line, with the margin lines set appropiately, and
|
||||
notes the fact that groups should be separated with a blank line. ARGP is
|
||||
the argp that should dictate any user doc filtering to take place. Note
|
||||
that the previous wrap margin isn't restored, but the left margin is reset
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Name frobnication for compiling argp outside of glibc
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/* Hierarchial argument parsing, layered over getopt
|
||||
Copyright (C) 1995-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
@@ -410,7 +410,7 @@ convert_options (const struct argp *argp,
|
||||
return group;
|
||||
}
|
||||
|
||||
/* Find the merged set of getopt options, with keys appropriately prefixed. */
|
||||
/* Find the merged set of getopt options, with keys appropiately prefixed. */
|
||||
static void
|
||||
parser_convert (struct parser *parser, const struct argp *argp, int flags)
|
||||
{
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/* Default definition for ARGP_PROGRAM_VERSION.
|
||||
Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/* Default definition for ARGP_PROGRAM_VERSION_HOOK.
|
||||
Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/* Test program for argp argument parser
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
/* Real definitions for extern inline functions in argp.h
|
||||
Copyright (C) 1997-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
|
||||
+41
-5
@@ -1,5 +1,5 @@
|
||||
/* Hierarchial argument parsing, layered over getopt.
|
||||
Copyright (C) 1995-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Written by Miles Bader <miles@gnu.ai.mit.edu>.
|
||||
|
||||
@@ -28,12 +28,46 @@
|
||||
#define __need_error_t
|
||||
#include <errno.h>
|
||||
|
||||
#ifndef __THROW
|
||||
# define __THROW
|
||||
#endif
|
||||
#ifndef __NTH
|
||||
# define __NTH(fct) fct __THROW
|
||||
#endif
|
||||
|
||||
#ifndef __attribute__
|
||||
/* This feature is available in gcc versions 2.5 and later. */
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
|
||||
# define __attribute__(Spec) /* empty */
|
||||
# endif
|
||||
/* The __-protected variants of `format' and `printf' attributes
|
||||
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
|
||||
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || __STRICT_ANSI__
|
||||
# define __format__ format
|
||||
# define __printf__ printf
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* GCC 2.95 and later have "__restrict"; C99 compilers have
|
||||
"restrict", and "configure" may have defined "restrict". */
|
||||
#ifndef __restrict
|
||||
# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
|
||||
# if defined restrict || 199901L <= __STDC_VERSION__
|
||||
# define __restrict restrict
|
||||
# else
|
||||
# define __restrict
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef __error_t_defined
|
||||
typedef int error_t;
|
||||
# define __error_t_defined
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* A description of a particular option. A pointer to an array of
|
||||
these is passed in the OPTIONS field of an argp structure. Each option
|
||||
@@ -511,7 +545,7 @@ extern void *__argp_input (const struct argp *__restrict __argp,
|
||||
|
||||
#ifdef __USE_EXTERN_INLINES
|
||||
|
||||
# if !(defined _LIBC && _LIBC)
|
||||
# if !_LIBC
|
||||
# define __argp_usage argp_usage
|
||||
# define __argp_state_help argp_state_help
|
||||
# define __option_is_short _option_is_short
|
||||
@@ -546,7 +580,7 @@ __NTH (__option_is_end (const struct argp_option *__opt))
|
||||
return !__opt->key && !__opt->name && !__opt->doc && !__opt->group;
|
||||
}
|
||||
|
||||
# if !(defined _LIBC && _LIBC)
|
||||
# if !_LIBC
|
||||
# undef __argp_usage
|
||||
# undef __argp_state_help
|
||||
# undef __option_is_short
|
||||
@@ -554,6 +588,8 @@ __NTH (__option_is_end (const struct argp_option *__opt))
|
||||
# endif
|
||||
#endif /* Use extern inlines. */
|
||||
|
||||
__END_DECLS
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* argp.h */
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002-2017 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2007-2017 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2007-2013 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Jakub Jelinek <jakub@redhat.com>, 2007.
|
||||
|
||||
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1991-2013 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
|
||||
@@ -19,12 +19,12 @@
|
||||
# Sub-makefile for assert portion of the library.
|
||||
#
|
||||
subdir := assert
|
||||
|
||||
include ../Makeconfig
|
||||
|
||||
headers := assert.h
|
||||
|
||||
routines := assert assert-perr __assert
|
||||
tests := test-assert test-assert-perr
|
||||
|
||||
include ../Rules
|
||||
|
||||
test-assert-ENV = LANGUAGE=C
|
||||
test-assert-perr-ENV = LANGUAGE=C
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2000-2013 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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1994-2017 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1994-2013 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
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991-2013 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
|
||||
@@ -67,7 +67,7 @@ __assert_fail_base (const char *fmt, const char *assertion, const char *file,
|
||||
total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1);
|
||||
struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE,
|
||||
MAP_ANON | MAP_PRIVATE, -1, 0);
|
||||
if (__glibc_likely (buf != MAP_FAILED))
|
||||
if (__builtin_expect (buf != MAP_FAILED, 1))
|
||||
{
|
||||
buf->size = total;
|
||||
strcpy (buf->msg, str);
|
||||
|
||||
+6
-18
@@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991-2013 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
|
||||
@@ -82,23 +82,10 @@ extern void __assert (const char *__assertion, const char *__file, int __line)
|
||||
|
||||
__END_DECLS
|
||||
|
||||
/* When possible, define assert so that it does not add extra
|
||||
parentheses around EXPR. Otherwise, those added parentheses would
|
||||
suppress warnings we'd expect to be detected by gcc's -Wparentheses. */
|
||||
# if !defined __GNUC__ || defined __STRICT_ANSI__
|
||||
# define assert(expr) \
|
||||
((expr) \
|
||||
? __ASSERT_VOID_CAST (0) \
|
||||
: __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
|
||||
# else
|
||||
# define assert(expr) \
|
||||
({ \
|
||||
if (expr) \
|
||||
; /* empty */ \
|
||||
else \
|
||||
__assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION); \
|
||||
})
|
||||
# endif
|
||||
# define assert(expr) \
|
||||
((expr) \
|
||||
? __ASSERT_VOID_CAST (0) \
|
||||
: __assert_fail (__STRING(expr), __FILE__, __LINE__, __ASSERT_FUNCTION))
|
||||
|
||||
# ifdef __USE_GNU
|
||||
# define assert_perror(errnum) \
|
||||
@@ -126,6 +113,7 @@ __END_DECLS
|
||||
|
||||
|
||||
#if defined __USE_ISOC11 && !defined __cplusplus
|
||||
/* Static assertion. Requires support in the compiler. */
|
||||
# undef static_assert
|
||||
# define static_assert _Static_assert
|
||||
#endif
|
||||
|
||||
+58
-149
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2013-2017 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2013 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
|
||||
@@ -15,202 +15,111 @@
|
||||
# License along with the GNU C Library; if not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# Makefile for benchmark tests. The only useful target here is `bench`.
|
||||
# Add benchmark functions in alphabetical order.
|
||||
|
||||
# Adding a new function `foo`:
|
||||
# ---------------------------
|
||||
|
||||
# - Append the function name to the bench variable
|
||||
|
||||
# - Define foo-ARGLIST as a colon separated list of types of the input
|
||||
# arguments. Use `void` if function does not take any inputs. Put in quotes
|
||||
# if the input argument is a pointer, e.g.:
|
||||
|
||||
# malloc-ARGLIST: "void *"
|
||||
|
||||
# - Define foo-RET as the type the function returns. Skip if the function
|
||||
# returns void. One could even skip foo-ARGLIST if the function does not
|
||||
# take any inputs AND the function returns void.
|
||||
|
||||
|
||||
# - Make a file called `foo-inputs` with one input value per line, an input
|
||||
# being a comma separated list of arguments to be passed into the function.
|
||||
# See pow-inputs for an example.
|
||||
|
||||
subdir := benchtests
|
||||
bench := exp pow rint sin cos tan atan modf
|
||||
|
||||
include ../Makeconfig
|
||||
bench-math := acos acosh asin asinh atan atanh cos cosh exp exp2 log log2 \
|
||||
modf pow rint sin sincos sinh sqrt tan tanh fmin fmax fminf \
|
||||
fmaxf
|
||||
exp-ARGLIST = double
|
||||
exp-RET = double
|
||||
LDFLAGS-bench-exp = -lm
|
||||
|
||||
bench-pthread := pthread_once
|
||||
pow-ARGLIST = double:double
|
||||
pow-RET = double
|
||||
LDFLAGS-bench-pow = -lm
|
||||
|
||||
bench-string := ffs ffsll
|
||||
rint-ARGLIST = double
|
||||
rint-RET = double
|
||||
LDFLAGS-bench-rint = -lm
|
||||
|
||||
bench := $(bench-math) $(bench-pthread) $(bench-string)
|
||||
sin-ARGLIST = double
|
||||
sin-RET = double
|
||||
LDFLAGS-bench-sin = -lm
|
||||
|
||||
# String function benchmarks.
|
||||
string-benchset := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \
|
||||
mempcpy memset rawmemchr stpcpy stpncpy strcasecmp strcasestr \
|
||||
strcat strchr strchrnul strcmp strcpy strcspn strlen \
|
||||
strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \
|
||||
strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok \
|
||||
strcoll memcpy-large memmove-large memset-large
|
||||
cos-ARGLIST = double
|
||||
cos-RET = double
|
||||
LDFLAGS-bench-cos = -lm
|
||||
|
||||
# Build and run locale-dependent benchmarks only if we're building natively.
|
||||
ifeq (no,$(cross-compiling))
|
||||
wcsmbs-benchset := wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat \
|
||||
wcscmp wcsncmp wcschr wcschrnul wcsrchr wcsspn wcspbrk wcscspn \
|
||||
wmemchr wmemset wmemcmp
|
||||
else
|
||||
wcsmbs-benchset :=
|
||||
endif
|
||||
tan-ARGLIST = double
|
||||
tan-RET = double
|
||||
LDFLAGS-bench-tan = -lm
|
||||
|
||||
string-benchset-all := $(string-benchset) ${wcsmbs-benchset}
|
||||
|
||||
ifeq (no,$(cross-compiling))
|
||||
# We have to generate locales
|
||||
LOCALES := en_US.UTF-8 tr_TR.UTF-8 cs_CZ.UTF-8 fa_IR.UTF-8 fr_FR.UTF-8 \
|
||||
ja_JP.UTF-8 si_LK.UTF-8 en_GB.UTF-8 vi_VN.UTF-8 ar_SA.UTF-8 \
|
||||
da_DK.UTF-8 pl_PL.UTF-8 pt_PT.UTF-8 el_GR.UTF-8 ru_RU.UTF-8 \
|
||||
he_IL.UTF-8 is_IS.UTF-8 es_ES.UTF-8 hi_IN.UTF-8 sv_SE.UTF-8 \
|
||||
hu_HU.UTF-8 it_IT.UTF-8 sr_RS.UTF-8 zh_CN.UTF-8
|
||||
include ../gen-locales.mk
|
||||
endif
|
||||
|
||||
stdlib-benchset := strtod
|
||||
|
||||
stdio-common-benchset := sprintf
|
||||
|
||||
math-benchset := math-inlines
|
||||
|
||||
benchset := $(string-benchset-all) $(stdlib-benchset) $(stdio-common-benchset) \
|
||||
$(math-benchset)
|
||||
|
||||
CFLAGS-bench-ffs.c += -fno-builtin
|
||||
CFLAGS-bench-ffsll.c += -fno-builtin
|
||||
CFLAGS-bench-sqrt.c += -fno-builtin
|
||||
CFLAGS-bench-fmin.c += -fno-builtin
|
||||
CFLAGS-bench-fminf.c += -fno-builtin
|
||||
CFLAGS-bench-fmax.c += -fno-builtin
|
||||
CFLAGS-bench-fmaxf.c += -fno-builtin
|
||||
|
||||
bench-malloc := malloc-thread
|
||||
|
||||
$(addprefix $(objpfx)bench-,$(bench-math)): $(libm)
|
||||
$(addprefix $(objpfx)bench-,$(math-benchset)): $(libm)
|
||||
$(addprefix $(objpfx)bench-,$(bench-pthread)): $(shared-thread-library)
|
||||
$(objpfx)bench-malloc-thread: $(shared-thread-library)
|
||||
atan-ARGLIST = double
|
||||
atan-RET = double
|
||||
LDFLAGS-bench-atan = -lm
|
||||
|
||||
|
||||
|
||||
# Rules to build and execute the benchmarks. Do not put any benchmark
|
||||
# parameters beyond this point.
|
||||
|
||||
# We don't want the benchmark programs to run in parallel since that could
|
||||
# affect their performance.
|
||||
.NOTPARALLEL:
|
||||
|
||||
include ../Makeconfig
|
||||
include ../Rules
|
||||
|
||||
binaries-bench := $(addprefix $(objpfx)bench-,$(bench))
|
||||
binaries-benchset := $(addprefix $(objpfx)bench-,$(benchset))
|
||||
binaries-bench-malloc := $(addprefix $(objpfx)bench-,$(bench-malloc))
|
||||
|
||||
# The default duration: 10 seconds.
|
||||
ifndef BENCH_DURATION
|
||||
BENCH_DURATION := 10
|
||||
endif
|
||||
|
||||
CPPFLAGS-nonlib += -DDURATION=$(BENCH_DURATION)
|
||||
|
||||
# Use clock_gettime to measure performance of functions. The default is to use
|
||||
# HP_TIMING if it is available.
|
||||
ifdef USE_CLOCK_GETTIME
|
||||
CPPFLAGS-nonlib += -DUSE_CLOCK_GETTIME
|
||||
endif
|
||||
|
||||
DETAILED_OPT :=
|
||||
|
||||
ifdef DETAILED
|
||||
DETAILED_OPT := -d
|
||||
endif
|
||||
CPPFLAGS-nonlib = -DDURATION=$(BENCH_DURATION)
|
||||
|
||||
# This makes sure CPPFLAGS-nonlib and CFLAGS-nonlib are passed
|
||||
# for all these modules.
|
||||
cpp-srcs-left := $(binaries-benchset:=.c) $(binaries-bench:=.c) \
|
||||
$(binaries-bench-malloc:=.c)
|
||||
cpp-srcs-left := $(binaries-bench:=.c)
|
||||
lib := nonlib
|
||||
include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
|
||||
|
||||
bench-extra-objs = json-lib.o
|
||||
|
||||
extra-objs += $(bench-extra-objs)
|
||||
|
||||
bench-deps := bench-skeleton.c bench-timing.h Makefile
|
||||
bench-deps := bench-skeleton.c Makefile
|
||||
|
||||
run-bench = $(test-wrapper-env) \
|
||||
$(run-program-env) \
|
||||
$($*-ENV) $(test-via-rtld-prefix) $${run}
|
||||
|
||||
timing-type := $(objpfx)bench-timing-type
|
||||
GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \
|
||||
$($*-ENV) $(rtld-prefix) $${run}
|
||||
|
||||
bench-clean:
|
||||
rm -f $(binaries-bench) $(addsuffix .o,$(binaries-bench))
|
||||
rm -f $(binaries-benchset) $(addsuffix .o,$(binaries-benchset))
|
||||
rm -f $(binaries-bench-malloc) $(addsuffix .o,$(binaries-bench-malloc))
|
||||
rm -f $(timing-type) $(addsuffix .o,$(timing-type))
|
||||
rm -f $(addprefix $(objpfx),$(bench-extra-objs))
|
||||
|
||||
# Define the bench target only if the target has a usable python installation.
|
||||
ifdef PYTHON
|
||||
bench: bench-build bench-set bench-func bench-malloc
|
||||
else
|
||||
bench:
|
||||
@echo "The bench target needs python to run."
|
||||
@exit 1
|
||||
endif
|
||||
|
||||
# Target to only build the benchmark without running it. We generate locales
|
||||
# only if we're building natively.
|
||||
ifeq (no,$(cross-compiling))
|
||||
bench-build: $(gen-locales) $(timing-type) $(binaries-bench) \
|
||||
$(binaries-benchset) $(binaries-bench-malloc)
|
||||
else
|
||||
bench-build: $(timing-type) $(binaries-bench) $(binaries-benchset) \
|
||||
$(binaries-bench-malloc)
|
||||
endif
|
||||
|
||||
bench-set: $(binaries-benchset)
|
||||
for run in $^; do \
|
||||
echo "Running $${run}"; \
|
||||
$(run-bench) > $${run}.out; \
|
||||
done
|
||||
|
||||
bench-malloc: $(binaries-bench-malloc)
|
||||
run=$(objpfx)bench-malloc-thread; \
|
||||
for thr in 1 8 16 32; do \
|
||||
echo "Running $${run} $${thr}"; \
|
||||
$(run-bench) $${thr} > $${run}-$${thr}.out; \
|
||||
done
|
||||
|
||||
# Build and execute the benchmark functions. This target generates JSON
|
||||
# formatted bench.out. Each of the programs produce independent JSON output,
|
||||
# so one could even execute them individually and process it using any JSON
|
||||
# capable language or tool.
|
||||
bench-func: $(binaries-bench)
|
||||
{ timing_type=$$($(timing-type)); \
|
||||
echo "{\"timing_type\": \"$${timing_type}\","; \
|
||||
echo " \"functions\": {"; \
|
||||
for run in $^; do \
|
||||
if ! [ "x$${run}" = "x$<" ]; then \
|
||||
echo ","; \
|
||||
fi; \
|
||||
bench: $(binaries-bench)
|
||||
{ for run in $^; do \
|
||||
echo "Running $${run}" >&2; \
|
||||
$(run-bench) $(DETAILED_OPT); \
|
||||
done; \
|
||||
echo; \
|
||||
echo " }"; \
|
||||
echo "}"; } > $(objpfx)bench.out-tmp; \
|
||||
$(run-bench); \
|
||||
done; } > $(objpfx)bench.out-tmp; \
|
||||
if [ -f $(objpfx)bench.out ]; then \
|
||||
mv -f $(objpfx)bench.out $(objpfx)bench.out.old; \
|
||||
fi; \
|
||||
mv -f $(objpfx)bench.out-tmp $(objpfx)bench.out
|
||||
$(PYTHON) scripts/validate_benchout.py $(objpfx)bench.out \
|
||||
scripts/benchout.schema.json
|
||||
|
||||
$(timing-type) $(binaries-bench) $(binaries-benchset) \
|
||||
$(binaries-bench-malloc): %: %.o $(objpfx)json-lib.o \
|
||||
$(link-extra-libs-tests) \
|
||||
$(binaries-bench): %: %.o \
|
||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
||||
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||
$(+link-tests)
|
||||
$(+link)
|
||||
|
||||
$(objpfx)bench-%.c: %-inputs $(bench-deps)
|
||||
{ if [ -n "$($*-INCLUDE)" ]; then \
|
||||
cat $($*-INCLUDE); \
|
||||
fi; \
|
||||
$(PYTHON) scripts/bench.py $(patsubst %-inputs,%,$<); } > $@-tmp
|
||||
$(..)scripts/bench.pl $(patsubst %-inputs,%,$<) \
|
||||
$($*-ARGLIST) $($*-RET); } > $@-tmp
|
||||
mv -f $@-tmp $@
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
Using the glibc microbenchmark suite
|
||||
====================================
|
||||
|
||||
The glibc microbenchmark suite automatically generates code for specified
|
||||
functions, builds and calls them repeatedly for given inputs to give some
|
||||
basic performance properties of the function.
|
||||
|
||||
Running the benchmark:
|
||||
=====================
|
||||
|
||||
The benchmark needs python 2.7 or later in addition to the
|
||||
dependencies required to build the GNU C Library. One may run the
|
||||
benchmark by invoking make as follows:
|
||||
|
||||
$ make bench
|
||||
|
||||
This runs each function for 10 seconds and appends its output to
|
||||
benchtests/bench.out. To ensure that the tests are rebuilt, one could run:
|
||||
|
||||
$ make bench-clean
|
||||
|
||||
The duration of each test can be configured setting the BENCH_DURATION variable
|
||||
in the call to make. One should run `make bench-clean' before changing
|
||||
BENCH_DURATION.
|
||||
|
||||
$ make BENCH_DURATION=1 bench
|
||||
|
||||
The benchmark suite does function call measurements using architecture-specific
|
||||
high precision timing instructions whenever available. When such support is
|
||||
not available, it uses clock_gettime (CLOCK_PROCESS_CPUTIME_ID). One can force
|
||||
the benchmark to use clock_gettime by invoking make as follows:
|
||||
|
||||
$ make USE_CLOCK_GETTIME=1 bench
|
||||
|
||||
Again, one must run `make bench-clean' before changing the measurement method.
|
||||
|
||||
Running benchmarks on another target:
|
||||
====================================
|
||||
|
||||
If the target where you want to run benchmarks is not capable of building the
|
||||
code or you're cross-building, you could build and execute the benchmark in
|
||||
separate steps. On the build system run:
|
||||
|
||||
$ make bench-build
|
||||
|
||||
and then copy the source and build directories to the target and run the
|
||||
benchmarks from the build directory as usual:
|
||||
|
||||
$ make bench
|
||||
|
||||
make sure the copy preserves timestamps by using either rsync or scp -p
|
||||
otherwise the above command may try to build the benchmark again. Benchmarks
|
||||
that require generated code to be executed during the build are skipped when
|
||||
cross-building.
|
||||
|
||||
Adding a function to benchtests:
|
||||
===============================
|
||||
|
||||
If the name of the function is `foo', then the following procedure should allow
|
||||
one to add `foo' to the bench tests:
|
||||
|
||||
- Append the function name to the bench variable in the Makefile.
|
||||
|
||||
- Make a file called `foo-inputs` to provide the definition and input for the
|
||||
function. The file should have some directives telling the parser script
|
||||
about the function and then one input per line. Directives are lines that
|
||||
have a special meaning for the parser and they begin with two hashes '##'.
|
||||
The following directives are recognized:
|
||||
|
||||
- args: This should be assigned a colon separated list of types of the input
|
||||
arguments. This directive may be skipped if the function does not take any
|
||||
inputs. One may identify output arguments by nesting them in <>. The
|
||||
generator will create variables to get outputs from the calling function.
|
||||
- ret: This should be assigned the type that the function returns. This
|
||||
directive may be skipped if the function does not return a value.
|
||||
- includes: This should be assigned a comma-separated list of headers that
|
||||
need to be included to provide declarations for the function and types it
|
||||
may need (specifically, this includes using "#include <header>").
|
||||
- include-sources: This should be assigned a comma-separated list of source
|
||||
files that need to be included to provide definitions of global variables
|
||||
and functions (specifically, this includes using "#include "source").
|
||||
See pthread_once-inputs and pthreads_once-source.c for an example of how
|
||||
to use this to benchmark a function that needs state across several calls.
|
||||
- init: Name of an initializer function to call to initialize the benchtest.
|
||||
- name: See following section for instructions on how to use this directive.
|
||||
|
||||
Lines beginning with a single hash '#' are treated as comments. See
|
||||
pow-inputs for an example of an input file.
|
||||
|
||||
Multiple execution units per function:
|
||||
=====================================
|
||||
|
||||
Some functions have distinct performance characteristics for different input
|
||||
domains and it may be necessary to measure those separately. For example, some
|
||||
math functions perform computations at different levels of precision (64-bit vs
|
||||
240-bit vs 768-bit) and mixing them does not give a very useful picture of the
|
||||
performance of these functions. One could separate inputs for these domains in
|
||||
the same file by using the `name' directive that looks something like this:
|
||||
|
||||
##name: 240bit
|
||||
|
||||
See the pow-inputs file for an example of what such a partitioned input file
|
||||
would look like.
|
||||
|
||||
Benchmark Sets:
|
||||
==============
|
||||
|
||||
In addition to standard benchmarking of functions, one may also generate
|
||||
custom outputs for a set of functions. This is currently used by string
|
||||
function benchmarks where the aim is to compare performance between
|
||||
implementations at various alignments and for various sizes.
|
||||
|
||||
To add a benchset for `foo':
|
||||
|
||||
- Add `foo' to the benchset variable.
|
||||
- Write your bench-foo.c that prints out the measurements to stdout.
|
||||
- On execution, a bench-foo.out is created in $(objpfx) with the contents of
|
||||
stdout.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,303 +0,0 @@
|
||||
## args: double
|
||||
## ret: double
|
||||
## includes: math.h
|
||||
0x1.6d46e7252da2fp388
|
||||
0x1.c18cc3982093ep775
|
||||
0x1.2e9a406645b9bp609
|
||||
0x1.006d075b935c9p0
|
||||
0x1.4d49f6cda4ceap0
|
||||
0x1.e0ba4580ef871p21
|
||||
0x1.ffab14f637eaap733
|
||||
0x1.f0a22293c4ecbp852
|
||||
0x1.24baf479f025cp0
|
||||
0x1.91bc310a7648ep243
|
||||
0x1.93d4c19692fbfp80
|
||||
0x1.9eb0b40303dcap843
|
||||
0x1.945a20aa092e2p4
|
||||
0x1.ac2677a0ed292p0
|
||||
0x1.64c6a3d5a0867p304
|
||||
0x1.e0d6324c882e9p0
|
||||
0x1.7e0ba7c987b9ep7
|
||||
0x1.3975f02686229p10
|
||||
0x1.cc4916f089070p25
|
||||
0x1.729be339c67b2p0
|
||||
0x1.c64b8297569c4p207
|
||||
0x1.2c1544d816155p340
|
||||
0x1.ad443265c6b4ap845
|
||||
0x1.f53624533eb2cp0
|
||||
0x1.92e4800542f83p108
|
||||
0x1.f873e456e1975p0
|
||||
0x1.84a7b4b80f227p4
|
||||
0x1.46dd43031fe1fp0
|
||||
0x1.e28b805a73a97p0
|
||||
0x1.9e11325b1c3c4p22
|
||||
0x1.5c76b43d66941p15
|
||||
0x1.98109155dd7bfp21
|
||||
0x1.3d88b121650aap8
|
||||
0x1.adff01fab2117p0
|
||||
0x1.5e76d52c7f729p15
|
||||
0x1.0a46e3262c2b8p20
|
||||
0x1.52f9a11ad6e66p0
|
||||
0x1.96f8f26a41c3bp122
|
||||
0x1.161fd6fd320d5p745
|
||||
0x1.c5fb927d2cb09p8
|
||||
0x1.265a61a0bb1d4p0
|
||||
0x1.09a5d681397d0p0
|
||||
0x1.ebef22f6aa8aap0
|
||||
0x1.3ac9b75c613bdp160
|
||||
0x1.b77615a1e2a3ap0
|
||||
0x1.68f9d755d5eadp0
|
||||
0x1.ed2c9188571d9p0
|
||||
0x1.e8f886346b284p15
|
||||
0x1.f65bd2ce4416ap0
|
||||
0x1.4574341b05968p656
|
||||
0x1.5c2cb3414299cp154
|
||||
0x1.c4ea7682d0661p832
|
||||
0x1.b221562a61af2p0
|
||||
0x1.d7f9c739e0b26p561
|
||||
0x1.eb28429726661p423
|
||||
0x1.e7a5f5b2cc9e8p902
|
||||
0x1.9fd093db922f4p0
|
||||
0x1.c1cb5159d4e46p0
|
||||
0x1.a0bed3234b8cdp0
|
||||
0x1.bc8ff7e59e82ep18
|
||||
0x1.de8f25287ff7cp0
|
||||
0x1.a1ab66b8f9098p0
|
||||
0x1.c36c11c290063p20
|
||||
0x1.72e9e736d6e41p0
|
||||
0x1.38b134391f71ep21
|
||||
0x1.a500e5cf1a2cfp246
|
||||
0x1.253da08c9c318p144
|
||||
0x1.f5efb379e3b3fp952
|
||||
0x1.07c767a225a7bp21
|
||||
0x1.f82770adf361dp19
|
||||
0x1.39e42524c048ep894
|
||||
0x1.a4ae84e202a44p0
|
||||
0x1.e17e23b598415p925
|
||||
0x1.08fa931bd21f5p10
|
||||
0x1.b52541759872ep0
|
||||
0x1.91bf33cdb6804p710
|
||||
0x1.5c18505e522d6p0
|
||||
0x1.9fe7c5ca15212p9
|
||||
0x1.62c360b992b13p10
|
||||
0x1.57a000ceee049p800
|
||||
0x1.da296671c3e5cp0
|
||||
0x1.ff43325a40608p0
|
||||
0x1.295d65809666fp111
|
||||
0x1.2781e3f5d0e0fp249
|
||||
0x1.875d5703776fcp0
|
||||
0x1.0f8045a313158p26
|
||||
0x1.bd30a3b638a67p11
|
||||
0x1.0a3184db8d287p0
|
||||
0x1.c6d33006f978ep0
|
||||
0x1.8c6476a610245p0
|
||||
0x1.aa7fc36f3cea9p461
|
||||
0x1.afb5c0c4f933ap6
|
||||
0x1.20b75365bd50fp16
|
||||
0x1.69c8245c09535p19
|
||||
0x1.30dcf0414c561p292
|
||||
0x1.c2323455e5501p0
|
||||
0x1.c2e3d08f78fb2p0
|
||||
0x1.f479457ec8f4fp25
|
||||
0x1.4c1e32e79005dp7
|
||||
0x1.86b9a4aed3300p26
|
||||
0x1.ee654167b045bp0
|
||||
0x1.a339c796ccd9fp0
|
||||
0x1.75f6f32348765p4
|
||||
0x1.6120d7e4e5d9ep498
|
||||
0x1.01c843ae8b440p20
|
||||
0x1.034a67c534113p0
|
||||
0x1.94d6d681be7e6p0
|
||||
0x1.2576745f4cca6p22
|
||||
0x1.813994f759a60p171
|
||||
0x1.0308a4c5b820dp0
|
||||
0x1.d073e0e895907p580
|
||||
0x1.6094d2dc7af3bp0
|
||||
0x1.3348d7ba303bep0
|
||||
0x1.a0830483382afp2
|
||||
0x1.e3558408e36dep0
|
||||
0x1.d55db05590c97p0
|
||||
0x1.95680648261ecp0
|
||||
0x1.d54c401b55bd9p18
|
||||
0x1.584be75027a11p872
|
||||
0x1.594273cdd339dp4
|
||||
0x1.85d9676b1ae49p752
|
||||
0x1.38f122e7f7be0p220
|
||||
0x1.75c3a575deb13p251
|
||||
0x1.2c85f1a74ac0fp0
|
||||
0x1.0dc9e789128acp947
|
||||
0x1.51dbf3461a224p0
|
||||
0x1.61c9644526617p809
|
||||
0x1.89494217ed887p204
|
||||
0x1.2a57014d8c24bp317
|
||||
0x1.c4d527df0d553p762
|
||||
0x1.ad2717638f0adp986
|
||||
0x1.63352752d72c5p847
|
||||
0x1.d124a052e9410p0
|
||||
0x1.373d228ee6061p505
|
||||
0x1.0bbe63d8b48d2p0
|
||||
0x1.0b5115dd5774dp4
|
||||
0x1.f50d62ef77ac6p3
|
||||
0x1.4cb6110ea61e4p1
|
||||
0x1.b056b690aef8ap0
|
||||
0x1.a32cd47340669p2
|
||||
0x1.f917868895288p872
|
||||
0x1.332a86c10c0e1p14
|
||||
0x1.07f7c34023735p881
|
||||
0x1.7935f21efcfadp24
|
||||
0x1.644ad1a392b18p0
|
||||
0x1.f930b772bba49p0
|
||||
0x1.019a86d2e2300p18
|
||||
0x1.a25af297e68fep194
|
||||
0x1.80ab316f210c8p0
|
||||
0x1.f73a3049f9d76p16
|
||||
0x1.8b1a0407ae636p7
|
||||
0x1.9bdf23a917930p2
|
||||
0x1.d139574e3913ep168
|
||||
0x1.caf9468b5f459p0
|
||||
0x1.c3b5f0096df0dp24
|
||||
0x1.d3451096baf1ep0
|
||||
0x1.7bb5671e2bfcap719
|
||||
0x1.64b7e3621a6ddp0
|
||||
0x1.08b544290bb37p0
|
||||
0x1.2b65c78ec87a4p0
|
||||
0x1.993a6363227e2p12
|
||||
0x1.a09d26d2a558fp216
|
||||
0x1.daff104bb08a5p25
|
||||
0x1.7d77308fd73cap655
|
||||
0x1.8946b691ecf5ap10
|
||||
0x1.8ec222d562aa9p25
|
||||
0x1.b7da17cd3268ap0
|
||||
0x1.250500a0b4266p831
|
||||
0x1.8e6f071075758p0
|
||||
0x1.984146d8a6c69p20
|
||||
0x1.558480e0da8bdp15
|
||||
0x1.b6bea5e996fdbp11
|
||||
0x1.f289853c632ddp11
|
||||
0x1.8fbe179f273aap0
|
||||
0x1.6b4382f669e8dp0
|
||||
0x1.a966a17972ca9p601
|
||||
0x1.dbd635362ec6bp6
|
||||
0x1.899e75c43e065p675
|
||||
0x1.f11c07e219bafp7
|
||||
0x1.3ab637a02ed36p0
|
||||
0x1.36b913a68fe70p901
|
||||
0x1.049fe294eb450p0
|
||||
0x1.0547247e7518ap677
|
||||
0x1.9e07054aa7309p743
|
||||
0x1.aff281fbb3a6ap874
|
||||
0x1.6c1b6312efacfp783
|
||||
0x1.a38c639c0df57p243
|
||||
0x1.f07b95fd415ccp9
|
||||
0x1.ca1c23fd6ce37p7
|
||||
0x1.9ed9906a6f029p18
|
||||
0x1.f1a483c62adecp74
|
||||
0x1.617df662bbf02p0
|
||||
0x1.22e1608c31f55p13
|
||||
0x1.d840853d46285p15
|
||||
0x1.023fd69d438dep12
|
||||
0x1.8184a3fcc1ac3p942
|
||||
0x1.25c5071d2dc6ep8
|
||||
0x1.0eec25d2a59ccp27
|
||||
0x1.d55b11ee07cc4p0
|
||||
0x1.175347bf29152p23
|
||||
0x1.546624c66c38bp0
|
||||
0x1.212fc4abebddep723
|
||||
0x1.75f1269063e4dp5
|
||||
0x1.3b51233fed0a5p381
|
||||
0x1.486e24ad660e1p686
|
||||
0x1.7788055510c4dp23
|
||||
0x1.55bf96fcf9458p905
|
||||
0x1.0a5aa2d61be59p0
|
||||
0x1.5da757c1a95c6p895
|
||||
0x1.d596e1ea9dcefp0
|
||||
0x1.e91b460893372p0
|
||||
0x1.d934d6ea17649p728
|
||||
0x1.cd74423b4c4aep15
|
||||
0x1.dc3151a1b4289p0
|
||||
0x1.5799c072442dep0
|
||||
0x1.97ae606371057p22
|
||||
0x1.7369c3195238ap0
|
||||
0x1.43a1d0e6eae29p109
|
||||
0x1.7fd922252a24ep425
|
||||
0x1.bf01d7e826d2cp0
|
||||
0x1.a397b7c711fcfp14
|
||||
0x1.7b40809d9f6b5p0
|
||||
0x1.58098134bf6afp0
|
||||
0x1.567e92bdee806p3
|
||||
0x1.641866cfab5e7p382
|
||||
0x1.11d483657f659p0
|
||||
0x1.f0b1d4cd82236p18
|
||||
0x1.a18365ad84301p6
|
||||
0x1.4f749259eb02dp140
|
||||
0x1.4b1d721633901p747
|
||||
0x1.fa9e9543d1dfbp5
|
||||
0x1.ae33e3ae5e0ecp0
|
||||
0x1.29c444207fa90p0
|
||||
0x1.b55e708600082p19
|
||||
0x1.bb1464c1f136fp0
|
||||
0x1.d36f165b63b8fp880
|
||||
0x1.c1a0d0ee96f75p27
|
||||
0x1.9b1376e7377a3p0
|
||||
0x1.6e88361aa13bbp619
|
||||
0x1.d109f410d341bp822
|
||||
0x1.654255768c727p0
|
||||
0x1.c938959e450d6p0
|
||||
0x1.26fd92ae3e170p356
|
||||
0x1.157c240adb715p982
|
||||
0x1.749735f182597p15
|
||||
0x1.2291e3ab7501cp0
|
||||
0x1.96d320a0153bap383
|
||||
0x1.b569919b79b6fp214
|
||||
0x1.0872c2cff972dp276
|
||||
0x1.bd98342544357p0
|
||||
0x1.853327d0e2f4dp11
|
||||
0x1.23438314fb10bp0
|
||||
0x1.342f35eabf622p707
|
||||
0x1.d19f05a5a1fe4p13
|
||||
0x1.67c566bcf73aap0
|
||||
0x1.2ce065238fb73p27
|
||||
0x1.5219d2e05f184p0
|
||||
0x1.4a163440f7c98p4
|
||||
0x1.d780c4711b212p0
|
||||
0x1.395461c5f96a6p5
|
||||
0x1.21efa25110e19p12
|
||||
0x1.c9ddf4f375933p17
|
||||
0x1.3da0800fe1f5ep0
|
||||
0x1.90f147b3d0164p829
|
||||
0x1.001d955d8a436p344
|
||||
0x1.c6b2115b84675p319
|
||||
0x1.650441a7059bdp554
|
||||
0x1.3a49216bbe75ep0
|
||||
0x1.fdd3c3404c763p750
|
||||
0x1.0b97d555f912cp1
|
||||
0x1.95c32605e6c59p20
|
||||
0x1.6acfa746531b2p0
|
||||
0x1.13f4d3bbd6417p8
|
||||
0x1.ac31b628eaa2cp0
|
||||
0x1.4293b3d3169d2p8
|
||||
0x1.6e8a94f758a02p802
|
||||
0x1.701604374d526p0
|
||||
0x1.bec162f84a16cp13
|
||||
0x1.2015764e98ea6p481
|
||||
0x1.b9d12441e91a7p11
|
||||
0x1.55a4c648ebcc2p378
|
||||
0x1.65b6e4f33cc66p0
|
||||
0x1.b12c01289b0c4p15
|
||||
0x1.ce91f580c5091p228
|
||||
0x1.719ec056f57fep1
|
||||
0x1.0b2c87979b28cp23
|
||||
0x1.218c0592aa7fcp95
|
||||
0x1.ec1e878f29cf8p97
|
||||
0x1.adc8d213f43b1p0
|
||||
0x1.e788f6152fe51p0
|
||||
0x1.a026b0485c0e8p12
|
||||
0x1.f181e3ec38f77p3
|
||||
0x1.dafd9764a705fp13
|
||||
0x1.a292f29dfe6c4p0
|
||||
0x1.661d765a50087p13
|
||||
0x1.f619932e8e376p1010
|
||||
0x1.4a1600b2e95dbp880
|
||||
0x1.f5b95104bb64dp320
|
||||
0x1.a7a935f93958ap22
|
||||
0x1.5fe3a6a58526dp20
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,303 +0,0 @@
|
||||
## args: double
|
||||
## ret: double
|
||||
## includes: math.h
|
||||
0x1.408fb643484cep-11
|
||||
0x1.f0763423f1d52p-23
|
||||
-0x1.681573418e494p4
|
||||
-0x1.87cc25833f74bp16
|
||||
-0x1.ad3df5eb7db54p24
|
||||
0x1.90f147b3d0164p829
|
||||
-0x1.60b1066c6712ep71
|
||||
-0x1.5997c27aac9ccp332
|
||||
-0x1.2cb3142c669a0p15
|
||||
-0x1.ec882168157e6p191
|
||||
0x1.43a1d0e6eae29p109
|
||||
-0x1.2b43c388e1857p672
|
||||
0x1.f11c07e219bafp7
|
||||
0x1.f5efb379e3b3fp952
|
||||
-0x1.405cf322b684cp-13
|
||||
-0x1.fa64c4090d337p43
|
||||
0x1.a98724f016a93p-13
|
||||
-0x1.5743f3604a7fbp10
|
||||
0x1.042971d37879bp-17
|
||||
0x1.d4cda5814c00fp-2
|
||||
0x1.ec1e878f29cf8p97
|
||||
-0x1.6a4cd37896c5fp-24
|
||||
0x1.da85d34b19160p-10
|
||||
0x1.c068c277d171fp-17
|
||||
-0x1.b3e2d1ead4160p-1
|
||||
-0x1.ac8a62deb27c3p521
|
||||
-0x1.e28e32ce20a25p-1
|
||||
-0x1.e70635022c5fdp315
|
||||
0x1.984146d8a6c69p20
|
||||
-0x1.67cf155405aadp747
|
||||
-0x1.a852444a7de0ep-23
|
||||
0x1.92e4800542f83p108
|
||||
-0x1.564ba0e9ad540p-7
|
||||
0x1.c36c11c290063p20
|
||||
0x1.4723d5459434cp-26
|
||||
-0x1.43c1535cd024bp-11
|
||||
0x1.6d46e7252da2fp388
|
||||
0x1.756f2685e9ca9p-26
|
||||
-0x1.72268726f4141p22
|
||||
0x1.558480e0da8bdp15
|
||||
0x1.ef0970332ed6fp-3
|
||||
0x1.2015764e98ea6p481
|
||||
-0x1.3a0f66a229b60p871
|
||||
-0x1.c833f28187420p-25
|
||||
-0x1.a0ea74513cffbp778
|
||||
-0x1.d2dde734625d1p13
|
||||
-0x1.996507c01ea97p25
|
||||
0x1.d36f165b63b8fp880
|
||||
0x1.445234d59e32bp-2
|
||||
0x1.cd74423b4c4aep15
|
||||
-0x1.c0b6631621425p-1
|
||||
0x1.a2e0f00779702p-25
|
||||
-0x1.fcf5c0266c2f2p-22
|
||||
-0x1.af38a56120728p-21
|
||||
-0x1.9ec217ea497dap1
|
||||
0x1.57a000ceee049p800
|
||||
0x1.6c1b6312efacfp783
|
||||
0x1.afb5c0c4f933ap6
|
||||
-0x1.f9267499e3327p16
|
||||
-0x1.9b5ba5b496ae5p10
|
||||
0x1.3975f02686229p10
|
||||
0x1.36b913a68fe70p901
|
||||
0x1.8946b691ecf5ap10
|
||||
-0x1.efbb62a588bccp24
|
||||
0x1.f3de8628048d9p-8
|
||||
0x1.8ec222d562aa9p25
|
||||
-0x1.ac03e6a0d863cp22
|
||||
-0x1.6d9d94c1e0b6fp23
|
||||
0x1.9807337060f87p-10
|
||||
0x1.0f8045a313158p26
|
||||
0x1.fe8cd64528951p-16
|
||||
-0x1.51c184460cfafp-26
|
||||
-0x1.74b0f442763c7p20
|
||||
-0x1.d30da53c93e10p18
|
||||
0x1.749735f182597p15
|
||||
0x1.253da08c9c318p144
|
||||
-0x1.2714417156ae3p693
|
||||
-0x1.189320570f30bp26
|
||||
-0x1.a2e120ac12626p756
|
||||
0x1.ce724582eabcfp-24
|
||||
0x1.30dcf0414c561p292
|
||||
-0x1.1a1790d8a72d1p452
|
||||
0x1.3242254b631b3p-26
|
||||
-0x1.b5890305f1b78p11
|
||||
0x1.019a86d2e2300p18
|
||||
0x1.0e9cc39a3bff8p-14
|
||||
0x1.bc8ff7e59e82ep18
|
||||
-0x1.235a45afa3842p25
|
||||
0x1.0b2c87979b28cp23
|
||||
0x1.c717951ecf869p-9
|
||||
0x1.daff104bb08a5p25
|
||||
-0x1.b14b119b47d4ep5
|
||||
0x1.6e8a94f758a02p802
|
||||
0x1.7788055510c4dp23
|
||||
0x1.6120d7e4e5d9ep498
|
||||
0x1.1154e15c2c284p-24
|
||||
0x1.eb28429726661p423
|
||||
-0x1.b9faa23669003p9
|
||||
-0x1.a615746664b00p339
|
||||
-0x1.835384e92d59cp56
|
||||
0x1.1fb4b0fe36aacp-3
|
||||
-0x1.e440c3183f046p-19
|
||||
-0x1.1e714012cae50p22
|
||||
-0x1.1821b0014d9cep-16
|
||||
-0x1.5de4c1e0a1bfep-24
|
||||
-0x1.c1e5c78840e91p25
|
||||
0x1.f0b1d4cd82236p18
|
||||
-0x1.450ff3ad26e5bp984
|
||||
0x1.23438314fb10bp0
|
||||
-0x1.82be43e413126p14
|
||||
-0x1.5c70206fd22f7p628
|
||||
0x1.7e213160ec541p-15
|
||||
0x1.5487358228cedp-14
|
||||
0x1.4a163440f7c98p4
|
||||
0x1.ad443265c6b4ap845
|
||||
-0x1.732c509382338p-2
|
||||
0x1.929ba224e2240p-17
|
||||
0x1.a026b0485c0e8p12
|
||||
-0x1.fa4e77f1b2343p-12
|
||||
-0x1.3a2ac1c73ae50p5
|
||||
0x1.0c4a80d41a2f7p-20
|
||||
-0x1.1c57b37023dcep150
|
||||
-0x1.2c1b509030e5dp26
|
||||
-0x1.c7cdd089827cdp-26
|
||||
0x1.3d88b121650aap8
|
||||
-0x1.1583f2a9d2d5dp618
|
||||
0x1.295d65809666fp111
|
||||
-0x1.3dc8c1a73f146p-3
|
||||
-0x1.4dc715a6ae290p999
|
||||
-0x1.3808360307701p464
|
||||
-0x1.adf4158880f7bp2
|
||||
-0x1.3913104f0eea6p-16
|
||||
0x1.8c91558dbd886p-2
|
||||
-0x1.d67f73ef2736ap11
|
||||
0x1.218c0592aa7fcp95
|
||||
0x1.4c1e32e79005dp7
|
||||
0x1.395461c5f96a6p5
|
||||
-0x1.a311a7fbb5afap-12
|
||||
0x1.f07b95fd415ccp9
|
||||
-0x1.08745233a4ce8p-13
|
||||
0x1.38f122e7f7be0p220
|
||||
0x1.8c9c967e8e99ap-5
|
||||
-0x1.3353e4fc6b002p987
|
||||
0x1.945a20aa092e2p4
|
||||
0x1.a7a935f93958ap22
|
||||
-0x1.946865aa1c43cp-20
|
||||
0x1.001d955d8a436p344
|
||||
-0x1.5146c4a1225eep-22
|
||||
0x1.ffab14f637eaap733
|
||||
-0x1.3d50819d9de92p-8
|
||||
0x1.84a7b4b80f227p4
|
||||
0x1.73af93193478dp-6
|
||||
0x1.3ac9b75c613bdp160
|
||||
0x1.dafd9764a705fp13
|
||||
0x1.91bc310a7648ep243
|
||||
-0x1.531fa4a4bac3ap713
|
||||
0x1.95c32605e6c59p20
|
||||
-0x1.012141d71b636p-2
|
||||
-0x1.eb4540a49b927p20
|
||||
0x1.9c4716594b306p-24
|
||||
-0x1.242df1aa8bf7ep642
|
||||
-0x1.2d1fc7cf19d2ap-27
|
||||
0x1.161fd6fd320d5p745
|
||||
-0x1.3aaa34f975620p811
|
||||
0x1.9e11325b1c3c4p22
|
||||
-0x1.a838b07a6641ap5
|
||||
0x1.8b1a0407ae636p7
|
||||
-0x1.eb717004808e1p469
|
||||
-0x1.d166757807df4p-6
|
||||
0x1.2a57014d8c24bp317
|
||||
-0x1.5ea093bc15910p468
|
||||
-0x1.2545b7ec8b35fp-3
|
||||
-0x1.e47ca00d1f14ep929
|
||||
0x1.af09542db1b29p-18
|
||||
-0x1.8d4bc4f005536p6
|
||||
-0x1.8d564435d4d3fp-9
|
||||
0x1.993a6363227e2p12
|
||||
0x1.bec162f84a16cp13
|
||||
0x1.f0a22293c4ecbp852
|
||||
0x1.9eb0b40303dcap843
|
||||
-0x1.0cdae1dc93ed0p22
|
||||
0x1.21efa25110e19p12
|
||||
-0x1.cf1531a43c397p144
|
||||
-0x1.a043f6a911bdep-16
|
||||
0x1.816c4063e718ap-15
|
||||
0x1.e23b95950e47dp-21
|
||||
0x1.a0830483382afp2
|
||||
-0x1.52e49239a95d4p957
|
||||
0x1.f73a3049f9d76p16
|
||||
-0x1.1304063a4fbe5p316
|
||||
0x1.f5b95104bb64dp320
|
||||
0x1.661d765a50087p13
|
||||
0x1.7bb5671e2bfcap719
|
||||
0x1.3e14e736580b3p-20
|
||||
-0x1.11340035e5609p-25
|
||||
0x1.c4d527df0d553p762
|
||||
-0x1.731bc7cf3026ap7
|
||||
-0x1.079c1776f403fp965
|
||||
0x1.e6879000598aep-28
|
||||
-0x1.d3bee1e831937p25
|
||||
0x1.c3b5f0096df0dp24
|
||||
0x1.667d70b10ce7ep-6
|
||||
0x1.c780d2406b7d1p-26
|
||||
-0x1.df8fd3fe95d12p27
|
||||
0x1.89494217ed887p204
|
||||
-0x1.ea94d70c825d3p764
|
||||
-0x1.04366739a80cbp11
|
||||
0x1.75f1269063e4dp5
|
||||
0x1.0a46e3262c2b8p20
|
||||
-0x1.92c337d25b414p-4
|
||||
0x1.5c2cb3414299cp154
|
||||
0x1.07f7c34023735p881
|
||||
0x1.c64b8297569c4p207
|
||||
0x1.13f4d3bbd6417p8
|
||||
0x1.bde9c42ffd9ecp-15
|
||||
0x1.9e07054aa7309p743
|
||||
-0x1.dd8c11c0073a4p-16
|
||||
-0x1.e04d9283ac8d4p20
|
||||
-0x1.c0f2e29b30840p10
|
||||
0x1.55a4c648ebcc2p378
|
||||
-0x1.7b0c92c6d8687p658
|
||||
-0x1.ed8bb5ef46109p24
|
||||
0x1.5cc2904baa4d2p-18
|
||||
-0x1.b688c6944fa1dp-3
|
||||
-0x1.2330768204f78p754
|
||||
0x1.650441a7059bdp554
|
||||
-0x1.0d1c66b57d36bp493
|
||||
-0x1.54e35714807acp368
|
||||
-0x1.6165d7bebf894p776
|
||||
0x1.7e0ba7c987b9ep7
|
||||
0x1.d139574e3913ep168
|
||||
-0x1.40cc4145ea64ep19
|
||||
0x1.0db7e5339af44p-8
|
||||
-0x1.87410240fe22cp-9
|
||||
-0x1.d0f46605d4a27p18
|
||||
0x1.d1e8b19cca04dp-19
|
||||
0x1.979981827668ap-21
|
||||
0x1.2576745f4cca6p22
|
||||
-0x1.1f02e2c0c288dp14
|
||||
-0x1.77bab17202acap-13
|
||||
0x1.25c5071d2dc6ep8
|
||||
-0x1.306185b351fdap26
|
||||
-0x1.ad6e853661ee0p587
|
||||
0x1.f389b34d6b10fp-13
|
||||
0x1.08fa931bd21f5p10
|
||||
-0x1.b65bf00b921e8p-24
|
||||
-0x1.cbb5f173385aep82
|
||||
0x1.a32cd47340669p2
|
||||
-0x1.a83fd05f605e6p-25
|
||||
0x1.8184a3fcc1ac3p942
|
||||
0x1.61c9644526617p809
|
||||
0x1.b12c01289b0c4p15
|
||||
-0x1.16a4a50f1192bp-17
|
||||
-0x1.5658b26bd2888p-9
|
||||
-0x1.8c5563528e33bp-14
|
||||
-0x1.fd7e32bd8a9adp-23
|
||||
-0x1.1106a6a425747p-18
|
||||
0x1.98109155dd7bfp21
|
||||
0x1.dbd635362ec6bp6
|
||||
0x1.4a1600b2e95dbp880
|
||||
-0x1.2fd6819d3d81cp361
|
||||
-0x1.28f5b629029b5p12
|
||||
0x1.64c6a3d5a0867p304
|
||||
0x1.97ae606371057p22
|
||||
-0x1.d61a76409f8f9p-25
|
||||
0x1.a4c67223582ffp-27
|
||||
0x1.b569919b79b6fp214
|
||||
0x1.1bf0416ef51a4p-28
|
||||
-0x1.1b9502079e873p-25
|
||||
-0x1.a94006dd19303p355
|
||||
-0x1.78bd67abffa91p20
|
||||
0x1.96d320a0153bap383
|
||||
0x1.f82770adf361dp19
|
||||
0x1.ee0725a2dbe84p-28
|
||||
0x1.93d4c19692fbfp80
|
||||
0x1.d69c251aa0003p-3
|
||||
-0x1.36c310f2a5894p-26
|
||||
-0x1.7bbce527b5784p19
|
||||
0x1.5a90f2032fb5ap-14
|
||||
-0x1.194fe079c05eep1002
|
||||
0x1.2e9a406645b9bp609
|
||||
-0x1.c566e4a419660p-14
|
||||
0x1.f917868895288p872
|
||||
0x1.a966a17972ca9p601
|
||||
-0x1.6d5eb4970b882p-20
|
||||
0x1.c1a0d0ee96f75p27
|
||||
0x1.958fd1185d839p-24
|
||||
-0x1.c738b5fffeeb2p4
|
||||
0x1.91bf33cdb6804p710
|
||||
-0x1.66e0a7e4034dbp224
|
||||
-0x1.dd6e42f5992c4p667
|
||||
-0x1.6e17000848200p951
|
||||
-0x1.f625958e05264p-1
|
||||
-0x1.63e025fbcdcacp442
|
||||
0x1.c5fb927d2cb09p8
|
||||
-0x1.d7e514672b2ddp987
|
||||
0x1.0eec25d2a59ccp27
|
||||
0x1.342f35eabf622p707
|
||||
-0x1.6ffad140301c8p609
|
||||
-0x1.5b10b0ca4ea9dp-21
|
||||
+5
-805
@@ -1,809 +1,9 @@
|
||||
## args: double
|
||||
## ret: double
|
||||
## includes: math.h
|
||||
0x1.642175414a222p-3
|
||||
0x1.32f96343ff094p47
|
||||
0x1.63961340f55e3p-4
|
||||
-0x1.404c80c42d2d7p3
|
||||
0x1.ff0297a7f4cf9p-4
|
||||
-0x1.3514d0a630343p2
|
||||
-0x1.9cd792d24de9cp-13
|
||||
0x1.48de0536fa639p-26
|
||||
0x1.df679233e616cp3
|
||||
-0x1.3672036e3b5dbp46
|
||||
-0x1.a6af31fe26a67p1
|
||||
-0x1.601447d82000cp-23
|
||||
0x1.6978a3d8cdd0cp34
|
||||
-0x1.bcf7074f6ad00p-20
|
||||
0x1.4560113d34322p1
|
||||
-0x1.88e3f71039a4bp-4
|
||||
0x1.016652052d70ep6
|
||||
0x1.4eeee5387c40fp-11
|
||||
0x1.1a93e2edc9a70p-1
|
||||
0x1.2a86a6b000b1bp19
|
||||
0x1.b550a52791570p19
|
||||
0x1.4f55e0fd66533p6
|
||||
0x1.179893d68a175p0
|
||||
0x1.c587a48440d49p18
|
||||
0x1.c4d736b34755ep41
|
||||
-0x1.0b00d1e309baap15
|
||||
0x1.d3ddd7a4105b8p-17
|
||||
0x1.907795ee90c71p1
|
||||
0x1.1c0ee51bf3fbbp-26
|
||||
0x1.6e21857f657b5p-3
|
||||
0x1.522870681be34p0
|
||||
-0x1.47fc357b48019p2
|
||||
-0x1.fc80d2478d003p44
|
||||
0x1.6b6af109c6d11p-2
|
||||
-0x1.557b744e3f2b2p-2
|
||||
-0x1.c0bd72f9dcc6fp-3
|
||||
-0x1.5dad543b37a02p2
|
||||
-0x1.d95b35b36eadep38
|
||||
0x1.645042fa42207p-2
|
||||
-0x1.139444200b144p1
|
||||
-0x1.28a691f56455fp-24
|
||||
0x1.d97ff36594800p-2
|
||||
-0x1.c46e817205691p-1
|
||||
0x1.189121c162006p-21
|
||||
0x1.b22526da1b4b3p-25
|
||||
0x1.89097738a1f84p23
|
||||
-0x1.3de8b3a71241ep-4
|
||||
0x1.d539d73aa3a6bp4
|
||||
0x1.9f3aa3d8be109p-8
|
||||
-0x1.28df31604ae5fp-2
|
||||
-0x1.a5ba03c7f21c6p39
|
||||
-0x1.0aa65539c9639p44
|
||||
-0x1.596756edc8d29p-1
|
||||
0x1.bf89523d6d9a8p18
|
||||
0x1.245712c9030a1p-9
|
||||
-0x1.e70de078fe520p-3
|
||||
0x1.0a6a653edc9c8p-1
|
||||
0x1.cc69116b071cdp-2
|
||||
0x1.2f24c0cf8fcb2p-16
|
||||
0x1.ed2ac30efc4e7p41
|
||||
-0x1.db4970624d850p-4
|
||||
-0x1.bb1260bff835cp-4
|
||||
0x1.d685f1157cf4ap-4
|
||||
-0x1.27241256d29b8p1
|
||||
0x1.ec5380eff6d2ap-3
|
||||
-0x1.fd7d8132290bep-1
|
||||
0x1.228426a24d54dp-17
|
||||
0x1.2ea847880a2cdp39
|
||||
-0x1.89a5c5d485ab4p3
|
||||
-0x1.fbd930c90d22cp3
|
||||
-0x1.86674787bedeap3
|
||||
0x1.ab27809f97987p1
|
||||
0x1.c17c653258848p2
|
||||
0x1.a3f615b4aa2afp-4
|
||||
-0x1.e8bff4a769203p46
|
||||
0x1.2fbb90ef75a25p-4
|
||||
0x1.d9d246c3e5da7p10
|
||||
0x1.1adf65737ce63p2
|
||||
-0x1.4bbf56383d2c4p-20
|
||||
0x1.1bc9009943672p2
|
||||
-0x1.84cd8442450bcp24
|
||||
-0x1.05cbc2307bc60p0
|
||||
0x1.b18fc1de83969p-2
|
||||
-0x1.a63bf1a32c82cp-26
|
||||
0x1.08e7e57369c93p4
|
||||
0x1.97e8f20d0a9f8p33
|
||||
0x1.1358340c23f9dp-13
|
||||
-0x1.f3a987156a953p-15
|
||||
0x1.cc4fe36fcebc5p-3
|
||||
0x1.d858d5bee5222p-2
|
||||
0x1.8911076ba1dfep-5
|
||||
0x1.5ab4754566467p1
|
||||
0x1.854547561eabbp1
|
||||
-0x1.830ce306fc8c4p-13
|
||||
0x1.b181a4ed4c25ep-19
|
||||
0x1.f77112499c880p30
|
||||
-0x1.5124040e757ddp43
|
||||
0x1.751c061e72f3dp-1
|
||||
0x1.b88d87c4c86b2p-8
|
||||
0x1.52c5b76c6ef89p-10
|
||||
0x1.e89130ee99ce5p-4
|
||||
0x1.2a2ed7a0b1956p-1
|
||||
-0x1.47b533d254eb8p3
|
||||
0x1.b4d0b69a8f4a8p-24
|
||||
0x1.8316a4af1bf68p-18
|
||||
-0x1.9e1ef1ccdd020p15
|
||||
-0x1.88bde5f29b2d9p3
|
||||
-0x1.365034bff4761p0
|
||||
0x1.7e40940c2d5adp-17
|
||||
-0x1.2c37625bfd76dp-18
|
||||
0x1.707642d37610fp0
|
||||
-0x1.afd1d0135cf31p3
|
||||
-0x1.4b0d1755bbf42p-11
|
||||
0x1.c4ed75b07c727p0
|
||||
-0x1.5e2db71616c7ap1
|
||||
0x1.050223b1cd624p3
|
||||
-0x1.3b3db4aa80820p-10
|
||||
0x1.5ccb8047d5d1ap12
|
||||
0x1.175282b52f29cp0
|
||||
0x1.aabc424c47eafp9
|
||||
-0x1.1a90445a04e18p0
|
||||
0x1.3da941dc72acdp2
|
||||
0x1.501726cf3e259p-12
|
||||
-0x1.1b3006e74e325p4
|
||||
-0x1.ad42977bf9a2bp-1
|
||||
0x1.73d0e25d9335ap-3
|
||||
0x1.0a514560b1915p-4
|
||||
0x1.9b955619c595bp-3
|
||||
0x1.c1bde2d25803bp-2
|
||||
-0x1.c9c450db85015p-24
|
||||
-0x1.b93f27a390fc9p-3
|
||||
0x1.394074cfa62d3p1
|
||||
0x1.815072f52a2e6p0
|
||||
0x1.1e52d6ee6069fp-1
|
||||
0x1.1f90737198ea5p-19
|
||||
0x1.13341218923f7p-23
|
||||
0x1.348b0774c87ffp2
|
||||
0x1.d2580731da42cp2
|
||||
0x1.87b5a06e57762p-5
|
||||
0x1.b40fd58aea62ap0
|
||||
0x1.9cd365175d628p28
|
||||
-0x1.4094703aac68bp-24
|
||||
0x1.56af03795574fp21
|
||||
-0x1.e189800006571p-26
|
||||
-0x1.9dfb51f7b789cp47
|
||||
0x1.9bc2e73963ca7p11
|
||||
0x1.b5a1c0632322cp0
|
||||
0x1.205e5539779c2p51
|
||||
-0x1.6c47a5b0217f6p2
|
||||
0x1.791cd37782384p-2
|
||||
0x1.231d31372c140p1
|
||||
0x1.91e2d31efbcaap-3
|
||||
0x1.34fa969626571p30
|
||||
-0x1.6bc04360963b5p-11
|
||||
0x1.8add0065da1d5p-4
|
||||
-0x1.d346e1877a7fdp-2
|
||||
-0x1.725697ff5c03dp1
|
||||
0x1.a8e2a686fd172p-1
|
||||
-0x1.8bd725c48f410p3
|
||||
-0x1.3b0537b22c0bbp-1
|
||||
-0x1.2c0db2781aad0p28
|
||||
0x1.4c6a110727b7fp-16
|
||||
0x1.b8d171996cbe1p0
|
||||
0x1.e6c6d70c497a0p19
|
||||
-0x1.15a9f10771286p2
|
||||
-0x1.c30f24893d7a3p-3
|
||||
-0x1.d73aa26a08a23p38
|
||||
-0x1.58b7549a93d13p-4
|
||||
0x1.169012651035fp1
|
||||
0x1.197ee4c04ae17p25
|
||||
0x1.3fba00276eae3p1
|
||||
0x1.941d03c4bf6a6p-4
|
||||
0x1.7f21c64e2abb7p-2
|
||||
0x1.7581d56332d79p0
|
||||
0x1.971980a7e2435p27
|
||||
-0x1.e44690996dde4p-8
|
||||
-0x1.3133113da7775p-20
|
||||
0x1.31d201884c815p30
|
||||
0x1.1f46672b184b2p-20
|
||||
-0x1.bbbc31b0259d6p7
|
||||
-0x1.ff6f625bf7eadp-1
|
||||
-0x1.3dd6a5e841573p-1
|
||||
-0x1.294b2242985c5p-5
|
||||
0x1.80c6d17d3b82ep41
|
||||
0x1.66a703915eafdp-4
|
||||
0x1.c16431985801dp28
|
||||
-0x1.66cc363cc169cp-13
|
||||
-0x1.445ac6d7de615p29
|
||||
-0x1.78d803eac6a4fp-17
|
||||
0x1.7d17f2f5981bdp-4
|
||||
-0x1.be3452bcdc974p28
|
||||
0x1.83dff4dfc4757p42
|
||||
0x1.451781735f844p14
|
||||
-0x1.4dab41db1c970p3
|
||||
0x1.3373037f37040p2
|
||||
0x1.20f7623057a1cp-4
|
||||
0x1.b74c37f7006cfp36
|
||||
0x1.6d17f13894ea6p-8
|
||||
-0x1.9084f58ffff58p1
|
||||
-0x1.c57ef7f9833e1p-3
|
||||
-0x1.943ce31bfd282p-26
|
||||
-0x1.75a42576fe1cdp1
|
||||
0x1.ff0257a993250p2
|
||||
-0x1.63ef308e427d4p0
|
||||
0x1.de26003f5ba7ep16
|
||||
0x1.15333549fa76fp29
|
||||
0x1.66bfb50c269e7p0
|
||||
0x1.a49604cc4d7f9p-4
|
||||
-0x1.15003315471d9p-4
|
||||
-0x1.38bed20a51ff5p-9
|
||||
0x1.7d97f5b7805ddp-19
|
||||
-0x1.7a3244a0e1b3ep-2
|
||||
0x1.ed0681d4ee226p50
|
||||
-0x1.15a691a22afc6p-4
|
||||
-0x1.d2c15149a171cp48
|
||||
-0x1.d395408686509p1
|
||||
0x1.d121d5a063487p-27
|
||||
-0x1.159dc08e6bae4p-18
|
||||
0x1.835914ed4ac69p46
|
||||
-0x1.f45bc1593e631p-2
|
||||
-0x1.abaf42742e1aep0
|
||||
0x1.f67cc57a82279p22
|
||||
-0x1.3cdc56ba8ad80p0
|
||||
-0x1.5a8f042e5c06dp-4
|
||||
0x1.306774727b9c8p-5
|
||||
-0x1.0f21118d78a86p1
|
||||
-0x1.abbcc62ae1185p-17
|
||||
-0x1.ff75940794858p3
|
||||
-0x1.6048b6174f2dap-3
|
||||
-0x1.84f4968e9a1a0p3
|
||||
-0x1.ecc9025c45c61p-9
|
||||
0x1.d9cd03dc0d910p-18
|
||||
0x1.cd846319c00c5p-3
|
||||
0x1.6366066bd94a6p3
|
||||
-0x1.8ebc74865b7b3p1
|
||||
-0x1.b87c63e47576cp-3
|
||||
0x1.c45cb0d4685f5p-3
|
||||
-0x1.e702b4a6029fcp35
|
||||
0x1.fc6300b9b675ap3
|
||||
-0x1.3f43a795e244ep0
|
||||
-0x1.f1cd009ef1604p3
|
||||
-0x1.d2fbd2cc79418p11
|
||||
0x1.907fd4f15d9d3p-10
|
||||
0x1.a371220d3cd1ep43
|
||||
0x1.df8544d34e26dp26
|
||||
0x1.acb3279e8da17p-18
|
||||
0x1.b1ea21e59afd9p-4
|
||||
-0x1.e0dff1828b454p-4
|
||||
0x1.ef38b267b4663p39
|
||||
-0x1.baba241cd2232p-13
|
||||
0x1.4fe7c7cd05a69p46
|
||||
-0x1.988073a34d2c8p29
|
||||
0x1.7599e0ac9a522p-8
|
||||
0x1.251b26c85badap52
|
||||
-0x1.a27c560a7da35p0
|
||||
-0x1.f091c7c2304a2p17
|
||||
-0x1.d0e1114b97abfp-13
|
||||
0x1.33ee35cf8c72ap1
|
||||
-0x1.e714e1fed73c4p-2
|
||||
0x1.1292e4e843885p-3
|
||||
-0x1.03fcc540c9867p22
|
||||
0x1.a53c8268c5213p-2
|
||||
-0x1.f16e3196353c0p-20
|
||||
0x1.e88a97bf39b0cp14
|
||||
0x1.4f00111aae17fp13
|
||||
-0x1.388bf2c171982p-1
|
||||
0x1.0f70b2319de14p-3
|
||||
0x1.e95a75a9609e3p-1
|
||||
-0x1.1047552b4d153p2
|
||||
0x1.091e73082965cp0
|
||||
0x1.2560a7de1090ep-26
|
||||
0x1.b7fde3097d182p-20
|
||||
0x1.c7f115eabfdedp-4
|
||||
-0x1.e99523e282a43p40
|
||||
-0x1.960706b024814p-3
|
||||
0x1.6ca4d098808a9p41
|
||||
-0x1.782a50dd85179p50
|
||||
-0x1.26e3c42a5f2d2p1
|
||||
0x1.ca282036f2b8cp-10
|
||||
0x1.87d031409e3e4p-17
|
||||
0x1.a80f97461a0f4p-3
|
||||
0x1.66ed5379b1601p45
|
||||
-0x1.081bb51f6296ep21
|
||||
-0x1.a51801c3b0ab4p-3
|
||||
-0x1.f9af91b1e0eacp-4
|
||||
0x1.f59650108c48fp1
|
||||
0x1.085c309bbe310p0
|
||||
-0x1.b9fea5e346036p1
|
||||
-0x1.453542b905ad4p24
|
||||
-0x1.e66c14b55c117p1
|
||||
-0x1.90a6830407ac7p40
|
||||
0x1.9bc93234caf93p26
|
||||
0x1.4b94104f5f41ap-3
|
||||
-0x1.c7b564e75a382p50
|
||||
-0x1.c2b250afb59e8p13
|
||||
-0x1.bfb283faeefbfp2
|
||||
-0x1.173235dbdbca5p-10
|
||||
-0x1.ac62c7b5e878bp-4
|
||||
-0x1.c2a9461c28ecdp-17
|
||||
0x1.1e1bf4bfee9b2p1
|
||||
-0x1.c6a1a78876ab6p0
|
||||
-0x1.e6fb5111565c8p3
|
||||
-0x1.8932b58866bcfp-19
|
||||
0x1.6407a070f3a3fp12
|
||||
0x1.87a1b1adaed03p-4
|
||||
0x1.e5ebf4ac465b1p-4
|
||||
-0x1.f8d5e0b5c2957p20
|
||||
0x1.42836589a8c0dp31
|
||||
-0x1.d1ad755010ed1p-4
|
||||
0x1.3d1f16896735ep-1
|
||||
0x1.fdaba0fd40c7cp31
|
||||
0x1.3311135efe06dp-3
|
||||
0x1.b5dc02c3070d2p-2
|
||||
-0x1.04d741eec5058p-23
|
||||
0x1.a80bc579c9a9bp3
|
||||
0x1.4766230792559p1
|
||||
-0x1.a5cbe4d7cc609p-3
|
||||
-0x1.ba1d23d80c32fp-11
|
||||
-0x1.daaf8434d9034p-13
|
||||
-0x1.c65d358dac3fep-11
|
||||
-0x1.3f4da10042b42p2
|
||||
0x1.262fa4579b063p-7
|
||||
0x1.914e60ffdbed8p-4
|
||||
-0x1.efac261144868p-9
|
||||
0x1.ce397251fa408p-4
|
||||
0x1.be05d28ca250ap-11
|
||||
-0x1.7479b7fa984ddp-3
|
||||
-0x1.ac20c42062d2fp2
|
||||
0x1.9a487118946dap-4
|
||||
0x1.2a124744f9fa4p47
|
||||
0x1.b1981261f9020p-1
|
||||
0x1.fbf7179ce5846p-2
|
||||
0x1.22fbd75358604p-23
|
||||
0x1.b1b2a4bcce5acp34
|
||||
0x1.84e62689c678dp-19
|
||||
-0x1.0b3bf5d136f5fp-25
|
||||
0x1.f93ce18d93227p-15
|
||||
0x1.bbd3b6a42bc58p-22
|
||||
-0x1.47b315f8194ebp27
|
||||
-0x1.827896462fb0cp-18
|
||||
0x1.2947c23116c19p-2
|
||||
0x1.3466e4652adedp1
|
||||
-0x1.23c2a01c6daddp-11
|
||||
-0x1.5831b4a29e94ep-2
|
||||
0x1.4a7fb41fb32ccp-24
|
||||
0x1.77544628d33f4p2
|
||||
0x1.40a5220c05f84p43
|
||||
-0x1.859503fac777cp-1
|
||||
0x1.629111fdc02f9p49
|
||||
0x1.f72960081155dp-24
|
||||
0x1.100cb00f41850p0
|
||||
-0x1.1280f391f830bp8
|
||||
-0x1.2e93552200855p1
|
||||
-0x1.4621063cd9ecdp-12
|
||||
0x1.1c4111533addep-25
|
||||
-0x1.569560309d6bbp-22
|
||||
-0x1.7a8124168d622p3
|
||||
0x1.17fba47954943p-4
|
||||
0x1.0672546df1e40p-4
|
||||
0x1.3157a7fbb3b2ap2
|
||||
0x1.a82f370a40ce4p2
|
||||
-0x1.a8fac6ce90f3cp1
|
||||
0x1.0f28d09b57a07p0
|
||||
0x1.da30a55a75636p2
|
||||
-0x1.4a8a0783b2ccdp-3
|
||||
-0x1.79e674173ab88p-1
|
||||
0x1.c89b61641fceep31
|
||||
-0x1.0f8107e6388fbp3
|
||||
-0x1.f720f120f5f1fp-22
|
||||
0x1.144b44598ac02p-4
|
||||
-0x1.ceb152c076922p-3
|
||||
-0x1.4b12e43d683a4p0
|
||||
0x1.c0ae8156c4455p-3
|
||||
0x1.85c10724ee68cp-3
|
||||
0x1.3c4635592b9ffp-3
|
||||
-0x1.d59892bee5390p-4
|
||||
-0x1.cd1280ceab8c4p-3
|
||||
0x1.b622b71aa922bp8
|
||||
-0x1.2795c18e21649p-15
|
||||
-0x1.639d32c619c4bp-19
|
||||
-0x1.e8f917ef054dfp-8
|
||||
0x1.c9eca4e44a7b1p1
|
||||
0x1.be86276e10fa9p3
|
||||
0x1.750cd40dd63b8p-24
|
||||
-0x1.033ab125bb64ep-18
|
||||
-0x1.9679b2912fcecp-4
|
||||
0x1.f7b3a1afd048dp-23
|
||||
-0x1.9f2863bcb1fd6p1
|
||||
0x1.c7fed1051dcb2p4
|
||||
0x1.c23ec470a9239p-7
|
||||
-0x1.1e5006f62ba49p1
|
||||
-0x1.0d9f216fea290p3
|
||||
0x1.bd8340ad169bap46
|
||||
0x1.dac8831aa29d9p3
|
||||
0x1.7c191598763c2p1
|
||||
-0x1.121aa313ac95bp33
|
||||
-0x1.b0996534e93cep-2
|
||||
-0x1.6c8353699c9c6p-1
|
||||
-0x1.5df8208f06792p3
|
||||
-0x1.4657113ffa73fp28
|
||||
0x1.48a901159abe7p0
|
||||
0x1.70e4b3448f927p50
|
||||
-0x1.e120d621edccap-4
|
||||
-0x1.4f2900d44caa5p1
|
||||
-0x1.848165627b209p-5
|
||||
-0x1.4cd082b565a11p-16
|
||||
-0x1.d9d2d7967af18p-1
|
||||
-0x1.222be1230bd8dp0
|
||||
-0x1.361e6586e20d9p16
|
||||
-0x1.3ddd364c29946p-19
|
||||
0x1.3ee601f53dafap-18
|
||||
0x1.e37ab68eb3013p45
|
||||
-0x1.0b8a978bd97b9p2
|
||||
-0x1.9589707e8a6ddp-20
|
||||
0x1.b7ca368b81375p-4
|
||||
0x1.2a7b114a80983p0
|
||||
-0x1.8c0fd1048891ep-4
|
||||
0x1.c32454b620d43p-26
|
||||
0x1.853192a0e3bbbp-14
|
||||
0x1.172b96d182f82p-2
|
||||
0x1.4156741896c30p-3
|
||||
-0x1.dd08573a1dc08p-3
|
||||
-0x1.f112f2dfd0c38p23
|
||||
0x1.f07ef18d186acp-9
|
||||
0x1.b0b643dc8187bp-2
|
||||
0x1.edf9044a400ccp-26
|
||||
-0x1.420ee09a253bbp-16
|
||||
-0x1.ce5f43fa6c0e8p0
|
||||
-0x1.b49ed6fe33c01p-2
|
||||
0x1.bc1e67b736d93p27
|
||||
0x1.18f252a5a70f2p-1
|
||||
0x1.3bd3528a6b5c3p-25
|
||||
0x1.042f039297e45p0
|
||||
0x1.890e26c77777ap2
|
||||
0x1.ec331761880b9p39
|
||||
-0x1.12aec65364402p2
|
||||
-0x1.b09600801c6c9p7
|
||||
0x1.4c14331304537p36
|
||||
-0x1.366b32ae15936p-9
|
||||
-0x1.d04011bd2f923p-27
|
||||
-0x1.bb73e632734cap51
|
||||
-0x1.22df928d0db2bp14
|
||||
-0x1.84d2c65e8a597p-4
|
||||
-0x1.248ce4d82f9e1p-3
|
||||
-0x1.a89a16ab8fc98p41
|
||||
-0x1.22061604a7bbep-1
|
||||
-0x1.9b7790ad6cfcap37
|
||||
0x1.e146126a58363p-20
|
||||
0x1.8bf9d0bee4587p-6
|
||||
-0x1.74eec1eb48a38p18
|
||||
-0x1.1eca65e42c0e2p-24
|
||||
-0x1.5f6e27219b443p5
|
||||
-0x1.95f64657f34b0p1
|
||||
-0x1.ad0923f0c8747p-14
|
||||
-0x1.71b7472c93381p2
|
||||
-0x1.e88ec0fa2b8e2p40
|
||||
0x1.0efad07b1325cp-2
|
||||
-0x1.d614b725644c2p-11
|
||||
-0x1.87f104d664989p-4
|
||||
0x1.db8bf75a3dabcp25
|
||||
0x1.18a07441e9358p-3
|
||||
0x1.c52552071ba9dp2
|
||||
0x1.4eee532e1cf42p-2
|
||||
-0x1.acd7a7d0cb2d2p49
|
||||
-0x1.efdbb63ba4cd9p3
|
||||
-0x1.c0dbd4011e3dbp14
|
||||
0x1.a8b9053cd4ae7p-26
|
||||
0x1.950f208f9f314p-3
|
||||
0x1.62bc1534e8779p1
|
||||
0x1.ec8712224e21dp5
|
||||
-0x1.dcf2f55094df3p-4
|
||||
-0x1.13a10025de14cp1
|
||||
-0x1.275ce549521b9p-1
|
||||
-0x1.2d3995ba1b17bp-5
|
||||
-0x1.a76630717c0c6p3
|
||||
-0x1.b2ec655611d3ep38
|
||||
-0x1.9bd4a62004f97p-20
|
||||
-0x1.49dcb6df53770p1
|
||||
-0x1.2b34c0811030cp-3
|
||||
0x1.99ee70ec910aap-21
|
||||
0x1.35b201aa1e70bp-3
|
||||
-0x1.92a3000ee8dd4p-2
|
||||
-0x1.d69d60b48249fp3
|
||||
0x1.eee73555cf4d5p-3
|
||||
-0x1.07de748dacd3ap12
|
||||
-0x1.a8ea7383f8f09p8
|
||||
-0x1.eca3120c1f7cep1
|
||||
-0x1.8b4b26d9f4eabp51
|
||||
0x1.167433f50737ep-23
|
||||
0x1.585657c46c25ap-20
|
||||
0x1.0e0447b473e54p2
|
||||
0x1.b28d209b03f59p-4
|
||||
0x1.9a8d34b2b2855p-25
|
||||
0x1.948ac6afc0f37p3
|
||||
-0x1.563cf374c073fp-4
|
||||
0x1.fa49e687bce32p42
|
||||
0x1.c42c2624133c2p48
|
||||
-0x1.001e573a69113p2
|
||||
-0x1.4dfb17453411bp-3
|
||||
-0x1.d9b9b553ab45fp23
|
||||
0x1.55496452db316p3
|
||||
-0x1.8420d7f1ac33ep3
|
||||
-0x1.ac7cd42b0f63ep2
|
||||
0x1.ce2970c35394cp2
|
||||
-0x1.de2ce25feb1e3p-16
|
||||
0x1.4fe2152fd9407p-2
|
||||
0x1.4d4233d0400d2p1
|
||||
0x1.f4c640fdd48b2p-10
|
||||
0x1.1512c1316465ap37
|
||||
0x1.b584b29dc1d4bp22
|
||||
-0x1.695e973f8db94p-1
|
||||
0x1.7373d677b7679p24
|
||||
0x1.f899a57b746b9p-22
|
||||
-0x1.f5ad761b38217p0
|
||||
0x1.daf950a02a029p1
|
||||
0x1.a9c47461369bcp-7
|
||||
0x1.a66902e961fe5p-2
|
||||
-0x1.f6bc5292eadcep2
|
||||
-0x1.0377673b5656cp20
|
||||
-0x1.269297562701dp-4
|
||||
0x1.13d1e1e922a15p3
|
||||
-0x1.ddf1d5cfbfb4dp-20
|
||||
0x1.6c21328fa2eacp0
|
||||
0x1.953fe3186fbacp0
|
||||
-0x1.2ed5d49aee19cp-15
|
||||
-0x1.d3e9f10d61fa8p-4
|
||||
0x1.5315517278bffp-4
|
||||
-0x1.aeeb36df95b57p26
|
||||
0x1.9f55b3bd1d398p2
|
||||
0x1.894151536709bp3
|
||||
-0x1.93a3d5c645e3fp22
|
||||
-0x1.37803538f3548p43
|
||||
-0x1.d5dde10bc588fp-23
|
||||
0x1.f145117569f10p4
|
||||
-0x1.ca23009d83541p0
|
||||
-0x1.fc4063d4a4afep23
|
||||
-0x1.ec88c7edb5ae2p-6
|
||||
-0x1.2d5973fcaa823p-21
|
||||
0x1.437a141589287p2
|
||||
-0x1.9104e694ef44ap-2
|
||||
-0x1.b70572032d576p-7
|
||||
0x1.d10452e3eae69p2
|
||||
0x1.2874b443d01bcp0
|
||||
0x1.fa66d12189a72p20
|
||||
-0x1.303e443c556d3p46
|
||||
0x1.4b5d557e8fe56p44
|
||||
0x1.602bb4e791b87p-20
|
||||
-0x1.158f81cbcb150p-3
|
||||
-0x1.36a3939175212p3
|
||||
-0x1.826092fe525c4p-19
|
||||
-0x1.a72da4879bcb1p-26
|
||||
0x1.839626b74c51ap-1
|
||||
-0x1.bd2da6527d628p5
|
||||
0x1.3257e0dc99c46p-23
|
||||
-0x1.b3ebe0c2317c6p3
|
||||
0x1.1164968b6d3d2p-4
|
||||
0x1.bd5404092a649p30
|
||||
-0x1.dd0e00246fdf1p-3
|
||||
-0x1.4167e56920aa2p6
|
||||
-0x1.b035570fa59c8p-1
|
||||
0x1.7853f4cf90bbcp15
|
||||
0x1.bc20a74a4c2dbp-18
|
||||
0x1.0e3ee3d24bf54p3
|
||||
-0x1.95aab56378e9cp45
|
||||
-0x1.4930a7aa51e8dp1
|
||||
0x1.ea77407c9a5f1p-1
|
||||
0x1.4fac93644de62p-3
|
||||
0x1.a2ed87cc0f417p43
|
||||
0x1.14d2d0a33df56p2
|
||||
-0x1.3473f6f77b6c5p11
|
||||
0x1.b647101dc4177p3
|
||||
-0x1.4e0b92acc66bfp23
|
||||
0x1.2a3797d36ee30p-4
|
||||
0x1.ce10973c013ebp-14
|
||||
0x1.b6cef57406772p2
|
||||
-0x1.326762c9ea656p-22
|
||||
0x1.56473079b28aap24
|
||||
-0x1.46f3d42d9a8dap-11
|
||||
-0x1.6d4e52e373151p-7
|
||||
0x1.622a0570fc4abp11
|
||||
-0x1.7e0bb32e21466p-6
|
||||
0x1.55a1a3d809d3ep1
|
||||
-0x1.d7492480e11f5p32
|
||||
0x1.835730d6b3ef6p-18
|
||||
0x1.2d9cf79f070e8p-9
|
||||
-0x1.6cee95c1d9445p26
|
||||
0x1.45c58441f2822p-3
|
||||
0x1.2f01d75200b30p21
|
||||
-0x1.014c5172af434p0
|
||||
0x1.9d96552d416d8p3
|
||||
0x1.f878a3fc8f55fp-3
|
||||
0x1.1206f1aa29231p1
|
||||
0x1.998bc480cbf5dp-3
|
||||
0x1.2160c0ab74e78p41
|
||||
0x1.66cce4923857ap-6
|
||||
-0x1.47bf27bfba3adp-3
|
||||
-0x1.88b9442658583p-13
|
||||
0x1.baf0076743831p2
|
||||
-0x1.d7a664adbb965p-22
|
||||
0x1.8bfbf37ef0c90p22
|
||||
-0x1.a2b137086be2cp9
|
||||
0x1.b8fa2667197acp29
|
||||
0x1.2e9ee649d720ap-2
|
||||
0x1.fd42f19ae5dfdp-15
|
||||
0x1.b4c7c70a22018p38
|
||||
0x1.6fee027ca714ap-18
|
||||
0x1.b986a428fdeebp-9
|
||||
-0x1.f63c6744cafc4p-7
|
||||
-0x1.860b9508a01c2p-4
|
||||
0x1.c9dbe26d13605p-7
|
||||
-0x1.e5af65a0da055p-4
|
||||
0x1.2f48357a95e60p-3
|
||||
0x1.afac3209945f4p-11
|
||||
0x1.e24230fc8430fp-1
|
||||
0x1.555f1605043d9p40
|
||||
-0x1.42c7b6d8c6b89p-4
|
||||
0x1.f5e416fab1768p24
|
||||
0x1.4379506da570ep10
|
||||
-0x1.c38b2527d3a6ap0
|
||||
-0x1.ecf007e1a6728p-3
|
||||
0x1.636eb2220b2c2p-18
|
||||
0x1.7609e702937b8p2
|
||||
0x1.2db5d31780fa5p3
|
||||
-0x1.221c240b15183p-3
|
||||
0x1.084b249033af8p-19
|
||||
-0x1.69c8f54230d4cp2
|
||||
-0x1.5458a621ac511p0
|
||||
0x1.c8b53281fbad0p-15
|
||||
0x1.0c8ac2d6bf8cep-22
|
||||
-0x1.28b804bea1e7fp3
|
||||
0x1.919d64a75bf39p-9
|
||||
0x1.4c0b078f754a4p-1
|
||||
-0x1.dd7405983ab97p-20
|
||||
0x1.ba2103a39b033p19
|
||||
-0x1.b21fc106586d2p0
|
||||
0x1.eacb558bbd5dap1
|
||||
-0x1.058304cdc51f1p-2
|
||||
-0x1.e530d67d5c413p15
|
||||
0x1.9efc141496268p-21
|
||||
0x1.9e43436405397p-2
|
||||
0x1.d6c5d5f5dcc9fp-22
|
||||
0x1.2f0540658e814p1
|
||||
0x1.89ea31cb96062p1
|
||||
0x1.c9d690079576dp-7
|
||||
0x1.9b1ef5b23f047p-2
|
||||
-0x1.c1e61429c45fbp43
|
||||
0x1.248b34f22e7e1p-26
|
||||
0x1.0dc2918fd3196p-15
|
||||
0x1.a17a2260c8d58p18
|
||||
-0x1.a088140ade389p19
|
||||
0x1.8b92c2168e33fp40
|
||||
0x1.69ab67a22bbbcp0
|
||||
-0x1.343232b010a37p-17
|
||||
-0x1.0c4932248f574p0
|
||||
-0x1.2bdc378a38991p-2
|
||||
0x1.2d563370110dap-12
|
||||
0x1.a27134171f37dp-4
|
||||
0x1.fa63324eb71a3p26
|
||||
0x1.6f50c55b7950ep-21
|
||||
-0x1.0486e73eca0d8p45
|
||||
-0x1.fa20f7947f447p-3
|
||||
0x1.0439c6fe1a62ep2
|
||||
0x1.4e5d366349911p2
|
||||
0x1.985933b0a27d6p-2
|
||||
0x1.bf592781e0417p-4
|
||||
0x1.bd39f070daca3p-4
|
||||
0x1.0130b7296f20dp0
|
||||
-0x1.299cc68ec2149p2
|
||||
-0x1.6d9fc7a6e0946p0
|
||||
0x1.b42110fb94ad0p31
|
||||
0x1.b59970f83df8ep1
|
||||
0x1.c4083529ddeb8p38
|
||||
0x1.ac3bb44cafe59p1
|
||||
0x1.6d66733b81b71p-11
|
||||
0x1.20beb78f7ceeep-16
|
||||
0x1.d285f704a02d5p-4
|
||||
0x1.bf37a3dc305b1p37
|
||||
-0x1.8852a20307706p1
|
||||
0x1.8129a11b33c67p31
|
||||
0x1.1b31565ac4d26p38
|
||||
0x1.efe3d79df1a25p0
|
||||
-0x1.df4fc61097087p34
|
||||
-0x1.801e6310f70c4p1
|
||||
0x1.de7fc178da718p1
|
||||
0x1.82cd96b74c33bp-3
|
||||
0x1.14ce177c73acbp2
|
||||
-0x1.b8bfa6f20bf6cp-4
|
||||
0x1.04ff06087395bp-9
|
||||
-0x1.8327b171d58abp-4
|
||||
-0x1.8cabe7b5327bap-3
|
||||
-0x1.82c492035cf5bp24
|
||||
-0x1.d85a267d87555p-24
|
||||
-0x1.efdc44b7fb121p24
|
||||
0x1.ea99c6cf2fd74p-17
|
||||
0x1.3fb6671f607b1p1
|
||||
0x1.97dce09249de2p-3
|
||||
-0x1.9dc4f0331f52cp43
|
||||
0x1.ea7d727d27334p41
|
||||
-0x1.ec9d516a85c75p-25
|
||||
-0x1.bb2176abaedd1p-3
|
||||
-0x1.71eeb273dd3adp-15
|
||||
-0x1.7be385146ccdep25
|
||||
0x1.c1f987ad8af62p-6
|
||||
0x1.2159279f1c89ap2
|
||||
-0x1.4805b43babc89p-17
|
||||
-0x1.c16834d0d845ap-20
|
||||
0x1.c52f537caeb0ep10
|
||||
0x1.14d5e5a6c66f8p52
|
||||
0x1.2f929423ad32fp0
|
||||
0x1.e9ce62b513428p-4
|
||||
-0x1.8a14f3724eb37p32
|
||||
0x1.64013151734fdp3
|
||||
-0x1.9090f39f49889p23
|
||||
0x1.be6b47a137a52p-12
|
||||
0x1.59a42749fd7c3p1
|
||||
0x1.8603f544b0976p-15
|
||||
-0x1.4d2ba3dfaeb93p-2
|
||||
-0x1.7d770619d5bc3p12
|
||||
0x1.edfb87aaee9b1p1
|
||||
-0x1.f23d94e870be7p-4
|
||||
-0x1.21500514f25d3p41
|
||||
0x1.cb8712f937eedp-15
|
||||
0x1.fb47c7a69d8a4p-24
|
||||
0x1.f1c904cd2e471p-12
|
||||
-0x1.31e6e3b7073f8p0
|
||||
-0x1.facd32a72c5a8p2
|
||||
-0x1.9823a41a9780ap-3
|
||||
0x1.3db1f5e2a9a51p51
|
||||
0x1.6344057f1cca6p-1
|
||||
-0x1.8be6128041ebfp-13
|
||||
0x1.6f07c272d7fe9p38
|
||||
-0x1.fd48060bf89bfp-5
|
||||
-0x1.82eb1727ca16ep-2
|
||||
0x1.26e0a24f2ec11p-18
|
||||
-0x1.74a1c0cb9d677p-14
|
||||
-0x1.bb0c36f1bb121p0
|
||||
-0x1.56a4873461187p1
|
||||
-0x1.d01e65e325d8dp2
|
||||
-0x1.5250308bc28a5p36
|
||||
-0x1.83c6f31f2de0fp-24
|
||||
-0x1.41ae76e29ab40p1
|
||||
-0x1.d738a56bac094p1
|
||||
0x1.1a5247926ba82p-14
|
||||
0x1.d703938b24ac4p-22
|
||||
-0x1.cc5566621df4fp-4
|
||||
-0x1.4144e3f175873p-4
|
||||
0x1.a41e208bd59c2p-4
|
||||
-0x1.8588a53e4e022p8
|
||||
0x1.cf4331e97df52p-27
|
||||
-0x1.d70843f5b2a7bp-8
|
||||
-0x1.b1a912cdf744ep-3
|
||||
0x1.ad44072bba2efp-15
|
||||
-0x1.735cf794885b0p25
|
||||
-0x1.94d98257a7443p-4
|
||||
-0x1.61dac14e8c1f2p1
|
||||
0x1.f71585bdc20e7p-20
|
||||
-0x1.3338f2e1ebed7p-2
|
||||
-0x1.044ab29dd3fd8p-1
|
||||
0x1.b230868e79405p-25
|
||||
0x1.c3539439a1ce3p15
|
||||
-0x1.2998d58d65498p-4
|
||||
0x1.7273d75dd90f5p0
|
||||
-0x1.6214d3e6a209fp32
|
||||
-0x1.3b2aa66ea6fd8p-3
|
||||
-0x1.6cc910ca7817ap-4
|
||||
-0x1.1194f4be56f5bp28
|
||||
-0x1.6dc3114d423c9p2
|
||||
-0x1.b447e098a3c6fp18
|
||||
-0x1.705865523468cp15
|
||||
-0x1.8e6752f060479p38
|
||||
-0x1.ebe665ab9b23ap3
|
||||
0x1.df6ee1073afd0p32
|
||||
-0x1.35ce11e0f4a42p5
|
||||
0x1.7c26f0a48edd9p-3
|
||||
0x1.af1996c678e0dp28
|
||||
0x1.c4ea4704b4de2p2
|
||||
0x1.697b37d6b070dp19
|
||||
0x1.49fa574ba1eccp52
|
||||
-0x1.695ee7cc1ce8ep48
|
||||
-0x1.169c757dd823dp-23
|
||||
0x1.207273ac379a1p-4
|
||||
0x1.7c2dc5c85d916p23
|
||||
0x1.fe02e67c4ccbfp-24
|
||||
0x1.accc401e13286p49
|
||||
-0x1.af3426c709c78p-18
|
||||
-0x1.ab2ca07faba33p-4
|
||||
0x1.aeaaf4f90a9c1p-4
|
||||
-0x1.84f781f4efe2cp-9
|
||||
-0x1.d885871aa2240p-9
|
||||
-0x1.a618720ac58c4p-22
|
||||
-0x1.9b995257a7ee5p-6
|
||||
-0x1.f68b46a30839ep-18
|
||||
0x1.e1443653f9257p3
|
||||
0x1.ce1a94d5c772cp-22
|
||||
0x1.b24255d0a3ce2p38
|
||||
0x1.2eaa6690d786ep2
|
||||
0x1.b5bb45a608da6p0
|
||||
-0x1.ead7509b0d69ep26
|
||||
0x1.86fa30e0b406ep3
|
||||
-0x1.acd451c3cb8b6p49
|
||||
# atan slow path with 144bit precision
|
||||
0x1.000000c5cba86p0
|
||||
0x1.000001883003ap0
|
||||
0x1.00000dfb2b674p0
|
||||
# atan slowest path at 768 bits
|
||||
# Implemented in sysdeps/ieee754/dbl-64/mpatan.c
|
||||
## name: 144bits
|
||||
## name: 768bits
|
||||
0x1.000000c5cba87p0
|
||||
0x1.000001883003bp0
|
||||
0x1.00000dfb2b675p0
|
||||
|
||||
@@ -1,203 +0,0 @@
|
||||
## args: double
|
||||
## ret: double
|
||||
## includes: math.h
|
||||
0x1.5a2730bacd94ap-1
|
||||
-0x1.b57eb40fc048ep-21
|
||||
-0x1.c0b185fb450e2p-17
|
||||
-0x1.bd6e1642bb727p-1
|
||||
-0x1.4cfdd35756bc5p-10
|
||||
0x1.aadb5767b3ae4p-1
|
||||
0x1.827ab42a1416dp-1
|
||||
0x1.6d4e56dd0ff53p-14
|
||||
0x1.667d8313f78d2p-1
|
||||
0x1.672230c640ef3p-1
|
||||
-0x1.35ec261f6be52p-19
|
||||
0x1.9cf3279d8ff3ep-21
|
||||
-0x1.a60896128036fp-1
|
||||
0x1.ad5067d5aa573p-1
|
||||
-0x1.8a4421ee0d23ap-1
|
||||
0x1.aba153a252f9bp-14
|
||||
-0x1.2498611880effp-1
|
||||
-0x1.aa2c423f024dep-26
|
||||
-0x1.43d972a3632b8p-1
|
||||
0x1.12d690cf283ebp-25
|
||||
-0x1.eec6a3a873b98p-1
|
||||
-0x1.987b43a58457ap-21
|
||||
0x1.96a646ec9ba90p-11
|
||||
0x1.b961f358d8f43p-3
|
||||
-0x1.51d594fababdep-1
|
||||
-0x1.72a777e07e732p-8
|
||||
-0x1.21fcd11e4d773p-1
|
||||
-0x1.094ea21018a32p-1
|
||||
-0x1.79ea722d33e33p-9
|
||||
0x1.c63fc48261538p-5
|
||||
0x1.b1c0b7e618a20p-3
|
||||
-0x1.9957f1ba37225p-19
|
||||
-0x1.ecc6037c6538ap-21
|
||||
0x1.7e0bc46e556bcp-1
|
||||
0x1.4e7cd59b97811p-22
|
||||
-0x1.6b2773f7bf9c1p-27
|
||||
0x1.db9e07d2c1d81p-1
|
||||
0x1.293835cf8c06bp-1
|
||||
0x1.f59e8473488f7p-1
|
||||
0x1.094c253414b65p-22
|
||||
-0x1.922cb3b58f124p-3
|
||||
0x1.8a9b4773d8067p-1
|
||||
0x1.59e1848e51b3fp-1
|
||||
-0x1.77eb61d6b55b3p-1
|
||||
0x1.63e245bf37393p-1
|
||||
-0x1.8adb670e973d8p-1
|
||||
-0x1.c34f8232a8efap-1
|
||||
0x1.83f2e5bd4e680p-25
|
||||
-0x1.6b8d336fb28b2p-1
|
||||
-0x1.f50ce1076f808p-23
|
||||
0x1.ceb5a49139809p-19
|
||||
-0x1.3d0616e8d067dp-11
|
||||
-0x1.5ff057a79950ap-1
|
||||
0x1.263f96335fa00p-25
|
||||
0x1.5d5fa0d6d5003p-9
|
||||
-0x1.5070a3937a84bp-7
|
||||
-0x1.299707cfa0a5ap-5
|
||||
-0x1.64f623f5a4713p-3
|
||||
0x1.2bc994ee38c37p-3
|
||||
-0x1.e27d9435b978ap-1
|
||||
0x1.8092d58d5c790p-21
|
||||
-0x1.9c31372efb7c2p-25
|
||||
-0x1.b3e4409bf591ap-11
|
||||
-0x1.fc9e4603f0a42p-16
|
||||
0x1.7d4f167842e1ep-1
|
||||
0x1.d220d2dea0517p-25
|
||||
-0x1.f327d6a043438p-9
|
||||
0x1.0fbf54939b136p-16
|
||||
-0x1.9d4c17b3aa3e3p-18
|
||||
-0x1.6ab736c8be0aep-5
|
||||
0x1.ecff81aec235cp-1
|
||||
-0x1.102122d6bf984p-1
|
||||
-0x1.44a7f0d39a7cbp-18
|
||||
0x1.369d17b6b92d9p-1
|
||||
0x1.2c1ec48113977p-1
|
||||
0x1.b2a4a2cd6ddbfp-1
|
||||
0x1.1aa8449c2cce7p-18
|
||||
-0x1.2083e1015b457p-1
|
||||
-0x1.1589761b30c7bp-1
|
||||
0x1.e3c782bba8f90p-1
|
||||
-0x1.e08b0317d404dp-1
|
||||
0x1.290f1622d1939p-8
|
||||
0x1.7edf2261fcf95p-1
|
||||
-0x1.521241688012fp-2
|
||||
-0x1.0307d4e8caa52p-18
|
||||
-0x1.ccb366715602cp-1
|
||||
-0x1.95aa45bfdf88bp-1
|
||||
0x1.83b6d2241735cp-13
|
||||
0x1.4977776659f91p-21
|
||||
0x1.265e670e3a504p-1
|
||||
0x1.857de2b5f1f7cp-1
|
||||
-0x1.6e69d509bec68p-24
|
||||
0x1.d4f0109417b1ap-1
|
||||
0x1.9ab2842033f1fp-15
|
||||
-0x1.17d9b0f3c22a2p-1
|
||||
0x1.75a321c41a6b0p-1
|
||||
0x1.53a5d3faa91ffp-1
|
||||
-0x1.618c00bcdbb72p-1
|
||||
0x1.e99bd19956904p-1
|
||||
-0x1.89c34195ab10dp-21
|
||||
-0x1.82b1234ed4accp-21
|
||||
0x1.6b0486d8d09fbp-1
|
||||
-0x1.4259822aefa37p-1
|
||||
-0x1.ecfff733e7bb3p-2
|
||||
-0x1.90eac37875516p-1
|
||||
-0x1.ba38b666e3abap-6
|
||||
0x1.1ebbb6284200ap-22
|
||||
0x1.6c2ee1790a8b6p-1
|
||||
-0x1.0c2d8105dd990p-1
|
||||
-0x1.6d7264d3662ffp-1
|
||||
-0x1.43fe90e13fc36p-4
|
||||
0x1.46eb6152db91dp-10
|
||||
0x1.e4e26333b349ep-4
|
||||
-0x1.96ef543f5383cp-1
|
||||
0x1.47dca56a5b223p-1
|
||||
0x1.08ea668aed516p-4
|
||||
0x1.ef8f3428ca661p-6
|
||||
0x1.5b2b8480c515fp-10
|
||||
-0x1.2762d191e5fa5p-1
|
||||
0x1.508d56e0f5ca9p-1
|
||||
-0x1.2f616558f0888p-24
|
||||
0x1.0260d42d27c09p-11
|
||||
-0x1.0988f69b99e16p-1
|
||||
-0x1.d35697fcfb7b6p-14
|
||||
0x1.ffaf01135dec7p-1
|
||||
0x1.0afa01afd6afep-1
|
||||
0x1.c7cbb635b5af3p-6
|
||||
-0x1.23eb629a0abe4p-1
|
||||
-0x1.b87e61aeac49bp-1
|
||||
0x1.1646f4a28d191p-18
|
||||
0x1.4cd3a045b9783p-1
|
||||
-0x1.5c7a8599ffe9ap-14
|
||||
-0x1.9457a34399b4ap-1
|
||||
0x1.a154f6f6548e8p-1
|
||||
0x1.ba8ad1105bb80p-6
|
||||
0x1.af9176505fbeep-1
|
||||
-0x1.430563677bff8p-8
|
||||
0x1.a2a2d2a0778c3p-1
|
||||
0x1.df4c731f44b97p-1
|
||||
-0x1.d049e60c0ecd3p-23
|
||||
-0x1.325e341d79998p-1
|
||||
0x1.3da4954669e1fp-27
|
||||
-0x1.88d501c9b4a1bp-8
|
||||
0x1.f41c064c0c9bdp-1
|
||||
-0x1.2e7715356184dp-16
|
||||
-0x1.ab8a55eb84adfp-1
|
||||
-0x1.b5e7918f752d5p-1
|
||||
-0x1.c958c1faf2e05p-12
|
||||
-0x1.0a0b95fda6377p-1
|
||||
0x1.b05f4635c8e79p-1
|
||||
0x1.a216642c8c3c6p-8
|
||||
0x1.3049c686e99b7p-27
|
||||
0x1.e5ea44ec320c1p-1
|
||||
-0x1.884175facb7a0p-5
|
||||
0x1.45aa62e647503p-13
|
||||
-0x1.634bc7ff5c615p-1
|
||||
0x1.b68125750b075p-9
|
||||
-0x1.97abf0534746cp-15
|
||||
0x1.f687e58a3b36ap-5
|
||||
-0x1.1040e1ed1d1e7p-25
|
||||
-0x1.6ba8e7fc4221fp-10
|
||||
0x1.16e38001e0edbp-1
|
||||
0x1.df2ad20740b3dp-26
|
||||
-0x1.8e1172ae8c333p-1
|
||||
-0x1.b22640bb7e540p-19
|
||||
-0x1.fa5552ca0ed82p-13
|
||||
-0x1.e8ad873f75a2dp-1
|
||||
0x1.c91491a1a5938p-26
|
||||
-0x1.4ec4473b27d56p-1
|
||||
0x1.5f1862dba68cbp-1
|
||||
-0x1.dce0e6290bc85p-1
|
||||
0x1.fa68d22f5773bp-1
|
||||
-0x1.919486a495542p-1
|
||||
0x1.d303d564c000fp-1
|
||||
-0x1.afff55716fe0bp-23
|
||||
0x1.28b7d3631da7ap-16
|
||||
0x1.9ca493208bbdep-1
|
||||
-0x1.542a05a6b369fp-1
|
||||
-0x1.f7e79460fc57ep-7
|
||||
0x1.bb029019558b5p-15
|
||||
0x1.bba002729f3d6p-1
|
||||
0x1.1ada3533fa957p-1
|
||||
-0x1.896d956b5743fp-21
|
||||
-0x1.3a30147e08f69p-1
|
||||
0x1.25644490a1259p-14
|
||||
-0x1.4ef3744b5e468p-4
|
||||
0x1.04dac7a84b2d7p-1
|
||||
0x1.d46464683c4f8p-1
|
||||
0x1.9c4674b85fc58p-9
|
||||
-0x1.da6bd2cb0a530p-1
|
||||
-0x1.eb2076f05f6f8p-1
|
||||
0x1.4aeba21a72c73p-11
|
||||
0x1.af7910337420fp-6
|
||||
0x1.04ad609a3e62bp-1
|
||||
0x1.eafe16a4433afp-1
|
||||
0x1.1c65e51ff0cacp-1
|
||||
-0x1.4eb61140c3e34p-1
|
||||
-0x1.693d851f3cfeep-10
|
||||
0x1.254d73366914dp-2
|
||||
-0x1.ff34f15f5e3e6p-3
|
||||
@@ -1,20 +0,0 @@
|
||||
/* Measure bcopy functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_BCOPY
|
||||
#include "bench-memmove.c"
|
||||
@@ -1,19 +0,0 @@
|
||||
/* Measure bzero functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
#define TEST_BZERO
|
||||
#include "bench-memset.c"
|
||||
@@ -1,302 +0,0 @@
|
||||
/* Benchmark malloc and free functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <pthread.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "bench-timing.h"
|
||||
#include "json-lib.h"
|
||||
|
||||
/* Benchmark duration in seconds. */
|
||||
#define BENCHMARK_DURATION 60
|
||||
#define RAND_SEED 88
|
||||
|
||||
#ifndef NUM_THREADS
|
||||
# define NUM_THREADS 1
|
||||
#endif
|
||||
|
||||
/* Maximum memory that can be allocated at any one time is:
|
||||
|
||||
NUM_THREADS * WORKING_SET_SIZE * MAX_ALLOCATION_SIZE
|
||||
|
||||
However due to the distribution of the random block sizes
|
||||
the typical amount allocated will be much smaller. */
|
||||
#define WORKING_SET_SIZE 1024
|
||||
|
||||
#define MIN_ALLOCATION_SIZE 4
|
||||
#define MAX_ALLOCATION_SIZE 32768
|
||||
|
||||
/* Get a random block size with an inverse square distribution. */
|
||||
static unsigned int
|
||||
get_block_size (unsigned int rand_data)
|
||||
{
|
||||
/* Inverse square. */
|
||||
const float exponent = -2;
|
||||
/* Minimum value of distribution. */
|
||||
const float dist_min = MIN_ALLOCATION_SIZE;
|
||||
/* Maximum value of distribution. */
|
||||
const float dist_max = MAX_ALLOCATION_SIZE;
|
||||
|
||||
float min_pow = powf (dist_min, exponent + 1);
|
||||
float max_pow = powf (dist_max, exponent + 1);
|
||||
|
||||
float r = (float) rand_data / RAND_MAX;
|
||||
|
||||
return (unsigned int) powf ((max_pow - min_pow) * r + min_pow,
|
||||
1 / (exponent + 1));
|
||||
}
|
||||
|
||||
#define NUM_BLOCK_SIZES 8000
|
||||
#define NUM_OFFSETS ((WORKING_SET_SIZE) * 4)
|
||||
|
||||
static unsigned int random_block_sizes[NUM_BLOCK_SIZES];
|
||||
static unsigned int random_offsets[NUM_OFFSETS];
|
||||
|
||||
static void
|
||||
init_random_values (void)
|
||||
{
|
||||
for (size_t i = 0; i < NUM_BLOCK_SIZES; i++)
|
||||
random_block_sizes[i] = get_block_size (rand ());
|
||||
|
||||
for (size_t i = 0; i < NUM_OFFSETS; i++)
|
||||
random_offsets[i] = rand () % WORKING_SET_SIZE;
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
get_random_block_size (unsigned int *state)
|
||||
{
|
||||
unsigned int idx = *state;
|
||||
|
||||
if (idx >= NUM_BLOCK_SIZES - 1)
|
||||
idx = 0;
|
||||
else
|
||||
idx++;
|
||||
|
||||
*state = idx;
|
||||
|
||||
return random_block_sizes[idx];
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
get_random_offset (unsigned int *state)
|
||||
{
|
||||
unsigned int idx = *state;
|
||||
|
||||
if (idx >= NUM_OFFSETS - 1)
|
||||
idx = 0;
|
||||
else
|
||||
idx++;
|
||||
|
||||
*state = idx;
|
||||
|
||||
return random_offsets[idx];
|
||||
}
|
||||
|
||||
static volatile bool timeout;
|
||||
|
||||
static void
|
||||
alarm_handler (int signum)
|
||||
{
|
||||
timeout = true;
|
||||
}
|
||||
|
||||
/* Allocate and free blocks in a random order. */
|
||||
static size_t
|
||||
malloc_benchmark_loop (void **ptr_arr)
|
||||
{
|
||||
unsigned int offset_state = 0, block_state = 0;
|
||||
size_t iters = 0;
|
||||
|
||||
while (!timeout)
|
||||
{
|
||||
unsigned int next_idx = get_random_offset (&offset_state);
|
||||
unsigned int next_block = get_random_block_size (&block_state);
|
||||
|
||||
free (ptr_arr[next_idx]);
|
||||
|
||||
ptr_arr[next_idx] = malloc (next_block);
|
||||
|
||||
iters++;
|
||||
}
|
||||
|
||||
return iters;
|
||||
}
|
||||
|
||||
struct thread_args
|
||||
{
|
||||
size_t iters;
|
||||
void **working_set;
|
||||
timing_t elapsed;
|
||||
};
|
||||
|
||||
static void *
|
||||
benchmark_thread (void *arg)
|
||||
{
|
||||
struct thread_args *args = (struct thread_args *) arg;
|
||||
size_t iters;
|
||||
void *thread_set = args->working_set;
|
||||
timing_t start, stop;
|
||||
|
||||
TIMING_NOW (start);
|
||||
iters = malloc_benchmark_loop (thread_set);
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (args->elapsed, start, stop);
|
||||
args->iters = iters;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static timing_t
|
||||
do_benchmark (size_t num_threads, size_t *iters)
|
||||
{
|
||||
timing_t elapsed = 0;
|
||||
|
||||
if (num_threads == 1)
|
||||
{
|
||||
timing_t start, stop;
|
||||
void *working_set[WORKING_SET_SIZE];
|
||||
|
||||
memset (working_set, 0, sizeof (working_set));
|
||||
|
||||
TIMING_NOW (start);
|
||||
*iters = malloc_benchmark_loop (working_set);
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (elapsed, start, stop);
|
||||
}
|
||||
else
|
||||
{
|
||||
struct thread_args args[num_threads];
|
||||
void *working_set[num_threads][WORKING_SET_SIZE];
|
||||
pthread_t threads[num_threads];
|
||||
|
||||
memset (working_set, 0, sizeof (working_set));
|
||||
|
||||
*iters = 0;
|
||||
|
||||
for (size_t i = 0; i < num_threads; i++)
|
||||
{
|
||||
args[i].working_set = working_set[i];
|
||||
pthread_create(&threads[i], NULL, benchmark_thread, &args[i]);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < num_threads; i++)
|
||||
{
|
||||
pthread_join(threads[i], NULL);
|
||||
TIMING_ACCUM (elapsed, args[i].elapsed);
|
||||
*iters += args[i].iters;
|
||||
}
|
||||
}
|
||||
return elapsed;
|
||||
}
|
||||
|
||||
static void usage(const char *name)
|
||||
{
|
||||
fprintf (stderr, "%s: <num_threads>\n", name);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
timing_t cur;
|
||||
size_t iters = 0, num_threads = 1;
|
||||
unsigned long res;
|
||||
json_ctx_t json_ctx;
|
||||
double d_total_s, d_total_i;
|
||||
struct sigaction act;
|
||||
|
||||
if (argc == 1)
|
||||
num_threads = 1;
|
||||
else if (argc == 2)
|
||||
{
|
||||
long ret;
|
||||
|
||||
errno = 0;
|
||||
ret = strtol(argv[1], NULL, 10);
|
||||
|
||||
if (errno || ret == 0)
|
||||
usage(argv[0]);
|
||||
|
||||
num_threads = ret;
|
||||
}
|
||||
else
|
||||
usage(argv[0]);
|
||||
|
||||
init_random_values ();
|
||||
|
||||
json_init (&json_ctx, 0, stdout);
|
||||
|
||||
json_document_begin (&json_ctx);
|
||||
|
||||
json_attr_string (&json_ctx, "timing_type", TIMING_TYPE);
|
||||
|
||||
json_attr_object_begin (&json_ctx, "functions");
|
||||
|
||||
json_attr_object_begin (&json_ctx, "malloc");
|
||||
|
||||
json_attr_object_begin (&json_ctx, "");
|
||||
|
||||
TIMING_INIT (res);
|
||||
|
||||
(void) res;
|
||||
|
||||
memset (&act, 0, sizeof (act));
|
||||
act.sa_handler = &alarm_handler;
|
||||
|
||||
sigaction (SIGALRM, &act, NULL);
|
||||
|
||||
alarm (BENCHMARK_DURATION);
|
||||
|
||||
cur = do_benchmark (num_threads, &iters);
|
||||
|
||||
struct rusage usage;
|
||||
getrusage(RUSAGE_SELF, &usage);
|
||||
|
||||
d_total_s = cur;
|
||||
d_total_i = iters;
|
||||
|
||||
json_attr_double (&json_ctx, "duration", d_total_s);
|
||||
json_attr_double (&json_ctx, "iterations", d_total_i);
|
||||
json_attr_double (&json_ctx, "time_per_iteration", d_total_s / d_total_i);
|
||||
json_attr_double (&json_ctx, "max_rss", usage.ru_maxrss);
|
||||
|
||||
json_attr_double (&json_ctx, "threads", num_threads);
|
||||
json_attr_double (&json_ctx, "min_size", MIN_ALLOCATION_SIZE);
|
||||
json_attr_double (&json_ctx, "max_size", MAX_ALLOCATION_SIZE);
|
||||
json_attr_double (&json_ctx, "random_seed", RAND_SEED);
|
||||
|
||||
json_attr_object_end (&json_ctx);
|
||||
|
||||
json_attr_object_end (&json_ctx);
|
||||
|
||||
json_attr_object_end (&json_ctx);
|
||||
|
||||
json_document_end (&json_ctx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,285 +0,0 @@
|
||||
/* Measure math inline functions.
|
||||
Copyright (C) 2015-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define SIZE 1024
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "math-inlines"
|
||||
#define TEST_FUNCTION test_main ()
|
||||
#include "bench-timing.h"
|
||||
#include "json-lib.h"
|
||||
#include "bench-util.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define BOOLTEST(func) \
|
||||
static int __attribute__((noinline)) \
|
||||
func ## _f (double d, int i) \
|
||||
{ \
|
||||
if (func (d)) \
|
||||
return (int) d + i; \
|
||||
else \
|
||||
return 5; \
|
||||
} \
|
||||
static int \
|
||||
func ## _t (volatile double *p, size_t n, size_t iters) \
|
||||
{ \
|
||||
int i, j; \
|
||||
int res = 0; \
|
||||
for (j = 0; j < iters; j++) \
|
||||
for (i = 0; i < n; i++) \
|
||||
if (func ## _f (p[i] * 2.0, i) != 0) \
|
||||
res += 5; \
|
||||
return res; \
|
||||
}
|
||||
|
||||
#define VALUETEST(func) \
|
||||
static int __attribute__((noinline)) \
|
||||
func ## _f (double d) \
|
||||
{ \
|
||||
return func (d); \
|
||||
} \
|
||||
static int \
|
||||
func ## _t (volatile double *p, size_t n, size_t iters) \
|
||||
{ \
|
||||
int i, j; \
|
||||
int res = 0; \
|
||||
for (j = 0; j < iters; j++) \
|
||||
for (i = 0; i < n; i++) \
|
||||
res += func ## _f (p[i] * 2.0); \
|
||||
return res; \
|
||||
}
|
||||
|
||||
typedef union
|
||||
{
|
||||
double value;
|
||||
uint64_t word;
|
||||
} ieee_double_shape_type;
|
||||
|
||||
#define EXTRACT_WORDS64(i,d) \
|
||||
do { \
|
||||
ieee_double_shape_type gh_u; \
|
||||
gh_u.value = (d); \
|
||||
(i) = gh_u.word; \
|
||||
} while (0)
|
||||
|
||||
/* Inlines similar to existing math_private.h versions. */
|
||||
|
||||
static __always_inline int
|
||||
__isnan_inl (double d)
|
||||
{
|
||||
uint64_t di;
|
||||
EXTRACT_WORDS64 (di, d);
|
||||
return (di & 0x7fffffffffffffffull) > 0x7ff0000000000000ull;
|
||||
}
|
||||
|
||||
static __always_inline int
|
||||
__isinf_ns2 (double d)
|
||||
{
|
||||
uint64_t di;
|
||||
EXTRACT_WORDS64 (di, d);
|
||||
return (di & 0x7fffffffffffffffull) == 0x7ff0000000000000ull;
|
||||
}
|
||||
|
||||
static __always_inline int
|
||||
__finite_inl (double d)
|
||||
{
|
||||
uint64_t di;
|
||||
EXTRACT_WORDS64 (di, d);
|
||||
return (di & 0x7fffffffffffffffull) < 0x7ff0000000000000ull;
|
||||
}
|
||||
|
||||
#define __isnormal_inl(X) (__fpclassify (X) == FP_NORMAL)
|
||||
|
||||
/* Inlines for the builtin functions. */
|
||||
|
||||
#define __isnan_builtin(X) __builtin_isnan (X)
|
||||
#define __isinf_ns_builtin(X) __builtin_isinf (X)
|
||||
#define __isinf_builtin(X) __builtin_isinf_sign (X)
|
||||
#define __isfinite_builtin(X) __builtin_isfinite (X)
|
||||
#define __isnormal_builtin(X) __builtin_isnormal (X)
|
||||
#define __fpclassify_builtin(X) __builtin_fpclassify (FP_NAN, FP_INFINITE, \
|
||||
FP_NORMAL, FP_SUBNORMAL, FP_ZERO, (X))
|
||||
|
||||
static double __attribute ((noinline))
|
||||
kernel_standard (double x, double y, int z)
|
||||
{
|
||||
return x * y + z;
|
||||
}
|
||||
|
||||
volatile double rem1 = 2.5;
|
||||
|
||||
static __always_inline double
|
||||
remainder_test1 (double x)
|
||||
{
|
||||
double y = rem1;
|
||||
if (((__builtin_expect (y == 0.0, 0) && !__isnan_inl (x))
|
||||
|| (__builtin_expect (__isinf_ns2 (x), 0) && !__isnan_inl (y))))
|
||||
return kernel_standard (x, y, 10);
|
||||
|
||||
return remainder (x, y);
|
||||
}
|
||||
|
||||
static __always_inline double
|
||||
remainder_test2 (double x)
|
||||
{
|
||||
double y = rem1;
|
||||
if (((__builtin_expect (y == 0.0, 0) && !__builtin_isnan (x))
|
||||
|| (__builtin_expect (__builtin_isinf (x), 0) && !__builtin_isnan (y))))
|
||||
return kernel_standard (x, y, 10);
|
||||
|
||||
return remainder (x, y);
|
||||
}
|
||||
|
||||
/* Create test functions for each possibility. */
|
||||
|
||||
BOOLTEST (__isnan)
|
||||
BOOLTEST (__isnan_inl)
|
||||
BOOLTEST (__isnan_builtin)
|
||||
BOOLTEST (isnan)
|
||||
|
||||
BOOLTEST (__isinf)
|
||||
BOOLTEST (__isinf_builtin)
|
||||
BOOLTEST (__isinf_ns2)
|
||||
BOOLTEST (__isinf_ns_builtin)
|
||||
BOOLTEST (isinf)
|
||||
|
||||
BOOLTEST (__finite)
|
||||
BOOLTEST (__finite_inl)
|
||||
BOOLTEST (__isfinite_builtin)
|
||||
BOOLTEST (isfinite)
|
||||
|
||||
BOOLTEST (__isnormal_inl)
|
||||
BOOLTEST (__isnormal_builtin)
|
||||
BOOLTEST (isnormal)
|
||||
|
||||
VALUETEST (__fpclassify)
|
||||
VALUETEST (__fpclassify_builtin)
|
||||
VALUETEST (fpclassify)
|
||||
|
||||
VALUETEST (remainder_test1)
|
||||
VALUETEST (remainder_test2)
|
||||
|
||||
typedef int (*proto_t) (volatile double *p, size_t n, size_t iters);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *name;
|
||||
proto_t fn;
|
||||
} impl_t;
|
||||
|
||||
#define IMPL(name) { #name, name ## _t }
|
||||
|
||||
static impl_t test_list[] =
|
||||
{
|
||||
IMPL (__isnan),
|
||||
IMPL (__isnan_inl),
|
||||
IMPL (__isnan_builtin),
|
||||
IMPL (isnan),
|
||||
|
||||
IMPL (__isinf),
|
||||
IMPL (__isinf_ns2),
|
||||
IMPL (__isinf_ns_builtin),
|
||||
IMPL (__isinf_builtin),
|
||||
IMPL (isinf),
|
||||
|
||||
IMPL (__finite),
|
||||
IMPL (__finite_inl),
|
||||
IMPL (__isfinite_builtin),
|
||||
IMPL (isfinite),
|
||||
|
||||
IMPL (__isnormal_inl),
|
||||
IMPL (__isnormal_builtin),
|
||||
IMPL (isnormal),
|
||||
|
||||
IMPL (__fpclassify),
|
||||
IMPL (__fpclassify_builtin),
|
||||
IMPL (fpclassify),
|
||||
|
||||
IMPL (remainder_test1),
|
||||
IMPL (remainder_test2)
|
||||
};
|
||||
|
||||
static void
|
||||
do_one_test (json_ctx_t *json_ctx, proto_t test_fn, volatile double *arr,
|
||||
size_t len, const char *testname)
|
||||
{
|
||||
size_t iters = 500;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
json_attr_object_begin (json_ctx, testname);
|
||||
|
||||
TIMING_NOW (start);
|
||||
test_fn (arr, len, iters);
|
||||
TIMING_NOW (stop);
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
json_attr_double (json_ctx, "duration", cur);
|
||||
json_attr_double (json_ctx, "iterations", iters);
|
||||
json_attr_double (json_ctx, "mean", cur / iters);
|
||||
json_attr_object_end (json_ctx);
|
||||
}
|
||||
|
||||
static volatile double arr1[SIZE];
|
||||
static volatile double arr2[SIZE];
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
json_ctx_t json_ctx;
|
||||
size_t i;
|
||||
|
||||
bench_start ();
|
||||
|
||||
json_init (&json_ctx, 2, stdout);
|
||||
json_attr_object_begin (&json_ctx, TEST_NAME);
|
||||
|
||||
/* Create 2 test arrays, one with 10% zeroes, 10% negative values,
|
||||
79% positive values and 1% infinity/NaN. The other contains
|
||||
50% inf, 50% NaN. This relies on rand behaving correctly. */
|
||||
|
||||
for (i = 0; i < SIZE; i++)
|
||||
{
|
||||
int x = rand () & 255;
|
||||
arr1[i] = (x < 25) ? 0.0 : ((x < 50) ? -1 : 100);
|
||||
if (x == 255) arr1[i] = __builtin_inf ();
|
||||
if (x == 254) arr1[i] = __builtin_nan ("0");
|
||||
arr2[i] = (x < 128) ? __builtin_inf () : __builtin_nan ("0");
|
||||
}
|
||||
|
||||
for (i = 0; i < sizeof (test_list) / sizeof (test_list[0]); i++)
|
||||
{
|
||||
json_attr_object_begin (&json_ctx, test_list[i].name);
|
||||
do_one_test (&json_ctx, test_list[i].fn, arr2, SIZE, "inf/nan");
|
||||
json_attr_object_end (&json_ctx);
|
||||
}
|
||||
|
||||
for (i = 0; i < sizeof (test_list) / sizeof (test_list[0]); i++)
|
||||
{
|
||||
json_attr_object_begin (&json_ctx, test_list[i].name);
|
||||
do_one_test (&json_ctx, test_list[i].fn, arr1, SIZE, "normal");
|
||||
json_attr_object_end (&json_ctx);
|
||||
}
|
||||
|
||||
json_attr_object_end (&json_ctx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include "bench-util.c"
|
||||
#include "../test-skeleton.c"
|
||||
@@ -1,163 +0,0 @@
|
||||
/* Measure memccpy functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "memccpy"
|
||||
#include "bench-string.h"
|
||||
|
||||
void *simple_memccpy (void *, const void *, int, size_t);
|
||||
void *stupid_memccpy (void *, const void *, int, size_t);
|
||||
|
||||
IMPL (stupid_memccpy, 0)
|
||||
IMPL (simple_memccpy, 0)
|
||||
IMPL (memccpy, 1)
|
||||
|
||||
void *
|
||||
simple_memccpy (void *dst, const void *src, int c, size_t n)
|
||||
{
|
||||
const char *s = src;
|
||||
char *d = dst;
|
||||
|
||||
while (n-- > 0)
|
||||
if ((*d++ = *s++) == (char) c)
|
||||
return d;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *
|
||||
stupid_memccpy (void *dst, const void *src, int c, size_t n)
|
||||
{
|
||||
void *p = memchr (src, c, n);
|
||||
|
||||
if (p != NULL)
|
||||
return mempcpy (dst, src, p - src + 1);
|
||||
|
||||
memcpy (dst, src, n);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
typedef void *(*proto_t) (void *, const void *, int c, size_t);
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, void *dst, const void *src, int c, size_t len,
|
||||
size_t n)
|
||||
{
|
||||
void *expect = len > n ? NULL : (char *) dst + len;
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
if (CALL (impl, dst, src, c, n) != expect)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %p %p", impl->name,
|
||||
CALL (impl, dst, src, c, n), expect);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (memcmp (dst, src, len > n ? n : len) != 0)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s", impl->name);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, dst, src, c, n);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, int c, size_t len, size_t n,
|
||||
int max_char)
|
||||
{
|
||||
size_t i;
|
||||
char *s1, *s2;
|
||||
|
||||
align1 &= 7;
|
||||
if (align1 + len >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 7;
|
||||
if (align2 + len >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (char *) (buf1 + align1);
|
||||
s2 = (char *) (buf2 + align2);
|
||||
|
||||
for (i = 0; i < len - 1; ++i)
|
||||
{
|
||||
s1[i] = 32 + 23 * i % (max_char - 32);
|
||||
if (s1[i] == (char) c)
|
||||
--s1[i];
|
||||
}
|
||||
s1[len - 1] = c;
|
||||
for (i = len; i + align1 < page_size && i < len + 64; ++i)
|
||||
s1[i] = 32 + 32 * i % (max_char - 32);
|
||||
|
||||
printf ("Length %4zd, n %4zd, char %d, alignment %2zd/%2zd:", len, n, c, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s2, s1, c, len, n);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%28s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i, i, 12, 16, 16, 127);
|
||||
do_test (i, i, 23, 16, 16, 255);
|
||||
do_test (i, 2 * i, 28, 16, 16, 127);
|
||||
do_test (2 * i, i, 31, 16, 16, 255);
|
||||
do_test (8 - i, 2 * i, 1, 1 << i, 2 << i, 127);
|
||||
do_test (2 * i, 8 - i, 17, 2 << i, 1 << i, 127);
|
||||
do_test (8 - i, 2 * i, 0, 1 << i, 2 << i, 255);
|
||||
do_test (2 * i, 8 - i, i, 2 << i, 1 << i, 255);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (0, 0, i, 4 << i, 8 << i, 127);
|
||||
do_test (0, 0, i, 16 << i, 8 << i, 127);
|
||||
do_test (8 - i, 2 * i, i, 4 << i, 8 << i, 127);
|
||||
do_test (8 - i, 2 * i, i, 16 << i, 8 << i, 127);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,156 +0,0 @@
|
||||
/* Measure memchr functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef WIDE
|
||||
# define CHAR char
|
||||
# define SMALL_CHAR 127
|
||||
#else
|
||||
# include <wchar.h>
|
||||
# define CHAR wchar_t
|
||||
# define SMALL_CHAR 1273
|
||||
#endif /* WIDE */
|
||||
|
||||
#ifndef USE_AS_MEMRCHR
|
||||
# define TEST_MAIN
|
||||
# ifndef WIDE
|
||||
# define TEST_NAME "memchr"
|
||||
# else
|
||||
# define TEST_NAME "wmemchr"
|
||||
# endif /* WIDE */
|
||||
# include "bench-string.h"
|
||||
|
||||
# ifndef WIDE
|
||||
# define MEMCHR memchr
|
||||
# define SIMPLE_MEMCHR simple_memchr
|
||||
# else
|
||||
# define MEMCHR wmemchr
|
||||
# define SIMPLE_MEMCHR simple_wmemchr
|
||||
# endif /* WIDE */
|
||||
|
||||
typedef CHAR *(*proto_t) (const CHAR *, int, size_t);
|
||||
CHAR *SIMPLE_MEMCHR (const CHAR *, int, size_t);
|
||||
|
||||
IMPL (SIMPLE_MEMCHR, 0)
|
||||
IMPL (MEMCHR, 1)
|
||||
|
||||
CHAR *
|
||||
SIMPLE_MEMCHR (const CHAR *s, int c, size_t n)
|
||||
{
|
||||
while (n--)
|
||||
if (*s++ == (CHAR) c)
|
||||
return (CHAR *) s - 1;
|
||||
return NULL;
|
||||
}
|
||||
#endif /* !USE_AS_MEMRCHR */
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, const CHAR *s, int c, size_t n, CHAR *exp_res)
|
||||
{
|
||||
CHAR *res = CALL (impl, s, c, n);
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
if (res != exp_res)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %p %p", impl->name,
|
||||
res, exp_res);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, s, c, n);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align, size_t pos, size_t len, int seek_char)
|
||||
{
|
||||
size_t i;
|
||||
CHAR *result;
|
||||
|
||||
align &= 7;
|
||||
if ((align + len) * sizeof (CHAR) >= page_size)
|
||||
return;
|
||||
|
||||
CHAR *buf = (CHAR *) (buf1);
|
||||
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
buf[align + i] = 1 + 23 * i % SMALL_CHAR;
|
||||
if (buf[align + i] == seek_char)
|
||||
buf[align + i] = seek_char + 1;
|
||||
}
|
||||
buf[align + len] = 0;
|
||||
|
||||
if (pos < len)
|
||||
{
|
||||
buf[align + pos] = seek_char;
|
||||
buf[align + len] = -seek_char;
|
||||
result = (CHAR *) (buf + align + pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = NULL;
|
||||
buf[align + len] = seek_char;
|
||||
}
|
||||
|
||||
printf ("Length %4zd, alignment %2zd:", pos, align);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, (CHAR *) (buf + align), seek_char, len, result);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%20s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (0, 16 << i, 2048, 23);
|
||||
do_test (i, 64, 256, 23);
|
||||
do_test (0, 16 << i, 2048, 0);
|
||||
do_test (i, 64, 256, 0);
|
||||
}
|
||||
for (i = 1; i < 32; ++i)
|
||||
{
|
||||
do_test (0, i, i + 1, 23);
|
||||
do_test (0, i, i + 1, 0);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,178 +0,0 @@
|
||||
/* Measure memcmp functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#ifdef WIDE
|
||||
# define TEST_NAME "wmemcmp"
|
||||
#else
|
||||
# define TEST_NAME "memcmp"
|
||||
#endif
|
||||
#include "bench-string.h"
|
||||
#ifdef WIDE
|
||||
# include <inttypes.h>
|
||||
# include <wchar.h>
|
||||
|
||||
# define MEMCMP wmemcmp
|
||||
# define MEMCPY wmemcpy
|
||||
# define SIMPLE_MEMCMP simple_wmemcmp
|
||||
# define CHAR wchar_t
|
||||
# define UCHAR wchar_t
|
||||
# define CHARBYTES 4
|
||||
# define CHAR__MIN WCHAR_MIN
|
||||
# define CHAR__MAX WCHAR_MAX
|
||||
int
|
||||
simple_wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n)
|
||||
{
|
||||
int ret = 0;
|
||||
/* Warning!
|
||||
wmemcmp has to use SIGNED comparison for elements.
|
||||
memcmp has to use UNSIGNED comparison for elemnts.
|
||||
*/
|
||||
while (n-- && (ret = *s1 < *s2 ? -1 : *s1 == *s2 ? 0 : 1) == 0) {s1++; s2++;}
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
# include <limits.h>
|
||||
|
||||
# define MEMCMP memcmp
|
||||
# define MEMCPY memcpy
|
||||
# define SIMPLE_MEMCMP simple_memcmp
|
||||
# define CHAR char
|
||||
# define MAX_CHAR 255
|
||||
# define UCHAR unsigned char
|
||||
# define CHARBYTES 1
|
||||
# define CHAR__MIN CHAR_MIN
|
||||
# define CHAR__MAX CHAR_MAX
|
||||
|
||||
int
|
||||
simple_memcmp (const char *s1, const char *s2, size_t n)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
while (n-- && (ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) == 0);
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
typedef int (*proto_t) (const CHAR *, const CHAR *, size_t);
|
||||
|
||||
IMPL (SIMPLE_MEMCMP, 0)
|
||||
IMPL (MEMCMP, 1)
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t len,
|
||||
int exp_result)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, s1, s2, len);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len, int exp_result)
|
||||
{
|
||||
size_t i;
|
||||
CHAR *s1, *s2;
|
||||
|
||||
if (len == 0)
|
||||
return;
|
||||
|
||||
align1 &= 63;
|
||||
if (align1 + (len + 1) * CHARBYTES >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 63;
|
||||
if (align2 + (len + 1) * CHARBYTES >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (CHAR *) (buf1 + align1);
|
||||
s2 = (CHAR *) (buf2 + align2);
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % CHAR__MAX;
|
||||
|
||||
s1[len] = align1;
|
||||
s2[len] = align2;
|
||||
s2[len - 1] -= exp_result;
|
||||
|
||||
printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s1, s2, len, exp_result);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 1; i < 16; ++i)
|
||||
{
|
||||
do_test (i * CHARBYTES, i * CHARBYTES, i, 0);
|
||||
do_test (i * CHARBYTES, i * CHARBYTES, i, 1);
|
||||
do_test (i * CHARBYTES, i * CHARBYTES, i, -1);
|
||||
}
|
||||
|
||||
for (i = 0; i < 16; ++i)
|
||||
{
|
||||
do_test (0, 0, i, 0);
|
||||
do_test (0, 0, i, 1);
|
||||
do_test (0, 0, i, -1);
|
||||
}
|
||||
|
||||
for (i = 1; i < 10; ++i)
|
||||
{
|
||||
do_test (0, 0, 2 << i, 0);
|
||||
do_test (0, 0, 2 << i, 1);
|
||||
do_test (0, 0, 2 << i, -1);
|
||||
do_test (0, 0, 16 << i, 0);
|
||||
do_test ((8 - i) * CHARBYTES, (2 * i) * CHARBYTES, 16 << i, 0);
|
||||
do_test (0, 0, 16 << i, 1);
|
||||
do_test (0, 0, 16 << i, -1);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 0);
|
||||
do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 1);
|
||||
do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, -1);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,123 +0,0 @@
|
||||
/* Measure memcpy functions with large data sizes.
|
||||
Copyright (C) 2016-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef MEMCPY_RESULT
|
||||
# define MEMCPY_RESULT(dst, len) dst
|
||||
# define START_SIZE (64 * 1024)
|
||||
# define MIN_PAGE_SIZE (getpagesize () + 32 * 1024 * 1024)
|
||||
# define TEST_MAIN
|
||||
# define TEST_NAME "memcpy"
|
||||
# define TIMEOUT (20 * 60)
|
||||
# include "bench-string.h"
|
||||
|
||||
IMPL (memcpy, 1)
|
||||
#endif
|
||||
|
||||
typedef char *(*proto_t) (char *, const char *, size_t);
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, char *dst, const char *src,
|
||||
size_t len)
|
||||
{
|
||||
size_t i, iters = 16;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
/* Must clear the destination buffer updated by the previous run. */
|
||||
for (i = 0; i < len; i++)
|
||||
dst[i] = 0;
|
||||
|
||||
if (CALL (impl, dst, src, len) != MEMCPY_RESULT (dst, len))
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %p %p", impl->name,
|
||||
CALL (impl, dst, src, len), MEMCPY_RESULT (dst, len));
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (memcmp (dst, src, len) != 0)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"",
|
||||
impl->name, dst, src);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, dst, src, len);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len)
|
||||
{
|
||||
size_t i, j;
|
||||
char *s1, *s2;
|
||||
|
||||
align1 &= 63;
|
||||
if (align1 + len >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 63;
|
||||
if (align2 + len >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (char *) (buf1 + align1);
|
||||
s2 = (char *) (buf2 + align2);
|
||||
|
||||
for (i = 0, j = 1; i < len; i++, j += 23)
|
||||
s1[i] = j;
|
||||
|
||||
printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s2, s1, len);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = START_SIZE; i <= MIN_PAGE_SIZE; i <<= 1)
|
||||
{
|
||||
do_test (0, 0, i + 7);
|
||||
do_test (0, 3, i + 15);
|
||||
do_test (3, 0, i + 31);
|
||||
do_test (3, 5, i + 63);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,169 +0,0 @@
|
||||
/* Measure memcpy functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef MEMCPY_RESULT
|
||||
# define MEMCPY_RESULT(dst, len) dst
|
||||
# define MIN_PAGE_SIZE 131072
|
||||
# define TEST_MAIN
|
||||
# define TEST_NAME "memcpy"
|
||||
# include "bench-string.h"
|
||||
|
||||
char *simple_memcpy (char *, const char *, size_t);
|
||||
char *builtin_memcpy (char *, const char *, size_t);
|
||||
|
||||
IMPL (simple_memcpy, 0)
|
||||
IMPL (builtin_memcpy, 0)
|
||||
IMPL (memcpy, 1)
|
||||
|
||||
char *
|
||||
simple_memcpy (char *dst, const char *src, size_t n)
|
||||
{
|
||||
char *ret = dst;
|
||||
while (n--)
|
||||
*dst++ = *src++;
|
||||
return ret;
|
||||
}
|
||||
|
||||
char *
|
||||
builtin_memcpy (char *dst, const char *src, size_t n)
|
||||
{
|
||||
return __builtin_memcpy (dst, src, n);
|
||||
}
|
||||
#endif
|
||||
|
||||
typedef char *(*proto_t) (char *, const char *, size_t);
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, char *dst, const char *src,
|
||||
size_t len)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
/* Must clear the destination buffer set by the previous run. */
|
||||
for (i = 0; i < len; i++)
|
||||
dst[i] = 0;
|
||||
|
||||
if (CALL (impl, dst, src, len) != MEMCPY_RESULT (dst, len))
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %p %p", impl->name,
|
||||
CALL (impl, dst, src, len), MEMCPY_RESULT (dst, len));
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (memcmp (dst, src, len) != 0)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"",
|
||||
impl->name, dst, src);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, dst, src, len);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len)
|
||||
{
|
||||
size_t i, j;
|
||||
char *s1, *s2;
|
||||
|
||||
align1 &= 63;
|
||||
if (align1 + len >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 63;
|
||||
if (align2 + len >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (char *) (buf1 + align1);
|
||||
s2 = (char *) (buf2 + align2);
|
||||
|
||||
for (i = 0, j = 1; i < len; i++, j += 23)
|
||||
s1[i] = j;
|
||||
|
||||
printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s2, s1, len);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 0; i < 18; ++i)
|
||||
{
|
||||
do_test (0, 0, 1 << i);
|
||||
do_test (i, 0, 1 << i);
|
||||
do_test (0, i, 1 << i);
|
||||
do_test (i, i, 1 << i);
|
||||
}
|
||||
|
||||
for (i = 0; i < 32; ++i)
|
||||
{
|
||||
do_test (0, 0, i);
|
||||
do_test (i, 0, i);
|
||||
do_test (0, i, i);
|
||||
do_test (i, i, i);
|
||||
}
|
||||
|
||||
for (i = 3; i < 32; ++i)
|
||||
{
|
||||
if ((i & (i - 1)) == 0)
|
||||
continue;
|
||||
do_test (0, 0, 16 * i);
|
||||
do_test (i, 0, 16 * i);
|
||||
do_test (0, i, 16 * i);
|
||||
do_test (i, i, 16 * i);
|
||||
}
|
||||
|
||||
for (i = 32; i < 64; ++i)
|
||||
{
|
||||
do_test (0, 0, 32 * i);
|
||||
do_test (i, 0, 32 * i);
|
||||
do_test (0, i, 32 * i);
|
||||
do_test (i, i, 32 * i);
|
||||
}
|
||||
|
||||
do_test (0, 0, getpagesize ());
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,164 +0,0 @@
|
||||
/* Measure memmem functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "memmem"
|
||||
#define BUF1PAGES 20
|
||||
#define ITERATIONS 500
|
||||
#include "bench-string.h"
|
||||
|
||||
typedef char *(*proto_t) (const void *, size_t, const void *, size_t);
|
||||
void *simple_memmem (const void *, size_t, const void *, size_t);
|
||||
|
||||
IMPL (simple_memmem, 0)
|
||||
IMPL (memmem, 1)
|
||||
|
||||
void *
|
||||
simple_memmem (const void *haystack, size_t haystack_len, const void *needle,
|
||||
size_t needle_len)
|
||||
{
|
||||
const char *begin;
|
||||
const char *const last_possible
|
||||
= (const char *) haystack + haystack_len - needle_len;
|
||||
|
||||
if (needle_len == 0)
|
||||
/* The first occurrence of the empty string is deemed to occur at
|
||||
the beginning of the string. */
|
||||
return (void *) haystack;
|
||||
|
||||
/* Sanity check, otherwise the loop might search through the whole
|
||||
memory. */
|
||||
if (__glibc_unlikely (haystack_len < needle_len))
|
||||
return NULL;
|
||||
|
||||
for (begin = (const char *) haystack; begin <= last_possible; ++begin)
|
||||
if (begin[0] == ((const char *) needle)[0] &&
|
||||
!memcmp ((const void *) &begin[1],
|
||||
(const void *) ((const char *) needle + 1),
|
||||
needle_len - 1))
|
||||
return (void *) begin;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, const void *haystack, size_t haystack_len,
|
||||
const void *needle, size_t needle_len, const void *expected)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, haystack, haystack_len, needle, needle_len);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (const char *str, size_t len, size_t idx)
|
||||
{
|
||||
char tmpbuf[len];
|
||||
|
||||
memcpy (tmpbuf, buf1 + idx, len);
|
||||
memcpy (buf1 + idx, str, len);
|
||||
|
||||
printf ("String %s, offset %zd:", str, idx);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, buf1, BUF1PAGES * page_size, str, len, buf1 + idx);
|
||||
|
||||
memcpy (buf1 + idx, tmpbuf, len);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
static void
|
||||
do_random_tests (void)
|
||||
{
|
||||
for (size_t n = 0; n < ITERATIONS; ++n)
|
||||
{
|
||||
char tmpbuf[32];
|
||||
|
||||
size_t shift = random () % 11;
|
||||
size_t rel = random () % ((2 << (shift + 1)) * 64);
|
||||
size_t idx = MIN ((2 << shift) * 64 + rel, BUF1PAGES * page_size - 2);
|
||||
size_t len = random () % (sizeof (tmpbuf) - 1) + 1;
|
||||
len = MIN (len, BUF1PAGES * page_size - idx - 1);
|
||||
memcpy (tmpbuf, buf1 + idx, len);
|
||||
for (size_t i = random () % len / 2 + 1; i > 0; --i)
|
||||
{
|
||||
size_t off = random () % len;
|
||||
char ch = '0' + random () % 10;
|
||||
|
||||
buf1[idx + off] = ch;
|
||||
}
|
||||
|
||||
printf ("String %.*s, offset %zd:", (int) len, buf1 + idx, idx);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, buf1, BUF1PAGES * page_size, buf1 + idx, len,
|
||||
buf1 + idx);
|
||||
|
||||
putchar ('\n');
|
||||
|
||||
memcpy (buf1 + idx, tmpbuf, len);
|
||||
}
|
||||
}
|
||||
|
||||
static const char *const strs[] =
|
||||
{
|
||||
"00000", "00112233", "0123456789", "0000111100001111",
|
||||
"00000111110000022222", "012345678901234567890",
|
||||
"abc0", "aaaa0", "abcabc0"
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 0; i < BUF1PAGES * page_size; ++i)
|
||||
buf1[i] = 60 + random () % 32;
|
||||
|
||||
for (i = 0; i < sizeof (strs) / sizeof (strs[0]); ++i)
|
||||
for (size_t j = 0; j < 120; j += 7)
|
||||
{
|
||||
size_t len = strlen (strs[i]);
|
||||
|
||||
do_test (strs[i], len, j);
|
||||
}
|
||||
|
||||
do_random_tests ();
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,123 +0,0 @@
|
||||
/* Measure memmove functions with large data sizes.
|
||||
Copyright (C) 2016-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define BASE_PAGE_SIZE (1024 * 1024)
|
||||
#define START_SIZE (4 * 1024)
|
||||
#define MIN_PAGE_SIZE (getpagesize () + 16 * 1024 * 1024)
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "memmove"
|
||||
#define TIMEOUT (20 * 60)
|
||||
#include "bench-string.h"
|
||||
|
||||
IMPL (memmove, 1)
|
||||
|
||||
typedef char *(*proto_t) (char *, const char *, size_t);
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, char *dst, char *src, const char *orig_src,
|
||||
size_t len)
|
||||
{
|
||||
size_t i, iters = 16;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
/* This also clears the destination buffer updated by the previous
|
||||
run. */
|
||||
memcpy (src, orig_src, len);
|
||||
|
||||
char *res = CALL (impl, dst, src, len);
|
||||
if (res != dst)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %p %p", impl->name,
|
||||
res, dst);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (memcmp (dst, orig_src, len) != 0)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"",
|
||||
impl->name, dst, src);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, dst, src, len);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len)
|
||||
{
|
||||
size_t i, j;
|
||||
char *s1, *s2;
|
||||
|
||||
align1 &= 127;
|
||||
if (align1 + len >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 127;
|
||||
if (align2 + len >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (char *) (buf1 + align1);
|
||||
s2 = (char *) (buf2 + align2);
|
||||
|
||||
for (i = 0, j = 1; i < len; i++, j += 23)
|
||||
s1[i] = j;
|
||||
|
||||
printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s2, (char *) (buf2 + align1), s1, len);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = START_SIZE; i <= MIN_PAGE_SIZE; i <<= 1)
|
||||
{
|
||||
do_test (0, 64, i + 7);
|
||||
do_test (0, 3, i + 15);
|
||||
do_test (3, 0, i + 31);
|
||||
do_test (3, 7, i + 63);
|
||||
do_test (9, 5, i + 127);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,191 +0,0 @@
|
||||
/* Measure memmove functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#ifdef TEST_BCOPY
|
||||
# define TEST_NAME "bcopy"
|
||||
#else
|
||||
# define TEST_NAME "memmove"
|
||||
#endif
|
||||
#include "bench-string.h"
|
||||
|
||||
char *simple_memmove (char *, const char *, size_t);
|
||||
|
||||
#ifdef TEST_BCOPY
|
||||
typedef void (*proto_t) (const char *, char *, size_t);
|
||||
void simple_bcopy (const char *, char *, size_t);
|
||||
|
||||
IMPL (simple_bcopy, 0)
|
||||
IMPL (bcopy, 1)
|
||||
|
||||
void
|
||||
simple_bcopy (const char *src, char *dst, size_t n)
|
||||
{
|
||||
simple_memmove (dst, src, n);
|
||||
}
|
||||
#else
|
||||
typedef char *(*proto_t) (char *, const char *, size_t);
|
||||
|
||||
IMPL (simple_memmove, 0)
|
||||
IMPL (memmove, 1)
|
||||
#endif
|
||||
|
||||
char *
|
||||
inhibit_loop_to_libcall
|
||||
simple_memmove (char *dst, const char *src, size_t n)
|
||||
{
|
||||
char *ret = dst;
|
||||
if (src < dst)
|
||||
{
|
||||
dst += n;
|
||||
src += n;
|
||||
while (n--)
|
||||
*--dst = *--src;
|
||||
}
|
||||
else
|
||||
while (n--)
|
||||
*dst++ = *src++;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, char *dst, char *src, const char *orig_src,
|
||||
size_t len)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
/* This also clears the destination buffer set by the previous run. */
|
||||
memcpy (src, orig_src, len);
|
||||
#ifdef TEST_BCOPY
|
||||
CALL (impl, src, dst, len);
|
||||
#else
|
||||
char *res;
|
||||
|
||||
res = CALL (impl, dst, src, len);
|
||||
if (res != dst)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %p %p", impl->name,
|
||||
res, dst);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (memcmp (dst, orig_src, len) != 0)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"",
|
||||
impl->name, dst, src);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
#ifdef TEST_BCOPY
|
||||
CALL (impl, src, dst, len);
|
||||
#else
|
||||
CALL (impl, dst, src, len);
|
||||
#endif
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len)
|
||||
{
|
||||
size_t i, j;
|
||||
char *s1, *s2;
|
||||
|
||||
align1 &= 63;
|
||||
if (align1 + len >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 63;
|
||||
if (align2 + len >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (char *) (buf1 + align1);
|
||||
s2 = (char *) (buf2 + align2);
|
||||
|
||||
for (i = 0, j = 1; i < len; i++, j += 23)
|
||||
s1[i] = j;
|
||||
|
||||
printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s2, (char *) (buf2 + align1), s1, len);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
static int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 0; i < 14; ++i)
|
||||
{
|
||||
do_test (0, 32, 1 << i);
|
||||
do_test (32, 0, 1 << i);
|
||||
do_test (0, i, 1 << i);
|
||||
do_test (i, 0, 1 << i);
|
||||
}
|
||||
|
||||
for (i = 0; i < 32; ++i)
|
||||
{
|
||||
do_test (0, 32, i);
|
||||
do_test (32, 0, i);
|
||||
do_test (0, i, i);
|
||||
do_test (i, 0, i);
|
||||
}
|
||||
|
||||
for (i = 3; i < 32; ++i)
|
||||
{
|
||||
if ((i & (i - 1)) == 0)
|
||||
continue;
|
||||
do_test (0, 32, 16 * i);
|
||||
do_test (32, 0, 16 * i);
|
||||
do_test (0, i, 16 * i);
|
||||
do_test (i, 0, 16 * i);
|
||||
}
|
||||
|
||||
for (i = 32; i < 64; ++i)
|
||||
{
|
||||
do_test (0, 0, 32 * i);
|
||||
do_test (i, 0, 32 * i);
|
||||
do_test (0, i, 32 * i);
|
||||
do_test (i, i, 32 * i);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,37 +0,0 @@
|
||||
/* Measure mempcpy functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define MEMCPY_RESULT(dst, len) (dst) + (len)
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "mempcpy"
|
||||
#include "bench-string.h"
|
||||
|
||||
char *simple_mempcpy (char *, const char *, size_t);
|
||||
|
||||
IMPL (simple_mempcpy, 0)
|
||||
IMPL (mempcpy, 1)
|
||||
|
||||
char *
|
||||
simple_mempcpy (char *dst, const char *src, size_t n)
|
||||
{
|
||||
while (n--)
|
||||
*dst++ = *src++;
|
||||
return dst;
|
||||
}
|
||||
|
||||
#include "bench-memcpy.c"
|
||||
@@ -1,40 +0,0 @@
|
||||
/* Measure memrchr functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "memrchr"
|
||||
#include "bench-string.h"
|
||||
|
||||
typedef char *(*proto_t) (const char *, int, size_t);
|
||||
char *simple_memrchr (const char *, int, size_t);
|
||||
|
||||
IMPL (simple_memrchr, 0)
|
||||
IMPL (memrchr, 1)
|
||||
|
||||
char *
|
||||
simple_memrchr (const char *s, int c, size_t n)
|
||||
{
|
||||
s = s + n;
|
||||
while (n--)
|
||||
if (*--s == (char) c)
|
||||
return (char *) s;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define USE_AS_MEMRCHR
|
||||
#include "bench-memchr.c"
|
||||
@@ -1,134 +0,0 @@
|
||||
/* Measure memset functions with large data sizes.
|
||||
Copyright (C) 2016-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#ifndef WIDE
|
||||
# define TEST_NAME "memset"
|
||||
#else
|
||||
# define TEST_NAME "wmemset"
|
||||
#endif /* WIDE */
|
||||
#define START_SIZE (128 * 1024)
|
||||
#define MIN_PAGE_SIZE (getpagesize () + 64 * 1024 * 1024)
|
||||
#define TIMEOUT (20 * 60)
|
||||
#include "bench-string.h"
|
||||
|
||||
#ifndef WIDE
|
||||
# define MEMSET memset
|
||||
# define CHAR char
|
||||
# define SIMPLE_MEMSET simple_memset
|
||||
# define MEMCMP memcmp
|
||||
#else
|
||||
# include <wchar.h>
|
||||
# define MEMSET wmemset
|
||||
# define CHAR wchar_t
|
||||
# define SIMPLE_MEMSET simple_wmemset
|
||||
# define MEMCMP wmemcmp
|
||||
#endif /* WIDE */
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
IMPL (MEMSET, 1)
|
||||
|
||||
typedef CHAR *(*proto_t) (CHAR *, int, size_t);
|
||||
|
||||
CHAR *
|
||||
inhibit_loop_to_libcall
|
||||
SIMPLE_MEMSET (CHAR *s, int c, size_t n)
|
||||
{
|
||||
CHAR *r = s, *end = s + n;
|
||||
while (r < end)
|
||||
*r++ = c;
|
||||
return s;
|
||||
}
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n)
|
||||
{
|
||||
size_t i, iters = 16;
|
||||
timing_t start, stop, cur;
|
||||
CHAR *tstbuf = malloc (n * sizeof (*s));
|
||||
assert (tstbuf != NULL);
|
||||
|
||||
/* Must clear the destination buffer updated by the previous run. */
|
||||
for (i = 0; i < n; i++)
|
||||
s[i] = 0;
|
||||
|
||||
CHAR *res = CALL (impl, s, c, n);
|
||||
if (res != s
|
||||
|| SIMPLE_MEMSET (tstbuf, c, n) != tstbuf
|
||||
|| MEMCMP (s, tstbuf, n) != 0)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s", impl->name);
|
||||
ret = 1;
|
||||
free (tstbuf);
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, s, c, n);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
|
||||
free (tstbuf);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align, int c, size_t len)
|
||||
{
|
||||
align &= 63;
|
||||
if ((align + len) * sizeof (CHAR) > page_size)
|
||||
return;
|
||||
|
||||
printf ("Length %4zd, alignment %2zd, c %2d:", len, align, c);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, (CHAR *) (buf1) + align, c, len);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
int c;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%24s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
c = 65;
|
||||
for (i = START_SIZE; i <= MIN_PAGE_SIZE; i <<= 1)
|
||||
{
|
||||
do_test (0, c, i);
|
||||
do_test (3, c, i);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,193 +0,0 @@
|
||||
/* Measure memset functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#ifdef TEST_BZERO
|
||||
# define TEST_NAME "bzero"
|
||||
#else
|
||||
# ifndef WIDE
|
||||
# define TEST_NAME "memset"
|
||||
# else
|
||||
# define TEST_NAME "wmemset"
|
||||
# endif /* WIDE */
|
||||
#endif /* !TEST_BZERO */
|
||||
#define MIN_PAGE_SIZE 131072
|
||||
#include "bench-string.h"
|
||||
|
||||
#ifndef WIDE
|
||||
# define MEMSET memset
|
||||
# define CHAR char
|
||||
# define SIMPLE_MEMSET simple_memset
|
||||
# define MEMCMP memcmp
|
||||
#else
|
||||
# include <wchar.h>
|
||||
# define MEMSET wmemset
|
||||
# define CHAR wchar_t
|
||||
# define SIMPLE_MEMSET simple_wmemset
|
||||
# define MEMCMP wmemcmp
|
||||
#endif /* WIDE */
|
||||
|
||||
CHAR *SIMPLE_MEMSET (CHAR *, int, size_t);
|
||||
|
||||
#ifdef TEST_BZERO
|
||||
typedef void (*proto_t) (char *, size_t);
|
||||
void simple_bzero (char *, size_t);
|
||||
void builtin_bzero (char *, size_t);
|
||||
|
||||
IMPL (simple_bzero, 0)
|
||||
IMPL (builtin_bzero, 0)
|
||||
IMPL (bzero, 1)
|
||||
|
||||
void
|
||||
simple_bzero (char *s, size_t n)
|
||||
{
|
||||
SIMPLE_MEMSET (s, 0, n);
|
||||
}
|
||||
|
||||
void
|
||||
builtin_bzero (char *s, size_t n)
|
||||
{
|
||||
__builtin_bzero (s, n);
|
||||
}
|
||||
#else
|
||||
typedef CHAR *(*proto_t) (CHAR *, int, size_t);
|
||||
|
||||
IMPL (SIMPLE_MEMSET, 0)
|
||||
# ifndef WIDE
|
||||
char *builtin_memset (char *, int, size_t);
|
||||
IMPL (builtin_memset, 0)
|
||||
# endif /* !WIDE */
|
||||
IMPL (MEMSET, 1)
|
||||
|
||||
# ifndef WIDE
|
||||
char *
|
||||
builtin_memset (char *s, int c, size_t n)
|
||||
{
|
||||
return __builtin_memset (s, c, n);
|
||||
}
|
||||
# endif /* !WIDE */
|
||||
#endif /* !TEST_BZERO */
|
||||
|
||||
CHAR *
|
||||
inhibit_loop_to_libcall
|
||||
SIMPLE_MEMSET (CHAR *s, int c, size_t n)
|
||||
{
|
||||
CHAR *r = s, *end = s + n;
|
||||
while (r < end)
|
||||
*r++ = c;
|
||||
return s;
|
||||
}
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
CHAR tstbuf[n];
|
||||
#ifdef TEST_BZERO
|
||||
simple_bzero (tstbuf, n);
|
||||
CALL (impl, s, n);
|
||||
if (memcmp (s, tstbuf, n) != 0)
|
||||
#else
|
||||
CHAR *res = CALL (impl, s, c, n);
|
||||
if (res != s
|
||||
|| SIMPLE_MEMSET (tstbuf, c, n) != tstbuf
|
||||
|| MEMCMP (s, tstbuf, n) != 0)
|
||||
#endif /* !TEST_BZERO */
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s", impl->name);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
#ifdef TEST_BZERO
|
||||
CALL (impl, s, n);
|
||||
#else
|
||||
CALL (impl, s, c, n);
|
||||
#endif /* !TEST_BZERO */
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align, int c, size_t len)
|
||||
{
|
||||
align &= 63;
|
||||
if ((align + len) * sizeof (CHAR) > page_size)
|
||||
return;
|
||||
|
||||
printf ("Length %4zd, alignment %2zd, c %2d:", len, align, c);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, (CHAR *) (buf1) + align, c, len);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
int c = 0;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%24s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
#ifndef TEST_BZERO
|
||||
for (c = -65; c <= 130; c += 65)
|
||||
#endif
|
||||
{
|
||||
for (i = 0; i < 18; ++i)
|
||||
do_test (0, c, 1 << i);
|
||||
for (i = 1; i < 32; ++i)
|
||||
{
|
||||
do_test (i, c, i);
|
||||
if (i & (i - 1))
|
||||
do_test (0, c, i);
|
||||
}
|
||||
for (i = 32; i < 512; i+=32)
|
||||
{
|
||||
do_test (0, c, i);
|
||||
do_test (i, c, i);
|
||||
}
|
||||
do_test (1, c, 14);
|
||||
do_test (3, c, 1024);
|
||||
do_test (4, c, 64);
|
||||
do_test (2, c, 25);
|
||||
}
|
||||
for (i = 33; i <= 256; i += 4)
|
||||
{
|
||||
do_test (0, c, 32 * i);
|
||||
do_test (i, c, 32 * i);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -0,0 +1,44 @@
|
||||
/* Copyright (C) 2013 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
extern double modf (double, double *);
|
||||
|
||||
#define CALL_BENCH_FUNC(j, i) modf (in[j].arg0, &i);
|
||||
|
||||
struct args
|
||||
{
|
||||
double arg0;
|
||||
} in[] =
|
||||
{
|
||||
{ 42.42 },
|
||||
{ -42.42 }
|
||||
};
|
||||
|
||||
#define NUM_VARIANTS 1
|
||||
#define NUM_SAMPLES(v) (sizeof (in) / sizeof (struct args))
|
||||
|
||||
static volatile double ret = 0.0;
|
||||
#define BENCH_FUNC(v, j) \
|
||||
({ \
|
||||
double iptr; \
|
||||
ret = CALL_BENCH_FUNC (j, iptr); \
|
||||
})
|
||||
|
||||
#define FUNCNAME "modf"
|
||||
#define VARIANT(v) FUNCNAME "()"
|
||||
|
||||
#include "bench-skeleton.c"
|
||||
@@ -1,126 +0,0 @@
|
||||
/* Measure memchr functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "rawmemchr"
|
||||
#include "bench-string.h"
|
||||
|
||||
typedef char *(*proto_t) (const char *, int);
|
||||
char *simple_rawmemchr (const char *, int);
|
||||
|
||||
IMPL (simple_rawmemchr, 0)
|
||||
IMPL (rawmemchr, 1)
|
||||
|
||||
char *
|
||||
simple_rawmemchr (const char *s, int c)
|
||||
{
|
||||
while (1)
|
||||
if (*s++ == (char) c)
|
||||
return (char *) s - 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, const char *s, int c, char *exp_res)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
char *res = CALL (impl, s, c);
|
||||
if (res != exp_res)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %p %p", impl->name,
|
||||
res, exp_res);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, s, c);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align, size_t pos, size_t len, int seek_char)
|
||||
{
|
||||
size_t i;
|
||||
char *result;
|
||||
|
||||
align &= 7;
|
||||
if (align + len >= page_size)
|
||||
return;
|
||||
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
buf1[align + i] = 1 + 23 * i % 127;
|
||||
if (buf1[align + i] == seek_char)
|
||||
buf1[align + i] = seek_char + 1;
|
||||
}
|
||||
buf1[align + len] = 0;
|
||||
|
||||
assert (pos < len);
|
||||
|
||||
buf1[align + pos] = seek_char;
|
||||
buf1[align + len] = -seek_char;
|
||||
result = (char *) (buf1 + align + pos);
|
||||
|
||||
printf ("Length %4zd, alignment %2zd:", pos, align);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, (char *) (buf1 + align), seek_char, result);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%20s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 1; i < 7; ++i)
|
||||
{
|
||||
do_test (0, 16 << i, 2048, 23);
|
||||
do_test (i, 64, 256, 23);
|
||||
do_test (0, 16 << i, 2048, 0);
|
||||
do_test (i, 64, 256, 0);
|
||||
}
|
||||
for (i = 1; i < 32; ++i)
|
||||
{
|
||||
do_test (0, i, i + 1, 23);
|
||||
do_test (0, i, i + 1, 0);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
+22
-64
@@ -1,5 +1,5 @@
|
||||
/* Skeleton for benchmark programs.
|
||||
Copyright (C) 2013-2017 Free Software Foundation, Inc.
|
||||
Copyright (C) 2013 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
|
||||
@@ -18,15 +18,9 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <inttypes.h>
|
||||
#include "bench-timing.h"
|
||||
#include "json-lib.h"
|
||||
#include "bench-util.h"
|
||||
|
||||
#include "bench-util.c"
|
||||
|
||||
#define TIMESPEC_AFTER(a, b) \
|
||||
(((a).tv_sec == (b).tv_sec) ? \
|
||||
@@ -36,31 +30,19 @@ int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
unsigned long i, k;
|
||||
struct timespec runtime;
|
||||
timing_t start, end;
|
||||
bool detailed = false;
|
||||
json_ctx_t json_ctx;
|
||||
|
||||
if (argc == 2 && !strcmp (argv[1], "-d"))
|
||||
detailed = true;
|
||||
|
||||
bench_start ();
|
||||
struct timespec start, end, runtime;
|
||||
|
||||
memset (&runtime, 0, sizeof (runtime));
|
||||
memset (&start, 0, sizeof (start));
|
||||
memset (&end, 0, sizeof (end));
|
||||
|
||||
unsigned long iters, res;
|
||||
clock_getres (CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
|
||||
#ifdef BENCH_INIT
|
||||
BENCH_INIT ();
|
||||
#endif
|
||||
TIMING_INIT (res);
|
||||
|
||||
iters = 1000 * res;
|
||||
|
||||
json_init (&json_ctx, 2, stdout);
|
||||
|
||||
/* Begin function. */
|
||||
json_attr_object_begin (&json_ctx, FUNCNAME);
|
||||
/* Measure 1000 times the resolution of the clock. So for a 1ns resolution
|
||||
clock, we measure 1000 iterations of the function call at a time.
|
||||
Measurements close to the minimum clock resolution won't make much sense,
|
||||
but it's better than having nothing at all. */
|
||||
unsigned long iters = 1000 * start.tv_nsec;
|
||||
|
||||
for (int v = 0; v < NUM_VARIANTS; v++)
|
||||
{
|
||||
@@ -69,19 +51,19 @@ main (int argc, char **argv)
|
||||
runtime.tv_sec += DURATION;
|
||||
|
||||
double d_total_i = 0;
|
||||
timing_t total = 0, max = 0, min = 0x7fffffffffffffff;
|
||||
int64_t c = 0;
|
||||
uint64_t total = 0, max = 0, min = 0x7fffffffffffffff;
|
||||
while (1)
|
||||
{
|
||||
for (i = 0; i < NUM_SAMPLES (v); i++)
|
||||
{
|
||||
uint64_t cur;
|
||||
TIMING_NOW (start);
|
||||
clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
for (k = 0; k < iters; k++)
|
||||
BENCH_FUNC (v, i);
|
||||
TIMING_NOW (end);
|
||||
clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &end);
|
||||
|
||||
TIMING_DIFF (cur, start, end);
|
||||
uint64_t cur = (end.tv_nsec - start.tv_nsec
|
||||
+ ((end.tv_sec - start.tv_sec)
|
||||
* (uint64_t) 1000000000));
|
||||
|
||||
if (cur > max)
|
||||
max = cur;
|
||||
@@ -89,14 +71,10 @@ main (int argc, char **argv)
|
||||
if (cur < min)
|
||||
min = cur;
|
||||
|
||||
TIMING_ACCUM (total, cur);
|
||||
/* Accumulate timings for the value. In the end we will divide
|
||||
by the total iterations. */
|
||||
RESULT_ACCUM (cur, v, i, c * iters, (c + 1) * iters);
|
||||
total += cur;
|
||||
|
||||
d_total_i += iters;
|
||||
}
|
||||
c++;
|
||||
struct timespec curtime;
|
||||
|
||||
memset (&curtime, 0, sizeof (curtime));
|
||||
@@ -109,34 +87,14 @@ main (int argc, char **argv)
|
||||
double d_iters;
|
||||
|
||||
done:
|
||||
d_total_s = total;
|
||||
d_total_s = total * 1e-9;
|
||||
d_iters = iters;
|
||||
|
||||
/* Begin variant. */
|
||||
json_attr_object_begin (&json_ctx, VARIANT (v));
|
||||
|
||||
json_attr_double (&json_ctx, "duration", d_total_s);
|
||||
json_attr_double (&json_ctx, "iterations", d_total_i);
|
||||
json_attr_double (&json_ctx, "max", max / d_iters);
|
||||
json_attr_double (&json_ctx, "min", min / d_iters);
|
||||
json_attr_double (&json_ctx, "mean", d_total_s / d_total_i);
|
||||
|
||||
if (detailed)
|
||||
{
|
||||
json_array_begin (&json_ctx, "timings");
|
||||
|
||||
for (int i = 0; i < NUM_SAMPLES (v); i++)
|
||||
json_element_double (&json_ctx, RESULT (v, i));
|
||||
|
||||
json_array_end (&json_ctx);
|
||||
}
|
||||
|
||||
/* End variant. */
|
||||
json_attr_object_end (&json_ctx);
|
||||
printf ("%s: ITERS:%g: TOTAL:%gs, MAX:%gns, MIN:%gns, %g iter/s\n",
|
||||
VARIANT (v),
|
||||
d_total_i, d_total_s, max / d_iters, min / d_iters,
|
||||
d_total_i / d_total_s);
|
||||
}
|
||||
|
||||
/* End function. */
|
||||
json_attr_object_end (&json_ctx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
/* Measure stpcpy functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define STRCPY_RESULT(dst, len) ((dst) + (len))
|
||||
#define TEST_MAIN
|
||||
#ifndef WIDE
|
||||
# define TEST_NAME "stpcpy"
|
||||
#else
|
||||
# define TEST_NAME "wcpcpy"
|
||||
#endif /* WIDE */
|
||||
#include "bench-string.h"
|
||||
#ifndef WIDE
|
||||
# define CHAR char
|
||||
# define SIMPLE_STPCPY simple_stpcpy
|
||||
# define STPCPY stpcpy
|
||||
#else
|
||||
# include <wchar.h>
|
||||
# define CHAR wchar_t
|
||||
# define SIMPLE_STPCPY simple_wcpcpy
|
||||
# define STPCPY wcpcpy
|
||||
#endif /* WIDE */
|
||||
|
||||
CHAR *SIMPLE_STPCPY (CHAR *, const CHAR *);
|
||||
|
||||
IMPL (SIMPLE_STPCPY, 0)
|
||||
IMPL (STPCPY, 1)
|
||||
|
||||
CHAR *
|
||||
SIMPLE_STPCPY (CHAR *dst, const CHAR *src)
|
||||
{
|
||||
while ((*dst++ = *src++) != '\0');
|
||||
return dst - 1;
|
||||
}
|
||||
|
||||
#undef CHAR
|
||||
#include "bench-strcpy.c"
|
||||
@@ -1,45 +0,0 @@
|
||||
/* Measure stpcpy checking functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define STRCPY_RESULT(dst, len) ((dst) + (len))
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "stpcpy_chk"
|
||||
#include "bench-string.h"
|
||||
|
||||
extern void __attribute__ ((noreturn)) __chk_fail (void);
|
||||
char *simple_stpcpy_chk (char *, const char *, size_t);
|
||||
extern char *normal_stpcpy (char *, const char *, size_t)
|
||||
__asm ("stpcpy");
|
||||
extern char *__stpcpy_chk (char *, const char *, size_t);
|
||||
|
||||
IMPL (simple_stpcpy_chk, 0)
|
||||
IMPL (normal_stpcpy, 1)
|
||||
IMPL (__stpcpy_chk, 2)
|
||||
|
||||
char *
|
||||
simple_stpcpy_chk (char *dst, const char *src, size_t len)
|
||||
{
|
||||
if (! len)
|
||||
__chk_fail ();
|
||||
while ((*dst++ = *src++) != '\0')
|
||||
if (--len == 0)
|
||||
__chk_fail ();
|
||||
return dst - 1;
|
||||
}
|
||||
|
||||
#include "bench-strcpy_chk.c"
|
||||
@@ -1,78 +0,0 @@
|
||||
/* Measure stpncpy functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define STRNCPY_RESULT(dst, len, n) ((dst) + ((len) > (n) ? (n) : (len)))
|
||||
#define TEST_MAIN
|
||||
#ifndef WIDE
|
||||
# define TEST_NAME "stpncpy"
|
||||
#else
|
||||
# define TEST_NAME "wcpncpy"
|
||||
#endif /* WIDE */
|
||||
#include "bench-string.h"
|
||||
#ifndef WIDE
|
||||
# define CHAR char
|
||||
# define SIMPLE_STPNCPY simple_stpncpy
|
||||
# define STUPID_STPNCPY stupid_stpncpy
|
||||
# define STPNCPY stpncpy
|
||||
# define STRNLEN strnlen
|
||||
#else
|
||||
# include <wchar.h>
|
||||
# define CHAR wchar_t
|
||||
# define SIMPLE_STPNCPY simple_wcpncpy
|
||||
# define STUPID_STPNCPY stupid_wcpncpy
|
||||
# define STPNCPY wcpncpy
|
||||
# define STRNLEN wcsnlen
|
||||
#endif /* WIDE */
|
||||
|
||||
CHAR *SIMPLE_STPNCPY (CHAR *, const CHAR *, size_t);
|
||||
CHAR *STUPID_STPNCPY (CHAR *, const CHAR *, size_t);
|
||||
|
||||
IMPL (STUPID_STPNCPY, 0)
|
||||
IMPL (SIMPLE_STPNCPY, 0)
|
||||
IMPL (STPNCPY, 1)
|
||||
|
||||
CHAR *
|
||||
SIMPLE_STPNCPY (CHAR *dst, const CHAR *src, size_t n)
|
||||
{
|
||||
while (n--)
|
||||
if ((*dst++ = *src++) == '\0')
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < n; ++i)
|
||||
dst[i] = '\0';
|
||||
return dst - 1;
|
||||
}
|
||||
return dst;
|
||||
}
|
||||
|
||||
CHAR *
|
||||
STUPID_STPNCPY (CHAR *dst, const CHAR *src, size_t n)
|
||||
{
|
||||
size_t nc = STRNLEN (src, n);
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < nc; ++i)
|
||||
dst[i] = src[i];
|
||||
for (; i < n; ++i)
|
||||
dst[i] = '\0';
|
||||
return dst + nc;
|
||||
}
|
||||
|
||||
#undef CHAR
|
||||
#include "bench-strncpy.c"
|
||||
@@ -1,176 +0,0 @@
|
||||
/* Measure strcasecmp functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <ctype.h>
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "strcasecmp"
|
||||
#include "bench-string.h"
|
||||
|
||||
typedef int (*proto_t) (const char *, const char *);
|
||||
static int simple_strcasecmp (const char *, const char *);
|
||||
static int stupid_strcasecmp (const char *, const char *);
|
||||
|
||||
IMPL (stupid_strcasecmp, 0)
|
||||
IMPL (simple_strcasecmp, 0)
|
||||
IMPL (strcasecmp, 1)
|
||||
|
||||
static int
|
||||
simple_strcasecmp (const char *s1, const char *s2)
|
||||
{
|
||||
int ret;
|
||||
|
||||
while ((ret = ((unsigned char) tolower (*s1)
|
||||
- (unsigned char) tolower (*s2))) == 0
|
||||
&& *s1++)
|
||||
++s2;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
stupid_strcasecmp (const char *s1, const char *s2)
|
||||
{
|
||||
size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1;
|
||||
size_t n = ns1 < ns2 ? ns1 : ns2;
|
||||
int ret = 0;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if ((ret = ((unsigned char) tolower (*s1)
|
||||
- (unsigned char) tolower (*s2))) != 0)
|
||||
break;
|
||||
++s1;
|
||||
++s2;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
int result = CALL (impl, s1, s2);
|
||||
if ((exp_result == 0 && result != 0)
|
||||
|| (exp_result < 0 && result >= 0)
|
||||
|| (exp_result > 0 && result <= 0))
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %d %d", impl->name,
|
||||
result, exp_result);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, s1, s2);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len, int max_char,
|
||||
int exp_result)
|
||||
{
|
||||
size_t i;
|
||||
char *s1, *s2;
|
||||
|
||||
if (len == 0)
|
||||
return;
|
||||
|
||||
align1 &= 7;
|
||||
if (align1 + len + 1 >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 7;
|
||||
if (align2 + len + 1 >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (char *) (buf1 + align1);
|
||||
s2 = (char *) (buf2 + align2);
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
s1[i] = toupper (1 + 23 * i % max_char);
|
||||
s2[i] = tolower (s1[i]);
|
||||
}
|
||||
|
||||
s1[len] = s2[len] = 0;
|
||||
s1[len + 1] = 23;
|
||||
s2[len + 1] = 24 + exp_result;
|
||||
if ((s2[len - 1] == 'z' && exp_result == -1)
|
||||
|| (s2[len - 1] == 'a' && exp_result == 1))
|
||||
s1[len - 1] += exp_result;
|
||||
else
|
||||
s2[len - 1] -= exp_result;
|
||||
|
||||
printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s1, s2, exp_result);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 1; i < 16; ++i)
|
||||
{
|
||||
do_test (i, i, i, 127, 0);
|
||||
do_test (i, i, i, 127, 1);
|
||||
do_test (i, i, i, 127, -1);
|
||||
}
|
||||
|
||||
for (i = 1; i < 10; ++i)
|
||||
{
|
||||
do_test (0, 0, 2 << i, 127, 0);
|
||||
do_test (0, 0, 2 << i, 254, 0);
|
||||
do_test (0, 0, 2 << i, 127, 1);
|
||||
do_test (0, 0, 2 << i, 254, 1);
|
||||
do_test (0, 0, 2 << i, 127, -1);
|
||||
do_test (0, 0, 2 << i, 254, -1);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i, 2 * i, 8 << i, 127, 0);
|
||||
do_test (2 * i, i, 8 << i, 254, 0);
|
||||
do_test (i, 2 * i, 8 << i, 127, 1);
|
||||
do_test (2 * i, i, 8 << i, 254, 1);
|
||||
do_test (i, 2 * i, 8 << i, 127, -1);
|
||||
do_test (2 * i, i, 8 << i, 254, -1);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,180 +0,0 @@
|
||||
/* Measure strcasestr functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#define TEST_NAME "strcasestr"
|
||||
#include "bench-string.h"
|
||||
|
||||
|
||||
#define STRCASESTR simple_strcasestr
|
||||
#define NO_ALIAS
|
||||
#define __strncasecmp strncasecmp
|
||||
#include "../string/strcasestr.c"
|
||||
|
||||
|
||||
static char *
|
||||
stupid_strcasestr (const char *s1, const char *s2)
|
||||
{
|
||||
ssize_t s1len = strlen (s1);
|
||||
ssize_t s2len = strlen (s2);
|
||||
|
||||
if (s2len > s1len)
|
||||
return NULL;
|
||||
|
||||
for (ssize_t i = 0; i <= s1len - s2len; ++i)
|
||||
{
|
||||
size_t j;
|
||||
for (j = 0; j < s2len; ++j)
|
||||
if (tolower (s1[i + j]) != tolower (s2[j]))
|
||||
break;
|
||||
if (j == s2len)
|
||||
return (char *) s1 + i;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
typedef char *(*proto_t) (const char *, const char *);
|
||||
|
||||
IMPL (stupid_strcasestr, 0)
|
||||
IMPL (simple_strcasestr, 0)
|
||||
IMPL (strcasestr, 1)
|
||||
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, s1, s2);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len1, size_t len2,
|
||||
int fail)
|
||||
{
|
||||
char *s1 = (char *) (buf1 + align1);
|
||||
char *s2 = (char *) (buf2 + align2);
|
||||
|
||||
static const char d[] = "1234567890abcxyz";
|
||||
#define dl (sizeof (d) - 1)
|
||||
char *ss2 = s2;
|
||||
for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0)
|
||||
{
|
||||
size_t t = l > dl ? dl : l;
|
||||
ss2 = mempcpy (ss2, d, t);
|
||||
}
|
||||
s2[len2] = '\0';
|
||||
|
||||
if (fail)
|
||||
{
|
||||
char *ss1 = s1;
|
||||
for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0)
|
||||
{
|
||||
size_t t = l > dl ? dl : l;
|
||||
memcpy (ss1, d, t);
|
||||
++ss1[len2 > 7 ? 7 : len2 - 1];
|
||||
ss1 += t;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
memset (s1, '0', len1);
|
||||
for (size_t i = 0; i < len2; ++i)
|
||||
s1[len1 - len2 + i] = toupper (s2[i]);
|
||||
}
|
||||
s1[len1] = '\0';
|
||||
|
||||
printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:",
|
||||
len1, len2, align1, align2, fail ? "fail" : "found");
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
static int
|
||||
test_main (void)
|
||||
{
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (size_t klen = 2; klen < 32; ++klen)
|
||||
for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen)
|
||||
{
|
||||
do_test (0, 0, hlen, klen, 0);
|
||||
do_test (0, 0, hlen, klen, 1);
|
||||
do_test (0, 3, hlen, klen, 0);
|
||||
do_test (0, 3, hlen, klen, 1);
|
||||
do_test (0, 9, hlen, klen, 0);
|
||||
do_test (0, 9, hlen, klen, 1);
|
||||
do_test (0, 15, hlen, klen, 0);
|
||||
do_test (0, 15, hlen, klen, 1);
|
||||
|
||||
do_test (3, 0, hlen, klen, 0);
|
||||
do_test (3, 0, hlen, klen, 1);
|
||||
do_test (3, 3, hlen, klen, 0);
|
||||
do_test (3, 3, hlen, klen, 1);
|
||||
do_test (3, 9, hlen, klen, 0);
|
||||
do_test (3, 9, hlen, klen, 1);
|
||||
do_test (3, 15, hlen, klen, 0);
|
||||
do_test (3, 15, hlen, klen, 1);
|
||||
|
||||
do_test (9, 0, hlen, klen, 0);
|
||||
do_test (9, 0, hlen, klen, 1);
|
||||
do_test (9, 3, hlen, klen, 0);
|
||||
do_test (9, 3, hlen, klen, 1);
|
||||
do_test (9, 9, hlen, klen, 0);
|
||||
do_test (9, 9, hlen, klen, 1);
|
||||
do_test (9, 15, hlen, klen, 0);
|
||||
do_test (9, 15, hlen, klen, 1);
|
||||
|
||||
do_test (15, 0, hlen, klen, 0);
|
||||
do_test (15, 0, hlen, klen, 1);
|
||||
do_test (15, 3, hlen, klen, 0);
|
||||
do_test (15, 3, hlen, klen, 1);
|
||||
do_test (15, 9, hlen, klen, 0);
|
||||
do_test (15, 9, hlen, klen, 1);
|
||||
do_test (15, 15, hlen, klen, 0);
|
||||
do_test (15, 15, hlen, klen, 1);
|
||||
}
|
||||
|
||||
do_test (0, 0, page_size - 1, 16, 0);
|
||||
do_test (0, 0, page_size - 1, 16, 1);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,174 +0,0 @@
|
||||
/* Measure strcat functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#ifndef WIDE
|
||||
# define TEST_NAME "strcat"
|
||||
#else
|
||||
# define TEST_NAME "wcscat"
|
||||
#endif /* WIDE */
|
||||
#include "bench-string.h"
|
||||
|
||||
#ifndef WIDE
|
||||
# define STRCAT strcat
|
||||
# define CHAR char
|
||||
# define sfmt "s"
|
||||
# define SIMPLE_STRCAT simple_strcat
|
||||
# define STRLEN strlen
|
||||
# define STRCMP strcmp
|
||||
# define BIG_CHAR CHAR_MAX
|
||||
# define SMALL_CHAR 127
|
||||
#else
|
||||
# include <wchar.h>
|
||||
# define STRCAT wcscat
|
||||
# define CHAR wchar_t
|
||||
# define sfmt "ls"
|
||||
# define SIMPLE_STRCAT simple_wcscat
|
||||
# define STRLEN wcslen
|
||||
# define STRCMP wcscmp
|
||||
# define BIG_CHAR WCHAR_MAX
|
||||
# define SMALL_CHAR 1273
|
||||
#endif /* WIDE */
|
||||
|
||||
|
||||
typedef CHAR *(*proto_t) (CHAR *, const CHAR *);
|
||||
CHAR *SIMPLE_STRCAT (CHAR *, const CHAR *);
|
||||
|
||||
IMPL (SIMPLE_STRCAT, 0)
|
||||
IMPL (STRCAT, 1)
|
||||
|
||||
CHAR *
|
||||
SIMPLE_STRCAT (CHAR *dst, const CHAR *src)
|
||||
{
|
||||
CHAR *ret = dst;
|
||||
while (*dst++ != '\0');
|
||||
--dst;
|
||||
while ((*dst++ = *src++) != '\0');
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, CHAR *dst, const CHAR *src)
|
||||
{
|
||||
size_t k = STRLEN (dst), i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
if (CALL (impl, dst, src) != dst)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %p %p", impl->name,
|
||||
CALL (impl, dst, src), dst);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (STRCMP (dst + k, src) != 0)
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s dst \"%" sfmt "\" src \"%" sfmt "\"",
|
||||
impl->name, dst, src);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
dst[k] = '\0';
|
||||
CALL (impl, dst, src);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len1, size_t len2, int max_char)
|
||||
{
|
||||
size_t i;
|
||||
CHAR *s1, *s2;
|
||||
|
||||
align1 &= 7;
|
||||
if ((align1 + len1) * sizeof (CHAR) >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 7;
|
||||
if ((align2 + len1 + len2) * sizeof (CHAR) >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (CHAR *) (buf1) + align1;
|
||||
s2 = (CHAR *) (buf2) + align2;
|
||||
|
||||
for (i = 0; i < len1; ++i)
|
||||
s1[i] = 32 + 23 * i % (max_char - 32);
|
||||
s1[len1] = '\0';
|
||||
|
||||
for (i = 0; i < len2; i++)
|
||||
s2[i] = 32 + 23 * i % (max_char - 32);
|
||||
|
||||
printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len1, len2, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
{
|
||||
s2[len2] = '\0';
|
||||
do_one_test (impl, s2, s1);
|
||||
}
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%28s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 0; i < 16; ++i)
|
||||
{
|
||||
do_test (0, 0, i, i, SMALL_CHAR);
|
||||
do_test (0, 0, i, i, BIG_CHAR);
|
||||
do_test (0, i, i, i, SMALL_CHAR);
|
||||
do_test (i, 0, i, i, BIG_CHAR);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (0, 0, 8 << i, 8 << i, SMALL_CHAR);
|
||||
do_test (8 - i, 2 * i, 8 << i, 8 << i, SMALL_CHAR);
|
||||
do_test (0, 0, 8 << i, 2 << i, SMALL_CHAR);
|
||||
do_test (8 - i, 2 * i, 8 << i, 2 << i, SMALL_CHAR);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i, 2 * i, 8 << i, 1, SMALL_CHAR);
|
||||
do_test (2 * i, i, 8 << i, 1, BIG_CHAR);
|
||||
do_test (i, i, 8 << i, 10, SMALL_CHAR);
|
||||
do_test (i, i, 8 << i, 10, BIG_CHAR);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,210 +0,0 @@
|
||||
/* Measure STRCHR functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#ifndef WIDE
|
||||
# ifdef USE_FOR_STRCHRNUL
|
||||
# define TEST_NAME "strchrnul"
|
||||
# else
|
||||
# define TEST_NAME "strchr"
|
||||
# endif /* !USE_FOR_STRCHRNUL */
|
||||
#else
|
||||
# ifdef USE_FOR_STRCHRNUL
|
||||
# define TEST_NAME "wcschrnul"
|
||||
# else
|
||||
# define TEST_NAME "wcschr"
|
||||
# endif /* !USE_FOR_STRCHRNUL */
|
||||
#endif /* WIDE */
|
||||
#include "bench-string.h"
|
||||
|
||||
#ifndef WIDE
|
||||
# ifdef USE_FOR_STRCHRNUL
|
||||
# define STRCHR strchrnul
|
||||
# define stupid_STRCHR stupid_STRCHRNUL
|
||||
# define simple_STRCHR simple_STRCHRNUL
|
||||
# else
|
||||
# define STRCHR strchr
|
||||
# endif /* !USE_FOR_STRCHRNUL */
|
||||
# define STRLEN strlen
|
||||
# define CHAR char
|
||||
# define BIG_CHAR CHAR_MAX
|
||||
# define MIDDLE_CHAR 127
|
||||
# define SMALL_CHAR 23
|
||||
# define UCHAR unsigned char
|
||||
#else
|
||||
# include <wchar.h>
|
||||
# ifdef USE_FOR_STRCHRNUL
|
||||
# define STRCHR wcschrnul
|
||||
# define stupid_STRCHR stupid_WCSCHRNUL
|
||||
# define simple_STRCHR simple_WCSCHRNUL
|
||||
# else
|
||||
# define STRCHR wcschr
|
||||
# endif /* !USE_FOR_STRCHRNUL */
|
||||
# define STRLEN wcslen
|
||||
# define CHAR wchar_t
|
||||
# define BIG_CHAR WCHAR_MAX
|
||||
# define MIDDLE_CHAR 1121
|
||||
# define SMALL_CHAR 851
|
||||
# define UCHAR wchar_t
|
||||
#endif /* WIDE */
|
||||
|
||||
#ifdef USE_FOR_STRCHRNUL
|
||||
# define NULLRET(endptr) endptr
|
||||
#else
|
||||
# define NULLRET(endptr) NULL
|
||||
#endif /* !USE_FOR_STRCHRNUL */
|
||||
|
||||
|
||||
typedef CHAR *(*proto_t) (const CHAR *, int);
|
||||
|
||||
CHAR *
|
||||
simple_STRCHR (const CHAR *s, int c)
|
||||
{
|
||||
for (; *s != (CHAR) c; ++s)
|
||||
if (*s == '\0')
|
||||
return NULLRET ((CHAR *) s);
|
||||
return (CHAR *) s;
|
||||
}
|
||||
|
||||
CHAR *
|
||||
stupid_STRCHR (const CHAR *s, int c)
|
||||
{
|
||||
size_t n = STRLEN (s) + 1;
|
||||
|
||||
while (n--)
|
||||
if (*s++ == (CHAR) c)
|
||||
return (CHAR *) s - 1;
|
||||
return NULLRET ((CHAR *) s - 1);
|
||||
}
|
||||
|
||||
IMPL (stupid_STRCHR, 0)
|
||||
IMPL (simple_STRCHR, 0)
|
||||
IMPL (STRCHR, 1)
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, const CHAR *s, int c, const CHAR *exp_res)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, s, c);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char)
|
||||
/* For wcschr: align here means align not in bytes,
|
||||
but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t))
|
||||
len for wcschr here isn't in bytes but it's number of wchar_t symbols. */
|
||||
{
|
||||
size_t i;
|
||||
CHAR *result;
|
||||
CHAR *buf = (CHAR *) buf1;
|
||||
align &= 15;
|
||||
if ((align + len) * sizeof (CHAR) >= page_size)
|
||||
return;
|
||||
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
buf[align + i] = 32 + 23 * i % max_char;
|
||||
if (buf[align + i] == seek_char)
|
||||
buf[align + i] = seek_char + 1;
|
||||
else if (buf[align + i] == 0)
|
||||
buf[align + i] = 1;
|
||||
}
|
||||
buf[align + len] = 0;
|
||||
|
||||
if (pos < len)
|
||||
{
|
||||
buf[align + pos] = seek_char;
|
||||
result = buf + align + pos;
|
||||
}
|
||||
else if (seek_char == 0)
|
||||
result = buf + align + len;
|
||||
else
|
||||
result = NULLRET (buf + align + len);
|
||||
|
||||
printf ("Length %4zd, alignment in bytes %2zd:",
|
||||
pos, align * sizeof (CHAR));
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, buf + align, seek_char, result);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%20s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (0, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
|
||||
do_test (i, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i, 64, 256, SMALL_CHAR, MIDDLE_CHAR);
|
||||
do_test (i, 64, 256, SMALL_CHAR, BIG_CHAR);
|
||||
}
|
||||
|
||||
for (i = 0; i < 32; ++i)
|
||||
{
|
||||
do_test (0, i, i + 1, SMALL_CHAR, MIDDLE_CHAR);
|
||||
do_test (0, i, i + 1, SMALL_CHAR, BIG_CHAR);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (0, 16 << i, 2048, 0, MIDDLE_CHAR);
|
||||
do_test (i, 16 << i, 2048, 0, MIDDLE_CHAR);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i, 64, 256, 0, MIDDLE_CHAR);
|
||||
do_test (i, 64, 256, 0, BIG_CHAR);
|
||||
}
|
||||
|
||||
for (i = 0; i < 32; ++i)
|
||||
{
|
||||
do_test (0, i, i + 1, 0, MIDDLE_CHAR);
|
||||
do_test (0, i, i + 1, 0, BIG_CHAR);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,20 +0,0 @@
|
||||
/* Measure strchrnul function.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define USE_FOR_STRCHRNUL 1
|
||||
#include "bench-strchr.c"
|
||||
@@ -1,241 +0,0 @@
|
||||
/* Measure strcmp and wcscmp functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define TEST_MAIN
|
||||
#ifdef WIDE
|
||||
# define TEST_NAME "wcscmp"
|
||||
#else
|
||||
# define TEST_NAME "strcmp"
|
||||
#endif
|
||||
#include "bench-string.h"
|
||||
|
||||
#ifdef WIDE
|
||||
# include <wchar.h>
|
||||
|
||||
# define L(str) L##str
|
||||
# define STRCMP wcscmp
|
||||
# define STRCPY wcscpy
|
||||
# define STRLEN wcslen
|
||||
# define MEMCPY wmemcpy
|
||||
# define SIMPLE_STRCMP simple_wcscmp
|
||||
# define STUPID_STRCMP stupid_wcscmp
|
||||
# define CHAR wchar_t
|
||||
# define UCHAR wchar_t
|
||||
# define CHARBYTES 4
|
||||
# define CHARBYTESLOG 2
|
||||
# define CHARALIGN __alignof__ (CHAR)
|
||||
# define MIDCHAR 0x7fffffff
|
||||
# define LARGECHAR 0xfffffffe
|
||||
# define CHAR__MAX WCHAR_MAX
|
||||
# define CHAR__MIN WCHAR_MIN
|
||||
|
||||
/* Wcscmp uses signed semantics for comparison, not unsigned */
|
||||
/* Avoid using substraction since possible overflow */
|
||||
|
||||
int
|
||||
simple_wcscmp (const wchar_t *s1, const wchar_t *s2)
|
||||
{
|
||||
wchar_t c1, c2;
|
||||
do
|
||||
{
|
||||
c1 = *s1++;
|
||||
c2 = *s2++;
|
||||
if (c2 == L'\0')
|
||||
return c1 - c2;
|
||||
}
|
||||
while (c1 == c2);
|
||||
|
||||
return c1 < c2 ? -1 : 1;
|
||||
}
|
||||
|
||||
int
|
||||
stupid_wcscmp (const wchar_t *s1, const wchar_t *s2)
|
||||
{
|
||||
size_t ns1 = wcslen (s1) + 1;
|
||||
size_t ns2 = wcslen (s2) + 1;
|
||||
size_t n = ns1 < ns2 ? ns1 : ns2;
|
||||
int ret = 0;
|
||||
|
||||
wchar_t c1, c2;
|
||||
|
||||
while (n--) {
|
||||
c1 = *s1++;
|
||||
c2 = *s2++;
|
||||
if ((ret = c1 < c2 ? -1 : c1 == c2 ? 0 : 1) != 0)
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#else
|
||||
# include <limits.h>
|
||||
|
||||
# define L(str) str
|
||||
# define STRCMP strcmp
|
||||
# define STRCPY strcpy
|
||||
# define STRLEN strlen
|
||||
# define MEMCPY memcpy
|
||||
# define SIMPLE_STRCMP simple_strcmp
|
||||
# define STUPID_STRCMP stupid_strcmp
|
||||
# define CHAR char
|
||||
# define UCHAR unsigned char
|
||||
# define CHARBYTES 1
|
||||
# define CHARBYTESLOG 0
|
||||
# define CHARALIGN 1
|
||||
# define MIDCHAR 0x7f
|
||||
# define LARGECHAR 0xfe
|
||||
# define CHAR__MAX CHAR_MAX
|
||||
# define CHAR__MIN CHAR_MIN
|
||||
|
||||
/* Strcmp uses unsigned semantics for comparison. */
|
||||
int
|
||||
simple_strcmp (const char *s1, const char *s2)
|
||||
{
|
||||
int ret;
|
||||
|
||||
while ((ret = *(unsigned char *) s1 - *(unsigned char*) s2++) == 0 && *s1++);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
stupid_strcmp (const char *s1, const char *s2)
|
||||
{
|
||||
size_t ns1 = strlen (s1) + 1;
|
||||
size_t ns2 = strlen (s2) + 1;
|
||||
size_t n = ns1 < ns2 ? ns1 : ns2;
|
||||
int ret = 0;
|
||||
|
||||
while (n--)
|
||||
if ((ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) != 0)
|
||||
break;
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
typedef int (*proto_t) (const CHAR *, const CHAR *);
|
||||
|
||||
IMPL (STUPID_STRCMP, 1)
|
||||
IMPL (SIMPLE_STRCMP, 1)
|
||||
IMPL (STRCMP, 1)
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl,
|
||||
const CHAR *s1, const CHAR *s2,
|
||||
int exp_result)
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, s1, s2);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len, int max_char,
|
||||
int exp_result)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
CHAR *s1, *s2;
|
||||
|
||||
if (len == 0)
|
||||
return;
|
||||
|
||||
align1 &= 63;
|
||||
if (align1 + (len + 1) * CHARBYTES >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 63;
|
||||
if (align2 + (len + 1) * CHARBYTES >= page_size)
|
||||
return;
|
||||
|
||||
/* Put them close to the end of page. */
|
||||
i = align1 + CHARBYTES * (len + 2);
|
||||
s1 = (CHAR *) (buf1 + ((page_size - i) / 16 * 16) + align1);
|
||||
i = align2 + CHARBYTES * (len + 2);
|
||||
s2 = (CHAR *) (buf2 + ((page_size - i) / 16 * 16) + align2);
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char;
|
||||
|
||||
s1[len] = s2[len] = 0;
|
||||
s1[len + 1] = 23;
|
||||
s2[len + 1] = 24 + exp_result;
|
||||
s2[len - 1] -= exp_result;
|
||||
|
||||
printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s1, s2, exp_result);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 1; i < 32; ++i)
|
||||
{
|
||||
do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, 0);
|
||||
do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, 1);
|
||||
do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, -1);
|
||||
}
|
||||
|
||||
for (i = 1; i < 10 + CHARBYTESLOG; ++i)
|
||||
{
|
||||
do_test (0, 0, 2 << i, MIDCHAR, 0);
|
||||
do_test (0, 0, 2 << i, LARGECHAR, 0);
|
||||
do_test (0, 0, 2 << i, MIDCHAR, 1);
|
||||
do_test (0, 0, 2 << i, LARGECHAR, 1);
|
||||
do_test (0, 0, 2 << i, MIDCHAR, -1);
|
||||
do_test (0, 0, 2 << i, LARGECHAR, -1);
|
||||
do_test (0, CHARBYTES * i, 2 << i, MIDCHAR, 1);
|
||||
do_test (CHARBYTES * i, CHARBYTES * (i + 1), 2 << i, LARGECHAR, 1);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, 0);
|
||||
do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, 0);
|
||||
do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, 1);
|
||||
do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, 1);
|
||||
do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, -1);
|
||||
do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, -1);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,275 +0,0 @@
|
||||
/* Measure strcoll execution time in different locales.
|
||||
Copyright (C) 2015-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <locale.h>
|
||||
#include <unistd.h>
|
||||
#include "json-lib.h"
|
||||
#include "bench-timing.h"
|
||||
#include <string.h>
|
||||
|
||||
/* Many thanks to http://generator.lorem-ipsum.info/ */
|
||||
#define INPUT_PREFIX "strcoll-inputs/"
|
||||
|
||||
static const char *const input_files[] = {
|
||||
"filelist#C",
|
||||
"filelist#en_US.UTF-8",
|
||||
"lorem_ipsum#vi_VN.UTF-8",
|
||||
"lorem_ipsum#ar_SA.UTF-8",
|
||||
"lorem_ipsum#en_US.UTF-8",
|
||||
"lorem_ipsum#zh_CN.UTF-8",
|
||||
"lorem_ipsum#cs_CZ.UTF-8",
|
||||
"lorem_ipsum#en_GB.UTF-8",
|
||||
"lorem_ipsum#da_DK.UTF-8",
|
||||
"lorem_ipsum#pl_PL.UTF-8",
|
||||
"lorem_ipsum#fr_FR.UTF-8",
|
||||
"lorem_ipsum#pt_PT.UTF-8",
|
||||
"lorem_ipsum#el_GR.UTF-8",
|
||||
"lorem_ipsum#ru_RU.UTF-8",
|
||||
"lorem_ipsum#he_IL.UTF-8",
|
||||
"lorem_ipsum#es_ES.UTF-8",
|
||||
"lorem_ipsum#hi_IN.UTF-8",
|
||||
"lorem_ipsum#sv_SE.UTF-8",
|
||||
"lorem_ipsum#hu_HU.UTF-8",
|
||||
"lorem_ipsum#tr_TR.UTF-8",
|
||||
"lorem_ipsum#is_IS.UTF-8",
|
||||
"lorem_ipsum#it_IT.UTF-8",
|
||||
"lorem_ipsum#sr_RS.UTF-8",
|
||||
"lorem_ipsum#ja_JP.UTF-8"
|
||||
};
|
||||
|
||||
#define TEXTFILE_DELIMITER " \n\r\t.,?!"
|
||||
|
||||
static char *
|
||||
read_file (const char *filename)
|
||||
{
|
||||
struct stat stats;
|
||||
char *buffer = NULL;
|
||||
int fd = open (filename, O_CLOEXEC);
|
||||
|
||||
if (fd >= 0)
|
||||
{
|
||||
if (fstat (fd, &stats) == 0)
|
||||
{
|
||||
buffer = malloc (stats.st_size + 1);
|
||||
if (buffer)
|
||||
{
|
||||
if (read (fd, buffer, stats.st_size) == stats.st_size)
|
||||
buffer[stats.st_size] = '\0';
|
||||
else
|
||||
{
|
||||
free (buffer);
|
||||
buffer = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
close (fd);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static size_t
|
||||
count_words (const char *text, const char *delim)
|
||||
{
|
||||
size_t wordcount = 0;
|
||||
char *tmp = strdup (text);
|
||||
|
||||
char *token = strtok (tmp, delim);
|
||||
while (token != NULL)
|
||||
{
|
||||
if (*token != '\0')
|
||||
wordcount++;
|
||||
token = strtok (NULL, delim);
|
||||
}
|
||||
|
||||
free (tmp);
|
||||
return wordcount;
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
size_t size;
|
||||
char **words;
|
||||
} word_list;
|
||||
|
||||
static word_list *
|
||||
new_word_list (size_t size)
|
||||
{
|
||||
word_list *list = malloc (sizeof (word_list));
|
||||
assert (list != NULL);
|
||||
list->size = size;
|
||||
list->words = malloc (size * sizeof (char *));
|
||||
assert (list->words != NULL);
|
||||
return list;
|
||||
}
|
||||
|
||||
static word_list *
|
||||
str_word_list (const char *str, const char *delim)
|
||||
{
|
||||
size_t n = 0;
|
||||
word_list *list = new_word_list (count_words (str, delim));
|
||||
|
||||
char *toks = strdup (str);
|
||||
char *word = strtok (toks, delim);
|
||||
while (word != NULL && n < list->size)
|
||||
{
|
||||
if (*word != '\0')
|
||||
list->words[n++] = strdup (word);
|
||||
word = strtok (NULL, delim);
|
||||
}
|
||||
|
||||
free (toks);
|
||||
return list;
|
||||
}
|
||||
|
||||
static word_list *
|
||||
copy_word_list (const word_list *list)
|
||||
{
|
||||
size_t i;
|
||||
word_list *copy = new_word_list (list->size);
|
||||
|
||||
for (i = 0; i < list->size; i++)
|
||||
copy->words[i] = strdup (list->words[i]);
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
static void
|
||||
free_word_list (word_list *list)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < list->size; i++)
|
||||
free (list->words[i]);
|
||||
|
||||
free (list->words);
|
||||
free (list);
|
||||
}
|
||||
|
||||
static int
|
||||
compare_words (const void *a, const void *b)
|
||||
{
|
||||
const char *s1 = *(char **) a;
|
||||
const char *s2 = *(char **) b;
|
||||
return strcoll (s1, s2);
|
||||
}
|
||||
|
||||
#undef INNER_LOOP_ITERS
|
||||
#define INNER_LOOP_ITERS 16
|
||||
|
||||
static void
|
||||
bench_list (json_ctx_t *json_ctx, word_list *list)
|
||||
{
|
||||
size_t i;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
word_list **tests = malloc (INNER_LOOP_ITERS * sizeof (word_list *));
|
||||
assert (tests != NULL);
|
||||
for (i = 0; i < INNER_LOOP_ITERS; i++)
|
||||
tests[i] = copy_word_list (list);
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < INNER_LOOP_ITERS; i++)
|
||||
qsort (tests[i]->words, tests[i]->size, sizeof (char *), compare_words);
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
setlocale (LC_ALL, "en_US.UTF-8");
|
||||
json_attr_double (json_ctx, "duration", cur);
|
||||
json_attr_double (json_ctx, "iterations", i);
|
||||
json_attr_double (json_ctx, "mean", (double) cur / i);
|
||||
|
||||
for (i = 0; i < INNER_LOOP_ITERS; i++)
|
||||
free_word_list (tests[i]);
|
||||
free (tests);
|
||||
}
|
||||
|
||||
typedef enum
|
||||
{
|
||||
OK,
|
||||
ERROR_FILENAME,
|
||||
ERROR_LOCALE,
|
||||
ERROR_IO
|
||||
} result_t;
|
||||
|
||||
static result_t
|
||||
bench_file (json_ctx_t *json_ctx, const char *testname, const char *filename,
|
||||
const char *locale)
|
||||
{
|
||||
if (setlocale (LC_ALL, locale) == NULL)
|
||||
return ERROR_LOCALE;
|
||||
|
||||
char *text = read_file (filename);
|
||||
if (text == NULL)
|
||||
return ERROR_IO;
|
||||
|
||||
word_list *list = str_word_list (text, TEXTFILE_DELIMITER);
|
||||
|
||||
json_attr_object_begin (json_ctx, testname);
|
||||
bench_list (json_ctx, list);
|
||||
json_attr_object_end (json_ctx);
|
||||
|
||||
free_word_list (list);
|
||||
free (text);
|
||||
return OK;
|
||||
}
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
json_ctx_t *json_ctx = malloc (sizeof (json_ctx_t));
|
||||
assert (json_ctx != NULL);
|
||||
json_init (json_ctx, 2, stdout);
|
||||
json_attr_object_begin (json_ctx, "strcoll");
|
||||
|
||||
size_t i;
|
||||
result_t result = OK;
|
||||
for (i = 0; i < (sizeof (input_files) / sizeof (input_files[0])); i++)
|
||||
{
|
||||
char *locale = strchr (input_files[i], '#');
|
||||
if (locale == NULL)
|
||||
{
|
||||
printf ("Failed to get locale from filename %s, aborting!\n",
|
||||
input_files[i]);
|
||||
return ERROR_FILENAME;
|
||||
}
|
||||
|
||||
char *filename;
|
||||
asprintf (&filename, INPUT_PREFIX "%s", input_files[i]);
|
||||
result = bench_file (json_ctx, input_files[i], filename, locale + 1);
|
||||
|
||||
if (result != OK)
|
||||
{
|
||||
if (result == ERROR_LOCALE)
|
||||
printf ("Failed to set locale %s, aborting!\n", locale);
|
||||
else if (result == ERROR_IO)
|
||||
printf ("Failed to read file %s, aborting!\n", filename);
|
||||
free (filename);
|
||||
goto out;
|
||||
}
|
||||
free (filename);
|
||||
}
|
||||
|
||||
out:
|
||||
json_attr_object_end (json_ctx);
|
||||
free (json_ctx);
|
||||
return result;
|
||||
}
|
||||
@@ -1,193 +0,0 @@
|
||||
/* Measure strcpy functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifdef WIDE
|
||||
# include <wchar.h>
|
||||
# define CHAR wchar_t
|
||||
# define UCHAR wchar_t
|
||||
# define sfmt "ls"
|
||||
# define BIG_CHAR WCHAR_MAX
|
||||
# define SMALL_CHAR 1273
|
||||
# define STRCMP wcscmp
|
||||
# define MEMCMP wmemcmp
|
||||
# define MEMSET wmemset
|
||||
#else
|
||||
# define CHAR char
|
||||
# define UCHAR unsigned char
|
||||
# define sfmt "s"
|
||||
# define BIG_CHAR CHAR_MAX
|
||||
# define SMALL_CHAR 127
|
||||
# define STRCMP strcmp
|
||||
# define MEMCMP memcmp
|
||||
# define MEMSET memset
|
||||
#endif
|
||||
|
||||
#ifndef STRCPY_RESULT
|
||||
# define STRCPY_RESULT(dst, len) dst
|
||||
# define TEST_MAIN
|
||||
# ifndef WIDE
|
||||
# define TEST_NAME "strcpy"
|
||||
# else
|
||||
# define TEST_NAME "wcscpy"
|
||||
# endif
|
||||
# include "bench-string.h"
|
||||
# ifndef WIDE
|
||||
# define SIMPLE_STRCPY simple_strcpy
|
||||
# define STRCPY strcpy
|
||||
# else
|
||||
# define SIMPLE_STRCPY simple_wcscpy
|
||||
# define STRCPY wcscpy
|
||||
# endif
|
||||
|
||||
CHAR *SIMPLE_STRCPY (CHAR *, const CHAR *);
|
||||
|
||||
IMPL (SIMPLE_STRCPY, 0)
|
||||
IMPL (STRCPY, 1)
|
||||
|
||||
CHAR *
|
||||
SIMPLE_STRCPY (CHAR *dst, const CHAR *src)
|
||||
{
|
||||
CHAR *ret = dst;
|
||||
while ((*dst++ = *src++) != '\0');
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
typedef CHAR *(*proto_t) (CHAR *, const CHAR *);
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, CHAR *dst, const CHAR *src,
|
||||
size_t len __attribute__((unused)))
|
||||
{
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
if (CALL (impl, dst, src) != STRCPY_RESULT (dst, len))
|
||||
{
|
||||
error (0, 0, "Wrong result in function %s %p %p", impl->name,
|
||||
CALL (impl, dst, src), STRCPY_RESULT (dst, len));
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (STRCMP (dst, src) != 0)
|
||||
{
|
||||
error (0, 0,
|
||||
"Wrong result in function %s dst \"%" sfmt "\" src \"%" sfmt "\"",
|
||||
impl->name, dst, src);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, dst, src);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len, int max_char)
|
||||
{
|
||||
size_t i;
|
||||
CHAR *s1, *s2;
|
||||
/* For wcscpy: align1 and align2 here mean alignment not in bytes,
|
||||
but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t))
|
||||
len for wcschr here isn't in bytes but it's number of wchar_t symbols. */
|
||||
align1 &= 7;
|
||||
if ((align1 + len) * sizeof(CHAR) >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 7;
|
||||
if ((align2 + len) * sizeof(CHAR) >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (CHAR *) (buf1) + align1;
|
||||
s2 = (CHAR *) (buf2) + align2;
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
s1[i] = 32 + 23 * i % (max_char - 32);
|
||||
s1[len] = 0;
|
||||
|
||||
printf ("Length %4zd, alignments in bytes %2zd/%2zd:", len, align1 * sizeof(CHAR), align2 * sizeof(CHAR));
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s2, s1, len);
|
||||
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 0; i < 16; ++i)
|
||||
{
|
||||
do_test (0, 0, i, SMALL_CHAR);
|
||||
do_test (0, 0, i, BIG_CHAR);
|
||||
do_test (0, i, i, SMALL_CHAR);
|
||||
do_test (i, 0, i, BIG_CHAR);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (0, 0, 8 << i, SMALL_CHAR);
|
||||
do_test (8 - i, 2 * i, 8 << i, SMALL_CHAR);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i, 2 * i, 8 << i, SMALL_CHAR);
|
||||
do_test (2 * i, i, 8 << i, BIG_CHAR);
|
||||
do_test (i, i, 8 << i, SMALL_CHAR);
|
||||
do_test (i, i, 8 << i, BIG_CHAR);
|
||||
}
|
||||
|
||||
for (i = 16; i <= 512; i+=4)
|
||||
{
|
||||
do_test (0, 4, i, SMALL_CHAR);
|
||||
do_test (4, 0, i, BIG_CHAR);
|
||||
do_test (4, 4, i, SMALL_CHAR);
|
||||
do_test (2, 2, i, BIG_CHAR);
|
||||
do_test (2, 6, i, SMALL_CHAR);
|
||||
do_test (6, 2, i, BIG_CHAR);
|
||||
do_test (1, 7, i, SMALL_CHAR);
|
||||
do_test (7, 1, i, BIG_CHAR);
|
||||
do_test (3, 4, i, SMALL_CHAR);
|
||||
do_test (4, 3, i, BIG_CHAR);
|
||||
do_test (5, 7, i, SMALL_CHAR);
|
||||
do_test (7, 5, i, SMALL_CHAR);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,244 +0,0 @@
|
||||
/* Measure __strcpy_chk functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef STRCPY_RESULT
|
||||
# define STRCPY_RESULT(dst, len) dst
|
||||
# define TEST_MAIN
|
||||
# define TEST_NAME "strcpy_chk"
|
||||
# include "bench-string.h"
|
||||
|
||||
/* This test case implicitly tests the availability of the __chk_fail
|
||||
symbol, which is part of the public ABI and may be used
|
||||
externally. */
|
||||
extern void __attribute__ ((noreturn)) __chk_fail (void);
|
||||
char *simple_strcpy_chk (char *, const char *, size_t);
|
||||
extern char *normal_strcpy (char *, const char *, size_t)
|
||||
__asm ("strcpy");
|
||||
extern char *__strcpy_chk (char *, const char *, size_t);
|
||||
|
||||
IMPL (simple_strcpy_chk, 0)
|
||||
IMPL (normal_strcpy, 1)
|
||||
IMPL (__strcpy_chk, 2)
|
||||
|
||||
char *
|
||||
simple_strcpy_chk (char *dst, const char *src, size_t len)
|
||||
{
|
||||
char *ret = dst;
|
||||
if (! len)
|
||||
__chk_fail ();
|
||||
while ((*dst++ = *src++) != '\0')
|
||||
if (--len == 0)
|
||||
__chk_fail ();
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <paths.h>
|
||||
#include <setjmp.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <support/support.h>
|
||||
|
||||
volatile int chk_fail_ok;
|
||||
jmp_buf chk_fail_buf;
|
||||
|
||||
static void
|
||||
handler (int sig)
|
||||
{
|
||||
if (chk_fail_ok)
|
||||
{
|
||||
chk_fail_ok = 0;
|
||||
longjmp (chk_fail_buf, 1);
|
||||
}
|
||||
else
|
||||
_exit (127);
|
||||
}
|
||||
|
||||
typedef char *(*proto_t) (char *, const char *, size_t);
|
||||
|
||||
static void
|
||||
do_one_test (impl_t *impl, char *dst, const char *src,
|
||||
size_t len, size_t dlen)
|
||||
{
|
||||
char *res;
|
||||
size_t i, iters = INNER_LOOP_ITERS;
|
||||
timing_t start, stop, cur;
|
||||
|
||||
if (dlen <= len)
|
||||
{
|
||||
if (impl->test == 1)
|
||||
return;
|
||||
|
||||
chk_fail_ok = 1;
|
||||
if (setjmp (chk_fail_buf) == 0)
|
||||
{
|
||||
res = CALL (impl, dst, src, dlen);
|
||||
printf ("*** Function %s (%zd; %zd) did not __chk_fail\n",
|
||||
impl->name, len, dlen);
|
||||
chk_fail_ok = 0;
|
||||
ret = 1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
res = CALL (impl, dst, src, dlen);
|
||||
|
||||
if (res != STRCPY_RESULT (dst, len))
|
||||
{
|
||||
printf ("Wrong result in function %s %p %p\n", impl->name,
|
||||
res, STRCPY_RESULT (dst, len));
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (strcmp (dst, src) != 0)
|
||||
{
|
||||
printf ("Wrong result in function %s dst \"%s\" src \"%s\"\n",
|
||||
impl->name, dst, src);
|
||||
ret = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
TIMING_NOW (start);
|
||||
for (i = 0; i < iters; ++i)
|
||||
{
|
||||
CALL (impl, dst, src, dlen);
|
||||
}
|
||||
TIMING_NOW (stop);
|
||||
|
||||
TIMING_DIFF (cur, start, stop);
|
||||
|
||||
TIMING_PRINT_MEAN ((double) cur, (double) iters);
|
||||
}
|
||||
|
||||
static void
|
||||
do_test (size_t align1, size_t align2, size_t len, size_t dlen, int max_char)
|
||||
{
|
||||
size_t i;
|
||||
char *s1, *s2;
|
||||
|
||||
align1 &= 7;
|
||||
if (align1 + len >= page_size)
|
||||
return;
|
||||
|
||||
align2 &= 7;
|
||||
if (align2 + len >= page_size)
|
||||
return;
|
||||
|
||||
s1 = (char *) buf1 + align1;
|
||||
s2 = (char *) buf2 + align2;
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
s1[i] = 32 + 23 * i % (max_char - 32);
|
||||
s1[len] = 0;
|
||||
|
||||
if (dlen > len)
|
||||
printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
|
||||
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
do_one_test (impl, s2, s1, len, dlen);
|
||||
|
||||
if (dlen > len)
|
||||
putchar ('\n');
|
||||
}
|
||||
|
||||
static int
|
||||
test_main (void)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
set_fortify_handler (handler);
|
||||
|
||||
test_init ();
|
||||
|
||||
printf ("%23s", "");
|
||||
FOR_EACH_IMPL (impl, 0)
|
||||
printf ("\t%s", impl->name);
|
||||
putchar ('\n');
|
||||
|
||||
for (i = 0; i < 16; ++i)
|
||||
{
|
||||
do_test (0, 0, i, i + 1, 127);
|
||||
do_test (0, 0, i, i + 1, 255);
|
||||
do_test (0, i, i, i + 1, 127);
|
||||
do_test (i, 0, i, i + 1, 255);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (0, 0, 8 << i, (8 << i) + 1, 127);
|
||||
do_test (8 - i, 2 * i, (8 << i), (8 << i) + 1, 127);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i, 2 * i, (8 << i), (8 << i) + 1, 127);
|
||||
do_test (2 * i, i, (8 << i), (8 << i) + 1, 255);
|
||||
do_test (i, i, (8 << i), (8 << i) + 1, 127);
|
||||
do_test (i, i, (8 << i), (8 << i) + 1, 255);
|
||||
}
|
||||
|
||||
for (i = 0; i < 16; ++i)
|
||||
{
|
||||
do_test (0, 0, i, i + 256, 127);
|
||||
do_test (0, 0, i, i + 256, 255);
|
||||
do_test (0, i, i, i + 256, 127);
|
||||
do_test (i, 0, i, i + 256, 255);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (0, 0, 8 << i, (8 << i) + 256, 127);
|
||||
do_test (8 - i, 2 * i, (8 << i), (8 << i) + 256, 127);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i, 2 * i, (8 << i), (8 << i) + 256, 127);
|
||||
do_test (2 * i, i, (8 << i), (8 << i) + 256, 255);
|
||||
do_test (i, i, (8 << i), (8 << i) + 256, 127);
|
||||
do_test (i, i, (8 << i), (8 << i) + 256, 255);
|
||||
}
|
||||
|
||||
for (i = 0; i < 16; ++i)
|
||||
{
|
||||
do_test (0, 0, i, i, 127);
|
||||
do_test (0, 0, i, i + 2, 255);
|
||||
do_test (0, i, i, i + 3, 127);
|
||||
do_test (i, 0, i, i + 4, 255);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (0, 0, 8 << i, (8 << i) - 15, 127);
|
||||
do_test (8 - i, 2 * i, (8 << i), (8 << i) + 5, 127);
|
||||
}
|
||||
|
||||
for (i = 1; i < 8; ++i)
|
||||
{
|
||||
do_test (i, 2 * i, (8 << i), (8 << i) + i, 127);
|
||||
do_test (2 * i, i, (8 << i), (8 << i) + (i - 1), 255);
|
||||
do_test (i, i, (8 << i), (8 << i) + i + 2, 127);
|
||||
do_test (i, i, (8 << i), (8 << i) + i + 3, 255);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <support/test-driver.c>
|
||||
@@ -1,80 +0,0 @@
|
||||
/* Measure strcspn functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define STRPBRK_RESULT(s, pos) (pos)
|
||||
#define RES_TYPE size_t
|
||||
#define TEST_MAIN
|
||||
#ifndef WIDE
|
||||
# define TEST_NAME "strcspn"
|
||||
#else
|
||||
# define TEST_NAME "wcscspn"
|
||||
#endif /* WIDE */
|
||||
#include "bench-string.h"
|
||||
|
||||
#ifndef WIDE
|
||||
# define STRCSPN strcspn
|
||||
# define CHAR char
|
||||
# define SIMPLE_STRCSPN simple_strcspn
|
||||
# define STUPID_STRCSPN stupid_strcspn
|
||||
# define STRLEN strlen
|
||||
#else
|
||||
# include <wchar.h>
|
||||
# define STRCSPN wcscspn
|
||||
# define CHAR wchar_t
|
||||
# define SIMPLE_STRCSPN simple_wcscspn
|
||||
# define STUPID_STRCSPN stupid_wcscspn
|
||||
# define STRLEN wcslen
|
||||
#endif /* WIDE */
|
||||
|
||||
typedef size_t (*proto_t) (const CHAR *, const CHAR *);
|
||||
size_t SIMPLE_STRCSPN (const CHAR *, const CHAR *);
|
||||
size_t STUPID_STRCSPN (const CHAR *, const CHAR *);
|
||||
|
||||
IMPL (STUPID_STRCSPN, 0)
|
||||
IMPL (SIMPLE_STRCSPN, 0)
|
||||
IMPL (STRCSPN, 1)
|
||||
|
||||
size_t
|
||||
SIMPLE_STRCSPN (const CHAR *s, const CHAR *rej)
|
||||
{
|
||||
const CHAR *r, *str = s;
|
||||
CHAR c;
|
||||
|
||||
while ((c = *s++) != '\0')
|
||||
for (r = rej; *r != '\0'; ++r)
|
||||
if (*r == c)
|
||||
return s - str - 1;
|
||||
return s - str - 1;
|
||||
}
|
||||
|
||||
size_t
|
||||
STUPID_STRCSPN (const CHAR *s, const CHAR *rej)
|
||||
{
|
||||
size_t ns = STRLEN (s), nrej = STRLEN (rej);
|
||||
size_t i, j;
|
||||
|
||||
for (i = 0; i < ns; ++i)
|
||||
for (j = 0; j < nrej; ++j)
|
||||
if (s[i] == rej[j])
|
||||
return i;
|
||||
return i;
|
||||
}
|
||||
|
||||
#undef CHAR
|
||||
#undef STRLEN
|
||||
#include "bench-strpbrk.c"
|
||||
@@ -1,211 +0,0 @@
|
||||
/* Measure string and memory functions.
|
||||
Copyright (C) 2013-2017 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, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <getopt.h>
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *name;
|
||||
void (*fn) (void);
|
||||
long test;
|
||||
} impl_t;
|
||||
extern impl_t __start_impls[], __stop_impls[];
|
||||
|
||||
#define IMPL(name, test) \
|
||||
impl_t tst_ ## name \
|
||||
__attribute__ ((section ("impls"), aligned (sizeof (void *)))) \
|
||||
= { __STRING (name), (void (*) (void))name, test };
|
||||
|
||||
#ifdef TEST_MAIN
|
||||
|
||||
# ifndef _GNU_SOURCE
|
||||
# define _GNU_SOURCE
|
||||
# endif
|
||||
|
||||
# undef __USE_STRING_INLINES
|
||||
|
||||
# include <stdio.h>
|
||||
# include <stdlib.h>
|
||||
# include <string.h>
|
||||
# include <sys/mman.h>
|
||||
# include <sys/param.h>
|
||||
# include <unistd.h>
|
||||
# include <fcntl.h>
|
||||
# include <error.h>
|
||||
# include <errno.h>
|
||||
# include <time.h>
|
||||
# include <ifunc-impl-list.h>
|
||||
# define GL(x) _##x
|
||||
# define GLRO(x) _##x
|
||||
# include "bench-timing.h"
|
||||
|
||||
|
||||
# define TEST_FUNCTION test_main
|
||||
# ifndef TIMEOUT
|
||||
# define TIMEOUT (4 * 60)
|
||||
# endif
|
||||
# define OPT_ITERATIONS 10000
|
||||
# define OPT_RANDOM 10001
|
||||
# define OPT_SEED 10002
|
||||
|
||||
# define INNER_LOOP_ITERS 64
|
||||
|
||||
unsigned char *buf1, *buf2;
|
||||
int ret, do_srandom;
|
||||
unsigned int seed;
|
||||
size_t page_size;
|
||||
|
||||
# ifndef ITERATIONS
|
||||
size_t iterations = 100000;
|
||||
# define ITERATIONS_OPTIONS \
|
||||
{ "iterations", required_argument, NULL, OPT_ITERATIONS },
|
||||
# define ITERATIONS_PROCESS \
|
||||
case OPT_ITERATIONS: \
|
||||
iterations = strtoul (optarg, NULL, 0); \
|
||||
break;
|
||||
# define ITERATIONS iterations
|
||||
# else
|
||||
# define ITERATIONS_OPTIONS
|
||||
# define ITERATIONS_PROCESS
|
||||
# endif
|
||||
|
||||
# define CMDLINE_OPTIONS ITERATIONS_OPTIONS \
|
||||
{ "random", no_argument, NULL, OPT_RANDOM }, \
|
||||
{ "seed", required_argument, NULL, OPT_SEED },
|
||||
|
||||
static void __attribute__ ((used))
|
||||
cmdline_process_function (int c)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
ITERATIONS_PROCESS
|
||||
case OPT_RANDOM:
|
||||
{
|
||||
int fdr = open ("/dev/urandom", O_RDONLY);
|
||||
if (fdr < 0 || read (fdr, &seed, sizeof(seed)) != sizeof (seed))
|
||||
seed = time (NULL);
|
||||
if (fdr >= 0)
|
||||
close (fdr);
|
||||
do_srandom = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
case OPT_SEED:
|
||||
seed = strtoul (optarg, NULL, 0);
|
||||
do_srandom = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
# define CMDLINE_PROCESS cmdline_process_function
|
||||
# define CALL(impl, ...) \
|
||||
(* (proto_t) (impl)->fn) (__VA_ARGS__)
|
||||
|
||||
# ifdef TEST_NAME
|
||||
/* Increase size of FUNC_LIST if assert is triggered at run-time. */
|
||||
static struct libc_ifunc_impl func_list[32];
|
||||
static int func_count;
|
||||
static int impl_count = -1;
|
||||
static impl_t *impl_array;
|
||||
|
||||
# define FOR_EACH_IMPL(impl, notall) \
|
||||
impl_t *impl; \
|
||||
int count; \
|
||||
if (impl_count == -1) \
|
||||
{ \
|
||||
impl_count = 0; \
|
||||
if (func_count != 0) \
|
||||
{ \
|
||||
int f; \
|
||||
impl_t *skip = NULL, *a; \
|
||||
for (impl = __start_impls; impl < __stop_impls; ++impl) \
|
||||
if (strcmp (impl->name, TEST_NAME) == 0) \
|
||||
skip = impl; \
|
||||
else \
|
||||
impl_count++; \
|
||||
a = impl_array = malloc ((impl_count + func_count) * \
|
||||
sizeof (impl_t)); \
|
||||
for (impl = __start_impls; impl < __stop_impls; ++impl) \
|
||||
if (impl != skip) \
|
||||
*a++ = *impl; \
|
||||
for (f = 0; f < func_count; f++) \
|
||||
if (func_list[f].usable) \
|
||||
{ \
|
||||
a->name = func_list[f].name; \
|
||||
a->fn = func_list[f].fn; \
|
||||
a->test = 1; \
|
||||
a++; \
|
||||
} \
|
||||
impl_count = a - impl_array; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
impl_count = __stop_impls - __start_impls; \
|
||||
impl_array = __start_impls; \
|
||||
} \
|
||||
} \
|
||||
impl = impl_array; \
|
||||
for (count = 0; count < impl_count; ++count, ++impl) \
|
||||
if (!notall || impl->test)
|
||||
# else /* !TEST_NAME */
|
||||
# define FOR_EACH_IMPL(impl, notall) \
|
||||
for (impl_t *impl = __start_impls; impl < __stop_impls; ++impl) \
|
||||
if (!notall || impl->test)
|
||||
# endif /* !TEST_NAME */
|
||||
|
||||
# ifndef BUF1PAGES
|
||||
# define BUF1PAGES 1
|
||||
# endif
|
||||
|
||||
static void
|
||||
test_init (void)
|
||||
{
|
||||
# ifdef TEST_NAME
|
||||
func_count = __libc_ifunc_impl_list (TEST_NAME, func_list,
|
||||
(sizeof func_list
|
||||
/ sizeof func_list[0]));
|
||||
# endif
|
||||
|
||||
page_size = 2 * getpagesize ();
|
||||
# ifdef MIN_PAGE_SIZE
|
||||
if (page_size < MIN_PAGE_SIZE)
|
||||
page_size = MIN_PAGE_SIZE;
|
||||
# endif
|
||||
buf1 = mmap (0, (BUF1PAGES + 1) * page_size, PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE | MAP_ANON, -1, 0);
|
||||
if (buf1 == MAP_FAILED)
|
||||
error (EXIT_FAILURE, errno, "mmap failed");
|
||||
if (mprotect (buf1 + BUF1PAGES * page_size, page_size, PROT_NONE))
|
||||
error (EXIT_FAILURE, errno, "mprotect failed");
|
||||
buf2 = mmap (0, 2 * page_size, PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE | MAP_ANON, -1, 0);
|
||||
if (buf2 == MAP_FAILED)
|
||||
error (EXIT_FAILURE, errno, "mmap failed");
|
||||
if (mprotect (buf2 + page_size, page_size, PROT_NONE))
|
||||
error (EXIT_FAILURE, errno, "mprotect failed");
|
||||
if (do_srandom)
|
||||
{
|
||||
printf ("Setting seed to 0x%x\n", seed);
|
||||
srandom (seed);
|
||||
}
|
||||
|
||||
memset (buf1, 0xa5, BUF1PAGES * page_size);
|
||||
memset (buf2, 0x5a, page_size);
|
||||
}
|
||||
|
||||
#endif /* TEST_MAIN */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user