aboutsummaryrefslogtreecommitdiff
path: root/block/qcow2-cache.c
blob: 8ecbb5bc005acedcaa8422d6e174374e367514fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
/*
 * L2/refcount table cache for the QCOW2 format
 *
 * Copyright (c) 2010 Kevin Wolf <kwolf@redhat.com>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

#include "block/block_int.h"
#include "qemu-common.h"
#include "qcow2.h"
#include "trace.h"

typedef struct Qcow2CachedTable {
    void*   table;
    int64_t offset;
    bool    dirty;
    int     cache_hits;
    int     ref;
} Qcow2CachedTable;

struct Qcow2Cache {
    Qcow2CachedTable*       entries;
    struct Qcow2Cache*      depends;
    int                     size;
    bool                    depends_on_flush;
};

Qcow2Cache *qcow2_cache_create(BlockDriverState *bs, int num_tables)
{
    BDRVQcowState *s = bs->opaque;
    Qcow2Cache *c;
    int i;

    c = g_malloc0(sizeof(*c));
    c->size = num_tables;
    c->entries = g_malloc0(sizeof(*c->entries) * num_tables);

    for (i = 0; i < c->size; i++) {
        c->entries[i].table = qemu_blockalign(bs, s->cluster_size);
    }

    return c;
}

int qcow2_cache_destroy(BlockDriverState* bs, Qcow2Cache *c)
{
    int i;

    for (i = 0; i < c->size; i++) {
        assert(c->entries[i].ref == 0);
        qemu_vfree(c->entries[i].table);
    }

    g_free(c->entries);
    g_free(c);

    return 0;
}

static int qcow2_cache_flush_dependency(BlockDriverState *bs, Qcow2Cache *c)
{
    int ret;

    ret = qcow2_cache_flush(bs, c->depends);
    if (ret < 0) {
        return ret;
    }

    c->depends = NULL;
    c->depends_on_flush = false;

    return 0;
}

static int qcow2_cache_entry_flush(BlockDriverState *bs, Qcow2Cache *c, int i)
{
    BDRVQcowState *s = bs->opaque;
    int ret = 0;

    if (!c->entries[i].dirty || !c->entries[i].offset) {
        return 0;
    }

    trace_qcow2_cache_entry_flush(qemu_coroutine_self(),
                                  c == s->l2_table_cache, i);

    if (c->depends) {
        ret = qcow2_cache_flush_dependency(bs, c);
    } else if (c->depends_on_flush) {
        ret = bdrv_flush(bs->file);
        if (ret >= 0) {
            c->depends_on_flush = false;
        }
    }

    if (ret < 0) {
        return ret;
    }

    if (c == s->refcount_block_cache) {
        ret = qcow2_pre_write_overlap_check(bs, QCOW2_OL_REFCOUNT_BLOCK,
                c->entries[i].offset, s->cluster_size);
    } else if (c == s->l2_table_cache) {
        ret = qcow2_pre_write_overlap_check(bs, QCOW2_OL_ACTIVE_L2,
                c->entries[i].offset, s->cluster_size);
    } else {
        ret = qcow2_pre_write_overlap_check(bs, 0,
                c->entries[i].offset, s->cluster_size);
    }

    if (ret < 0) {
        return ret;
    }

    if (c == s->refcount_block_cache) {
        BLKDBG_EVENT(bs->file, BLKDBG_REFBLOCK_UPDATE_PART);
    } else if (c == s->l2_table_cache) {
        BLKDBG_EVENT(bs->file, BLKDBG_L2_UPDATE);
    }

    ret = bdrv_pwrite(bs->file, c->entries[i].offset, c->entries[i].table,
        s->cluster_size);
    if (ret < 0) {
        return ret;
    }

    c->entries[i].dirty = false;

    return 0;
}

int qcow2_cache_flush(BlockDriverState *bs, Qcow2Cache *c)
{
    BDRVQcowState *s = bs->opaque;
    int result = 0;
    int ret;
    int i;

    trace_qcow2_cache_flush(qemu_coroutine_self(), c == s->l2_table_cache);

    for (i = 0; i < c->size; i++) {
        ret = qcow2_cache_entry_flush(bs, c, i);
        if (ret < 0 && result != -ENOSPC) {
            result = ret;
        }
    }

    if (result == 0) {
        ret = bdrv_flush(bs->file);
        if (ret < 0) {
            result = ret;
        }
    }

    return result;
}

int qcow2_cache_set_dependency(BlockDriverState *bs, Qcow2Cache *c,
    Qcow2Cache *dependency)
{
    int ret;

    if (dependency->depends) {
        ret = qcow2_cache_flush_dependency(bs, dependency);
        if (ret < 0) {
            return ret;
        }
    }

    if (c->depends && (c->depends != dependency)) {
        ret = qcow2_cache_flush_dependency(bs, c);
        if (ret < 0) {
            return ret;
        }
    }

    c->depends = dependency;
    return 0;
}

void qcow2_cache_depends_on_flush(Qcow2Cache *c)
{
    c->depends_on_flush = true;
}

int qcow2_cache_empty(BlockDriverState *bs, Qcow2Cache *c)
{
    int ret, i;

    ret = qcow2_cache_flush(bs, c);
    if (ret < 0) {
        return ret;
    }

    for (i = 0; i < c->size; i++) {
        assert(c->entries[i].ref == 0);
        c->entries[i].offset = 0;
        c->entries[i].cache_hits = 0;
    }

    return 0;
}

static int qcow2_cache_find_entry_to_replace(Qcow2Cache *c)
{
    int i;
    int min_count = INT_MAX;
    int min_index = -1;


    for (i = 0; i < c->size; i++) {
        if (c->entries[i].ref) {
            continue;
        }

        if (c->entries[i].cache_hits < min_count) {
            min_index = i;
            min_count = c->entries[i].cache_hits;
        }

        /* Give newer hits priority */
        /* TODO Check how to optimize the replacement strategy */
        c->entries[i].cache_hits /= 2;
    }

    if (min_index == -1) {
        /* This can't happen in current synchronous code, but leave the check
         * here as a reminder for whoever starts using AIO with the cache */
        abort();
    }
    return min_index;
}

static int qcow2_cache_do_get(BlockDriverState *bs, Qcow2Cache *c,
    uint64_t offset, void **table, bool read_from_disk)
{
    BDRVQcowState *s = bs->opaque;
    int i;
    int ret;

    trace_qcow2_cache_get(qemu_coroutine_self(), c == s->l2_table_cache,
                          offset, read_from_disk);

    /* Check if the table is already cached */
    for (i = 0; i < c->size; i++) {
        if (c->entries[i].offset == offset) {
            goto found;
        }
    }

    /* If not, write a table back and replace it */
    i = qcow2_cache_find_entry_to_replace(c);
    trace_qcow2_cache_get_replace_entry(qemu_coroutine_self(),
                                        c == s->l2_table_cache, i);
    if (i < 0) {
        return i;
    }

    ret = qcow2_cache_entry_flush(bs, c, i);
    if (ret < 0) {
        return ret;
    }

    trace_qcow2_cache_get_read(qemu_coroutine_self(),
                               c == s->l2_table_cache, i);
    c->entries[i].offset = 0;
    if (read_from_disk) {
        if (c == s->l2_table_cache) {
            BLKDBG_EVENT(bs->file, BLKDBG_L2_LOAD);
        }

        ret = bdrv_pread(bs->file, offset, c->entries[i].table, s->cluster_size);
        if (ret < 0) {
            return ret;
        }
    }

    /* Give the table some hits for the start so that it won't be replaced
     * immediately. The number 32 is completely arbitrary. */
    c->entries[i].cache_hits = 32;
    c->entries[i].offset = offset;

    /* And return the right table */
found:
    c->entries[i].cache_hits++;
    c->entries[i].ref++;
    *table = c->entries[i].table;

    trace_qcow2_cache_get_done(qemu_coroutine_self(),
                               c == s->l2_table_cache, i);

    return 0;
}

int qcow2_cache_get(BlockDriverState *bs, Qcow2Cache *c, uint64_t offset,
    void **table)
{
    return qcow2_cache_do_get(bs, c, offset, table, true);
}

int qcow2_cache_get_empty(BlockDriverState *bs, Qcow2Cache *c, uint64_t offset,
    void **table)
{
    return qcow2_cache_do_get(bs, c, offset, table, false);
}

int qcow2_cache_put(BlockDriverState *bs, Qcow2Cache *c, void **table)
{
    int i;

    for (i = 0; i < c->size; i++) {
        if (c->entries[i].table == *table) {
            goto found;
        }
    }
    return -ENOENT;

found:
    c->entries[i].ref--;
    *table = NULL;

    assert(c->entries[i].ref >= 0);
    return 0;
}

void qcow2_cache_entry_mark_dirty(Qcow2Cache *c, void *table)
{
    int i;

    for (i = 0; i < c->size; i++) {
        if (c->entries[i].table == table) {
            goto found;
        }
    }
    abort();

found:
    c->entries[i].dirty = true;
}
='#n926'>926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721
2001-11-04  Roland McGrath  <roland@frob.com>

	* hurd/set-host.c (_hurd_set_host_config): Use O_WRONLY in flags
	parameter to dir_mkfile.

2001-11-02  Jakub Jelinek  <jakub@redhat.com>

	* string/bits/string2.h (__strndup): If n is smaller than len, set
	len to n + 1.
	* string/tester.c (test_strndup): New function.
	(main): Call it.

2001-11-01  Ulrich Drepper  <drepper@redhat.com>

	* sunrpc/rpc_main.c: Optimize variable definitions a bit.

	* sunrpc/Makefile (rpcgen-cmd): Use ../scripts/cpp in rpcgen calls.
	* scripts/cpp: New file.

	* elf/dl-load.c (_dl_map_object): Correct test of DF_1_NODEFLIB
	for rtld_search_dirs content.  Minor optimizations.

2001-10-31  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-load.c (_dl_map_object): Make code a bit more compact by
	avoiding unnecessary duplication.

2001-10-31  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-load.c (_dl_map_object): If library was found using
	LD_LIBRARY_PATH, don't try RUNPATH list.

2001-10-31  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/unix/sysv/linux/s390/s390-32/register-dump (REGISTER_DUMP):
	Correct second argument of register_dump call.
	* sysdeps/unix/sysv/linux/s390/s390-64/register-dump (REGISTER_DUMP):
	Likewise.

2001-10-31  Ulrich Drepper  <drepper@redhat.com>

	* iconvdata/Makefile: Add support for IBM1132, IBM1133, and IBM1162
	modules.
	* iconvdata/TESTS: Likewise.
	* iconvdata/gconv-modules: Likewise.
	* iconvdata/ibm1132.c: New file.
	* iconvdata/ibm1132.h: New file.
	* iconvdata/ibm1133.c: New file.
	* iconvdata/ibm1133.h: New file.
	* iconvdata/ibm1162.c: New file.
	* iconvdata/ibm1162.h: New file.
	* iconvdata/testdata/IBM1132: New file.
	* iconvdata/testdata/IBM1132..UTF8: New file.
	* iconvdata/testdata/IBM1133: New file.
	* iconvdata/testdata/IBM1133..UTF8: New file.
	* iconvdata/testdata/IBM1162: New file.
	* iconvdata/testdata/IBM1162..UTF8: New file.
	Patches by Masahide Washizawa <WASHI@jp.ibm.com>.

	* string/string.h: Fix typo in comment.
	* wcsmbs/wchar.h: Likewise.

2001-10-30  Joseph S. Myers  <jsm28@cam.ac.uk>

	* manual/getopt.texi (getopt_long, getopt_long_only): Include
	const in type of longopts parameter.

2001-10-29  Andreas Jaeger  <aj@suse.de>

	* sysdeps/ieee754/dbl-64/mpa.h: Add prototypes for internal functions.

2001-10-29  Kevin Ryde  <user42@zip.com.au>

	* manual/stdio.texi (Integer Conversions): Corrections to sample printf
	output, clarify `#' behaviour on 0.
	(Floating-Point Conversions): Clarify that %g only uses %e when
	the exponent would be greater than 1.

2001-10-28  Roland McGrath  <roland@frob.com>

	Support for Mach/PowerPC contributed by Peter Bruin <pjbruin@dds.nl>.
	* sysdeps/mach/powerpc/machine-sp.h: New file.
	* sysdeps/mach/powerpc/sysdep.h: New file.
	* sysdeps/mach/powerpc/thread_state.h: New file.

	* sysdeps/mach/hurd/i386/Makefile: File removed; crt0.o rules moved ...
	* sysdeps/mach/hurd/Makefile: ... to here.  For the time being, we can
	expect to need the same thing on every platform.

	* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: File moved ...
	* sysdeps/generic/sys/ucontext.h: ... to replace this one.

	* sysdeps/unix/sysv/linux/powerpc/sysdep.h (ALIGNARG,
	ASM_TYPE_DIRECTIVE, ASM_SIZE_DIRECTIVE, CALL_MCOUNT, ENTRY, EALIGN,
	DO_CALL, JUMPTARGET, PSEUDO, PSEUDO_RET, PSEUDO_END, L, C_TEXT):
	Move all these assembly-related definitions to ...
	* sysdeps/powerpc/elf/sysdep.h: ... this new file.

	* sysdeps/mach/powerpc/machine-lock.h: Assembly code rewritten
	by Peter Bruin <pjbruin@dds.nl>.

	* hurd/hurdselect.c (_hurd_select): Check SELECT_RETURNED bit when
	packing results for a `poll' call.

2001-10-26  Ulrich Drepper  <drepper@redhat.com>

	* posix/fnmatch_loop.c: Recognize - at end of bracket expression
	correctly.
	* posix/tst-fnmatch.input: Add tests for - at beginning and end of
	bracket expression.

	* string/strxfrm.c [USE_IN_EXTENDED_LOCALE_MODEL]: Correctly get
	nrules value.
	* string/tst-strxfrm.c (test): Also test __strxfrm_l.

2001-10-24  H.J. Lu  <hjl@gnu.org>

	* sysdeps/generic/bits/dlfcn.h (DL_CALL_FCT): Cast to void *.
	Use __BEGIN_DECLS/__END_DECLS around prototypes.
	* sysdeps/mips/bits/dlfcn.h (DL_CALL_FCT): Likewise.

2001-10-21  Jim Meyering  <meyering@lucent.com>

	* malloc/obstack.c (_): Honor the setting of ENABLE_NLS.  Otherwise,
	this code would end up calling gettext even in packages built
	with --disable-nls.
	* posix/getopt.c (_): Likewise.
	* posix/regex.c (_): Likewise.

2001-10-26  Ulrich Drepper  <drepper@redhat.com>

	* resolv/gethnamaddr.c (gethostbyaddr): Use ip6.addr for reverse
	lookup not ip6.int.
	* resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Likewise.
	Reported by Martin.v.Loewis@t-online.de [PR libc/2598].

2001-10-19  Jakub Jelinek  <jakub@redhat.com>

	* misc/sys/cdefs.h (__attribute_used__): Define.
	* elf/rtld.c (_dl_start): Add __attribute_used__.
	* elf/dl-runtime.c (fixup, profile_fixup): Likewise.

2001-10-25  Andreas Schwab  <schwab@suse.de>

	* stdlib/a64l.c: Expect least significant digit first.
	* stdlib/l64a.c: Produce least significant digit first.
	* stdlib/Makefile (tests): Add test-a64l.
	* stdlib/test-a64l.c: New file.
	Reported by Masaki Hasegawa <masaki-h@pp.iij4u.or.jp>.

2001-10-21  Ulrich Drepper  <drepper@redhat.com>

	* po/sk.po: Update from translation team.

2001-10-18  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/i386/elf/start.S (_fp_hw): Define object type.

2001-10-18  Andreas Schwab  <schwab@suse.de>

	* math/libm-test.inc (print_ulps): Print ulp values rounded to
	next whole number.
	(print_function_ulps): Likewise.
	(print_complex_function_ulps): Likewise.
	(print_max_error): Likewise.
	(print_complex_max_error): Likewise.  Handle ignore_max_ulp.

2001-10-16  Andreas Schwab  <schwab@suse.de>

	* sysdeps/m68k/fpu/libm-test-ulps: Updated for fixed cbrtl
	implementation.

	* sysdeps/m68k/setjmp.c: Also define setjmp and _setjmp if
	BSD_SETJMP or BSD__SETJMP is defined, resp.
	* sysdeps/m68k/bsd-setjmp.c: Inline setjmp code instead of making
	a tail call to __sigsetjmp that would require extending the
	caller's frame.
	* sysdeps/m68k/bsd-_setjmp.c: Likewise.
	* sysdeps/m68k/bsd-setjmp.S: Deleted.
	* sysdeps/m68k/bsd-_setjmp.S: Deleted.
	Reported by Jes Sorensen <jes@trained-monkey.org>.

2001-10-16  Andreas Jaeger  <aj@suse.de>

	* sysdeps/ieee754/ldbl-96/s_nextafterl.c (__nextafterl): Fix
	parentheses.  Reported by David Byron <dbyron@porto.coactive.com>,
	close PR libc/2589.

2001-10-15  Ulrich Drepper  <drepper@redhat.com>

	* po/ca.po: New file.  Contributed by the translation team.

2001-10-15  Ralf Baechle  <ralf@gnu.org>

	* sysdeps/unix/sysv/linux/mips/sys/sysmips.h: Make sysmips() prototype
	a varargs prototype.  Remove dependency from kernel header files.

	* sysdeps/unix/sysv/linux/mips/bits/termios.h: General cleanup, use
	__USE_MISC / __USE_XOPEN not __USE_BSD where appropriate.

2001-10-14  Ulrich Drepper  <drepper@redhat.com>

	* locale/programs/ld-collate.c (handle_ellipsis): Use %lX not %lx
	to generate hexadecimal identifier.
	Patch by Jungshik Shin <jungshik.shin@yale.edu>.

2001-10-09  Stephen L Moshier  <moshier@mediaone.net>

	* sysdeps/ieee754/ldbl-96/s_cbrtl.c (__cbrtl): Fix algorithm.

2001-10-14  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/ieee754/ldbl-128/e_powl.c: New file.
	* sysdeps/ieee754/ldbl-128/s_cbrtl.c: New file.
	Contributed by Stephen L Moshier <moshier@mediaone.net>.

	* sysdeps/ieee754/ldbl-128/e_j0l.c: Constify float variables.
	* sysdeps/ieee754/ldbl-128/e_j1l.c: Likewise.
	* sysdeps/ieee754/ldbl-128/e_lgammal_r.c: Likewise
	* sysdeps/ieee754/ldbl-128/s_erfl.c: Likewise
	* sysdeps/ieee754/ldbl-128/s_expm1l.c: Likewise
	* sysdeps/ieee754/ldbl-128/s_log1pl.c: Likewise

	* timezone/africa: Update from tzdata2001d.
	* timezone/asia: Likewise.
	* timezone/australasia: Likewise.
	* timezone/backward: Likewise.
	* timezone/europe: Likewise.
	* timezone/leapseconds: Likewise.
	* timezone/northamerica: Likewise.
	* timezone/southamerica: Likewise.
	* timezone/zone.tab: Likewise.

2001-10-09  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/s390/s390-32/sys/ucontext.h: Correct __psw_t typedef.
	* sysdeps/s390/s390-64/sys/ucontext.h: Likewise.

2001-10-12  Ulrich Drepper  <drepper@redhat.com>

	* elf/elf.h (PT_TLS): New definition.

2001-10-10  Jeff Bailey  <jbailey@nisa.net>

	* sysdeps/mach/hurd/Makefile: Add $(CFLAGS) for generation of
	bits/errno.h

2001-10-07  Roland McGrath  <roland@frob.com>

	* sysdeps/mach/hurd/setrlimit.c (__setrlimit): Never return ENOSYS.

2001-10-10  Ulrich Drepper  <drepper@redhat.com>

	* elf/elf.h: Add more ELFOSABI_* constants.

2001-10-04  Ben Collins  <bcollins@debian.org>

	* sysdeps/generic/inttypes.h: Fix typo (define, not defined) in
	decleration of __need_wchar_t.

2001-10-03  Jakub Jelinek  <jakub@redhat.com>

	* string/bits/string2.h (__strsep_g): Add prototype.
	(__strsep): Use it.
	* string/Versions (__strsep): Remove.
	* sysdeps/generic/strsep.c (__strsep_g): Add alias to __strsep.

2001-10-07  Ulrich Drepper  <drepper@redhat.com>

	* manua/llio.texi: Clarify file references added by mmap.
	Patch by Marcus Brinkmann <Marcus.Brinkmann@ruhr-uni-bochum.de>.

2001-09-29  Jes Sorensen  <jes@trained-monkey.org>

	* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h (struct sigcontext):
	Add sc_loadrs and sc_rbs_bas to match current kernel.

2001-09-27  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update.

	* sysdeps/ieee754/ldbl-128/s_erfl.c (__erfcl): Fix erfc(-inf).

2001-09-27  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-open.c (dl_open_worker): If l_opencount of freshly loaded
	object has been bumped because of relocation dependency, avoid
	duplicates in l_scope.
	(show_scope): Fix typos.
	* elf/Makefile: Add rules to build and run reldep6.
	* elf/reldep6.c: New file.
	* elf/reldep6mod0.c: New file.
	* elf/reldep6mod1.c: New file.
	* elf/reldep6mod2.c: New file.
	* elf/reldep6mod3.c: New file.
	* elf/reldep6mod4.c: New file.

2001-09-26  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_fixup_plt): Call
	sparc64_fixup_plt.
	(sparc64_fixup_plt): Moved from elf_machine_fixup_plt.  Optimize
	near jumps and 0xfffff800XXXXXXXX target addresses, no thread safety
	for non-lazy binding. Fix .plt[32768+] handling.
	(elf_machine_plt_value): Don't add addend.
	(elf_machine_rela): Call sparc64_fixup_plt instead of
	elf_machine_fixup_plt.
	(elf_machine_runtime_setup, TRAMPOLINE_TEMPLATE): Optimize for
	dynamic linker at 0xfffff800XXXXXXXX.

	* sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update.

2001-09-28  Ulrich Drepper  <drepper@redhat.com>

	* elf/elf.h: Define SHF_GROUP and SHF_TLS.

2001-09-25  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/bsd/bsd4.4/bits/socket.h (struct cmsghdr): Don't
	declare __cmsg_data field if its size would be bigger than 0.
	(CMSG_DATA): Adjust accordingly.
	* sysdeps/unix/sysv/aix/bits/socket.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/socket.h: Likewise.
	* sysdeps/unix/sysv/linux/ia64/bits/socket.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/bits/socket.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/socket.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/socket.h: Likewise.

2001-09-25  Ulrich Drepper  <drepper@redhat.com>

	* iconvdata/TESTS: Add entries for IBM1160 and IBM1161.
	* iconvdata/testdata/IBM1160: New file.
	* iconvdata/testdata/IBM1160..UTF8: New file.
	* iconvdata/testdata/IBM1161: New file.
	* iconvdata/testdata/IBM1161..UTF8: New file.
	Patch by Masahide Washizawa <WASHI@jp.ibm.com>.

2001-09-24  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/bsd/ulimit.c (ulimit): Handle overflow in
	UL_SETFSIZE computations better.

	* rt/Makefile: Remove use of filter for librt again.

	* sysdeps/unix/sysv/linux/ulimit.c (__ulimit): Handle overflow in
	UL_SETFSIZE computations better.

	* string/Versions: Export __strsep for GLIBC_2.2.5.
	* string/bits/string2.h: Define all __STRING_INLINE functions if
	_FORCE_INLINES is defined.
	Use int instead of char of parameter types.
	(__strsep): Don't use __strsep_g.  Don't define it.
	(__strsep_1c, __strsep_2c, __strsep_3c): Optimize.
	* sysdeps/i386/i486/string.h (__strcpy_a_small): Renamed from
	__strcpy_small.
	(__stpcpy_a_small): Renamed from __stpcpy_small.
	(__strcspn_c1): Don't define if _FORCE_INLINES.
	(__strspn_c1): Likewise.

2001-09-22  Ben Collins  <bcollins@debian.org>

	* sysdeps/sparc/bits/sigaction.h: Define SA_RESTART and friends when
	_UNIX98_SOURCE is defined too.  Matches generic/bits/sigaction.h.
	* sysdeps/ia64/bits/sigaction.h: Likewise.
	* sysdeps/s390/s390-64/bits/sigaction.h: Likewise.

2001-09-24  Andrew Haley  <aph@cambridge.redhat.com>

	* sysdeps/unix/sysv/linux/sh/Makefile (sysdep_headers): Add sys/io.h.

2001-09-24  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-open.c (dl_open_worker): Update l_scope_max.

2001-09-24  Ulrich Drepper  <drepper@redhat.com>

	* wcsmbs/wchar.h: Add __attribute_pure__ to mbsinit prototype.

2001-09-20  H.J. Lu  <hjl@gnu.org>

	* include/dlfcn.h (__RTLD_SPROF): New definiton.
	* elf/dl-open.c (dl_open_worker): Return immediately after loading
	for __RTLD_SPROF.
	* elf/sprof.c (main): Default to the filename if soname doesn't exist.
	(load_shobj): Call dlopen with `RTLD_LAZY | __RTLD_SPROF'.

2001-09-20  H.J. Lu  <hjl@gnu.org>

	* elf/dl-profile.c (_dl_mcount): Use old *narcsp value for newarc,
	don't add 1.

2001-09-22  Ulrich Drepper  <drepper@redhat.com>

	* nss/getent.c: Accept -s parameter to overwrite rules in
	nsswitch.conf.  Patch by Nalin Dahyabhai <nalin@redhat.com>.

	* nss/nss_files/files-network.c (LINE_PARSER): Pad addr string
	with as many ".0" as necessary to form a complete address
	inet_network understands.

	* nss/getent.c: Various cleanups.  Use simpler and fewer function
	calls.

2001-09-20  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/s390/s390-32/bits/setjmp.h: Correct pointer comparison in
	_JMPBUF_UNWINDS.
	* sysdeps/s390/s390-64/bits/setjmp.h: Likewise.

2001-09-22  Ulrich Drepper  <drepper@redhat.com>

	* iconvdata/Makefile: Add rules to build and distribute IBM1160 and
	IBM1161.
	* iconvdata/gconv-modules: Add entries for IBM1160 and IBM1161.
	* iconvdata/ibm1160.c: New file.
	* iconvdata/ibm1160.h: New file.
	* iconvdata/ibm1161.c: New file.
	* iconvdata/ibm1161.h: New file.
	Patch by Masahide Washizawa <WASHI@jp.ibm.com>.

2001-09-19  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/alpha/dl-machine.h (elf_machine_load_address): Compute the
	difference between base address and first PT_LOAD's virtual address,
	not the base address.

2001-09-11  Tom Rix  <trix@redhat.com>

	* sysdeps/unix/sysv/aix/init-first.c (init):  Use USE_NONONPTION_FLAG
	ifdef for __getopt_clean_environment.
	* sysdeps/unix/sysv/aix/libc-start.c: Add real implementation.

2001-09-22  Andreas Jaeger  <aj@suse.de>

	* elf/reldep4.c (main): Add proper prototype to fix warning.

	* elf/reldep5.c (main): Remove unused variable.

	* math/math_private.h: Add prototypes.

2001-09-21  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/x86_64/Dist: New file.
	* sysdeps/x86_64/Dist: New file.
	* sysdeps/x86_64/soft-fp/Dist: New file.

	* sysdeps/gnu/Dist: Remove eval.c.

2001-09-20  Ulrich Drepper  <drepper@redhat.com>

	* malloc/memusage.c (realloc): Don't count already allocated
	memory in the sums.
	(me): Always use dlsym() to find the real implementations.

	* malloc/memusage.sh: Make -n option actually do something.

2001-09-20  Andreas Jaeger  <aj@suse.de>

	* elf/elf.h (R_390_NUM): Correct value.

	* Versions.def: Add missing versions 2.2.3 for libthread_db and
	libpthread.

	* sysdeps/unix/sysv/linux/configure.in: Add minimal kernel version
	for x86-64, install x86-64 into */lib64.

	* shlib-versions: Add x86-64.

	* elf/elf.h: Add x86-64 relocations.

2001-09-19  Ulrich Drepper  <drepper@redhat.com>

	* po/fr.po: Update from translation team.

2001-09-19  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/x86_64/Makefile: New file.
	* sysdeps/unix/sysv/linux/x86_64/Versions: New file.
	* sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/bits/mman.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/bits/stat.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/bits/statfs.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/bits/time.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/bits/types.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/brk.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/clone.S: New file.
	* sysdeps/unix/sysv/linux/x86_64/fstatfs64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/ftruncate64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/fxstat.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/fxstat64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/getdents.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/getdents64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/getrlimit64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/gettimeofday.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/glob64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/lxstat.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/lxstat64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/mmap64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/pread64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/profil-counter.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/pwrite64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/readdir.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/readdir64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/readdir64_r.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/readdir_r.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/recv.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/register-dump.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/send.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/setrlimit64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/sigaction.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/sigpending.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/sigprocmask.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/sigsuspend.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/statfs64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/sys/perm.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/sys/procfs.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/sys/reg.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/sys/ucontext.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/sys/user.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/syscall.S: New file.
	* sysdeps/unix/sysv/linux/x86_64/syscalls.list: New file.
	* sysdeps/unix/sysv/linux/x86_64/sysdep.S: New file.
	* sysdeps/unix/sysv/linux/x86_64/sysdep.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/time.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/truncate64.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/umount.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/vfork.S: New file.
	* sysdeps/unix/sysv/linux/x86_64/xstat.c: New file.
	* sysdeps/unix/sysv/linux/x86_64/xstat64.c: New file.
	* sysdeps/unix/x86_64/sysdep.S: New file.
	* sysdeps/unix/x86_64/sysdep.h: New file.
	* sysdeps/x86_64/Implies: New file.
	* sysdeps/x86_64/Makefile: New file.
	* sysdeps/x86_64/Versions: New file.
	* sysdeps/x86_64/__longjmp.S: New file.
	* sysdeps/x86_64/abort-instr.h: New file.
	* sysdeps/x86_64/atomicity.h: New file.
	* sysdeps/x86_64/bits/endian.h: New file.
	* sysdeps/x86_64/bits/setjmp.h: New file.
	* sysdeps/x86_64/bits/string.h: New file.
	* sysdeps/x86_64/bp-asm.h: New file.
	* sysdeps/x86_64/bsd-_setjmp.S: New file.
	* sysdeps/x86_64/bsd-setjmp.S: New file.
	* sysdeps/x86_64/dl-machine.h: New file.
	* sysdeps/x86_64/elf/initfini.c: New file.
	* sysdeps/x86_64/elf/start.S: New file.
	* sysdeps/x86_64/ffs.c: New file.
	* sysdeps/x86_64/ffsll.c: New file.
	* sysdeps/x86_64/fpu/bits/fenv.h: New file.
	* sysdeps/x86_64/fpu/bits/mathdef.h: New file.
	* sysdeps/x86_64/fpu/e_acosl.c: New file.
	* sysdeps/x86_64/fpu/e_atan2l.c: New file.
	* sysdeps/x86_64/fpu/e_exp2l.S: New file.
	* sysdeps/x86_64/fpu/e_expl.c: New file.
	* sysdeps/x86_64/fpu/e_fmodl.S: New file.
	* sysdeps/x86_64/fpu/e_log10l.S: New file.
	* sysdeps/x86_64/fpu/e_log2l.S: New file.
	* sysdeps/x86_64/fpu/e_logl.S: New file.
	* sysdeps/x86_64/fpu/e_powl.S: New file.
	* sysdeps/x86_64/fpu/e_rem_pio2l.c: New file.
	* sysdeps/x86_64/fpu/e_scalbl.S: New file.
	* sysdeps/x86_64/fpu/e_sqrtl.c: New file.
	* sysdeps/x86_64/fpu/fclrexcpt.c: New file.
	* sysdeps/x86_64/fpu/fedisblxcpt.c: New file.
	* sysdeps/x86_64/fpu/feenablxcpt.c: New file.
	* sysdeps/x86_64/fpu/fegetenv.c: New file.
	* sysdeps/x86_64/fpu/fegetexcept.c: New file.
	* sysdeps/x86_64/fpu/fegetround.c: New file.
	* sysdeps/x86_64/fpu/feholdexcpt.c: New file.
	* sysdeps/x86_64/fpu/fesetenv.c: New file.
	* sysdeps/x86_64/fpu/fesetround.c: New file.
	* sysdeps/x86_64/fpu/fgetexcptflg.c: New file.
	* sysdeps/x86_64/fpu/fraiseexcpt.c: New file.
	* sysdeps/x86_64/fpu/fsetexcptflg.c: New file.
	* sysdeps/x86_64/fpu/ftestexcept.c: New file.
	* sysdeps/x86_64/fpu/libm-test-ulps: New file.
	* sysdeps/x86_64/fpu/math_ldbl.h: New file.
	* sysdeps/x86_64/fpu/printf_fphex.c: New file.
	* sysdeps/x86_64/fpu/s_atanl.c: New file.
	* sysdeps/x86_64/fpu/s_cosl.S: New file.
	* sysdeps/x86_64/fpu/s_expm1l.S: New file.
	* sysdeps/x86_64/fpu/s_fpclassifyl.c: New file.
	* sysdeps/x86_64/fpu/s_isinfl.c: New file.
	* sysdeps/x86_64/fpu/s_isnanl.c: New file.
	* sysdeps/x86_64/fpu/s_log1pl.S: New file.
	* sysdeps/x86_64/fpu/s_logbl.c: New file.
	* sysdeps/x86_64/fpu/s_nextafterl.c: New file.
	* sysdeps/x86_64/fpu/s_nexttoward.c: New file.
	* sysdeps/x86_64/fpu/s_nexttowardf.c: New file.
	* sysdeps/x86_64/fpu/s_rintl.c: New file.
	* sysdeps/x86_64/fpu/s_significandl.c: New file.
	* sysdeps/x86_64/fpu/s_sincosl.S: New file.
	* sysdeps/x86_64/fpu/s_sinl.S: New file.
	* sysdeps/x86_64/fpu/s_tanl.S: New file.
	* sysdeps/x86_64/gmp-mparam.h: New file.
	* sysdeps/x86_64/hp-timing.c: New file.
	* sysdeps/x86_64/hp-timing.h: New file.
	* sysdeps/x86_64/htonl.S: New file.
	* sysdeps/x86_64/memusage.h: New file.
	* sysdeps/x86_64/setjmp.S: New file.
	* sysdeps/x86_64/soft-fp/sfp-machine.h: New file.
	* sysdeps/x86_64/stackinfo.h: New file.
	* sysdeps/x86_64/sysdep.h: New file.
	* sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed: New file.

	* sysdeps/ieee754/ldbl-128/s_erfl.c: New file, contributed Stephen
	L Moshier.

2001-09-18  Ulrich Drepper  <drepper@redhat.com>

	* malloc/malloc.c (ptmalloc_init): Handle _environ==NULL.
	Reported by B. D. Elliott <bde@nwlink.com> [PR libc/2541].

2001-09-18  Andreas Schwab  <schwab@suse.de>

	* elf/dl-load.c (_dl_map_object_from_fd): Update handling of scope
	list, now that l_scope is a pointer.

	* elf/dl-open.c (dl_open_worker): Fix thinko when enlarging the
	scope list.

2001-09-18  kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* sysdeps/sh/dl-machine.h (elf_machine_rela): Fix reverse condition.
	(elf_machine_rela_relative): Add a missing declaration.

2001-09-18  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: New.
	* sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed: New.
	* sysdeps/unix/sysv/linux/configure.in: Add ia64 and s390
	ldd-rewrite scripts.

2001-09-18  Ulrich Drepper  <drepper@redhat.com>

	* elf/ldd.bash.in: Update copyright message.

2001-09-17  H.J. Lu  <hjl@gnu.org>

	* hurd/hurdmalloc.c (bcopy): Removed.
	(realloc): Replace bcopy with memcpy.
	* hurd/path-lookup.c (file_name_path_scan): Likewise.
	* resolv/gethnamaddr.c (map_v4v6_address): Likewise.
	* sunrpc/rpcinfo.c (pmapdump): Likewise.

	* resolv/gethnamaddr.c (getanswer): Replace bcopy with memmove.
	(gethostbyaddr): Likewise.
	* sunrpc/rpcinfo.c (get_inet_address): Likewise.

2001-09-18  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/gnu/eval.c: Removed.

2001-09-18  Andreas Jaeger  <aj@suse.de>

	* sysdeps/i386/fpu/s_logbl.S: Move to ...
	* sysdeps/i386/fpu/s_logbl.c: ...here, use inline assembler.

	* sysdeps/i386/fpu/s_rintl.S: Move to ...
	* sysdeps/i386/fpu/s_rintl.c: ...here, use inline assembler.

	* sysdeps/i386/fpu/s_significandl.S: Move to ...
	* sysdeps/i386/fpu/s_significandl.c: ...here, use inline assembler.

2001-09-16  Ulrich Drepper  <drepper@redhat.com>

	* string/strcoll.c [USE_IN_EXTENDED_LOCALE_MODEL]: Correctly get
	nrules value.

2001-09-14  H.J. Lu  <hjl@gnu.org>

	* sysdeps/mips/fpu/libm-test-ulps: Updated.

2001-09-14  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: Fix a typo.
	Patch by Florian La Roche <laroche@redhat.com>.

	* string/bits/string2.h (__strtok_r_1c): Optimize a bit.

	* sysdeps/unix/sysv/linux/net/ethernet.h: Correct references to
	ETHER_CRC_LEN.

2001-09-14  Andreas Schwab  <schwab@suse.de>

	* posix/execl.c: Fix last argument of memcpy.  Reported by Brian
	Sumner <bls@sgi.com>.
	* posix/execlp.c: Likewise.

2001-09-13  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-deps.c (_dl_map_object_deps): Fix filter handling if filter
	is already found earlier in the search scope.

2001-09-12  Jakub Jelinek  <jakub@redhat.com>

	* rt/Makefile (LDFLAGS-rt.so): Use shared thread library as librt's
	filter.

2001-09-13  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/powerpc/fpu/libm-test-ulps: Adjust expected errors for j0.

2001-09-12  Ulrich Drepper  <drepper@redhat.com>

	* config.h.in: Enforce optimization to be used.
	* Makeconfig (preprocess-versions): Define ASSEMBLER.
	* stdlib/Makefile (isomac-CFLAGS): Define to -O.
	* posix/Makefile (annexc-CFLAGS): Define to -O.
	* sysdeps/unix/make-syscalls.sh: Define __OPTIMIZE__ in use of asm_CPP.

2001-09-11  Ulrich Drepper  <drepper@redhat.com>

	* nscd/nscd_gethst_r.c: Don't expect IPv6 addresses for IPv4 lookup.
	Patch by Stephan Kulow.

2001-09-08  Ben Collins  <bcollins@debian.org>

	* sysdeps/arm/dl-machine.h (elf_machine_rel): Fix thinko in
	usage of RESOLVE() (r_type, not reloc->r_type).

2001-09-08  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-object.c: Avoid allocating extra memory block for name.
	* elf/dl-close.c (_dl_close): Don't free l_libname if it is not
	allocated separately.
	* elf/dl-load.c (_dl_map_object_from_fd): Likewise.

2001-09-08  H.J. Lu  <hjl@gnu.org>

	* po/zh_TW.po: Fix a typo.

2001-09-07  Tom Rix  <trix@redhat.com>

	* sysdeps/unix/sysv/aix/sysv_termio.h: New file.

2001-08-26  Tom Rix  <trix@redhat.com>

	* sysdeps/unix/sysv/aix/Makefile (aix-syscalls.o): More linker
	command line options.
	* sysdeps/unix/sysv/aix/start.s: New file, rework of start.c
	* sysdeps/unix/sysv/aix/start.c: Removed.
	* sysdeps/unix/sysv/aix/start-libc.c: New file.
	* sysdeps/unix/sysv/aix/init-first.c: New file.
	* sysdeps/unix/sysv/aix/fcntl.c: Alias __libc_fcntl to __fcntl.

2001-09-08  Ben Collins  <bcollins@debian.org>

	* sysdeps/arm/dl-machine.h: Fix usage of new _dl_signal_error() format.
	* sysdeps/generic/dl-machine.h: Likewise.
	* sysdeps/hppa/dl-fptr.c: Likewise.
	* sysdeps/ia64/dl-fptr.c: Likewise.
	* sysdeps/mach/hurd/dl-sysdep.c: Likewise.
	* sysdeps/mips/dl-machine.h: Likewise.
	* sysdeps/mips/mips64/dl-machine.h: Likewise.
	* sysdeps/powerpc/dl-machine.c: Likewise.

2001-09-07  Ben Collins  <bcollins@debian.org>

	* sysdeps/sparc/sparc32/dl-machine.h: Fix typo.

	* sysdeps/hppa/dl-lookupcfg.h: Forward declare struct link_map.

2001-09-08  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-lookup.c (add_dependency): Bump l_opencount of all
	dependencies if necessary.

	* elf/dl-close.c (_dl_close): If object has no r_list (i.e., wasn't
	loaded directly) determine length if l_initfini list by iterating
	over its elements.  Minor optimizations.
	* elf/dl-deps.c (_dl_map_object_deps): Always add own map to l_initfini
	for dependency objects.
	If object was already loaded check whether any of the dependencies
	is already on the relocation dependency list.  If yes, remove the
	latter.  Minor optimizations.
	* elf/dl-lookup.c (add_dependency): Add check for self reference of
	maps here.  Search l_initfini list only if the object was loaded
	directly and not only as a dependency.
	(_dl_lookup_symbol): Add relocation dependency also if object
	is not in global scope.  Remove test for self-reference here.
	(_dl_lookup_versioned_symbol): Likewise.
	* elf/dl-object (_dl_new_object): Cleanup.  Initialize dont_free
	element of first name record.
	* elf/loadtest.c: Add some more test to recognize early if an object
	wasn't unloaded.
	* elf/Makefile: Add rules to build and run reldep5.
	* elf/reldep5.c: New file.
	* elf/reldepmod5.c: New file.
	* elf/reldepmod6.c: New file.

	* elf/reldep2.c: Fix typo.

2001-09-07  Ulrich Drepper  <drepper@redhat.com>

	* include/link.h (struct link_map): Add l_scope_mem and l_scope_max
	elements.  Change l_scope to be a pointer only.
	* elf/dl-object.c (_dl_new_object): Initialize l_scope and l_scope_max.
	* elf/dl-open.c (dl_open_worker): If dependency wasn't just opened
	here add searchlist of newly open file to the dependency's scope.
	* elf/dl-close.c (_dl_close): If dependency is used otherwise remove
	only searchlist from its scope.  Free own scope array if necessary.
	* elf/Makefile (tests): Add dblload and dblunload now.

2001-09-06  Andreas Jaeger  <aj@suse.de>

	* sysdeps/ieee754/ldbl-128/e_lgammal_r.c: New file, contributed
	Stephen L Moshier.

2001-09-05  Ulrich Drepper  <drepper@redhat.com>

	* elf/Makefile: Add rules to build new tests.  Don't run them yet since
	they both fail.
	* elf/dblload.c: New file.
	* elf/dblloadmod1.c: New file.
	* elf/dblloadmod2.c: New file.
	* elf/dblloadmod3.c: New file.
	* elf/dblunload.c: New file.

2001-09-04  Richard Henderson  <rth@redhat.com>

	* elf/elf.h (R_ALPHA_OP_*, R_ALPHA_IMMED_*): Remove.
	(R_ALPHA_GPREL16): Rename from R_ALPHA_IMMED_GP_16.

2001-09-04  Ulrich Drepper  <drepper@redhat.com>

	Correct very misleading message for error in failed runtime relocation.
	* elf/dl-error.c (_dl_signal_error): Take extra parameter to describe
	place of the error.
	(_dl_signal_cerror): Likewise.
	* sysdeps/generic/ldsodefs.h: Adjust prototypes.
	* elf/dl-close.c: Likewise.
	* elf/dl-deps.c: Likewise.
	* elf/dl-load.c: Likewise.
	* elf/dl-lookup.c: Likewise.
	* elf/dl-open.c: Likewise.
	* elf/dl-reloc.c: Likewise.
	* elf/dl-sym.c: Likewise.
	* elf/dl-version.c: Likewise.
	* sysdeps/generic/dl-sysdep.c: Likewise.

2001-09-04  Jakub Jelinek  <jakub@redhat.com>

	* iconv/strtab.c (strtabinit): Initialize null Strent.
	(newstring): Move len == 0 handling...
	(strtabadd): ...here.
	If len == 1, return null Strent.
	When inserting a suffix of an existing string, check if
	it is not equal to some suffix already recorded.
	Copy left and right members over if adding longer string.

2001-09-04  Jakub Jelinek  <jakub@redhat.com>

	* sunrpc/rpc_cout.c (upcase): Account for trailing '\0'.

	* sysdeps/unix/sysv/linux/alpha/gethostname.c: Include <errno.h>.
	(__syscall_gethostname): Add prototype.

2001-09-04  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-object.c (_dl_new_object): Remove unnecessary if.

2001-09-02  Ulrich Drepper  <drepper@redhat.com>

	* elf/rtld.c (dl_main): Increment l_opencount for main binary.

2001-08-27  Roland McGrath  <roland@frob.com>

	* sysdeps/unix/sysv/gethostname.c (__gethostname): When LEN is too
	short, copy that much into NAME anyway before returning error.

2001-09-01  Richard Henderson  <rth@redhat.com>

	* sysdeps/alpha/elf/Dist: Remove file.
	* sysdeps/alpha/elf/Makefile: Remove file.
	* sysdeps/alpha/elf/crtbegin.S: Remove file.
	* sysdeps/alpha/elf/crtend.S: Remove file.
	* sysdeps/alpha/elf/initfini.c: New file.

2001-09-01  Mark Kettenis  <kettenis@gnu.org>

	* iconv/tst-iconv1.c: Include <stddef.h> for wchar_t.
	* iconv/tst-iconv3.c: Likewise.

2001-09-01  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/generic/inttypes.h (__gwchar_t): Define to wchar_t for C++.

2001-09-01  Ulrich Drepper  <drepper@redhat.com>

	* iconv/gconv_cache.c: Rename variable cache to __gconv_cache and
	export it.
	* iconv/Versions (libc) [GLIBC_2.2.5]: Export __gconv_cache.
	* iconv/iconv_prog.c (insert_cache): New function.
	(print_known_names): If cache is used call insert_cache to use the
	information from the cache [PR libc/2509].

2001-08-31  Ulrich Drepper  <drepper@redhat.com>

	* time/strptime.c (strptime_internal): Recognize 'l' format and
	handle it like 'I' for symmetry with strftime.

2001-08-31  Richard Henderson  <rth@redhat.com>

	* elf/dl-support.c (_dl_cpuclock_offset): Protect with NONAVAIL.
	(HP_TIMING_AVAIL): Set to HP_SMALL_TIMING_AVAIL if present.
	* elf/rtld.c (HP_TIMING_AVAIL): Likewise.
	(print_statistics): Make scalar unsigned long long.
	* sysdeps/alpha/hp-timing.h: New file.

2001-08-31  Jakub Jelinek  <jakub@redhat.com>

	* stdio-common/perror.c (perror): Save errno early, pass it
	down to perror_internal.
	(perror_internal): Add errnum argument.

2001-08-31  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/alpha/dl-machine.h (elf_machine_rela): Remove unused code.
	Don't add old memory content for R_ALPHA_REFQUAD.

2001-08-30  Ulrich Drepper  <drepper@redhat.com>

	* crypt/md5-crypt.c (__md5_crypt_r): Compute used and required
	memory correctly.

	* sysdeps/unix/sysv/linux/ia64/ioperm.c (_ioperm): Use __open
	instead of open, __close instead of close, __getpagesize instead
	of getpagesize.

	* string/argz-stringify.c (__argz_stringify): Use __strnlen
	instead of strnlen.
	* include/string.h (strndupa): Redefine here to use __strnlen
	instead of strnlen.
	* string/strndup.c (__strndup): Use __strnlen not strnlen.

	* misc/syslog.c (vsyslog): Fix typo in last change (connect ->
	connected).

2001-08-30  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/alpha/dl-machine.h (elf_machine_rela): Don't handle
	R_ALPHA_RELATIVE if RTLD_BOOTSTRAP and HAVE_Z_COMBRELOC.  Only check
	for rtld map if neither RTLD_BOOTSTRAP nor HAVE_Z_COMBRELOC is defined.
	* sysdeps/i386/dl-machine.h (elf_machine_rel): Similarly.
	* sysdeps/ia64/dl-machine.h (elf_machine_rel): Similarly.
	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rel): Similarly.
	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rel): Similarly.

2001-08-30  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/alpha/fpu/libm-test-ulps: Adjust j0 ULPs.

2001-08-30  Andreas Jaeger  <aj@suse.de>

	* sysdeps/ieee754/ldbl-128/e_jnl.c: New file,
	contributed Stephen L Moshier.

2001-08-30  Jakub Jelinek  <jakub@redhat.com>

	* sunrpc/etc.rpc (sgi_fam): Add.

2001-08-30  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/alpha/gethostname.c: New file.

2001-08-29  Ulrich Drepper  <drepper@redhat.com>

	* nis/nis_findserv.c (__nis_findfastest): Don't fail if reply received
	first is from a previous call.
	Patch by Alexander Belopolsky <alexb@rentec.com> for [PR libc/3670].

2001-08-29  Andreas Schwab  <schwab@suse.de>

	* sysdeps/ia64/fpu/libm-test-ulps: Updated.

2001-08-25  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* config.make.in (INSTALL_SCRIPT): Define.
	* Makeconfig (INSTALL_SCRIPT): Define.
	* Makerules (do-install-script): New macro to install scripts using
	INSTALL_SCRIPT.
	(install-bin-script): New rule to install scripts with
	do-install-script.
	(install-bin-script-nosubdir): New rule.
	(install-no-libc.a-nosubdir): Add install-bin-script-nosubdir.
	(distinfo-vars): Add $(install-bin-script).
	* Rules (others): Likewise.
	* Makefile (glibcbug): Install with install-bin-script.
	* debug/Makefile (xtrace): Likewise.
	(catchsegv): Likewise.
	* elf/Makefile (ldd): Likewise.
	* malloc/Makefile (mtrace): Likewise.
	* timezone/Makefile (tzselect): Likewise.

2001-08-29  H.J. Lu  <hjl@gnu.org>

	* sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Pass
	ELF_RTYPE_CLASS_PLT, instead of R_MIPS_REL32, to
	_dl_lookup_versioned_symbol () and _dl_lookup_symbol ().

2001-08-29  Andreas Schwab  <schwab@suse.de>

	* sysdeps/m68k/fpu/libm-test-ulps: Updated.

2001-08-28  H.J. Lu  <hjl@gnu.org>

	* Makeconfig (combreloc-LDFLAGS): New variable.
	Add it to LDFLAGS.so, LDFLAGS-rtld, and +link.
	* config.make.in (have-z-combreloc): New variable.
	* configure.in: Substitute libc_cv_z_combreloc.

2001-08-29  Ulrich Drepper  <drepper@redhat.com>

	* po/sv.po: Update from translation team.
	* po/fr.po: Likewise.
	* po/da.po: Likewise.

2001-08-28  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* Makerules: Fix a typo: MD% -> MD5.

2001-08-28  Ulrich Drepper  <drepper@redhat.com>

	* sunrpc/rpc_hout.c (pargdef): Function must take pointer to object.
	Patch by Patrick Duval <Patrick.Duval@devinci.fr>.

2001-08-28  Andreas Jaeger  <aj@suse.de>

	* manual/libc-texinfo.sh: Add entry about free manuals.

	* manual/contrib.texi (Contributors): Fix cross reference.

	* manual/libc.texinfo (Copying): Include freemanuals.

	* manual/Makefile (appendices): Add freemanuals.

	* manual/freemanuals.texi: New file.
	Patch by Brian Youmans <3diff@gnu.org>.

	* manual/libm-err-tab.pl: Pretty print more platforms, print a
	smaller table.

	* manual/math.texi (Errors in Math Functions): Fix grammar, start
	table on separate page.
	Patch by Brian Youmans <3diff@gnu.org>.

2001-08-27  Ulrich Drepper  <drepper@redhat.com>

	* misc/syslog.c (vsyslog): Try a bit harder to use syslogd.  If
	the connection went down after we first used it try to connect
	again and resend the message before printing to the console.
	Reported by Coserea Gh. Tudor <tudore@tudore.gecadsoftware.com>.

2001-08-27  Jakub Jelinek  <jakub@redhat.com>

	* string/tst-strlen.c (main): Test strnlen (, -1) too.
	* sysdeps/generic/strnlen.c (__strnlen): Fix for maxlens with top
	bit set.

2001-08-27  Ulrich Drepper  <drepper@redhat.com>

	* iconv/strtab.c (searchstring): Use correct length for comparison.
	(strtabadd): Account total size correct if new string has old string as
	substring.

2001-08-27  Jakub Jelinek  <jakub@redhat.com>

	* elf/rtld.c (dl_main): Update call to _dl_lookup_symbol.

2001-08-27  Andreas Jaeger  <aj@suse.de>

	* sysdeps/i386/fpu/libm-test-ulps (float): Add ulps for new tests.

	* math/libm-test.inc (j0_test): Add extra tests.
	* sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Use |x|,
	not x, in Hankel approximation.
	Patches by Stephen L Moshier.

2001-08-26  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/ia64/dl-lookupcfg.h: Add forward declaration for struct
	link_map.

	* configure.in: Fix test for .rela.dyn section.

	* elf/dl-runtime.c: Update calls to _dl_lookup_*.

2001-08-26  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-reloc.c (RESOLVE_MAP, RESOLVE): Use elf_machine_type_class
	instead of elf_machine_lookup_noexec_p and elf_machine_lookup_noplt_p.
	Pass type_class to _dl_lookup_*.
	* elf/dl-lookup.c (_dl_lookup_symbol): Take type_class parameter now.
	Pass around just type_class instead of noexec, noplt pair.
	(_dl_lookup_versioned_symbol): Likewise.
	(_dl_lookup_symbol_skip): Pass around just type_class instead of
	noexec, noplt pair.
	(_dl_lookup_versioned_symbol_skip): Likewise.
	(_dl_do_lookup, _dl_do_lookup_versioned): Likewise.
	* elf/do-lookup.h (do_lookup): Likewise.
	* include/link.h (struct link_map): Replace noexec and noplt fields
	in l_lookup_cache with type_class field.
	* sysdeps/generic/ldsodefs.h (ELF_RTYPE_CLASS_PLT,
	ELF_RTYPE_CLASS_COPY): Define.
	Adjust prototypes for _dl_lookup_symbol and
	_dl_lookup_versioned_symbol.
	* sysdeps/alpha/dl-machine.h (elf_machine_lookup_noplt_p,
	elf_machine_lookup_noexec_p): Remove.
	(elf_machine_type_class): Define.
	* sysdeps/arm/dl-machine.h: Likewise.
	* sysdeps/hppa/dl-machine.h: Likewise.
	* sysdeps/cris/dl-machine.h: Likewise.
	* sysdeps/i386/dl-machine.h: Likewise.
	* sysdeps/ia64/dl-machine.h: Likewise.
	* sysdeps/m68k/dl-machine.h: Likewise.
	* sysdeps/mips/mips64/dl-machine.h: Likewise.
	* sysdeps/mips/dl-machine.h: Likewise.
	* sysdeps/powerpc/dl-machine.h: Likewise.
	* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
	* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
	* sysdeps/sh/dl-machine.h: Likewise.
	* sysdeps/s390/s390-32/dl-machine.h: Likewise.
	* sysdeps/s390/s390-64/dl-machine.h: Likewise.

2001-08-26  Ulrich Drepper  <drepper@redhat.com>

	* manual/message.texi (Advanced gettext functions): Change
	description of plural forms for Slovak.
	Reported by Marcel Telka <marcel@telka.sk>.

	* manuaL/time.texi (Low-Level Time String Parsing): Fix description of
	%z.  Reported by C. Scott Ananian <cananian@lesser-magoo.lcs.mit.edu>.

2001-08-26  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/s390/s390-32/dl-machine.h (elf_machine_lazy_rel): Fix a
	typo.  Patch by Florian La Roche <laroche@redhat.com>.

2001-08-26  Ulrich Drepper  <drepper@redhat.com>

	* include/link.h (struct link_map): Add l_lookup_cache element.
	* elf/dl-reloc.c (RESOLVE): Add symbol caching here.
	(RESOLVE_MAP): Likewise.
	(_dl_relocate_object): Remove cache initialization.
	* elf/dl-lookup.c: Rip out cache handling code.
	* sysdeps/generic/ldsodefs.h: Remove lookup_cache struct and variable
	declarations.

	* elf/dl-lookup.c (_dl_lookup_symbol): Reorder some conditions and
	remove some __builtin_expect.
	(_dl_lookup_versioned_symbol): Likewise.

	* config.h.in: Add HAVE_Z_COMBRELOC.
	* configure.in: Add test for -z combreloc.

	* sysdeps/i386/dl-machine.h (elf_machine_rel): Minor cleanups and
	optimizations.  Use HAVE_Z_COMBRELOC to avoid generaton of
	R_386_RELATIVE handling for ld.so startup.  Reduce RTLD_BOOTSTRAP
	case to almost no code.

2001-08-25  Ulrich Drepper  <drepper@redhat.com>

	* po/tr.po: Update from translation team.

2001-08-24  Andreas Jaeger  <aj@suse.de>

	* iconv/Makefile (extra-objs): Add iconvconfig-modules so that
	make clean works.

2001-08-24  Ulrich Drepper  <drepper@redhat.com>

	* elf/rtld.c (print_statistics): Printf % after percent values.
	* elf/dl-misc.c (_dl_debug_vdprintf): Implement %%.

	* elf/dl-lookup.c (_dl_lookup_symbol): If we use the cache we
	don't have to compute the hash value and initialize current_value.
	Move reference_name variable to where it is needed.
	(_dl_lookup_versioned_symbol): Likewise.

2001-08-24  Roland McGrath  <roland@frob.com>

	* string/tester.c (test_strerror): Don't use _sys_errlist/_sys_nerr.
	Just test that strerror returns non-null for a few errno codes.

2001-08-23  Roland McGrath  <roland@frob.com>

	* hurd/Versions (libc: GLIBC_2.2.5): New set; add _hurd_raise_signal,
	_hurdsig_interrupt_timeout, _hurdsig_fault_preemptor.

	* sysdeps/posix/shm_unlink.c (shm_unlink): __unlink -> unlink.

	* mach/Versions (libc: GLIBC_2.2.5): New set; add __mach_msg_destroy,
	__mach_reply_port.

2001-08-24  Ulrich Drepper  <drepper@redhat.com>

	* nss/test-netdb.c (test_hosts): Don't segfault if gethostname
	returns NULL.

	* elf/do-rel.h (elf_dynamic_do_rel): Fix problem with ld.so
	startup.  Explicitly remove lazy part for RTLD_BOOTSTRAP since gcc
	doesn't do it.
	* elf/rtld.c: Include <sys/param.h>.
	* elf/dl-reloc.c: Likewise.

2001-08-24  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* sysdeps/unix/sysv/linux/mips/configure.in: Define AC_SUBST to
	empty to prevent junk from being generated.
	* sysdeps/unix/sysv/linux/mips/configure: Regenerated.

2001-08-24  Jakub Jelinek  <jakub@redhat.com>

	* elf/do-rel.h (elf_dynamic_do_rel): If l_addr is 0, skip relative
	records.  Rename endrel to relative, initialize it to r, and use it
	in elf_machine_rel_relative calls.  Point r after relative relocs.

2001-08-24  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/i386/dl-machine.h (elf_machine_rel): Correct prediction
	of R_386_NONE.

2001-08-24  Jakub Jelinek  <jakub@redhat.com>

	* elf/do-rel.h (elf_machine_rel_relative): Define for rela if
	necessary.  Undefine newly defined macros at the end.
	* sysdeps/hppa/dl-machine.h (elf_machine_rela_relative):
	Rename from elf_machine_rel_relative.
	* sysdeps/cris/dl-machine.h (elf_machine_rela_relative): Likewise.
	* sysdeps/m68k/dl-machine.h (elf_machine_rela_relative): Likewise.
	* sysdeps/powerpc/dl-machine.h (elf_machine_rela_relative): Likewise.
	* sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela_relative):
	Likewise.
	* sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela_relative):
	Likewise.
	* sysdeps/ia64/dl-machine.h (elf_machine_rela_relative): Likewise.
	Fix argument types.
	* sysdeps/alpha/dl-machine.h (elf_machine_rela_relative): Likewise.
	Fix argument types.
	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela_relative):
	Likewise.  Fix argument types.
	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela_relative):
	Likewise.  Fix argument types.
	* sysdeps/sh/dl-machine.h (elf_machine_rela_relative): Likewise.
	Fix argument types.
	* sysdeps/mips/dl-machine.h (elf_machine_rel_relative): Use
	ElfW(Rel) in argument.
	* sysdeps/mips/mips64/dl-machine.h (elf_machine_rel_relative): New
	function.

2001-08-24  Alexandre Oliva  <aoliva@redhat.com>

	* sysdeps/sh/dl-machine.h (elf_machine_rela): Fix typo.

2001-08-24  Andreas Jaeger  <aj@suse.de>

	* sysdeps/ieee754/ldbl-128/e_j1l.c: New file, contributed by
	Stephen L Moshier <moshier@mediaone.net>.

2001-08-24  Ulrich Drepper  <drepper@redhat.com>

	* elf/do-rel.h (elf_dynamic_do_rel): RELATIVE relocations comes
	first if RELCOUNT is set.

	* elf/do-rel.h (elf_dynamic_do_rel): If not relocating lazily, don't
	call elf_machine_rel for the last DT_RELCOUNT relocations but instead
	elf_machine_rel_relative.
	* sysdeps/alpha/dl-machine.h: Define elf_machine_rel_relative.
	Minor optimizations.
	* sysdeps/arm/dl-machine.h: Likewise.
	* sysdeps/cris/dl-machine.h: Likewise.
	* sysdeps/hppa/dl-machine.h: Likewise.
	* sysdeps/i386/dl-machine.h: Likewise.
	* sysdeps/ia64/dl-machine.h: Likewise.
	* sysdeps/m68k/dl-machine.h: Likewise.
	* sysdeps/mips/dl-machine.h: Likewise.
	* sysdeps/powerpc/dl-machine.h: Likewise.
	* sysdeps/s390/s390-32/dl-machine.h: Likewise.
	* sysdeps/s390/s390-64/dl-machine.h: Likewise.
	* sysdeps/sh/dl-machine.h: Likewise.
	* sysdeps/sparc/sparc32/dl-machine.h: Likewise.
	* sysdeps/sparc/sparc64/dl-machine.h: Likewise.

2001-08-23  Roland McGrath  <roland@frob.com>

	* rt/tst-aio4.c [! SIGRTMIN] (SIGRTMIN, SIGRTMAX): Define as -1.

	* sysdeps/mach/hurd/bits/libc-lock.h: New file, initially copied from
	sysdeps/mach version.  Implement counting ("recursive") mutexes
	on top of cthreads mutexes.
	* sysdeps/mach/hurd/bits/stdio-lock.h: File removed; generic now works.

	* sysdeps/generic/bits/stdio-lock.h (_IO_lock_initializer): Define to
	_LIBC_LOCK_RECURSIVE_INITIALIZER if defined, else do an #error.
	(__libc_cleanup_region_start, __libc_cleanup_region_end,
	__libc_clean_end): Define these to call the cleanup function after
	normal exit when they're supposed to.

	* sysdeps/mach/bits/libc-lock.h (__libc_cleanup_region_start):
	Take new first arg DOIT, a boolean saying whether to really install
	any cleanup handler.
	(__libc_cleanup_region_end): Do nothing if start's DOIT arg was zero.
	(__libc_cleanup_end): Likewise.
	* sysdeps/generic/bits/libc-lock.h: Same changes.
	* stdio-common/vfscanf.c (LOCK_STREAM): Pass new arg.
	* stdio-common/vfprintf.c (buffered_vfprintf, vfprintf): Likewise.
	* sysdeps/mach/hurd/bits/stdio-lock.h (_IO_cleanup_region_start):
	Likewise.
	* misc/syslog.c (vsyslog, openlog, closelog): Likewise.
	* sysdeps/generic/bits/stdio-lock.h
	(_IO_cleanup_region_start, _IO_cleanup_region_start_noarg): Likewise.

2001-08-23  Jakub Jelinek  <jakub@redhat.com>

	* elf/ldconfig.c (search_dir): Remove stale symlinks.

2001-08-23  Jakub Jelinek  <jakub@redhat.com>

	* elf/dl-lookup.c (lookup_cache, lookup_cache_versioned): New.
	(_dl_lookup_symbol): Lookup relocations in cache and store successfull
	lookups in cache.
	(_dl_lookup_versioned_symbol): Likewise.
	* elf/dl-reloc.c (_dl_relocate_object): Initialize cache for
	relocation lookup.
	* elf/rtld.c (print_statistics): Output _dl_num_cache_relocations.
	* sysdeps/generic/ldsodefs.h (struct lookup_cache): New definition.
	(lookup_cache, lookup_cache_versioned): Add declarations.

2001-08-23  Ulrich Drepper  <drepper@redhat.com>

	* stdlib/tst-random.c (main): Swap parameters in fail call.
	Patch by Pete Bevin <pete@petebevin.com>.

2001-08-23  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/generic/inttypes.h: Use __gwchar_t instead of __wchar_t.

2001-08-23  Ulrich Drepper  <drepper@redhat.com>

	* malloc/obstack.c: Indent preprocessor directives.
	Patch by Jim Meyering <meyering@ascend.com>.

	* po/ja.po: Update from translation team.

2001-08-23  Roland McGrath  <roland@frob.com>

	* libio/tst-ungetwc1.c (main): Add a const to quiet a warning.

	* nss/test-netdb.c (test_hosts): Don't use MAXHOSTNAMELEN.
	Instead, use dynamic buffer to test gethostname's ENAMETOOLONG error.

2001-08-22  Roland McGrath  <roland@frob.com>

	* sysdeps/generic/ldsodefs.h (_dl_load_lock): Declare it here with
	__libc_lock_define_recursive.
	* elf/dl-open.c: Don't declare it here any more.
	* elf/dl-close.c: Likewise.
	* elf/dl-lookup.c: Likewise.
	* elf/dl-iteratephdr.c: Likewise.
	* elf/dl-lookup.c (add_dependency): Use __libc_lock_lock_recursive and
	__libc_lock_unlock_recursive.
	* elf/dl-close.c (_dl_close): Likewise
	* elf/dl-iteratephdr.c (__dl_iterate_phdr): Likewise
	* elf/dl-open.c (_dl_open): Likewise

	* sysdeps/generic/bits/libc-lock.h
	(__libc_lock_define_recursive): New macro.
	* sysdeps/generic/bits/stdio-lock.h (_IO_lock_t): Use it.
	(_IO_lock_lock): Use __libc_lock_lock_recursive.
	(_IO_lock_unlock): Use __libc_lock_unlock_recursive.

	* conform/conformtest.pl (checknamespace): Sort the output list.

	* sysdeps/generic/bits/poll.h (POLLWRBAND): New alias for POLLOUT.
	(POLLRDNORM, POLLRDBAND, POLLWRNORM, POLLWRBAND): Make these
	definitions conditional on [__USE_XOPEN].

	* sysdeps/mach/hurd/bits/fcntl.h (O_ASYNC, O_FSYNC, O_SYNC): Define
	these unconditionally, not only use [__USE_BSD], so as to match
	the sysdeps/unix/sysv/linux files.

2001-08-22  Ulrich Drepper  <drepper@redhat.com>

	* test-skeleton.c (add_temp_file): Add __attribute__ ((unused)) to
	avoid warnings.

	* dlfcn/tst-dladdr.c (do_test): Get address of ref1 using
	DL_LOOKUP_ADDRESS.

2001-08-22  Roland McGrath  <roland@frob.com>

	* sysdeps/generic/bits/sigaction.h (struct sigaction): Fix up
	conditionalization of sa_handler/sa_sigaction member types to
	match the sysdeps/unix/sysv/linux file.

2001-08-22  Ulrich Drepper  <drepper@redhat.com>

	* elf/dl-addr.c (_dl_addr): Handle broken binaries with zero
	symbol sizes a bit better.

	* sysdeps/ia64/strncpy.S: Complete rewrite.
	Contributed by Jakub Jelinek <jakub@redhat.com>.

	* string/stratcliff.c (main): Add strncpy test.

2001-08-22  Roland McGrath  <roland@frob.com>

	* sysdeps/generic/dl-environ.c: Include <stdlib.h> and <unistd.h>,
	and don't declare unsetenv or _environ directly.
	(unsetenv): Return int, not void.  Use __environ instead of _environ.

2001-08-01  Mark Kettenis  <kettenis@gnu.org>

	* sysdeps/unix/bsd/bsd4.4/Makefile: New file.
	* sysdeps/unix/bsd/bsd4.4/Versions: New file.
	* sysdeps/unix/bsd/bsd4.4/cmsg_nxthdr.c: New file.
	* sysdeps/unix/bsd/bsd4.4/bits/socket.h (__cmsg_nxthdr): Correct
	test for cmsg struct size.

2001-04-23  Paul Eggert  <eggert@twinsun.com>

	* posix/getopt.h (getopt_long, getopt_long_only, _getopt_internal):
	Rename __argc to ___argc in prototypes to avoid compatibility
	problems with systems that reserve the identifier "__argc".
	Similarly for __argv.

2001-08-21  Roland McGrath  <roland@frob.com>

	* stdio-common/tst-fseek.c: Include <time.h> for `time' declaration.

	* mach/Makefile (tests): Removed.
	* mach/hello.c: File removed.

2001-08-22  Ulrich Drepper  <drepper@redhat.com>

	* po/sv.po: Update from translation team.

	* stdio-common/vfscanf.c: Fix handling of %l[].
	Reported by Mitsuru Chinen <mchinen@yamato.ibm.com>.

	* libio/Makefile (tests): Add tst-sscanf.
	* libio/tst-sscanf.c: New file.

	* elf/dl-addr.c (_dl_addr): Fix tests to determine dli_sname.
	* malloc/mtrace.c (tr_where): dli_sname always points to a
	non-empty string if != NULL.
	Reported by Tim Janik <timj@gtk.org>.

2001-08-22  Jakub Jelinek  <jakub@redhat.com>

	* sunrpc/xdr_rec.c (xdrrec_create): Fix buf sizes before allocating
	buf.  Free resources on failure.
	* sunrpc/svc_unix.c (svcunix_create): Free resources on failure.
	(makefd_xprt): Likewise.
	* sunrpc/svc_udp.c (svcudp_bufcreate): Likewise.
	* sunrpc/svc_tcp.c (svctcp_create, makefd_xprt): Likewise.
	* sunrpc/auth_unix.c (authunix_create): Likewise.

2001-08-21  Jakub Jelinek  <jakub@redhat.com>

	* string/strnlen.c: Remove.
	* sysdeps/generic/strnlen.c: New.
	* sysdeps/i386/i486/bits/string.h (strnlen): Remove.

2001-08-21  Roland McGrath  <roland@frob.com>

	* sysdeps/mach/i386/machine-sp.h (__thread_stack_pointer): Define this
	as a macro, not an extern inline function.

	* hurd/Versions (GLIBC_2.2.5): New set, define __hurd_fail here.
	* Versions.def (libc): Add GLIBC_2.2.5 set.
	* hurd/hurd.h (_HURD_H_EXTERN_INLINE): New macro.
	(__hurd_fail): Use that instead of _EXTERN_INLINE in decl.

2001-08-20  Roland McGrath  <roland@frob.com>

	* hurd/hurdlookup.c (__hurd_file_name_lookup): Fail with ENOENT for "".
	(__hurd_file_name_split, __hurd_directory_name_split): Likewise.

2001-08-21  Ulrich Drepper  <drepper@redhat.com>

	* string/bits/string2.h: Remove strnlen optimization here.
	* sysdeps/i386/i486/bits/string.h: Add it here.

2001-08-21  Wolfram Gloger  <wg@malloc.de>

	* malloc/malloc.c: Make access to ..._hook pointers thread-safe.

2001-08-21  Ulrich Drepper  <drepper@redhat.com>

	* po/gl.po: Update from translation team.

2001-08-20  Ulrich Drepper  <drepper@redhat.com>

	* misc/error.c (error_tail): Use fputws_unlocked instead of fputws.
	* misc/err.c (convert_and_print): Likewise.

	* malloc/obstack.c (print_and_abort): Use fprintf instead of two
	function calls.

2001-08-20  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: Revert the
	change of the gregset_t type.
	* sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h: Likewise.

2001-08-20  kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* sysdeps/unix/sysv/linux/sh/sysdep.S: Align errno.

2001-08-20  Ulrich Drepper  <drepper@redhat.com>

	* posix/regex.c (truncate_wchar): Use wcrtomb not wctomb.

	* string/strnlen.c: Fix the implementation.  We cannot use memchr.

2001-08-18  Mark Kettenis  <kettenis@gnu.org>

	* sysdeps/mach/hurd/i386/init-first.c (init): Initialize __environ
	before calling the cthreads initialization code.

2001-08-20  Ulrich Drepper  <drepper@redhat.com>

	* argp/argp-help.c: Fix two problems introduced in last change.

	* include/dirent.h: Include <dirstream.h> first.

2001-08-19  Ulrich Drepper  <drepper@redhat.com>

	* io/fts.c (fts_safe_changedir): Use __fxstat64 instead of __fstat.

	* sunrpc/svcauth_des.c (_svcauth_des): Avoid using bcopy.
	* sunrpc/xdr_rec.c: Likewise.
	* sunrpc/xdr_mem.c: Likewise.
	* sunrpc/svc_authux.c (_svcauth_unix): Likewise.
	* sunrpc/rpc_cmsg.c: Likewise.
	* sunrpc/getrpcport.c (getrpcport): Likewise.
	* sunrpc/clnt_simp.c (callrpc): Likewise.
	* sunrpc/clnt_gen.c (clnt_create): Likewise.
	* string/envz.c: Likewise.

	* po/ko.po: Update from translation team.

	* argp/argp-help.c: Handle wide oriented stderr stream.

2001-08-18  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/generic/strtol.c: Little optimizations.  Add some
	__builtin_expect.

	* conform/conformtest.pl: <inttypes.h> test requires <stddef.h>.

	* wcsmbs/wchar.h (wcwdith): Change parameter type to wchar_t.
	* wcsmbs/wcwidth.c (wcwdith): Likewise.
	* wcsmbs/wcwidth.h (internal_wcwdith): Likewise.

	* conform/data/unistd.h-data: Remove _SC_MULTIPLE_PROCESS.

	* conform/data/ucontext.h-data: Fix typos in ucontext_t element tests.

	* time/time.h (struct timespec): Use __time_t for tv_sec element.

	* sysdeps/generic/inttypes.h: Define __wchar_t.  Use it instead of
	wchar_t for function declarations and defintions.

	* misc/sys/select.h: Define __need_time_t before including <time.h>.
	Define suseconds_t if it hasn't happened yet.

	* iconv/gconv.h: Define __need_wchar_t before including <stddef.h>.

	* conform/data/sys/uio.h-data: Allow UIO_MAXIOV to be defined.

	* sysdeps/generic/stdint.h: Don't get definition of wchar_t from
	<stddef.h>.

	* conform/data/stddef.h-data: Remove wint_t.

	* conform/conformtest.pl: Change namespace test to take #undef
	lines into account.

	* conform/data/netinet/in.h-data: Fix typo in allow-header line.

	* conform/data/sys/socket.h-data: Add sockatmark.

2001-08-17  Ulrich Drepper  <drepper@redhat.com>

	* io/fts.c: Update from recent BSD source.

2001-08-17  Roland McGrath  <roland@frob.com>

	* stdio-common/perror.c (perror) [! USE_IN_LIBIO]: Don't use _IO_fwide.
	* misc/error.c (error_tail, error, error_at_line) [! USE_IN_LIBIO]:
	Likewise.

2001-08-17  Ulrich Drepper  <drepper@redhat.com>

	* locale/duplocale.c (__duplocale): Also initialize the special
	__ctype_* elements.

	* conform/data/netdb.h-data: Adjust gai_strerror return type.

2001-08-17  Andreas Jaeger  <aj@suse.de>

	* misc/getpass.c: Include wchar.h for prototypes.
	* malloc/obstack.c: Likewise.

2001-08-17  Ulrich Drepper  <drepper@redhat.com>

	* sunrpc/svc_simple.c (universal): Use __write instead of write.

	* wcsmbs/wcscoll.c: Also define __wcscoll.
	* include/wchar.h: Declare __wcscoll.

	* libio/fwprintf.c: Use __vfwprintf instead of vfwprintf.
	* libio/vwprintf.c: Likewise.
	* libio/wprintf.c: Likewise.

	* iconv/gconv_cache.c: Use __munmap instead of munmap.

2001-08-16  Ulrich Drepper  <drepper@redhat.com>

	* posix/regex.c [_LIBC] (convert_mbs_to_wcs): Use __mbrtowc
	instead of mbrtowc.
	[_LIBC]: Use __iswctype instead of iswctype, __wcslen instead of
	wcslen, and __wcscoll instead of wcscoll.

	* sysdeps/unix/sockatmark.c (sockatmark): Use __ioctl instead of ioctl.

	* sysdeps/unix/sysv/linux/gai_sigqueue.c (__gai_sigqueue): Use
	__getuid instead of getuid.

	* stdio-common/perror.c (perror): Use __close instead of close.
	* iconv/gconv_cache.c (__gconv_load_cache): Likewise.
	* libio/freopen.c (freopen): Likewise.
	* libio/freopen64.c (freopen64): Likewise.

	* libio/tst-ungetwc2.c (main): Define str const.

	* include/wchar.h: Add prototypes for __fwprintf and __vfwprintf.
	* libio/fwprintf.c: Also define __fwprintf.
	* stdio-common/vfprintf.c [COMPILE_WPRINTF]: Also define __vfwprintf.
	* argp/argp-fmtstream.c: Handle wide oriented stderr stream.
	* assert/assert-perr.c: Likewise.
	* assert/assert.c: Likewise.
	* gmon/gmon.c: Likewise.
	* inet/rcmd.c: Likewise.
	* malloc/obstack.c: Likewise.
	* misc/err.c: Likewise.
	* misc/error.c: Likewise.
	* misc/getpass.c: Likewise.
	* posix/getopt.c: Likewise.
	* resolv/res_hconf.c: Likewise.
	* stdio-common/perror.c: Likewise.
	* stdio-common/psignal.c: Likewise.
	* stdlib/fmtmsg.c: Likewise.
	* sunrpc/auth_unix.c: Likewise.
	* sunrpc/clnt_perr.c: Likewise.
	* sunrpc/clnt_tcp.c: Likewise.
	* sunrpc/clnt_udp.c: Likewise.
	* sunrpc/clnt_unix.c: Likewise.
	* sunrpc/svc_simple.c: Likewise.
	* sunrpc/svc_tcp.c: Likewise.
	* sunrpc/svc_udp.c: Likewise.
	* sunrpc/svc_unix.c: Likewise.
	* sunrpc/xdr.c: Likewise.
	* sunrpc/xdr_array.c: Likewise.
	* sunrpc/xdr_rec.c: Likewise.
	* sunrpc/xdr_ref.c: Likewise.
	* sysdeps/generic/wordexp.c: Likewise.

	* po/it.po: Update from translation team.

	* misc/err.c: Handle wide oriented stderr stream.

2001-08-14  Tom Rix  <trix@redhat.com>

	* iconv/gconv_cache.c (find_module): Add #ifndef STATIC_GCONV.
	* iconv/Makefile: Fix gconv_cache.c CFLAGS.

2001-08-13  Tom Rix  <trix@redhat.com>

	* sysdeps/unix/sysv/aix/Makefile: Add rule to import kernel symbols.
	* sysdeps/unix/sysv/aix/bits/types.h: Fix type of __id_t, __useconds_t
	and __intptr_t.

2001-08-15  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S (__getcontext):
	Store the access registers to the ucontext structure.
	* sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S (__getcontext):
	Likewise.

	* sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S (__setcontext):
	Load the access registers from the ucontext structure.
	* sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S (__setcontext):
	Likewise.

	* sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.h: Adjust the SC_xxx
	offsets to the new ucontext layout.
	* sysdeps/unix/sysv/linux/s390/s390-64/ucontext_i.h: Likewise.

	* sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: Fix the layout
	of the ucontext structure.
	* sysdeps/unix/sysv/linux/s390/s390-64/sys/ucontext.h: Likewise.

2001-08-15  Ulrich Drepper  <drepper@redhat.com>

	* misc/error.c (error): Handle wide oriented stderr stream correctly.
	(error_at_line): Likewise.

	* stdio-common/perror.c (perror): Implement according to standard.
	The stream orientation must not be changed if the stream was not
	oriented before the call.
	* stdio-common/Makefile (tests): Add tst-perror.
	* stdio-common/tst-perror.c: New file.


See ChangeLog.12 for earlier changes.