openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 1 participants
- 383994 discussions
Hello community,
here is the log from the commit of package apparmor-profiles
checked in at Wed Apr 5 17:12:14 CEST 2006.
--------
--- apparmor-profiles/apparmor-profiles.changes 2006-04-04 22:11:34.000000000 +0200
+++ apparmor-profiles/apparmor-profiles.changes 2006-04-05 15:57:35.000000000 +0200
@@ -1,0 +2,6 @@
+Wed Apr 5 15:48:30 CEST 2006 - varkoly(a)suse.de
+
+- Fix for posfix/smtpd postfix/smtp
+- New file usr.lib.postfix.anvil
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ apparmor-profiles.spec ++++++
--- /var/tmp/diff_new_pack.hyywjB/_old 2006-04-05 17:11:19.000000000 +0200
+++ /var/tmp/diff_new_pack.hyywjB/_new 2006-04-05 17:11:19.000000000 +0200
@@ -16,7 +16,7 @@
%endif
Summary: AppArmor profiles that are loaded into the apparmor kernel module
Version: 2.0
-Release: 19
+Release: 20
Group: Productivity/Security
Source0: %{name}-%{version}-6366.tar.gz
License: Other License(s), see package, GPL
@@ -77,6 +77,9 @@
%preun
%changelog -n apparmor-profiles
+* Wed Apr 05 2006 - varkoly(a)suse.de
+- Fix for posfix/smtpd postfix/smtp
+- New file usr.lib.postfix.anvil
* Tue Apr 04 2006 - srarnold(a)suse.de
- Fix for postfix/sasl (#159667)
- Fix for NIS/portmapper nameservice capabilities
++++++ apparmor-profiles-2.0-6366.tar.gz ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/apparmor-profiles-2.0/enabled/usr.lib.postfix.anvil new/apparmor-profiles-2.0/enabled/usr.lib.postfix.anvil
--- old/apparmor-profiles-2.0/enabled/usr.lib.postfix.anvil 1970-01-01 01:00:00.000000000 +0100
+++ new/apparmor-profiles-2.0/enabled/usr.lib.postfix.anvil 2006-04-05 15:44:42.000000000 +0200
@@ -0,0 +1,30 @@
+# $Id: usr.lib.postfix.anvil 6222 2006-02-03 23:42:57Z varkoly $
+# ------------------------------------------------------------------
+#
+# Copyright (C) 2002-2006 Novell/SUSE
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of version 2 of the GNU General Public
+# License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+#include <tunables/global>
+
+/usr/lib/postfix/anvil {
+ #include <abstractions/base>
+ #include <abstractions/nameservice>
+ #include <abstractions/kerberosclient>
+ #include <program-chunks/postfix-common>
+
+ capability setgid,
+ capability setuid,
+
+ /usr/lib/postfix/anvil rix,
+
+ /etc/postfix/main.cf r,
+ /var/spool/postfix/private/anvil rw,
+ /var/spool/postfix/pid/unix.anvil rw,
+ /proc/net/if_inet6 r,
+ /proc/sys/kernel/ngroups_max r,
+}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/apparmor-profiles-2.0/enabled/usr.lib.postfix.master new/apparmor-profiles-2.0/enabled/usr.lib.postfix.master
--- old/apparmor-profiles-2.0/enabled/usr.lib.postfix.master 2006-02-04 00:42:59.000000000 +0100
+++ new/apparmor-profiles-2.0/enabled/usr.lib.postfix.master 2006-04-05 15:41:37.000000000 +0200
@@ -27,6 +27,7 @@
/var/spool/postfix/private/tlsmgr rwl,
/var/spool/postfix/public/{cleanup,flush,pickup,qmgr,showq,tlsmgr} rwl,
+ /usr/lib/postfix/anvil px,
/usr/lib/postfix/bounce px,
/usr/lib/postfix/cleanup px,
/usr/lib/postfix/flush px,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/apparmor-profiles-2.0/enabled/usr.lib.postfix.smtp new/apparmor-profiles-2.0/enabled/usr.lib.postfix.smtp
--- old/apparmor-profiles-2.0/enabled/usr.lib.postfix.smtp 2006-04-04 01:25:22.000000000 +0200
+++ new/apparmor-profiles-2.0/enabled/usr.lib.postfix.smtp 2006-04-05 15:41:37.000000000 +0200
@@ -37,6 +37,11 @@
/proc/sys/kernel/ngroups_max r,
/usr/share/ssl/certs/ca-bundle.crt r,
/usr/share/ssl/openssl.cnf r,
+ /usr/lib64/sasl2 r,
+ /usr/lib64/sasl2/* r,
+ /usr/lib/sasl2 r,
+ /usr/lib/sasl2/* r,
+
/var/spool/postfix/pid/unix.smtp rw,
/var/spool/postfix/pid/unix.relay rw,
/etc/postfix/virtual.db r,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/apparmor-profiles-2.0/enabled/usr.lib.postfix.smtpd new/apparmor-profiles-2.0/enabled/usr.lib.postfix.smtpd
--- old/apparmor-profiles-2.0/enabled/usr.lib.postfix.smtpd 2006-02-04 00:42:59.000000000 +0100
+++ new/apparmor-profiles-2.0/enabled/usr.lib.postfix.smtpd 2006-04-05 15:41:37.000000000 +0200
@@ -37,6 +37,7 @@
/etc/postfix/smtpd_scache.pag rw,
/etc/postfix/main.cf r,
/etc/postfix/prng_exch rw,
+ /etc/ssl/servercerts/* r,
/usr/lib64/sasl2 r,
/usr/lib64/sasl2/* r,
@@ -50,7 +51,10 @@
/var/spool/postfix/pid/inet.smtps rw,
/var/spool/postfix/private/proxymap w,
/var/spool/postfix/private/rewrite w,
+ /var/spool/postfix/private/anvil w,
+ /var/spool/postfix/private/tlsmgr w,
/var/spool/postfix/public/cleanup w,
+ /var/run/sasl2/mux w,
/public/cleanup w,
/private/rewrite w,
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0
Hello community,
here is the log from the commit of package amarok
checked in at Wed Apr 5 17:11:15 CEST 2006.
--------
--- KDE/amarok/amarok.changes 2006-04-04 15:30:37.000000000 +0200
+++ amarok/amarok.changes 2006-04-05 16:52:28.000000000 +0200
@@ -1,0 +2,5 @@
+Wed Apr 5 16:50:41 CEST 2006 - dmueller(a)suse.de
+
+- fix memory leak in helix engine (#163481)
+
+-------------------------------------------------------------------
New:
----
helix-memleak-fix.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ amarok.spec ++++++
--- /var/tmp/diff_new_pack.dQ7Nvv/_old 2006-04-05 17:09:12.000000000 +0200
+++ /var/tmp/diff_new_pack.dQ7Nvv/_new 2006-04-05 17:09:12.000000000 +0200
@@ -19,7 +19,7 @@
Group: Productivity/Multimedia/Sound/Players
Summary: Media Player for KDE
Version: 1.3.8
-Release: 20
+Release: 21
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define rversion 1.3.8
%define mversion 0.5
@@ -41,6 +41,7 @@
Patch12: collectiondb-mutex.diff
Patch13: xine-memleak.patch
Patch14: konqsidebar-translation.diff
+Patch15: helix-memleak-fix.patch
%description
amaroK is a media player for all kinds of media supported by aRts or
@@ -209,6 +210,7 @@
%patch12
%patch13
%patch14
+%patch15
cp %{S:10} amarok/src/engine/helix/
. /etc/opt/kde3/common_options
update_admin --no-unsermake
@@ -339,6 +341,8 @@
/opt/kde3/bin/amarok_libvisual
%changelog -n amarok
+* Wed Apr 05 2006 - dmueller(a)suse.de
+- fix memory leak in helix engine (#163481)
* Tue Apr 04 2006 - stbinner(a)suse.de
- fix translation of Konqueror sidebar on first start (#162765)
* Fri Mar 17 2006 - dmueller(a)suse.de
++++++ helix-memleak-fix.patch ++++++
--- amarok/src/engine/helix/helix-engine.cpp
+++ amarok/src/engine/helix/helix-engine.cpp
@@ -704,6 +704,8 @@
m_lasttime += HELIX_ENGINE_TIMER;
+ prune();
+
#ifdef DEBUG_PURPOSES_ONLY
// calculate the frame rate of the scope
m_ftime += HELIX_ENGINE_TIMER;
@@ -753,27 +755,8 @@
#endif
}
-
-const Engine::Scope &HelixEngine::scope()
+unsigned long HelixEngine::prune()
{
-#if 1
-
- int i, sb = 0;
- unsigned long t;
-
-#ifdef DEBUG_PURPOSES_ONLY
- m_fcount++;
-#endif
-
- if (!m_inited)
- return m_scope;
-
- if (!m_item && !peekScopeTime(t))
- {
- m_item = getScopeBuf();
- if (m_item)
- sb++;
- }
//
// this bit is to help us keep more accurate time than helix provides
/////////////////////////////////////////////////////////////////////
@@ -804,7 +787,7 @@
if ( getScopeCount() > SCOPE_MAX_BEHIND ) // protect against naughty streams
{
resetScope();
- return m_scope;
+ return w;
}
if (!w || !m_item)
@@ -812,7 +795,7 @@
#ifdef DEBUG_PURPOSES_ONLY
m_scopebufnone++; // for tuning the scope... (scope is tuned for 44.1kHz sample rate)
#endif
- return m_scope;
+ return w;
}
while (m_item && w > m_item->etime)
@@ -821,13 +804,41 @@
delete m_item;
m_item = getScopeBuf();
- sb++;
+ m_sb++;
+ }
+
+ return w;
+}
+
+const Engine::Scope &HelixEngine::scope()
+{
+ int i;
+ unsigned long t;
+
+ m_sb = 0;
+
+#ifdef DEBUG_PURPOSES_ONLY
+ m_fcount++;
+#endif
+
+ if (!m_inited)
+ return m_scope;
+
+ if (!m_item && !peekScopeTime(t))
+ {
+ m_item = getScopeBuf();
+ if (m_item)
+ m_sb++;
}
+ unsigned long w = prune();
+ if (!w)
+ return m_scope;
+
#ifdef DEBUG_PURPOSES_ONLY
- m_scopebuftotal += sb;
- if (sb > 1)
- m_scopebufwaste += (sb-1);
+ m_scopebuftotal += m_sb;
+ if (m_sb > 1)
+ m_scopebufwaste += (m_sb-1);
#endif
if (!m_item)
--- amarok/src/engine/helix/helix-engine.h
+++ amarok/src/engine/helix/helix-engine.h
@@ -175,6 +175,7 @@
int m_scopebufnone;
int m_scopebuftotal;
#endif
+ int m_sb;
unsigned long m_lasttime;
unsigned long m_lastpos;
unsigned short m_currentScope[512];
@@ -192,6 +193,8 @@
void timerEvent( QTimerEvent * );
void resetScope();
+ unsigned long prune();
+
int print2stdout(const char *fmt, ...);
int print2stderr(const char *fmt, ...);
--- amarok/src/engine/helix/helix-engine.cpp 2006/04/05 10:30:50 1.29
+++ amarok/src/engine/helix/helix-engine.cpp 2006/04/05 13:15:50
@@ -812,6 +812,7 @@
const Engine::Scope &HelixEngine::scope()
{
+#ifndef USE_HELIX_WRAPPER
int i;
unsigned long t;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0
Hello community,
here is the log from the commit of package alsa
checked in at Wed Apr 5 17:09:04 CEST 2006.
--------
--- alsa/alsa.changes 2006-03-29 12:17:49.000000000 +0200
+++ alsa/alsa.changes 2006-04-03 17:00:40.000000000 +0200
@@ -1,0 +2,6 @@
+Mon Apr 3 15:58:14 CEST 2006 - tiwai(a)suse.de
+
+- fix skipping sounds with dmix on aoss (#162771, #162442)
+- fix stutering playback of KDE sounds (#162261)
+
+-------------------------------------------------------------------
New:
----
alsa-lib-dmix-max-periods.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa.spec ++++++
--- /var/tmp/diff_new_pack.Z0CZ2E/_old 2006-04-05 17:08:26.000000000 +0200
+++ /var/tmp/diff_new_pack.Z0CZ2E/_new 2006-04-05 17:08:26.000000000 +0200
@@ -21,7 +21,7 @@
Autoreqprov: on
Summary: Advanced Linux Sound Architecture
Version: 1.0.11
-Release: 21
+Release: 22
Source1: ftp://ftp.alsa-project.org/pub/lib/alsa-lib-%{package_version}.tar.bz2
Source2: ftp://ftp.alsa-project.org/pub/util/alsa-utils-%{package_version}.tar.bz2
# Source5: ftp://ftp.alsa-project.org/pub/oss/alsa-oss-%{package_version}.tar.bz2
@@ -71,6 +71,7 @@
Patch33: alsa-lib-dmix-2-periods-fix.diff
Patch34: alsa-lib-32bit-compat-fix.diff
Patch35: alsa-lib-applptr-sync-fix.diff
+Patch36: alsa-lib-dmix-max-periods.diff
Patch50: alsa-utils-speaker-test-5.1-fix.diff
Patch51: alsa-utils-speaker-test-buffer-fix.diff
Patch52: alsa-utils-alsaconf-lspci-fix.diff
@@ -155,6 +156,7 @@
%patch33 -p1
%patch34 -p1
%patch35 -p1
+%patch36 -p1
cd ..
cd alsa-utils*/.
# %patch2 -p1
@@ -438,6 +440,9 @@
%doc alsa-lib*/doc/doxygen/html/*
%changelog -n alsa
+* Mon Apr 03 2006 - tiwai(a)suse.de
+- fix skipping sounds with dmix on aoss (#162771, #162442)
+- fix stutering playback of KDE sounds (#162261)
* Wed Mar 29 2006 - tiwai(a)suse.de
- fix the bogus -EPIPE detection (and thus may lead to hang up)
in 32bit compat mode (ALSA bug#1938).
++++++ alsa-lib-dmix-max-periods.diff ++++++
Index: alsa-lib/src/conf/alsa.conf
===================================================================
RCS file: /home/iwai/cvs/alsa/alsa-lib/src/conf/alsa.conf,v
retrieving revision 1.26
diff -u -r1.26 alsa.conf
--- alsa-lib/src/conf/alsa.conf 21 Mar 2006 10:19:43 -0000 1.26
+++ alsa-lib/src/conf/alsa.conf 3 Apr 2006 14:56:56 -0000
@@ -57,7 +57,7 @@
defaults.pcm.ipc_key 5678293
defaults.pcm.ipc_gid audio
defaults.pcm.ipc_perm 0660
-defaults.pcm.dmix_variable_buffer true
+defaults.pcm.dmix_max_periods 0
defaults.pcm.front.card defaults.pcm.card
defaults.pcm.front.device defaults.pcm.device
defaults.pcm.rear.card defaults.pcm.card
Index: alsa-lib/src/conf/pcm/dmix.conf
===================================================================
RCS file: /home/iwai/cvs/alsa/alsa-lib/src/conf/pcm/dmix.conf,v
retrieving revision 1.11
diff -u -r1.11 dmix.conf
--- alsa-lib/src/conf/pcm/dmix.conf 21 Mar 2006 10:19:43 -0000 1.11
+++ alsa-lib/src/conf/pcm/dmix.conf 3 Apr 2006 14:56:56 -0000
@@ -92,9 +92,4 @@
default 16
}
}
- # Allow apps different buffer sizes
- variable_buffer_size {
- @func refer
- name defaults.pcm.dmix_variable_buffer
- }
}
Index: alsa-lib/src/pcm/pcm_direct.c
===================================================================
RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_direct.c,v
retrieving revision 1.57
diff -u -r1.57 pcm_direct.c
--- alsa-lib/src/pcm/pcm_direct.c 24 Mar 2006 14:51:26 -0000 1.57
+++ alsa-lib/src/pcm/pcm_direct.c 3 Apr 2006 14:56:56 -0000
@@ -697,7 +697,7 @@
&dshare->shmptr->hw.period_time);
if (err < 0)
return err;
- if (! dshare->variable_buffer_size) {
+ if (dshare->max_periods < 0) {
err = hw_param_interval_refine_one(params, SND_PCM_HW_PARAM_BUFFER_SIZE,
&dshare->shmptr->hw.buffer_size);
if (err < 0)
@@ -711,13 +711,13 @@
(1<<SND_PCM_HW_PARAM_BUFFER_SIZE)|
(1<<SND_PCM_HW_PARAM_BUFFER_TIME))) {
int changed;
+ unsigned int max_periods = dshare->max_periods;
+ if (max_periods < 2)
+ max_periods = dshare->slave_buffer_size / dshare->slave_period_size;
do {
changed = 0;
- /* Set min/max size to [2:1024] since INT_MAX as the
- * upper-limit results in a too big buffer on some apps.
- */
err = hw_param_interval_refine_minmax(params, SND_PCM_HW_PARAM_PERIODS,
- 2, 1024);
+ 2, max_periods);
if (err < 0)
return err;
changed |= err;
@@ -1382,17 +1382,19 @@
return (direction << 1) + (device << 2) + (subdevice << 8) + (card << 12);
}
-int snd_pcm_direct_get_slave_ipc_offset(snd_config_t *root,
+static int snd_pcm_direct_get_slave_ipc_offset(snd_config_t *root,
snd_config_t *sconf,
int direction)
{
return _snd_pcm_direct_get_slave_ipc_offset(root, sconf, direction, 0);
}
-int snd_pcm_direct_parse_open_conf(snd_config_t *conf, struct snd_pcm_direct_open_conf *rec)
+int snd_pcm_direct_parse_open_conf(snd_config_t *root, snd_config_t *conf,
+ int stream, struct snd_pcm_direct_open_conf *rec)
{
snd_config_iterator_t i, next;
int ipc_key_add_uid = 0;
+ snd_config_t *n;
int err;
rec->slave = NULL;
@@ -1401,10 +1403,18 @@
rec->ipc_perm = 0600;
rec->ipc_gid = -1;
rec->slowptr = 0;
- rec->variable_buffer_size = 0;
+ rec->max_periods = 0;
+
+ /* read defaults */
+ if (snd_config_search(root, "defaults.pcm.dmix_max_periods", &n) >= 0) {
+ long val;
+ err = snd_config_get_integer(n, &val);
+ if (err >= 0)
+ rec->max_periods = val;
+ }
snd_config_for_each(i, next, conf) {
- snd_config_t *n = snd_config_iterator_entry(i);
+ n = snd_config_iterator_entry(i);
const char *id;
if (snd_config_get_id(n, &id) < 0)
continue;
@@ -1488,11 +1498,12 @@
rec->slowptr = err;
continue;
}
- if (strcmp(id, "variable_buffer_size") == 0) {
- err = snd_config_get_bool(n);
+ if (strcmp(id, "max_periods") == 0) {
+ long val;
+ err = snd_config_get_integer(n, &val);
if (err < 0)
return err;
- rec->variable_buffer_size = err;
+ rec->max_periods = val;
continue;
}
SNDERR("Unknown field %s", id);
@@ -1502,11 +1513,16 @@
SNDERR("slave is not defined");
return -EINVAL;
}
- if (ipc_key_add_uid)
- rec->ipc_key += getuid();
if (!rec->ipc_key) {
SNDERR("Unique IPC key is not defined");
return -EINVAL;
}
+ if (ipc_key_add_uid)
+ rec->ipc_key += getuid();
+ err = snd_pcm_direct_get_slave_ipc_offset(root, rec->slave, stream);
+ if (err < 0)
+ return err;
+ rec->ipc_key += err;
+
return 0;
}
Index: alsa-lib/src/pcm/pcm_direct.h
===================================================================
RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_direct.h,v
retrieving revision 1.22
diff -u -r1.22 pcm_direct.h
--- alsa-lib/src/pcm/pcm_direct.h 20 Mar 2006 18:21:15 -0000 1.22
+++ alsa-lib/src/pcm/pcm_direct.h 3 Apr 2006 14:56:56 -0000
@@ -117,7 +117,7 @@
snd_timer_t *timer; /* timer used as poll_fd */
int interleaved; /* we have interleaved buffer */
int slowptr; /* use slow but more precise ptr updates */
- int variable_buffer_size; /* allow the variable buffer size */
+ int max_periods; /* max periods (-1 = fixed periods, 0 = max buffer size) */
unsigned int channels; /* client's channels */
unsigned int *bindings;
union {
@@ -187,7 +187,6 @@
void snd_pcm_direct_clear_timer_queue(snd_pcm_direct_t *dmix);
int snd_pcm_direct_set_timer_params(snd_pcm_direct_t *dmix);
int snd_pcm_direct_open_secondary_client(snd_pcm_t **spcmp, snd_pcm_direct_t *dmix, const char *client_name);
-int snd_pcm_direct_get_slave_ipc_offset(snd_config_t *root, snd_config_t *sconf, int direction);
int snd_timer_async(snd_timer_t *timer, int sig, pid_t pid);
struct timespec snd_pcm_hw_fast_tstamp(snd_pcm_t *pcm);
@@ -197,9 +196,9 @@
mode_t ipc_perm;
int ipc_gid;
int slowptr;
- int variable_buffer_size;
+ int max_periods;
snd_config_t *slave;
snd_config_t *bindings;
};
-int snd_pcm_direct_parse_open_conf(snd_config_t *conf, struct snd_pcm_direct_open_conf *rec);
+int snd_pcm_direct_parse_open_conf(snd_config_t *root, snd_config_t *conf, int stream, struct snd_pcm_direct_open_conf *rec);
Index: alsa-lib/src/pcm/pcm_dmix.c
===================================================================
RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_dmix.c,v
retrieving revision 1.72
diff -u -r1.72 pcm_dmix.c
--- alsa-lib/src/pcm/pcm_dmix.c 24 Mar 2006 14:51:26 -0000 1.72
+++ alsa-lib/src/pcm/pcm_dmix.c 3 Apr 2006 14:56:56 -0000
@@ -437,6 +437,7 @@
if (err < 0)
return err;
/* fallthru */
+ snd_pcm_dmix_sync_area(pcm);
case SNDRV_PCM_STATE_PREPARED:
case SNDRV_PCM_STATE_SUSPENDED:
case STATE_RUN_PENDING:
@@ -487,8 +488,7 @@
static void reset_slave_ptr(snd_pcm_t *pcm, snd_pcm_direct_t *dmix)
{
dmix->slave_appl_ptr = dmix->slave_hw_ptr = *dmix->spcm->hw.ptr;
- if (! dmix->variable_buffer_size ||
- pcm->buffer_size > pcm->period_size * 2)
+ if (pcm->buffer_size > pcm->period_size * 2)
return;
/* If we have too litte periods, better to align the start position
* to the period boundary so that the interrupt can be handled properly
@@ -851,7 +851,7 @@
pcm->private_data = dmix;
dmix->state = SND_PCM_STATE_OPEN;
dmix->slowptr = opts->slowptr;
- dmix->variable_buffer_size = opts->variable_buffer_size;
+ dmix->max_periods = opts->max_periods;
dmix->sync_ptr = snd_pcm_dmix_sync_ptr;
if (first_instance) {
@@ -1092,10 +1092,9 @@
struct slave_params params;
struct snd_pcm_direct_open_conf dopen;
int bsize, psize;
- int ipc_offset;
int err;
- err = snd_pcm_direct_parse_open_conf(conf, &dopen);
+ err = snd_pcm_direct_parse_open_conf(root, conf, stream, &dopen);
if (err < 0)
return err;
@@ -1134,13 +1133,6 @@
params.period_size = psize;
params.buffer_size = bsize;
- ipc_offset = snd_pcm_direct_get_slave_ipc_offset(root, sconf, stream);
- if (ipc_offset < 0) {
- snd_config_delete(sconf);
- return ipc_offset;
- }
- dopen.ipc_key += ipc_offset;
-
err = snd_pcm_dmix_open(pcmp, name, &dopen, ¶ms,
root, sconf, stream, mode);
if (err < 0)
Index: alsa-lib/src/pcm/pcm_dshare.c
===================================================================
RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_dshare.c,v
retrieving revision 1.37
diff -u -r1.37 pcm_dshare.c
--- alsa-lib/src/pcm/pcm_dshare.c 20 Mar 2006 18:21:15 -0000 1.37
+++ alsa-lib/src/pcm/pcm_dshare.c 3 Apr 2006 14:56:56 -0000
@@ -662,7 +662,7 @@
pcm->private_data = dshare;
dshare->state = SND_PCM_STATE_OPEN;
dshare->slowptr = opts->slowptr;
- dshare->variable_buffer_size = opts->variable_buffer_size;
+ dshare->max_periods = opts->max_periods;
dshare->sync_ptr = snd_pcm_dshare_sync_ptr;
if (first_instance) {
@@ -835,10 +835,9 @@
struct slave_params params;
struct snd_pcm_direct_open_conf dopen;
int bsize, psize;
- int ipc_offset;
int err;
- err = snd_pcm_direct_parse_open_conf(conf, &dopen);
+ err = snd_pcm_direct_parse_open_conf(root, conf, stream, &dopen);
if (err < 0)
return err;
@@ -869,13 +868,6 @@
params.period_size = psize;
params.buffer_size = bsize;
- ipc_offset = snd_pcm_direct_get_slave_ipc_offset(root, sconf, stream);
- if (ipc_offset < 0) {
- snd_config_delete(sconf);
- return ipc_offset;
- }
- dopen.ipc_key += ipc_offset;
-
err = snd_pcm_dshare_open(pcmp, name, &dopen, ¶ms,
root, sconf, stream, mode);
if (err < 0)
Index: alsa-lib/src/pcm/pcm_dsnoop.c
===================================================================
RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_dsnoop.c,v
retrieving revision 1.37
diff -u -r1.37 pcm_dsnoop.c
--- alsa-lib/src/pcm/pcm_dsnoop.c 20 Mar 2006 18:21:15 -0000 1.37
+++ alsa-lib/src/pcm/pcm_dsnoop.c 3 Apr 2006 14:56:56 -0000
@@ -544,7 +544,7 @@
pcm->private_data = dsnoop;
dsnoop->state = SND_PCM_STATE_OPEN;
dsnoop->slowptr = opts->slowptr;
- dsnoop->variable_buffer_size = opts->variable_buffer_size;
+ dsnoop->max_periods = opts->max_periods;
dsnoop->sync_ptr = snd_pcm_dsnoop_sync_ptr;
if (first_instance) {
@@ -707,10 +707,9 @@
struct slave_params params;
struct snd_pcm_direct_open_conf dopen;
int bsize, psize;
- int ipc_offset;
int err;
- err = snd_pcm_direct_parse_open_conf(conf, &dopen);
+ err = snd_pcm_direct_parse_open_conf(root, conf, stream, &dopen);
if (err < 0)
return err;
@@ -741,13 +740,6 @@
params.period_size = psize;
params.buffer_size = bsize;
- ipc_offset = snd_pcm_direct_get_slave_ipc_offset(root, sconf, stream);
- if (ipc_offset < 0) {
- snd_config_delete(sconf);
- return ipc_offset;
- }
- dopen.ipc_key += ipc_offset;
-
err = snd_pcm_dsnoop_open(pcmp, name, &dopen, ¶ms,
root, sconf, stream, mode);
if (err < 0)
Index: alsa-lib/src/pcm/pcm_rate.c
===================================================================
RCS file: /home/iwai/cvs/alsa/alsa-lib/src/pcm/pcm_rate.c,v
retrieving revision 1.88
diff -u -r1.88 pcm_rate.c
--- alsa-lib/src/pcm/pcm_rate.c 30 Mar 2006 10:15:03 -0000 1.88
+++ alsa-lib/src/pcm/pcm_rate.c 3 Apr 2006 14:56:56 -0000
@@ -617,7 +617,12 @@
static int snd_pcm_rate_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp)
{
+ snd_pcm_rate_t *rate = pcm->private_data;
snd_pcm_rate_hwsync(pcm);
+ /* call slave's delay callback although the value is overwritten.
+ * it's needed for a better sync of dmix on aoss.
+ */
+ snd_pcm_delay(rate->gen.slave, delayp);
if (pcm->stream == SND_PCM_STREAM_PLAYBACK)
*delayp = snd_pcm_mmap_playback_hw_avail(pcm);
else
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0
Hello community,
here is the log from the commit of package Mesa
checked in at Wed Apr 5 17:07:18 CEST 2006.
--------
--- Mesa/Mesa.changes 2006-03-15 18:16:53.000000000 +0100
+++ Mesa/Mesa.changes 2006-04-03 22:34:54.000000000 +0200
@@ -1,0 +2,6 @@
+Mon Apr 3 22:53:04 CEST 2006 - sndirsch(a)suse.de
+
+- mesa-6.4.2-dri-copy-sub-buffer-1.patch:
+ * needed for open source drivers to work with Xgl (David Reveman)
+
+-------------------------------------------------------------------
New:
----
mesa-6.4.2-dri-copy-sub-buffer-1.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ Mesa.spec ++++++
--- /var/tmp/diff_new_pack.pvqaxY/_old 2006-04-05 17:06:25.000000000 +0200
+++ /var/tmp/diff_new_pack.pvqaxY/_new 2006-04-05 17:06:25.000000000 +0200
@@ -20,7 +20,7 @@
Obsoletes: xorg-x11-Mesa XFree86-Mesa
Autoreqprov: on
Version: 6.4.2
-Release: 7
+Release: 9
Summary: Mesa is a 3-D graphics library with an API which is very similar to that of OpenGL.*
Source: Mesa-%{version}.tar.bz2
Source1: missing-headers.tar.bz2
@@ -34,6 +34,7 @@
Patch6: Mesa_945GM.patch
Patch7: glxext-sgi-hyperpipe.patch
Patch8: mesa-6.4.2-scissor-fix-1.patch
+Patch9: mesa-6.4.2-dri-copy-sub-buffer-1.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -129,6 +130,7 @@
%patch6 -p1
%patch7 -p1
%patch8
+%patch9
%build
%ifarch %ix86 ppc x86_64
@@ -232,6 +234,9 @@
/usr/%{_lib}/libMesaGL.a
%changelog -n Mesa
+* Mon Apr 03 2006 - sndirsch(a)suse.de
+- mesa-6.4.2-dri-copy-sub-buffer-1.patch:
+ * needed for open source drivers to work with Xgl (David Reveman)
* Wed Mar 15 2006 - mhopf(a)suse.de
- Fix for bug #157051, issue 1:
On intel the graphics is only displayed correctly after a scissor region
++++++ mesa-6.4.2-dri-copy-sub-buffer-1.patch ++++++
++++ 790 lines (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0
Hello community,
here is the log from the commit of package glibc
checked in at Wed Apr 5 17:04:48 CEST 2006.
--------
--- glibc/glibc.changes 2006-03-31 15:50:38.000000000 +0200
+++ glibc/glibc.changes 2006-04-04 22:10:56.000000000 +0200
@@ -1,0 +2,24 @@
+Tue Apr 4 22:10:47 CEST 2006 - schwab(a)suse.de
+
+- Fix readlink declaration.
+
+-------------------------------------------------------------------
+Mon Apr 3 13:40:54 CEST 2006 - kukuk(a)suse.de
+
+- Update from CVS:
+ - nscd bug fixes
+ - Match return value of readlink to what POSIX says
+ - Fix NIS+ checks for NULL pointer
+
+-------------------------------------------------------------------
+Sun Apr 2 20:53:17 CEST 2006 - dmueller(a)suse.de
+
+- Fix clients crash if nscd is unresponsive (glibc-#2501)
+- Fix fd leak in nscd daemon (glibc-#2498)
+
+-------------------------------------------------------------------
+Sat Apr 1 21:48:54 CEST 2006 - schwab(a)suse.de
+
+- Fix <sys/procfs.h> on ppc64.
+
+-------------------------------------------------------------------
Old:
----
glibc-2.3.90-getcwd.diff
glibc-nptl-2.4-2006032009.tar.bz2
minmem
New:
----
glibc-2.4-2006040312-CVS.diff
glibc-2.4-readlink.diff
glibc-nptl-2.4-2006040312.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ glibc.spec ++++++
--- /var/tmp/diff_new_pack.YF7eJq/_old 2006-04-05 17:03:52.000000000 +0200
+++ /var/tmp/diff_new_pack.YF7eJq/_new 2006-04-05 17:03:52.000000000 +0200
@@ -28,13 +28,13 @@
Obsoletes: ngpt ngpt-devel
Autoreqprov: on
Version: 2.4
-Release: 14
+Release: 17
%define snapshot_date 2006032009
URL: http://www.gnu.org/software/libc/libc.html
PreReq: filesystem
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: glibc-%{version}-%{snapshot_date}.tar.bz2
-Source1: glibc-nptl-%{version}-%{snapshot_date}.tar.bz2
+Source1: glibc-nptl-%{version}-2006040312.tar.bz2
Source2: kernel-headers-2.6.16.tar.bz2
Source3: noversion.tar.bz2
Source4: manpages.tar.bz2
@@ -77,11 +77,12 @@
Patch27: glibc-2.3.90-nscd.diff
Patch28: glibc-2.3.3-nscd-db-path.diff
Patch29: glibc-2.3.5-nscd-zeronegtimeout.diff
-Patch30: glibc-2.3.90-getcwd.diff
-Patch31: glibc-2.3.90-ppc64-procfs.h.diff
-Patch32: glibc-2.3.90-pthread_kill-invalid-thread-id.diff
-Patch33: glibc-2.3.90-langpackdir.diff
-Patch34: glibc-2.3.90-clone-cfi.diff
+Patch30: glibc-2.3.90-ppc64-procfs.h.diff
+Patch31: glibc-2.3.90-pthread_kill-invalid-thread-id.diff
+Patch32: glibc-2.3.90-langpackdir.diff
+Patch33: glibc-2.3.90-clone-cfi.diff
+Patch34: glibc-2.4-2006040312-CVS.diff
+Patch35: glibc-2.4-readlink.diff
%description
The GNU C Library provides the most important standard libraries used
@@ -244,7 +245,8 @@
%patch30
%patch31
%patch33
-%patch34
+%patch34 -p2
+%patch35
# Install blowfish crypt add-on
rm crypt_blowfish-*/crypt.h
cp -a crypt_blowfish-*/*.[ch] crypt
@@ -257,7 +259,6 @@
touch asm-ia64/offsets.h
%build
-ls /proc
if [ -x /bin/uname.bin ]; then
/bin/uname.bin -a
else
@@ -885,6 +886,18 @@
%{_libdir}/libdl_p.a
%changelog -n glibc
+* Tue Apr 04 2006 - schwab(a)suse.de
+- Fix readlink declaration.
+* Mon Apr 03 2006 - kukuk(a)suse.de
+- Update from CVS:
+- nscd bug fixes
+- Match return value of readlink to what POSIX says
+- Fix NIS+ checks for NULL pointer
+* Sun Apr 02 2006 - dmueller(a)suse.de
+- Fix clients crash if nscd is unresponsive (glibc-#2501)
+- Fix fd leak in nscd daemon (glibc-#2498)
+* Sat Apr 01 2006 - schwab(a)suse.de
+- Fix <sys/procfs.h> on ppc64.
* Fri Mar 31 2006 - schwab(a)suse.de
- Extend last change also to ppc64.
* Sun Mar 26 2006 - schwab(a)suse.de
++++++ glibc-2.3.90-nscd.diff ++++++
--- /var/tmp/diff_new_pack.YF7eJq/_old 2006-04-05 17:03:52.000000000 +0200
+++ /var/tmp/diff_new_pack.YF7eJq/_new 2006-04-05 17:03:52.000000000 +0200
@@ -1,3 +1,20 @@
+--- nscd/Makefile.~1.48.~ 2005-12-16 11:37:08.000000000 +0100
++++ nscd/Makefile 2006-04-01 22:47:03.000000000 +0200
+@@ -62,14 +62,6 @@ endif
+
+ LDLIBS-nscd = $(selinux-LIBS)
+
+-# The configure.in check for libselinux and its headers did not use
+-# $SYSINCLUDES. The directory specified by --with-headers usually
+-# contains only the basic kernel interface headers, not something like
+-# libselinux. So the simplest thing is to presume that the standard
+-# system headers will be ok for this file.
+-$(objpfx)nscd_stat.o: sysincludes = # nothing
+-$(objpfx)selinux.o: sysincludes = # nothing
+-
+ distribute := nscd.h nscd-client.h dbg_log.h \
+ $(addsuffix .c, $(filter-out xmalloc,$(all-nscd-modules))) \
+ nscd.conf nscd.init nscd_proto.h nscd-types.h
--- nscd/cache.c
+++ nscd/cache.c 2005/06/23 21:12:15
@@ -198,28 +198,31 @@
++++++ glibc-2.3.90-ppc64-procfs.h.diff ++++++
--- /var/tmp/diff_new_pack.YF7eJq/_old 2006-04-05 17:03:52.000000000 +0200
+++ /var/tmp/diff_new_pack.YF7eJq/_new 2006-04-05 17:03:52.000000000 +0200
@@ -1,13 +1,11 @@
--- sysdeps/unix/sysv/linux/powerpc/sys/procfs.h
+++ sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2006/01/12 15:29:43
-@@ -24,10 +24,8 @@
- used on Linux. */
-
- #include <features.h>
--#include <signal.h>
- #include <sys/time.h>
- #include <sys/types.h>
--#include <sys/ucontext.h>
- #include <sys/user.h>
-
- __BEGIN_DECLS
+@@ -35,7 +35,7 @@ __BEGIN_DECLS
+ /* These definitions are normally provided by ucontext.h via
+ asm/sigcontext.h, asm/ptrace.h, and asm/elf.h. Otherwise we define
+ them here. */
+-#ifndef __PPC64_ELF_H
++#if !defined __PPC64_ELF_H && !defined _ASM_POWERPC_ELF_H
+ #define ELF_NGREG 48 /* includes nip, msr, lr, etc. */
+ #define ELF_NFPREG 33 /* includes fpscr */
+ #if __WORDSIZE == 32
++++++ glibc-2.4-2006040312-CVS.diff ++++++
++++ 675 lines (skipped)
++++++ glibc-2.4-readlink.diff ++++++
--- posix/bits/unistd.h.~1.10.~ 2005-08-09 12:10:00.000000000 +0200
+++ posix/bits/unistd.h 2006-04-03 23:07:55.000000000 +0200
@@ -80,16 +80,17 @@ pread64 (int __fd, void *__buf, size_t _
#endif
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
-extern int __readlink_chk (__const char *__restrict __path,
- char *__restrict __buf, size_t __len,
- size_t __buflen)
+extern ssize_t __readlink_chk (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len,
+ size_t __buflen)
__THROW __nonnull ((1, 2)) __wur;
-extern int __REDIRECT_NTH (__readlink_alias,
- (__const char *__restrict __path,
- char *__restrict __buf, size_t __len), readlink)
+extern ssize_t __REDIRECT_NTH (__readlink_alias,
+ (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len),
+ readlink)
__nonnull ((1, 2)) __wur;
-extern __always_inline __nonnull ((1, 2)) __wur int
+extern __always_inline __nonnull ((1, 2)) __wur ssize_t
__NTH (readlink (__const char *__restrict __path, char *__restrict __buf,
size_t __len))
{
++++++ glibc-nptl-2.4-2006032009.tar.bz2 -> glibc-nptl-2.4-2006040312.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/ChangeLog new/nptl/ChangeLog
--- old/nptl/ChangeLog 2006-03-08 22:05:27.000000000 +0100
+++ new/nptl/ChangeLog 2006-03-28 10:21:09.000000000 +0200
@@ -1,3 +1,30 @@
+2006-03-27 Ulrich Drepper <drepper(a)redhat.com>
+
+ * allocatestack.c (allocate_stack): Always initialize robust_head.
+ * descr.h: Define struct robust_list_head.
+ (struct pthread): Use robust_list_head in robust mutex list definition.
+ Adjust ENQUEUE_MUTEX and DEQUEUE_MUTEX.
+ * init.c [!__ASSUME_SET_ROBUST_LIST] (__set_robust_list_avail): Define.
+ (__pthread_initialize_minimal_internal): Register robust_list with
+ the kernel.
+ * pthreadP.h: Remove PRIVATE_ from PTHREAD_MUTEX_ROBUST_* names.
+ Declare __set_robust_list_avail.
+ * pthread_create.c (start_thread): Register robust_list of new thread.
+ [!__ASSUME_SET_ROBUST_LIST]: If robust_list is not empty wake up
+ waiters.
+ * pthread_mutex_destroy.c: For robust mutexes don't look at the
+ number of users, it's unreliable.
+ * pthread_mutex_init.c: Allow use of pshared robust mutexes if
+ set_robust_list syscall is available.
+ * pthread_mutex_consistent.c: Adjust for PTHREAD_MUTEX_ROBUST_* rename.
+ * pthread_mutex_lock.c: Simplify robust mutex code a bit.
+ Set robust_head.list_op_pending before trying to lock a robust mutex.
+ * pthread_mutex_timedlock.c: Likewise.
+ * pthread_mutex_trylock.c: Likewise.
+ * pthread_mutex_unlock.c: Likewise for unlocking.
+ * Makefile (tests): Add tst-robust8.
+ * tst-robust8.c: New file.
+
2006-03-08 Andreas Schwab <schwab(a)suse.de>
* sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/Makefile new/nptl/Makefile
--- old/nptl/Makefile 2006-02-28 10:55:16.000000000 +0100
+++ new/nptl/Makefile 2006-03-28 10:21:09.000000000 +0200
@@ -206,7 +206,7 @@
tst-cond14 tst-cond15 tst-cond16 tst-cond17 tst-cond18 tst-cond19 \
tst-cond20 tst-cond21 \
tst-robust1 tst-robust2 tst-robust3 tst-robust4 tst-robust5 \
- tst-robust6 tst-robust7 \
+ tst-robust6 tst-robust7 tst-robust8 \
tst-rwlock1 tst-rwlock2 tst-rwlock3 tst-rwlock4 tst-rwlock5 \
tst-rwlock6 tst-rwlock7 tst-rwlock8 tst-rwlock9 tst-rwlock10 \
tst-rwlock11 tst-rwlock12 tst-rwlock13 tst-rwlock14 \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/allocatestack.c new/nptl/allocatestack.c
--- old/nptl/allocatestack.c 2006-02-13 07:58:54.000000000 +0100
+++ new/nptl/allocatestack.c 2006-03-28 10:21:09.000000000 +0200
@@ -365,12 +365,6 @@
/* The process ID is also the same as that of the caller. */
pd->pid = THREAD_GETMEM (THREAD_SELF, pid);
- /* List of robust mutexes. */
-#ifdef __PTHREAD_MUTEX_HAVE_PREV
- pd->robust_list.__prev = &pd->robust_list;
-#endif
- pd->robust_list.__next = &pd->robust_list;
-
/* Allocate the DTV for this thread. */
if (_dl_allocate_tls (TLS_TPADJ (pd)) == NULL)
{
@@ -505,12 +499,6 @@
/* The process ID is also the same as that of the caller. */
pd->pid = THREAD_GETMEM (THREAD_SELF, pid);
- /* List of robust mutexes. */
-#ifdef __PTHREAD_MUTEX_HAVE_PREV
- pd->robust_list.__prev = &pd->robust_list;
-#endif
- pd->robust_list.__next = &pd->robust_list;
-
/* Allocate the DTV for this thread. */
if (_dl_allocate_tls (TLS_TPADJ (pd)) == NULL)
{
@@ -634,6 +622,18 @@
stillborn thread could be canceled while the lock is taken. */
pd->lock = LLL_LOCK_INITIALIZER;
+ /* The robust mutex lists also need to be initialized
+ unconditionally because the cleanup for the previous stack owner
+ might have happened in the kernel. */
+ pd->robust_head.futex_offset = (offsetof (pthread_mutex_t, __data.__lock)
+ - offsetof (pthread_mutex_t,
+ __data.__list.__next));
+ pd->robust_head.list_op_pending = NULL;
+#ifdef __PTHREAD_MUTEX_HAVE_PREV
+ pd->robust_prev = &pd->robust_head;
+#endif
+ pd->robust_head.list = &pd->robust_head;
+
/* We place the thread descriptor at the end of the stack. */
*pdp = pd;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/descr.h new/nptl/descr.h
--- old/nptl/descr.h 2006-02-24 10:04:43.000000000 +0100
+++ new/nptl/descr.h 2006-03-28 10:21:09.000000000 +0200
@@ -102,6 +102,15 @@
};
+/* Data structure used by the kernel to find robust futexes. */
+struct robust_list_head
+{
+ void *list;
+ long int futex_offset;
+ void *list_op_pending;
+};
+
+
/* Thread descriptor data structure. */
struct pthread
{
@@ -136,25 +145,43 @@
/* List of robust mutexes the thread is holding. */
#ifdef __PTHREAD_MUTEX_HAVE_PREV
- __pthread_list_t robust_list;
+ void *robust_prev;
+ struct robust_list_head robust_head;
+
+ /* The list above is strange. It is basically a double linked list
+ but the pointer to the next/previous element of the list points
+ in the middle of the object, the __next element. Whenever
+ casting to __pthread_list_t we need to adjust the pointer
+ first. */
+# define QUEUE_PTR_ADJUST (offsetof (__pthread_list_t, __next))
# define ENQUEUE_MUTEX(mutex) \
do { \
- __pthread_list_t *next = THREAD_GETMEM (THREAD_SELF, robust_list.__next); \
- next->__prev = &mutex->__data.__list; \
- mutex->__data.__list.__next = next; \
- mutex->__data.__list.__prev = &THREAD_SELF->robust_list; \
- THREAD_SETMEM (THREAD_SELF, robust_list.__next, &mutex->__data.__list); \
+ __pthread_list_t *next = (THREAD_GETMEM (THREAD_SELF, robust_head.list) \
+ - QUEUE_PTR_ADJUST); \
+ next->__prev = (void *) &mutex->__data.__list.__next; \
+ mutex->__data.__list.__next = (void *) &next->__next; \
+ mutex->__data.__list.__prev = (void *) &THREAD_SELF->robust_head; \
+ THREAD_SETMEM (THREAD_SELF, robust_head.list, \
+ &mutex->__data.__list.__next); \
} while (0)
# define DEQUEUE_MUTEX(mutex) \
do { \
- mutex->__data.__list.__next->__prev = mutex->__data.__list.__prev; \
- mutex->__data.__list.__prev->__next = mutex->__data.__list.__next; \
+ __pthread_list_t *next = (__pthread_list_t *) \
+ ((char *) mutex->__data.__list.__next - QUEUE_PTR_ADJUST); \
+ next->__prev = mutex->__data.__list.__prev; \
+ __pthread_list_t *prev = (__pthread_list_t *) \
+ ((char *) mutex->__data.__list.__prev - QUEUE_PTR_ADJUST); \
+ prev->__next = mutex->__data.__list.__next; \
mutex->__data.__list.__prev = NULL; \
mutex->__data.__list.__next = NULL; \
} while (0)
#else
- __pthread_slist_t robust_list;
+ union
+ {
+ __pthread_slist_t robust_list;
+ struct robust_list_head robust_head;
+ };
# define ENQUEUE_MUTEX(mutex) \
do { \
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/init.c new/nptl/init.c
--- old/nptl/init.c 2006-02-13 07:58:54.000000000 +0100
+++ new/nptl/init.c 2006-03-28 10:21:09.000000000 +0200
@@ -60,6 +60,15 @@
size_t __static_tls_size;
size_t __static_tls_align_m1;
+#ifndef __ASSUME_SET_ROBUST_LIST
+/* Negative if we do not have the system call and we can use it. */
+int __set_robust_list_avail;
+# define set_robust_list_not_avail() \
+ __set_robust_list_avail = -1
+#else
+# define set_robust_list_not_avail() do { } while (0)
+#endif
+
/* Version of the library, used in libthread_db to detect mismatches. */
static const char nptl_version[] __attribute_used__ = VERSION;
@@ -247,10 +256,6 @@
struct pthread *pd = THREAD_SELF;
INTERNAL_SYSCALL_DECL (err);
pd->pid = pd->tid = INTERNAL_SYSCALL (set_tid_address, err, 1, &pd->tid);
-#ifdef __PTHREAD_MUTEX_HAVE_PREV
- pd->robust_list.__prev = &pd->robust_list;
-#endif
- pd->robust_list.__next = &pd->robust_list;
THREAD_SETMEM (pd, specific[0], &pd->specific_1stblock[0]);
THREAD_SETMEM (pd, user_stack, true);
if (LLL_LOCK_INITIALIZER != 0)
@@ -259,6 +264,21 @@
THREAD_SETMEM (pd, cpuclock_offset, GL(dl_cpuclock_offset));
#endif
+ /* Initialize the robust mutex data. */
+#ifdef __PTHREAD_MUTEX_HAVE_PREV
+ pd->robust_prev = &pd->robust_head;
+#endif
+ pd->robust_head.list = &pd->robust_head;
+#ifdef __NR_set_robust_list
+ pd->robust_head.futex_offset = (offsetof (pthread_mutex_t, __data.__lock)
+ - offsetof (pthread_mutex_t,
+ __data.__list.__next));
+ int res = INTERNAL_SYSCALL (set_robust_list, err, 2, &pd->robust_head,
+ sizeof (struct robust_list_head));
+ if (INTERNAL_SYSCALL_ERROR_P (res, err))
+#endif
+ set_robust_list_not_avail ();
+
/* Set initial thread's stack block from 0 up to __libc_stack_end.
It will be bigger than it actually is, but for unwind.c/pt-longjmp.c
purposes this is good enough. */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/pthreadP.h new/nptl/pthreadP.h
--- old/nptl/pthreadP.h 2006-02-28 10:55:16.000000000 +0100
+++ new/nptl/pthreadP.h 2006-03-28 10:21:09.000000000 +0200
@@ -31,6 +31,7 @@
#include <internaltypes.h>
#include <pthread-functions.h>
#include <atomic.h>
+#include <kernel-features.h>
/* Atomic operations on TLS memory. */
@@ -60,13 +61,13 @@
/* Internal mutex type value. */
enum
{
- PTHREAD_MUTEX_ROBUST_PRIVATE_NP = 16,
- PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP
- = PTHREAD_MUTEX_ROBUST_PRIVATE_NP | PTHREAD_MUTEX_RECURSIVE_NP,
- PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP
- = PTHREAD_MUTEX_ROBUST_PRIVATE_NP | PTHREAD_MUTEX_ERRORCHECK_NP,
- PTHREAD_MUTEX_ROBUST_PRIVATE_ADAPTIVE_NP
- = PTHREAD_MUTEX_ROBUST_PRIVATE_NP | PTHREAD_MUTEX_ADAPTIVE_NP,
+ PTHREAD_MUTEX_ROBUST_NORMAL_NP = 16,
+ PTHREAD_MUTEX_ROBUST_RECURSIVE_NP
+ = PTHREAD_MUTEX_ROBUST_NORMAL_NP | PTHREAD_MUTEX_RECURSIVE_NP,
+ PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP
+ = PTHREAD_MUTEX_ROBUST_NORMAL_NP | PTHREAD_MUTEX_ERRORCHECK_NP,
+ PTHREAD_MUTEX_ROBUST_ADAPTIVE_NP
+ = PTHREAD_MUTEX_ROBUST_NORMAL_NP | PTHREAD_MUTEX_ADAPTIVE_NP,
PTHREAD_MUTEX_PRIO_INHERIT_PRIVATE_NP = 32,
PTHREAD_MUTEX_PRIO_PROTECT_PRIVATE_NP = 64
};
@@ -128,6 +129,11 @@
/* Number of threads running. */
extern unsigned int __nptl_nthreads attribute_hidden;
+#ifndef __ASSUME_SET_ROBUST_LIST
+/* Negative if we do not have the system call and we can use it. */
+extern int __set_robust_list_avail attribute_hidden;
+#endif
+
/* The library can run in debugging mode where it performs a lot more
tests. */
extern int __pthread_debug attribute_hidden;
@@ -504,4 +510,15 @@
# define PTHREAD_STATIC_FN_REQUIRE(name) __asm (".globl " #name);
#endif
+
+#ifndef __NR_set_robust_list
+/* XXX For the time being... Once we can rely on the kernel headers
+ having the definition remove these lines. */
+# if defined __i386__
+# define __NR_set_robust_list 311
+# elif defined __x86_64__
+# define __NR_set_robust_list 273
+# endif
+#endif
+
#endif /* pthreadP.h */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/pthread_create.c new/nptl/pthread_create.c
--- old/nptl/pthread_create.c 2006-02-16 10:24:36.000000000 +0100
+++ new/nptl/pthread_create.c 2006-03-28 10:21:09.000000000 +0200
@@ -229,6 +229,19 @@
/* Initialize resolver state pointer. */
__resp = &pd->res;
+#ifdef __NR_set_robust_list
+# ifndef __ASSUME_SET_ROBUST_LIST
+ if (__set_robust_list_avail >= 0)
+# endif
+ {
+ INTERNAL_SYSCALL_DECL (err);
+ /* This call should never fail because the initial call in init.c
+ succeeded. */
+ INTERNAL_SYSCALL (set_robust_list, err, 2, &pd->robust_head,
+ sizeof (struct robust_list_head));
+ }
+#endif
+
/* This is where the try/finally block should be created. For
compilers without that support we do use setjmp. */
struct pthread_unwind_buf unwind_buf;
@@ -310,35 +323,34 @@
the breakpoint reports TD_THR_RUN state rather than TD_THR_ZOMBIE. */
atomic_bit_set (&pd->cancelhandling, EXITING_BIT);
+#ifndef __ASSUME_SET_ROBUST_LIST
/* If this thread has any robust mutexes locked, handle them now. */
-#if __WORDSIZE == 64
- __pthread_list_t *robust = pd->robust_list.__next;
-#else
+# if __WORDSIZE == 64
+ void *robust = pd->robust_head.list;
+# else
__pthread_slist_t *robust = pd->robust_list.__next;
-#endif
- if (__builtin_expect (robust != &pd->robust_list, 0))
+# endif
+/* We let the kernel do the notification if it is able to do so. */
+ if (__set_robust_list_avail < 0
+ && __builtin_expect (robust != &pd->robust_head, 0))
{
do
{
struct __pthread_mutex_s *this = (struct __pthread_mutex_s *)
- ((char *) robust - offsetof (struct __pthread_mutex_s, __list));
- robust = robust->__next;
+ ((char *) robust - offsetof (struct __pthread_mutex_s,
+ __list.__next));
+ robust = *((void **) robust);
- this->__list.__next = NULL;
-#ifdef __PTHREAD_MUTEX_HAVE_PREV
+# ifdef __PTHREAD_MUTEX_HAVE_PREV
this->__list.__prev = NULL;
-#endif
+# endif
+ this->__list.__next = NULL;
lll_robust_mutex_dead (this->__lock);
}
- while (robust != &pd->robust_list);
-
- /* Clean up so that the thread descriptor can be reused. */
- pd->robust_list.__next = &pd->robust_list;
-#ifdef __PTHREAD_MUTEX_HAVE_PREV
- pd->robust_list.__prev = &pd->robust_list;
-#endif
+ while (robust != &pd->robust_head);
}
+#endif
/* If the thread is detached free the TCB. */
if (IS_DETACHED (pd))
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/pthread_mutex_consistent.c new/nptl/pthread_mutex_consistent.c
--- old/nptl/pthread_mutex_consistent.c 2006-02-16 10:24:36.000000000 +0100
+++ new/nptl/pthread_mutex_consistent.c 2006-03-28 10:21:09.000000000 +0200
@@ -26,7 +26,7 @@
pthread_mutex_t *mutex;
{
/* Test whether this is a robust mutex with a dead owner. */
- if ((mutex->__data.__kind & PTHREAD_MUTEX_ROBUST_PRIVATE_NP) == 0
+ if ((mutex->__data.__kind & PTHREAD_MUTEX_ROBUST_NORMAL_NP) == 0
|| mutex->__data.__owner != PTHREAD_MUTEX_INCONSISTENT)
return EINVAL;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/pthread_mutex_destroy.c new/nptl/pthread_mutex_destroy.c
--- old/nptl/pthread_mutex_destroy.c 2006-02-16 10:24:36.000000000 +0100
+++ new/nptl/pthread_mutex_destroy.c 2006-03-28 10:21:09.000000000 +0200
@@ -25,15 +25,9 @@
__pthread_mutex_destroy (mutex)
pthread_mutex_t *mutex;
{
- if (mutex->__data.__nusers != 0)
- {
- if ((mutex->__data.__kind & PTHREAD_MUTEX_ROBUST_PRIVATE_NP) != 0
- && (mutex->__data.__lock & FUTEX_OWNER_DIED) != 0
- && mutex->__data.__nusers == 1)
- goto dead_robust_mutex;
-
- return EBUSY;
- }
+ if ((mutex->__data.__kind & PTHREAD_MUTEX_ROBUST_NORMAL_NP) == 0
+ && mutex->__data.__nusers != 0)
+ return EBUSY;
/* Set to an invalid value. */
dead_robust_mutex:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/pthread_mutex_init.c new/nptl/pthread_mutex_init.c
--- old/nptl/pthread_mutex_init.c 2006-02-28 10:55:16.000000000 +0100
+++ new/nptl/pthread_mutex_init.c 2006-03-28 10:21:09.000000000 +0200
@@ -22,7 +22,6 @@
#include <string.h>
#include "pthreadP.h"
-
static const struct pthread_mutexattr default_attr =
{
/* Default is a normal mutex, not shared between processes. */
@@ -42,10 +41,6 @@
imutexattr = (const struct pthread_mutexattr *) mutexattr ?: &default_attr;
/* Sanity checks. */
- // XXX For now we cannot implement robust mutexes if they are shared.
- if ((imutexattr->mutexkind & PTHREAD_MUTEXATTR_FLAG_ROBUST) != 0
- && (imutexattr->mutexkind & PTHREAD_MUTEXATTR_FLAG_PSHARED) != 0)
- return ENOTSUP;
// XXX For now we don't support priority inherited or priority protected
// XXX mutexes.
if ((imutexattr->mutexkind & PTHREAD_MUTEXATTR_PROTOCOL_MASK)
@@ -57,8 +52,18 @@
/* Copy the values from the attribute. */
mutex->__data.__kind = imutexattr->mutexkind & ~PTHREAD_MUTEXATTR_FLAG_BITS;
+
if ((imutexattr->mutexkind & PTHREAD_MUTEXATTR_FLAG_ROBUST) != 0)
- mutex->__data.__kind |= PTHREAD_MUTEX_ROBUST_PRIVATE_NP;
+ {
+#ifndef __ASSUME_SET_ROBUST_LIST
+ if ((imutexattr->mutexkind & PTHREAD_MUTEXATTR_FLAG_PSHARED) != 0
+ && __set_robust_list_avail < 0)
+ return ENOTSUP;
+#endif
+
+ mutex->__data.__kind |= PTHREAD_MUTEX_ROBUST_NORMAL_NP;
+ }
+
switch ((imutexattr->mutexkind & PTHREAD_MUTEXATTR_PROTOCOL_MASK)
>> PTHREAD_MUTEXATTR_PROTOCOL_SHIFT)
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/pthread_mutex_lock.c new/nptl/pthread_mutex_lock.c
--- old/nptl/pthread_mutex_lock.c 2006-02-16 10:24:36.000000000 +0100
+++ new/nptl/pthread_mutex_lock.c 2006-03-28 10:21:09.000000000 +0200
@@ -108,25 +108,33 @@
assert (mutex->__data.__owner == 0);
break;
- case PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_ADAPTIVE_NP:
+ case PTHREAD_MUTEX_ROBUST_RECURSIVE_NP:
+ case PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP:
+ case PTHREAD_MUTEX_ROBUST_NORMAL_NP:
+ case PTHREAD_MUTEX_ROBUST_ADAPTIVE_NP:
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ &mutex->__data.__list.__next);
+
oldval = mutex->__data.__lock;
do
{
+ again:
if ((oldval & FUTEX_OWNER_DIED) != 0)
{
/* The previous owner died. Try locking the mutex. */
- int newval;
- while ((newval
- = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
- id, oldval))
- != oldval)
+ int newval = id;
+#ifdef NO_INCR
+ newval |= FUTEX_WAITERS;
+#endif
+
+ newval
+ = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ newval, oldval);
+
+ if (newval != oldval)
{
- if ((newval & FUTEX_OWNER_DIED) == 0)
- goto normal;
oldval = newval;
+ goto again;
}
/* We got the mutex. */
@@ -135,6 +143,7 @@
mutex->__data.__owner = PTHREAD_MUTEX_INCONSISTENT;
ENQUEUE_MUTEX (mutex);
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
/* Note that we deliberately exit here. If we fall
through to the end of the function __nusers would be
@@ -149,18 +158,23 @@
return EOWNERDEAD;
}
- normal:
/* Check whether we already hold the mutex. */
- if (__builtin_expect ((mutex->__data.__lock & FUTEX_TID_MASK)
- == id, 0))
+ if (__builtin_expect ((oldval & FUTEX_TID_MASK) == id, 0))
{
if (mutex->__data.__kind
- == PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP)
- return EDEADLK;
+ == PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP)
+ {
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ NULL);
+ return EDEADLK;
+ }
if (mutex->__data.__kind
- == PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP)
+ == PTHREAD_MUTEX_ROBUST_RECURSIVE_NP)
{
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ NULL);
+
/* Just bump the counter. */
if (__builtin_expect (mutex->__data.__count + 1 == 0, 0))
/* Overflow of the counter. */
@@ -180,6 +194,7 @@
/* This mutex is now not recoverable. */
mutex->__data.__count = 0;
lll_mutex_unlock (mutex->__data.__lock);
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
return ENOTRECOVERABLE;
}
}
@@ -187,6 +202,7 @@
mutex->__data.__count = 1;
ENQUEUE_MUTEX (mutex);
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
break;
default:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/pthread_mutex_timedlock.c new/nptl/pthread_mutex_timedlock.c
--- old/nptl/pthread_mutex_timedlock.c 2006-02-16 10:24:36.000000000 +0100
+++ new/nptl/pthread_mutex_timedlock.c 2006-03-28 10:21:09.000000000 +0200
@@ -103,25 +103,27 @@
}
break;
- case PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_ADAPTIVE_NP:
+ case PTHREAD_MUTEX_ROBUST_RECURSIVE_NP:
+ case PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP:
+ case PTHREAD_MUTEX_ROBUST_NORMAL_NP:
+ case PTHREAD_MUTEX_ROBUST_ADAPTIVE_NP:
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ &mutex->__data.__list.__next);
+
oldval = mutex->__data.__lock;
do
{
+ again:
if ((oldval & FUTEX_OWNER_DIED) != 0)
{
/* The previous owner died. Try locking the mutex. */
- int newval;
- while ((newval
- = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
- id, oldval))
- != oldval)
+ int newval
+ = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ id, oldval);
+ if (newval != oldval)
{
- if ((newval & FUTEX_OWNER_DIED) == 0)
- goto normal;
oldval = newval;
+ goto again;
}
/* We got the mutex. */
@@ -130,6 +132,7 @@
mutex->__data.__owner = PTHREAD_MUTEX_INCONSISTENT;
ENQUEUE_MUTEX (mutex);
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
/* Note that we deliberately exist here. If we fall
through to the end of the function __nusers would be
@@ -138,18 +141,23 @@
return EOWNERDEAD;
}
- normal:
/* Check whether we already hold the mutex. */
- if (__builtin_expect ((mutex->__data.__lock & FUTEX_TID_MASK)
- == id, 0))
+ if (__builtin_expect ((oldval & FUTEX_TID_MASK) == id, 0))
{
if (mutex->__data.__kind
- == PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP)
- return EDEADLK;
+ == PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP)
+ {
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ NULL);
+ return EDEADLK;
+ }
if (mutex->__data.__kind
- == PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP)
+ == PTHREAD_MUTEX_ROBUST_RECURSIVE_NP)
{
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ NULL);
+
/* Just bump the counter. */
if (__builtin_expect (mutex->__data.__count + 1 == 0, 0))
/* Overflow of the counter. */
@@ -170,6 +178,7 @@
/* This mutex is now not recoverable. */
mutex->__data.__count = 0;
lll_mutex_unlock (mutex->__data.__lock);
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
return ENOTRECOVERABLE;
}
@@ -182,6 +191,7 @@
mutex->__data.__count = 1;
ENQUEUE_MUTEX (mutex);
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
break;
default:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/pthread_mutex_trylock.c new/nptl/pthread_mutex_trylock.c
--- old/nptl/pthread_mutex_trylock.c 2006-02-16 10:24:36.000000000 +0100
+++ new/nptl/pthread_mutex_trylock.c 2006-03-28 10:21:09.000000000 +0200
@@ -77,25 +77,28 @@
return 0;
- case PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_ADAPTIVE_NP:
+ case PTHREAD_MUTEX_ROBUST_RECURSIVE_NP:
+ case PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP:
+ case PTHREAD_MUTEX_ROBUST_NORMAL_NP:
+ case PTHREAD_MUTEX_ROBUST_ADAPTIVE_NP:
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ &mutex->__data.__list.__next);
+
oldval = mutex->__data.__lock;
do
{
+ again:
if ((oldval & FUTEX_OWNER_DIED) != 0)
{
/* The previous owner died. Try locking the mutex. */
- int newval;
- while ((newval
- = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
- id, oldval))
- != oldval)
+ int newval
+ = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+ id, oldval);
+
+ if (newval != oldval)
{
- if ((newval & FUTEX_OWNER_DIED) == 0)
- goto normal;
oldval = newval;
+ goto again;
}
/* We got the mutex. */
@@ -104,6 +107,7 @@
mutex->__data.__owner = PTHREAD_MUTEX_INCONSISTENT;
ENQUEUE_MUTEX (mutex);
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
/* Note that we deliberately exist here. If we fall
through to the end of the function __nusers would be
@@ -112,18 +116,23 @@
return EOWNERDEAD;
}
- normal:
/* Check whether we already hold the mutex. */
- if (__builtin_expect ((mutex->__data.__lock & FUTEX_TID_MASK)
- == id, 0))
+ if (__builtin_expect ((oldval & FUTEX_TID_MASK) == id, 0))
{
if (mutex->__data.__kind
- == PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP)
- return EDEADLK;
+ == PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP)
+ {
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ NULL);
+ return EDEADLK;
+ }
if (mutex->__data.__kind
- == PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP)
+ == PTHREAD_MUTEX_ROBUST_RECURSIVE_NP)
{
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ NULL);
+
/* Just bump the counter. */
if (__builtin_expect (mutex->__data.__count + 1 == 0, 0))
/* Overflow of the counter. */
@@ -137,7 +146,11 @@
oldval = lll_robust_mutex_trylock (mutex->__data.__lock, id);
if (oldval != 0 && (oldval & FUTEX_OWNER_DIED) == 0)
- return EBUSY;
+ {
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
+
+ return EBUSY;
+ }
robust:
if (__builtin_expect (mutex->__data.__owner
@@ -147,12 +160,14 @@
mutex->__data.__count = 0;
if (oldval == id)
lll_mutex_unlock (mutex->__data.__lock);
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
return ENOTRECOVERABLE;
}
}
while ((oldval & FUTEX_OWNER_DIED) != 0);
ENQUEUE_MUTEX (mutex);
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
mutex->__data.__owner = id;
++mutex->__data.__nusers;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/pthread_mutex_unlock.c new/nptl/pthread_mutex_unlock.c
--- old/nptl/pthread_mutex_unlock.c 2006-02-16 10:24:36.000000000 +0100
+++ new/nptl/pthread_mutex_unlock.c 2006-03-28 10:21:09.000000000 +0200
@@ -63,10 +63,12 @@
lll_mutex_unlock (mutex->__data.__lock);
break;
- case PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP:
+ case PTHREAD_MUTEX_ROBUST_RECURSIVE_NP:
/* Recursive mutex. */
if ((mutex->__data.__lock & FUTEX_TID_MASK)
- == THREAD_GETMEM (THREAD_SELF, tid))
+ == THREAD_GETMEM (THREAD_SELF, tid)
+ && __builtin_expect (mutex->__data.__owner
+ == PTHREAD_MUTEX_INCONSISTENT, 0))
{
if (--mutex->__data.__count != 0)
/* We still hold the mutex. */
@@ -84,9 +86,9 @@
goto robust;
- case PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_NP:
- case PTHREAD_MUTEX_ROBUST_PRIVATE_ADAPTIVE_NP:
+ case PTHREAD_MUTEX_ROBUST_ERRORCHECK_NP:
+ case PTHREAD_MUTEX_ROBUST_NORMAL_NP:
+ case PTHREAD_MUTEX_ROBUST_ADAPTIVE_NP:
if ((mutex->__data.__lock & FUTEX_TID_MASK)
!= THREAD_GETMEM (THREAD_SELF, tid)
|| ! lll_mutex_islocked (mutex->__data.__lock))
@@ -102,6 +104,8 @@
robust:
/* Remove mutex from the list. */
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending,
+ &mutex->__data.__list.__next);
DEQUEUE_MUTEX (mutex);
mutex->__data.__owner = newowner;
@@ -111,6 +115,8 @@
/* Unlock. */
lll_robust_mutex_unlock (mutex->__data.__lock);
+
+ THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
break;
default:
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/nptl/tst-robust8.c new/nptl/tst-robust8.c
--- old/nptl/tst-robust8.c 1970-01-01 01:00:00.000000000 +0100
+++ new/nptl/tst-robust8.c 2006-03-28 06:12:46.000000000 +0200
@@ -0,0 +1,264 @@
+#include <pthread.h>
+#include <signal.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+
+
+
+
+static void prepare (void);
+#define PREPARE(argc, argv) prepare ()
+static int do_test (void);
+#define TEST_FUNCTION do_test ()
+#define TIMEOUT 3
+#include "../test-skeleton.c"
+
+
+static int fd;
+#define N 100
+
+static void
+prepare (void)
+{
+ fd = create_temp_file ("tst-robust8", NULL);
+ if (fd == -1)
+ exit (1);
+}
+
+
+#define THESIGNAL SIGKILL
+#define ROUNDS 5
+#define THREADS 9
+
+
+static const struct timespec before = { 0, 0 };
+
+
+static pthread_mutex_t *map;
+
+
+static void *
+tf (void *arg)
+{
+ long int nr = (long int) arg;
+ int fct = nr % 3;
+
+ uint8_t state[N];
+ memset (state, '\0', sizeof (state));
+
+ while (1)
+ {
+ int r = random () % N;
+ if (state[r] == 0)
+ {
+ int e;
+
+ switch (fct)
+ {
+ case 0:
+ e = pthread_mutex_lock (&map[r]);
+ if (e != 0)
+ {
+ printf ("mutex_lock of %d in thread %ld failed with %d\n",
+ r, nr, e);
+ exit (1);
+ }
+ state[r] = 1;
+ break;
+ case 1:
+ e = pthread_mutex_timedlock (&map[r], &before);
+ if (e != 0 && e != ETIMEDOUT)
+ {
+ printf ("\
+mutex_timedlock of %d in thread %ld failed with %d\n",
+ r, nr, e);
+ exit (1);
+ }
+ break;
+ default:
+ e = pthread_mutex_trylock (&map[r]);
+ if (e != 0 && e != EBUSY)
+ {
+ printf ("mutex_trylock of %d in thread %ld failed with %d\n",
+ r, nr, e);
+ exit (1);
+ }
+ break;
+ }
+
+ if (e == EOWNERDEAD)
+ pthread_mutex_consistent_np (&map[r]);
+
+ if (e == 0 || e == EOWNERDEAD)
+ state[r] = 1;
+ }
+ else
+ {
+ int e = pthread_mutex_unlock (&map[r]);
+ if (e != 0)
+ {
+ printf ("mutex_unlock of %d in thread %ld failed with %d\n",
+ r, nr, e);
+ exit (1);
+ }
+
+ state[r] = 0;
+ }
+ }
+}
+
+
+static void
+child (int round)
+{
+ for (int thread = 1; thread <= THREADS; ++thread)
+ {
+ pthread_t th;
+ if (pthread_create (&th, NULL, tf, (void *) (long int) thread) != 0)
+ {
+ printf ("cannot create thread %d in round %d\n", thread, round);
+ exit (1);
+ }
+ }
+
+ struct timespec ts;
+ ts.tv_sec = 0;
+ ts.tv_nsec = 1000000000 / ROUNDS;
+ while (nanosleep (&ts, &ts) != 0)
+ /* nothing */;
+
+ /* Time to die. */
+ kill (getpid (), THESIGNAL);
+
+ /* We better never get here. */
+ abort ();
+}
+
+
+static int
+do_test (void)
+{
+ if (ftruncate (fd, N * sizeof (pthread_mutex_t)) != 0)
+ {
+ puts ("cannot size new file");
+ return 1;
+ }
+
+ map = mmap (NULL, N * sizeof (pthread_mutex_t), PROT_READ | PROT_WRITE,
+ MAP_SHARED, fd, 0);
+ if (map == MAP_FAILED)
+ {
+ puts ("mapping failed");
+ return 1;
+ }
+
+ pthread_mutexattr_t ma;
+ if (pthread_mutexattr_init (&ma) != 0)
+ {
+ puts ("mutexattr_init failed");
+ return 0;
+ }
+ if (pthread_mutexattr_setrobust_np (&ma, PTHREAD_MUTEX_ROBUST_NP) != 0)
+ {
+ puts ("mutexattr_setrobust failed");
+ return 1;
+ }
+ if (pthread_mutexattr_setpshared (&ma, PTHREAD_PROCESS_SHARED) != 0)
+ {
+ puts ("mutexattr_setpshared failed");
+ return 1;
+ }
+
+ for (int round = 1; round <= ROUNDS; ++round)
+ {
+ for (int n = 0; n < N; ++n)
+ {
+ int e = pthread_mutex_init (&map[n], &ma);
+ if (e == ENOTSUP)
+ {
+ puts ("cannot support pshared robust mutexes");
+ return 0;
+ }
+ if (e != 0)
+ {
+ printf ("mutex_init %d in round %d failed\n", n + 1, round);
+ return 1;
+ }
+ }
+
+ pid_t p = fork ();
+ if (p == -1)
+ {
+ printf ("fork in round %d failed\n", round);
+ return 1;
+ }
+ if (p == 0)
+ child (round);
+
+ int status;
+ if (TEMP_FAILURE_RETRY (waitpid (p, &status, 0)) != p)
+ {
+ printf ("waitpid in round %d failed\n", round);
+ return 1;
+ }
+ if (!WIFSIGNALED (status))
+ {
+ printf ("child did not die of a signal in round %d\n", round);
+ return 1;
+ }
+ if (WTERMSIG (status) != THESIGNAL)
+ {
+ printf ("child did not die of signal %d in round %d\n",
+ THESIGNAL, round);
+ return 1;
+ }
+
+ for (int n = 0; n < N; ++n)
+ {
+ int e = pthread_mutex_lock (&map[n]);
+ if (e != 0 && e != EOWNERDEAD)
+ {
+ printf ("mutex_lock %d failed in round %d\n", n + 1, round);
+ return 1;
+ }
+ }
+
+ for (int n = 0; n < N; ++n)
+ if (pthread_mutex_unlock (&map[n]) != 0)
+ {
+ printf ("mutex_unlock %d failed in round %d\n", n + 1, round);
+ return 1;
+ }
+
+ for (int n = 0; n < N; ++n)
+ {
+ int e = pthread_mutex_destroy (&map[n]);
+ if (e != 0)
+ {
+ printf ("mutex_destroy %d in round %d failed with %d\n",
+ n + 1, round, e);
+ printf("nusers = %d\n", (int) map[n].__data.__nusers);
+ return 1;
+ }
+ }
+ }
+
+ if (pthread_mutexattr_destroy (&ma) != 0)
+ {
+ puts ("mutexattr_destroy failed");
+ return 1;
+ }
+
+ if (munmap (map, N * sizeof (pthread_mutex_t)) != 0)
+ {
+ puts ("munmap failed");
+ return 1;
+ }
+
+ return 0;
+}
++++++ kernel-headers.dif ++++++
--- /var/tmp/diff_new_pack.YF7eJq/_old 2006-04-05 17:03:54.000000000 +0200
+++ /var/tmp/diff_new_pack.YF7eJq/_new 2006-04-05 17:03:54.000000000 +0200
@@ -737,17 +737,6 @@
#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_PAGE_H */
---- asm-powerpc/sigcontext.h
-+++ asm-powerpc/sigcontext.h 2006/03/24 13:57:10
-@@ -10,7 +10,7 @@
- #include <linux/compiler.h>
- #include <asm/ptrace.h>
- #ifdef __powerpc64__
--#include <asm/elf.h>
-+#include <sys/procfs.h>
- #endif
-
- struct sigcontext {
--- asm-powerpc/types.h
+++ asm-powerpc/types.h 2006/03/24 13:57:10
@@ -40,7 +40,7 @@
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0
Hello community,
here is the log from the commit of package gcc
checked in at Wed Apr 5 17:03:36 CEST 2006.
--------
--- gcc/cross-alpha-gcc-icecream-backend.changes 2006-03-30 18:49:29.000000000 +0200
+++ gcc/cross-alpha-gcc-icecream-backend.changes 2006-04-04 17:25:23.000000000 +0200
@@ -1,0 +2,5 @@
+Mon Apr 3 18:14:08 CEST 2006 - rguenther(a)suse.de
+
+- Add patch for PR26763.
+
+-------------------------------------------------------------------
cross-arm-gcc-icecream-backend.changes: same change
cross-avr-gcc.changes: same change
cross-hppa-gcc-icecream-backend.changes: same change
cross-i386-gcc-icecream-backend.changes: same change
cross-ia64-gcc-icecream-backend.changes: same change
cross-mips-gcc-icecream-backend.changes: same change
cross-ppc-gcc-icecream-backend.changes: same change
cross-ppc64-gcc-icecream-backend.changes: same change
cross-s390-gcc-icecream-backend.changes: same change
cross-s390x-gcc-icecream-backend.changes: same change
cross-sparc-gcc-icecream-backend.changes: same change
cross-x86_64-gcc-icecream-backend.changes: same change
gcc.changes: same change
New:
----
pr26763.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cross-alpha-gcc-icecream-backend.spec ++++++
--- /var/tmp/diff_new_pack.XSJXIh/_old 2006-04-05 17:02:44.000000000 +0200
+++ /var/tmp/diff_new_pack.XSJXIh/_new 2006-04-05 17:02:44.000000000 +0200
@@ -25,7 +25,7 @@
URL: http://gcc.gnu.org/
License: GPL, LGPL
Version: 4.1.0
-Release: 11
+Release: 13
%define gcc_version %(echo %version | sed 's/_.*//')
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
%if %{gcc_for_opt}
@@ -71,6 +71,7 @@
Patch79: pr26826.patch
Patch82: pr13212.patch
Patch83: pr26042.patch
+Patch84: pr26763.patch
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch53: gcc41-java-rmic.patch
@@ -161,6 +162,7 @@
%patch79
%patch82
%patch83
+%patch84
%patch51
%patch53
%patch55
@@ -380,6 +382,8 @@
/usr/share/icecream-envs
%changelog -n cross-alpha-gcc-icecream-backend
+* Mon Apr 03 2006 - rguenther(a)suse.de
+- Add patch for PR26763.
* Thu Mar 30 2006 - rguenther(a)suse.de
- Fix #153386 in a different way.
- Add patch for PR26042. [#148884]
cross-arm-gcc-icecream-backend.spec: same change
++++++ cross-avr-gcc.spec ++++++
--- /var/tmp/diff_new_pack.XSJXIh/_old 2006-04-05 17:02:44.000000000 +0200
+++ /var/tmp/diff_new_pack.XSJXIh/_new 2006-04-05 17:02:44.000000000 +0200
@@ -24,7 +24,7 @@
URL: http://gcc.gnu.org/
License: GPL, LGPL
Version: 4.1.0
-Release: 11
+Release: 13
%define gcc_version %(echo %version | sed 's/_.*//')
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
%if %{gcc_for_opt}
@@ -70,6 +70,7 @@
Patch79: pr26826.patch
Patch82: pr13212.patch
Patch83: pr26042.patch
+Patch84: pr26763.patch
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch53: gcc41-java-rmic.patch
@@ -157,6 +158,7 @@
%patch79
%patch82
%patch83
+%patch84
%patch51
%patch53
%patch55
@@ -343,6 +345,8 @@
%{_prefix}
%changelog -n cross-avr-gcc
+* Mon Apr 03 2006 - rguenther(a)suse.de
+- Add patch for PR26763.
* Thu Mar 30 2006 - rguenther(a)suse.de
- Fix #153386 in a different way.
- Add patch for PR26042. [#148884]
++++++ cross-hppa-gcc-icecream-backend.spec ++++++
--- /var/tmp/diff_new_pack.XSJXIh/_old 2006-04-05 17:02:44.000000000 +0200
+++ /var/tmp/diff_new_pack.XSJXIh/_new 2006-04-05 17:02:44.000000000 +0200
@@ -25,7 +25,7 @@
URL: http://gcc.gnu.org/
License: GPL, LGPL
Version: 4.1.0
-Release: 11
+Release: 13
%define gcc_version %(echo %version | sed 's/_.*//')
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
%if %{gcc_for_opt}
@@ -71,6 +71,7 @@
Patch79: pr26826.patch
Patch82: pr13212.patch
Patch83: pr26042.patch
+Patch84: pr26763.patch
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch53: gcc41-java-rmic.patch
@@ -161,6 +162,7 @@
%patch79
%patch82
%patch83
+%patch84
%patch51
%patch53
%patch55
@@ -380,6 +382,8 @@
/usr/share/icecream-envs
%changelog -n cross-hppa-gcc-icecream-backend
+* Mon Apr 03 2006 - rguenther(a)suse.de
+- Add patch for PR26763.
* Thu Mar 30 2006 - rguenther(a)suse.de
- Fix #153386 in a different way.
- Add patch for PR26042. [#148884]
cross-i386-gcc-icecream-backend.spec: same change
cross-ia64-gcc-icecream-backend.spec: same change
cross-ppc-gcc-icecream-backend.spec: same change
cross-ppc64-gcc-icecream-backend.spec: same change
cross-s390-gcc-icecream-backend.spec: same change
cross-s390x-gcc-icecream-backend.spec: same change
cross-x86_64-gcc-icecream-backend.spec: same change
++++++ gcc.spec ++++++
--- /var/tmp/diff_new_pack.XSJXIh/_old 2006-04-05 17:02:44.000000000 +0200
+++ /var/tmp/diff_new_pack.XSJXIh/_new 2006-04-05 17:02:44.000000000 +0200
@@ -85,7 +85,7 @@
URL: http://gcc.gnu.org/
License: GPL
Version: 4.1.0
-Release: 11
+Release: 13
%define gcc_version %(echo %version | sed 's/_.*//')
%define snapshot_date %(echo %version | sed 's/[34]\.[0-4]\.[0-6]//' | sed 's/_/-/')
%if %{gcc_for_opt}
@@ -133,6 +133,7 @@
Patch79: pr26826.patch
Patch82: pr13212.patch
Patch83: pr26042.patch
+Patch84: pr26763.patch
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch53: gcc41-java-rmic.patch
@@ -584,6 +585,7 @@
%patch79
%patch82
%patch83
+%patch84
%patch51
%patch53
%patch55
@@ -1716,6 +1718,8 @@
%endif
%changelog -n gcc
+* Mon Apr 03 2006 - rguenther(a)suse.de
+- Add patch for PR26763.
* Thu Mar 30 2006 - rguenther(a)suse.de
- Fix #153386 in a different way.
- Add patch for PR26042. [#148884]
++++++ gcc.spec.in ++++++
--- gcc/gcc.spec.in 2006-03-31 09:35:45.000000000 +0200
+++ gcc/gcc.spec.in 2006-04-04 17:27:20.000000000 +0200
@@ -151,6 +151,7 @@
Patch79: pr26826.patch
Patch82: pr13212.patch
Patch83: pr26042.patch
+Patch84: pr26763.patch
# A set of patches from the RH srpm
Patch51: gcc41-ia64-stack-protector.patch
Patch53: gcc41-java-rmic.patch
@@ -518,6 +519,7 @@
%patch79
%patch82
%patch83
+%patch84
%patch51
%patch53
%patch55
++++++ pr26763.patch ++++++
2006-04-03 Richard Guenther <rguenther(a)suse.de>
PR tree-optimization/26763
* fold-const.c (fold_binary): Fold PTR + CST CMP PTR + CST
only for EQ_EXPR and NE_EXPR.
* gcc.dg/torture/pr26763-1.c: New testcase.
* gcc.dg/torture/pr26763-2.c: Likewise.
Index: gcc/fold-const.c
===================================================================
*** gcc/fold-const.c (revision 112634)
--- gcc/fold-const.c (working copy)
*************** fold_binary (enum tree_code code, tree t
*** 8897,8904 ****
/* If this is a comparison of two exprs that look like an
ARRAY_REF of the same object, then we can fold this to a
! comparison of the two offsets. */
! if (TREE_CODE_CLASS (code) == tcc_comparison)
{
tree base0, offset0, base1, offset1;
--- 8897,8905 ----
/* If this is a comparison of two exprs that look like an
ARRAY_REF of the same object, then we can fold this to a
! comparison of the two offsets. This is only safe for
! EQ_EXPR and NE_EXPR because of overflow issues. */
! if (code == EQ_EXPR || code == NE_EXPR)
{
tree base0, offset0, base1, offset1;
Index: gcc/testsuite/gcc.dg/torture/pr26763-1.c
===================================================================
*** gcc/testsuite/gcc.dg/torture/pr26763-1.c (revision 0)
--- gcc/testsuite/gcc.dg/torture/pr26763-1.c (revision 0)
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do run } */
+
+ extern void abort(void);
+
+ int try (int *a)
+ {
+ return a + -1 > a;
+ }
+
+ int main(void)
+ {
+ int bla[100];
+
+ if (try (bla + 50))
+ abort ();
+
+ return 0;
+ }
Index: gcc/testsuite/gcc.dg/torture/pr26763-2.c
===================================================================
*** gcc/testsuite/gcc.dg/torture/pr26763-2.c (revision 0)
--- gcc/testsuite/gcc.dg/torture/pr26763-2.c (revision 0)
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do run } */
+
+ extern void abort(void);
+
+ int try (char *a, int d)
+ {
+ return a + d > a;
+ }
+
+ int main(void)
+ {
+ char bla[100];
+
+ if (try (bla + 50, -1))
+ abort ();
+
+ return 0;
+ }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0
Hello community,
here is the log from the commit of package binutils
checked in at Wed Apr 5 17:02:12 CEST 2006.
--------
--- binutils/binutils.changes 2006-03-31 16:10:51.000000000 +0200
+++ binutils/binutils.changes 2006-04-03 19:46:24.000000000 +0200
@@ -1,0 +2,12 @@
+Mon Apr 3 13:07:29 CEST 2006 - schwab(a)suse.de
+
+- Add various bug fix backports collected by Alan Modra. Fixes the
+ following binutils bugs:
+ * PR ld/2443
+ * PR ld/2462
+ * PR ld/2267
+ * incompatibilities between REL{32,24,14}
+ * ld -r on ppc64
+ * -msecure-plt vs TLS
+
+-------------------------------------------------------------------
cross-alpha-binutils.changes: same change
cross-arm-binutils.changes: same change
cross-avr-binutils.changes: same change
cross-hppa-binutils.changes: same change
cross-i386-binutils.changes: same change
cross-ia64-binutils.changes: same change
cross-mips-binutils.changes: same change
cross-ppc-binutils.changes: same change
cross-ppc64-binutils.changes: same change
cross-s390-binutils.changes: same change
cross-s390x-binutils.changes: same change
cross-sparc-binutils.changes: same change
cross-x86_64-binutils.changes: same change
New:
----
concat-filename.diff
dwarf2dbg-file.diff
eh-frame.diff
elf-emit-reloc.diff
elf-fixup.diff
gas-close.diff
ld-search-order.diff
lookup-symbol-in-function-table.diff
ppc-got-reloc.diff
ppc-stub-sym.diff
ppc-tls.diff
ppc64-opd.diff
ppc64-toc1.diff
readelf.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ binutils.spec ++++++
--- /var/tmp/diff_new_pack.0JW181/_old 2006-04-05 17:00:52.000000000 +0200
+++ /var/tmp/diff_new_pack.0JW181/_new 2006-04-05 17:00:52.000000000 +0200
@@ -49,7 +49,7 @@
%endif
Autoreqprov: on
Version: 2.16.91.0.5
-Release: 12
+Release: 13
Summary: GNU Binutils
Source: ftp://ftp.kernel.org/pub/linux/devel/binutils/binutils-%{version}.tar.bz2
Source1: pre_checkin.sh
@@ -74,6 +74,21 @@
Patch18: suse-dynsort.diff
Patch19: suse-hashvals.diff
Patch20: bfd-find-nearest-line.diff
+# Collected by Alan Modra
+Patch42: lookup-symbol-in-function-table.diff
+Patch43: ppc-stub-sym.diff
+Patch44: ppc64-opd.diff
+Patch45: ppc64-toc1.diff
+Patch46: gas-close.diff
+Patch47: ld-search-order.diff
+Patch48: eh-frame.diff
+Patch49: dwarf2dbg-file.diff
+Patch50: readelf.diff
+Patch51: concat-filename.diff
+Patch52: ppc-got-reloc.diff
+Patch53: elf-emit-reloc.diff
+Patch54: ppc-tls.diff
+Patch55: elf-fixup.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if "%{name}" != "binutils"
%define _prefix /opt/cross
@@ -185,6 +200,21 @@
%patch19 -p1
%patch20 -p1
#
+%patch42
+%patch43
+%patch44
+%patch45
+%patch46
+%patch47
+%patch48
+%patch49
+%patch50
+%patch51
+%patch52
+%patch53
+%patch54
+%patch55
+#
# test_vanilla
%endif
@@ -227,7 +257,8 @@
${ADDITIONAL_TARGETS:+--enable-targets="${ADDITIONAL_TARGETS// /,}"}
make configure-bfd
make headers -C bfd
-make configure-bfd
+# force reconfiguring
+rm bfd/Makefile
make %{?jobs:-j%jobs}
%ifnarch %arm
make -k check CFLAGS="$RPM_OPT_FLAGS -Wno-unused" || %{make_check_handling}
@@ -415,6 +446,15 @@
%endif
%changelog -n binutils
+* Mon Apr 03 2006 - schwab(a)suse.de
+- Add various bug fix backports collected by Alan Modra. Fixes the
+ following binutils bugs:
+ * PR ld/2443
+ * PR ld/2462
+ * PR ld/2267
+ * incompatibilities between REL{32,24,14}
+ * ld -r on ppc64
+ * -msecure-plt vs TLS
* Fri Mar 31 2006 - schwab(a)suse.de
- Fix build race.
* Fri Mar 31 2006 - matz(a)suse.de
cross-alpha-binutils.spec: same change
cross-arm-binutils.spec: same change
cross-avr-binutils.spec: same change
cross-hppa-binutils.spec: same change
cross-i386-binutils.spec: same change
cross-ia64-binutils.spec: same change
cross-mips-binutils.spec: same change
cross-ppc-binutils.spec: same change
cross-ppc64-binutils.spec: same change
cross-s390-binutils.spec: same change
cross-s390x-binutils.spec: same change
cross-sparc-binutils.spec: same change
cross-x86_64-binutils.spec: same change
++++++ binutils-version.patch ++++++
--- /var/tmp/diff_new_pack.0JW181/_old 2006-04-05 17:00:53.000000000 +0200
+++ /var/tmp/diff_new_pack.0JW181/_new 2006-04-05 17:00:53.000000000 +0200
@@ -1,6 +1,6 @@
--- bfd/Makefile.am
+++ bfd/Makefile.am
-@@ -889,10 +889,10 @@
+@@ -897,10 +897,10 @@
bfdver.h: $(srcdir)/version.h $(srcdir)/Makefile.in
@echo "creating $@"
@bfd_version=`echo "$(VERSION)" | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
@@ -15,7 +15,7 @@
--- bfd/Makefile.in
+++ bfd/Makefile.in
-@@ -1458,10 +1458,10 @@
+@@ -1466,10 +1466,10 @@
bfdver.h: $(srcdir)/version.h $(srcdir)/Makefile.in
@echo "creating $@"
@bfd_version=`echo "$(VERSION)" | sed -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
@@ -28,3 +28,10 @@
fi ;\
sed -e "s/@bfd_version@/$$bfd_version/" -e "s/@bfd_version_string@/$$bfd_version_string/" < $(srcdir)/version.h > $@
+--- include/bin-bugs.h
++++ include/bin-bugs.h
+@@ -1,3 +1,3 @@
+ #ifndef REPORT_BUGS_TO
+-#define REPORT_BUGS_TO "<URL:http://www.sourceware.org/bugzilla/> and hjl(a)lucon.org"
++#define REPORT_BUGS_TO "<URL:http://bugs.opensuse.org/>"
+ #endif
++++++ concat-filename.diff ++++++
2006-03-11 H.J. Lu <hongjiu.lu(a)intel.com>
PR ld/2443
* dwarf2.c (concat_filename): Don't issue an error if file is
0.
cvs diff -D"2006/03/11 15:00Z" -D"2006/03/11 15:03Z"
Index: bfd/dwarf2.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/dwarf2.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -p -r1.86 -r1.87
--- bfd/dwarf2.c 6 Mar 2006 04:52:03 -0000 1.86
+++ bfd/dwarf2.c 11 Mar 2006 15:01:18 -0000 1.87
@@ -865,8 +865,10 @@ concat_filename (struct line_info_table
if (file - 1 >= table->num_files)
{
- (*_bfd_error_handler)
- (_("Dwarf Error: mangled line number section (bad file number)."));
+ /* FILE == 0 means unknown. */
+ if (file)
+ (*_bfd_error_handler)
+ (_("Dwarf Error: mangled line number section (bad file number)."));
return strdup ("<unknown>");
}
++++++ dwarf2dbg-file.diff ++++++
gas/
2006-02-28 Mat <mat(a)csail.mit.edu>
* dwarf2dbg.c (get_filenum): Don't inadvertently decrease files_in_use.
cvs diff -D"2006/02/28 00:37Z" -D"2006/02/28 00:40Z"
Index: gas/dwarf2dbg.c
===================================================================
RCS file: /src/cygnus-cvs/src/gas/dwarf2dbg.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -p -r1.80 -r1.81
--- gas/dwarf2dbg.c 20 Sep 2005 21:00:15 -0000 1.80
+++ gas/dwarf2dbg.c 28 Feb 2006 00:38:19 -0000 1.81
@@ -1,5 +1,5 @@
/* dwarf2dbg.c - DWARF2 debug support
- Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
Contributed by David Mosberger-Tang <davidm(a)hpl.hp.com>
@@ -484,7 +484,8 @@ get_filenum (const char *filename, unsig
files[i].filename = num ? file : xstrdup (file);
files[i].dir = dir;
- files_in_use = i + 1;
+ if (files_in_use < i + 1)
+ files_in_use = i + 1;
last_used = i;
last_used_dir_len = dir_len;
++++++ eh-frame.diff ++++++
bfd/
2006-02-27 Jakub Jelinek <jakub(a)redhat.com>
* elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Handle S flag.
(_bfd_elf_write_section_eh_frame): Likewise.
gas/
2006-02-27 Jakub Jelinek <jakub(a)redhat.com>
* dw2gencfi.c (struct fde_entry, struct cie_entry): Add signal_frame
field.
(CFI_signal_frame): Define.
(cfi_pseudo_table): Add .cfi_signal_frame.
(dot_cfi): Handle CFI_signal_frame.
(output_cie): Handle cie->signal_frame.
(select_cie_for_fde): Don't share CIE if signal_frame flag is
different. Copy signal_frame from FDE to newly created CIE.
* doc/as.texinfo: Document .cfi_signal_frame.
cvs diff -D"2006/02/27 23:06Z" -D"2006/02/27 23:08Z"
Index: bfd/elf-eh-frame.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/elf-eh-frame.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -p -r1.47 -r1.48
--- bfd/elf-eh-frame.c 4 May 2005 15:53:07 -0000 1.47
+++ bfd/elf-eh-frame.c 27 Feb 2006 23:07:05 -0000 1.48
@@ -1,5 +1,5 @@
/* .eh_frame section optimization.
- Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
Written by Jakub Jelinek <jakub(a)redhat.com>.
This file is part of BFD, the Binary File Descriptor library.
@@ -613,6 +613,8 @@ _bfd_elf_discard_section_eh_frame
ENSURE_NO_RELOCS (buf);
REQUIRE (get_DW_EH_PE_width (cie.fde_encoding, ptr_size));
break;
+ case 'S':
+ break;
case 'P':
{
int per_width;
@@ -1177,6 +1179,8 @@ _bfd_elf_write_section_eh_frame (bfd *ab
action &= ~1;
}
buf++;
+ break;
+ case 'S':
break;
default:
BFD_FAIL ();
Index: gas/dw2gencfi.c
===================================================================
RCS file: /src/cygnus-cvs/src/gas/dw2gencfi.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -p -r1.27 -r1.28
--- gas/dw2gencfi.c 17 Nov 2005 08:33:36 -0000 1.27
+++ gas/dw2gencfi.c 27 Feb 2006 23:07:06 -0000 1.28
@@ -1,5 +1,5 @@
/* dw2gencfi.c - Support for generating Dwarf2 CFI information.
- Copyright 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
Contributed by Michal Ludvig <mludvig(a)suse.cz>
This file is part of GAS, the GNU Assembler.
@@ -88,6 +88,7 @@ struct fde_entry
struct cfi_insn_data *data;
struct cfi_insn_data **last;
unsigned int return_column;
+ unsigned int signal_frame;
};
struct cie_entry
@@ -95,6 +96,7 @@ struct cie_entry
struct cie_entry *next;
symbolS *start_address;
unsigned int return_column;
+ unsigned int signal_frame;
struct cfi_insn_data *first, *last;
};
@@ -354,6 +356,7 @@ static void dot_cfi_endproc (int);
#define CFI_return_column 0x101
#define CFI_rel_offset 0x102
#define CFI_escape 0x103
+#define CFI_signal_frame 0x104
const pseudo_typeS cfi_pseudo_table[] =
{
@@ -374,6 +377,7 @@ const pseudo_typeS cfi_pseudo_table[] =
{ "cfi_restore_state", dot_cfi, DW_CFA_restore_state },
{ "cfi_window_save", dot_cfi, DW_CFA_GNU_window_save },
{ "cfi_escape", dot_cfi_escape, 0 },
+ { "cfi_signal_frame", dot_cfi, CFI_signal_frame },
{ NULL, NULL, 0 }
};
@@ -547,6 +551,10 @@ dot_cfi (int arg)
cfi_add_CFA_insn (DW_CFA_GNU_window_save);
break;
+ case CFI_signal_frame:
+ cur_fde_data->signal_frame = 1;
+ break;
+
default:
abort ();
}
@@ -864,6 +872,8 @@ output_cie (struct cie_entry *cie)
out_one (DW_CIE_VERSION); /* Version. */
out_one ('z'); /* Augmentation. */
out_one ('R');
+ if (cie->signal_frame)
+ out_one ('S');
out_one (0);
out_uleb128 (DWARF2_LINE_MIN_INSN_LENGTH); /* Code alignment. */
out_sleb128 (DWARF2_CIE_DATA_ALIGNMENT); /* Data alignment. */
@@ -944,7 +954,8 @@ select_cie_for_fde (struct fde_entry *fd
for (cie = cie_root; cie; cie = cie->next)
{
- if (cie->return_column != fde->return_column)
+ if (cie->return_column != fde->return_column
+ || cie->signal_frame != fde->signal_frame)
continue;
for (i = cie->first, j = fde->data;
i != cie->last && j != NULL;
@@ -1017,6 +1028,7 @@ select_cie_for_fde (struct fde_entry *fd
cie->next = cie_root;
cie_root = cie;
cie->return_column = fde->return_column;
+ cie->signal_frame = fde->signal_frame;
cie->first = fde->data;
for (i = cie->first; i ; i = i->next)
Index: gas/doc/as.texinfo
===================================================================
RCS file: /src/cygnus-cvs/src/gas/doc/as.texinfo,v
retrieving revision 1.139
retrieving revision 1.140
diff -u -p -r1.139 -r1.140
--- gas/doc/as.texinfo 26 Nov 2005 20:03:53 -0000 1.139
+++ gas/doc/as.texinfo 27 Feb 2006 23:07:06 -0000 1.140
@@ -4102,6 +4102,9 @@ using the known displacement of the CFA
This is often easier to use, because the number will match the
code it's annotating.
+@section @code{.cfi_signal_frame}
+Mark current function as signal trampoline.
+
@section @code{.cfi_window_save}
SPARC register window has been saved.
++++++ elf-emit-reloc.diff ++++++
2006-03-17 Daniel Jacobowitz <dan(a)codesourcery.com>
PR ld/2462
* elflink.c (bfd_elf_final_link): Remove
bed->elf_backend_emit_relocs from emit_relocs.
cvs diff -D"2006/03/17 18:37Z" -D"2006/03/17 18:38Z"
Index: bfd/elflink.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/elflink.c,v
retrieving revision 1.206
retrieving revision 1.207
diff -u -p -r1.206 -r1.207
--- bfd/elflink.c 17 Mar 2006 03:19:56 -0000 1.206
+++ bfd/elflink.c 17 Mar 2006 18:37:21 -0000 1.207
@@ -7782,8 +7782,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
dynobj = elf_hash_table (info)->dynobj;
emit_relocs = (info->relocatable
- || info->emitrelocations
- || bed->elf_backend_emit_relocs);
+ || info->emitrelocations);
finfo.info = info;
finfo.output_bfd = abfd;
++++++ elf-fixup.diff ++++++
2006-03-30 Ben Elliston <bje(a)au.ibm.com>
PR ld/2267
* elflink.c (elf_fixup_link_order): Ensure `elfsec' is not a
special section number that exceeds the number of ELF sections
(eg. SHN_MIPS_SCOMMON).
cvs diff -D"2006/03/30 00:21Z" -D"2006/03/30 00:24Z"
Index: bfd/elflink.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/elflink.c,v
retrieving revision 1.207
retrieving revision 1.208
diff -u -p -r1.207 -r1.208
--- bfd/elflink.c 17 Mar 2006 18:37:21 -0000 1.207
+++ bfd/elflink.c 30 Mar 2006 00:22:20 -0000 1.208
@@ -7665,7 +7665,7 @@ elf_fixup_link_order (bfd *abfd, asectio
struct bfd_link_order *p;
bfd *sub;
const struct elf_backend_data *bed = get_elf_backend_data (abfd);
- int elfsec;
+ unsigned elfsec;
struct bfd_link_order **sections;
asection *s, *other_sec, *linkorder_sec;
bfd_vma offset;
@@ -7682,7 +7682,8 @@ elf_fixup_link_order (bfd *abfd, asectio
sub = s->owner;
if (bfd_get_flavour (sub) == bfd_target_elf_flavour
&& elf_elfheader (sub)->e_ident[EI_CLASS] == bed->s->elfclass
- && (elfsec = _bfd_elf_section_from_bfd_section (sub, s)) != -1
+ && (elfsec = _bfd_elf_section_from_bfd_section (sub, s))
+ && elfsec < elf_numsections (sub)
&& elf_elfsections (sub)[elfsec]->sh_flags & SHF_LINK_ORDER)
{
seen_linkorder++;
++++++ gas-close.diff ++++++
2006-02-08 H.J. Lu <hongjiu.lu(a)intel.com>
* as.c (close_output_file): New.
(main): Register close_output_file with xatexit before
dump_statistics. Don't call output_file_close.
cvs diff -D"2006/02/09 00:07Z" -D"2006/02/09 00:09Z"
Index: gas/as.c
===================================================================
RCS file: /src/cygnus-cvs/src/gas/as.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -p -r1.67 -r1.68
--- gas/as.c 30 Oct 2005 18:08:52 -0000 1.67
+++ gas/as.c 9 Feb 2006 00:07:41 -0000 1.68
@@ -930,6 +930,14 @@ dump_statistics (void)
#endif
}
+#ifndef OBJ_VMS
+static void
+close_output_file (void)
+{
+ output_file_close (out_file_name);
+}
+#endif
+
/* The interface between the macro code and gas expression handling. */
static int
@@ -1081,6 +1089,11 @@ main (int argc, char ** argv)
input_scrub_begin ();
expr_begin ();
+#ifndef OBJ_VMS /* Does its own file handling. */
+ /* It has to be called after dump_statistics (). */
+ xatexit (close_output_file);
+#endif
+
if (flag_print_statistics)
xatexit (dump_statistics);
@@ -1167,10 +1180,6 @@ main (int argc, char ** argv)
#ifndef NO_LISTING
listing_print (listing_filename);
-#endif
-
-#ifndef OBJ_VMS /* Does its own file handling. */
- output_file_close (out_file_name);
#endif
if (flag_fatal_warnings && had_warnings () > 0 && had_errors () == 0)
++++++ ld-search-order.diff ++++++
2006-02-08 H.J. Lu <hongjiu.lu(a)intel.com>
PR ld/2290
* NEWS: Updated for the Linux linker search order change.
* emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Call
gld${EMULATION_NAME}_check_ld_so_conf before checking default
search directories for DT_NEEDED entries.
cvs diff -D"2006/02/09 01:04Z" -D"2006/02/09 01:06Z"
(edited NEWS diff)
Index: ld/NEWS
===================================================================
RCS file: /src/cygnus-cvs/src/ld/NEWS,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -p -r1.62 -r1.63
--- ld/NEWS 31 Jan 2006 22:13:41 -0000 1.62
+++ ld/NEWS 9 Feb 2006 01:05:10 -0000 1.63
@@ -1,5 +1,8 @@
-*- text -*-
+* Modify the Linux linker to seach /etc/ld.so.conf first before
+ checking default search directories for DT_NEEDED entries.
+
* Support for the Z80 processor family has been added.
* Add support for the "@<file>" syntax to the command line, so that extra
Index: ld/emultempl/elf32.em
===================================================================
RCS file: /src/cygnus-cvs/src/ld/emultempl/elf32.em,v
retrieving revision 1.161
retrieving revision 1.162
diff -u -p -r1.161 -r1.162
--- ld/emultempl/elf32.em 7 Dec 2005 14:43:54 -0000 1.161
+++ ld/emultempl/elf32.em 9 Feb 2006 01:05:10 -0000 1.162
@@ -919,6 +919,18 @@ cat >>e${EMULATION_NAME}.c <<EOF
EOF
fi
+if [ "x${USE_LIBPATH}" = xyes ] ; then
+ case ${target} in
+ *-*-linux-* | *-*-k*bsd*-*)
+ # Linux
+ cat >>e${EMULATION_NAME}.c <<EOF
+ if (gld${EMULATION_NAME}_check_ld_so_conf (l->name, force))
+ break;
+
+EOF
+ ;;
+ esac
+fi
cat >>e${EMULATION_NAME}.c <<EOF
len = strlen (l->name);
for (search = search_head; search != NULL; search = search->next)
@@ -937,17 +949,6 @@ cat >>e${EMULATION_NAME}.c <<EOF
if (search != NULL)
break;
EOF
-if [ "x${USE_LIBPATH}" = xyes ] ; then
- case ${target} in
- *-*-linux-* | *-*-k*bsd*-*)
- cat >>e${EMULATION_NAME}.c <<EOF
- if (gld${EMULATION_NAME}_check_ld_so_conf (l->name, force))
- break;
-EOF
- # Linux
- ;;
- esac
-fi
cat >>e${EMULATION_NAME}.c <<EOF
}
++++++ lookup-symbol-in-function-table.diff ++++++
2005-12-27 Marty Leisner <leisner(a)rochester.rr.com>
* dwarf2.c (lookup_symbol_in_function_table): Check for a function
name before passing it to strcmp.
cvs diff -D"2005/12/27 16:06Z" -D"2005/12/27 16:09Z"
Index: bfd/dwarf2.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/dwarf2.c,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -p -r1.81 -r1.82
--- bfd/dwarf2.c 22 Sep 2005 19:50:27 -0000 1.81
+++ bfd/dwarf2.c 27 Dec 2005 16:07:36 -0000 1.82
@@ -1467,6 +1467,7 @@ lookup_symbol_in_function_table (struct
if ((!each_func->sec || each_func->sec == sec)
&& addr >= arange->low
&& addr < arange->high
+ && each_func->name
&& strcmp (name, each_func->name) == 0
&& (!best_fit
|| ((arange->high - arange->low)
++++++ ppc-got-reloc.diff ++++++
2006-03-16 Alan Modra <amodra(a)bigpond.net.au>
* elf32-ppc.c (ppc_elf_check_relocs): REL24 and REL14 relocs
against __GLOBAL_OFFSET_TABLE__ need never be dynamic. Tweak
last change to REL32 relocs so that they are counted as
possibly dynamic as per REL24 and REL14.
2006-03-16 Alan Modra <amodra(a)bigpond.net.au>
* elf32-ppc.c (ppc_elf_check_relocs): Don't fall into REL24
checks from REL32.
cvs diff -D"2006/03/15 13:52Z" -D"2006/03/15 14:31Z"
(edited to suit lack of htab->plt_type patch)
Index: bfd/elf32-ppc.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/elf32-ppc.c,v
retrieving revision 1.192
retrieving revision 1.194
diff -u -p -r1.192 -r1.194
--- bfd/elf32-ppc.c 2 Mar 2006 09:44:23 -0000 1.192
+++ bfd/elf32-ppc.c 15 Mar 2006 14:30:18 -0000 1.194
@@ -3335,7 +3335,9 @@ ppc_elf_check_relocs (bfd *abfd,
if (s == got2)
htab->old_plt = 1;
}
- /* fall through */
+ if (h == NULL || h == htab->elf.hgot)
+ break;
+ goto dodyn1;
case R_PPC_REL24:
case R_PPC_REL14:
@@ -3361,6 +3364,7 @@ ppc_elf_check_relocs (bfd *abfd,
case R_PPC_ADDR14_BRNTAKEN:
case R_PPC_UADDR32:
case R_PPC_UADDR16:
+ dodyn1:
if (h != NULL && !info->shared)
{
/* We may need a plt entry if the symbol turns out to be
++++++ ppc-stub-sym.diff ++++++
2005-12-27 Alan Modra <amodra(a)bigpond.net.au>
* elf32-ppc.c (add_stub_sym): Pass info rather than htab.
Use different names for pic vs non-pic, '.' instead of '_'.
(allocate_dynrelocs): Adjust add_stub_sym call.
cvs diff -D"2005/12/27 03:53Z" -D"2005/12/27 03:56Z"
Index: bfd/elf32-ppc.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/elf32-ppc.c,v
retrieving revision 1.184
retrieving revision 1.185
diff -u -p -r1.184 -r1.185
--- bfd/elf32-ppc.c 8 Dec 2005 11:41:11 -0000 1.184
+++ bfd/elf32-ppc.c 27 Dec 2005 03:54:33 -0000 1.185
@@ -4213,34 +4213,41 @@ ppc_elf_adjust_dynamic_symbol (struct bf
return TRUE;
}
-/* Generate a symbol to mark plt call stubs, of the form
- xxxxxxxx_plt_call_<callee> where xxxxxxxx is a hex number, usually 0,
- specifying the addend on the plt relocation, or for -fPIC,
- xxxxxxxx.got2_plt_call_<callee>. */
+/* Generate a symbol to mark plt call stubs. For non-PIC code the sym is
+ xxxxxxxx.plt_call32.<callee> where xxxxxxxx is a hex number, usually 0,
+ specifying the addend on the plt relocation. For -fpic code, the sym
+ is xxxxxxxx.plt_pic32.<callee>, and for -fPIC
+ xxxxxxxx.got2.plt_pic32.<callee>. */
static bfd_boolean
add_stub_sym (struct plt_entry *ent,
struct elf_link_hash_entry *h,
- struct ppc_elf_link_hash_table *htab)
+ struct bfd_link_info *info)
{
struct elf_link_hash_entry *sh;
size_t len1, len2, len3;
char *name;
+ const char *stub;
+ struct ppc_elf_link_hash_table *htab = ppc_elf_hash_table (info);
+
+ if (info->shared || info->pie)
+ stub = ".plt_pic32.";
+ else
+ stub = ".plt_call32.";
len1 = strlen (h->root.root.string);
- len2 = sizeof ("plt_call_") - 1;
+ len2 = strlen (stub);
len3 = 0;
if (ent->sec)
len3 = strlen (ent->sec->name);
- name = bfd_malloc (len1 + len2 + len3 + 10);
+ name = bfd_malloc (len1 + len2 + len3 + 9);
if (name == NULL)
return FALSE;
sprintf (name, "%08x", (unsigned) ent->addend & 0xffffffff);
if (ent->sec)
memcpy (name + 8, ent->sec->name, len3);
- name[len3 + 8] = '_';
- memcpy (name + len3 + 9, "plt_call_", len2);
- memcpy (name + len3 + 9 + len2, h->root.root.string, len1 + 1);
+ memcpy (name + 8 + len3, stub, len2);
+ memcpy (name + 8 + len3 + len2, h->root.root.string, len1 + 1);
sh = elf_link_hash_lookup (&htab->elf, name, TRUE, FALSE, FALSE);
if (sh == NULL)
return FALSE;
@@ -4361,7 +4368,7 @@ allocate_dynrelocs (struct elf_link_hash
ent->glink_offset = glink_offset;
if (htab->emit_stub_syms
- && !add_stub_sym (ent, h, htab))
+ && !add_stub_sym (ent, h, info))
return FALSE;
}
else
++++++ ppc-tls.diff ++++++
bfd/
2006-03-17 Alexandre Oliva <aoliva(a)redhat.com>
* elf32-ppc.c (ppc_elf_relocate_section): Copy addend from
first relocation to the second when relaxing TLS GD to LE;
zero it out when relaxing to IE.
ld/testsuite/
2006-03-17 Alexandre Oliva <aoliva(a)redhat.com>
* ld-powerpc/tls32.s: Verify that +32768 @plt addend is
discarded.
cvs diff -D"2006/03/17 06:44Z" -D"2006/03/17 06:45Z"
Index: bfd/elf32-ppc.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/elf32-ppc.c,v
retrieving revision 1.195
retrieving revision 1.196
diff -u -p -r1.195 -r1.196
--- bfd/elf32-ppc.c 16 Mar 2006 12:20:15 -0000 1.195
+++ bfd/elf32-ppc.c 17 Mar 2006 06:44:37 -0000 1.196
@@ -5768,6 +5768,7 @@ ppc_elf_relocate_section (bfd *output_bf
insn1 |= 32 << 26; /* lwz */
insn2 = 0x7c631214; /* add 3,3,2 */
rel[1].r_info = ELF32_R_INFO (r_symndx2, R_PPC_NONE);
+ rel[1].r_addend = 0;
r_type = (((r_type - (R_PPC_GOT_TLSGD16 & 3)) & 3)
+ R_PPC_GOT_TPREL16);
rel->r_info = ELF32_R_INFO (r_symndx, r_type);
@@ -5782,13 +5783,13 @@ ppc_elf_relocate_section (bfd *output_bf
/* Was an LD reloc. */
r_symndx = 0;
rel->r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
- rel[1].r_addend = htab->elf.tls_sec->vma + DTP_OFFSET;
}
r_type = R_PPC_TPREL16_HA;
rel->r_info = ELF32_R_INFO (r_symndx, r_type);
rel[1].r_info = ELF32_R_INFO (r_symndx,
R_PPC_TPREL16_LO);
rel[1].r_offset += 2;
+ rel[1].r_addend = rel->r_addend;
}
bfd_put_32 (output_bfd, insn1, contents + rel->r_offset - 2);
bfd_put_32 (output_bfd, insn2, contents + offset);
Index: ld/testsuite/ld-powerpc/tls32.s
===================================================================
RCS file: /src/cygnus-cvs/src/ld/testsuite/ld-powerpc/tls32.s,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- ld/testsuite/ld-powerpc/tls32.s 1 Oct 2004 20:11:39 -0000 1.3
+++ ld/testsuite/ld-powerpc/tls32.s 17 Mar 2006 06:44:37 -0000 1.4
@@ -33,11 +33,11 @@ _start:
#global syms
#GD
addi 3,31,gd0@got@tlsgd #R_PPC_GOT_TLSGD16 gd0
- bl __tls_get_addr@plt #R_PPC_PLTREL24 __tls_get_addr
+ bl __tls_get_addr+0x8000@plt #R_PPC_PLTREL24 __tls_get_addr
#LD
addi 3,31,ld0@got@tlsld #R_PPC_GOT_TLSLD16 ld0
- bl __tls_get_addr@plt #R_PPC_PLTREL24 __tls_get_addr
+ bl __tls_get_addr+0x8000@plt #R_PPC_PLTREL24 __tls_get_addr
addi 9,3,ld0@dtprel #R_PPC_DTPREL16 ld0
++++++ ppc64-opd.diff ++++++
2005-12-31 Alan Modra <amodra(a)bigpond.net.au>
* elf64-ppc.c (ppc64_elf_relocate_section): Adjust relocs against
opd section sym when opd has been edited. Use correct addend
when determining branch 'y' bit and branch overflow. Adjust and
save opd relocs for ld -r too.
cvs diff -D"2005/12/31 12:54Z" -D"2005/12/31 12:57Z"
Index: bfd/elf64-ppc.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/elf64-ppc.c,v
retrieving revision 1.228
retrieving revision 1.229
diff -u -p -r1.228 -r1.229
--- bfd/elf64-ppc.c 13 Dec 2005 05:39:34 -0000 1.228
+++ bfd/elf64-ppc.c 31 Dec 2005 12:55:10 -0000 1.229
@@ -9550,9 +9550,6 @@ ppc64_elf_relocate_section (bfd *output_
/* Disabled until we sort out how ld should choose 'y' vs 'at'. */
bfd_boolean is_power4 = FALSE;
- if (info->relocatable)
- return TRUE;
-
/* Initialize howto table if needed. */
if (!ppc64_elf_howto_table[R_PPC64_ADDR32])
ppc_howto_init ();
@@ -9574,7 +9571,7 @@ ppc64_elf_relocate_section (bfd *output_
for (; rel < relend; rel++)
{
enum elf_ppc64_reloc_type r_type;
- bfd_vma addend;
+ bfd_vma addend, orig_addend;
bfd_reloc_status_type r;
Elf_Internal_Sym *sym;
asection *sec;
@@ -9611,6 +9608,7 @@ ppc64_elf_relocate_section (bfd *output_
sym_name = NULL;
unresolved_reloc = FALSE;
warned = FALSE;
+ orig_addend = rel->r_addend;
if (r_symndx < symtab_hdr->sh_info)
{
@@ -9629,11 +9627,25 @@ ppc64_elf_relocate_section (bfd *output_
if (adjust == -1)
relocation = 0;
else
- relocation += adjust;
+ {
+ /* If this is a relocation against the opd section sym
+ and we have edited .opd, adjust the reloc addend so
+ that ld -r and ld --emit-relocs output is correct.
+ If it is a reloc against some other .opd symbol,
+ then the symbol value will be adjusted later. */
+ if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+ rel->r_addend += adjust;
+ else
+ relocation += adjust;
+ }
}
+ if (info->relocatable)
+ continue;
}
else
{
+ if (info->relocatable)
+ continue;
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, sym_hashes,
h_elf, sec, relocation,
@@ -10126,8 +10138,9 @@ ppc64_elf_relocate_section (bfd *output_
&& get_opd_info (sec) != NULL)
{
/* The branch destination is the value of the opd entry. */
- bfd_vma off = (relocation - sec->output_section->vma
- - sec->output_offset + rel->r_addend);
+ bfd_vma off = (relocation + addend
+ - sec->output_section->vma
+ - sec->output_offset);
bfd_vma dest = opd_entry_value (sec, off, NULL, NULL);
if (dest != (bfd_vma) -1)
{
@@ -10143,7 +10156,7 @@ ppc64_elf_relocate_section (bfd *output_
+ input_section->output_section->vma);
if (stub_entry == NULL
- && (relocation + rel->r_addend - from + max_br_offset
+ && (relocation + addend - from + max_br_offset
>= 2 * max_br_offset)
&& r_type != R_PPC64_ADDR14_BRTAKEN
&& r_type != R_PPC64_ADDR14_BRNTAKEN)
@@ -10177,7 +10190,7 @@ ppc64_elf_relocate_section (bfd *output_
else
{
/* Invert 'y' bit if not the default. */
- if ((bfd_signed_vma) (relocation + rel->r_addend - from) < 0)
+ if ((bfd_signed_vma) (relocation + addend - from) < 0)
insn ^= 0x01 << 21;
}
@@ -10191,7 +10204,7 @@ ppc64_elf_relocate_section (bfd *output_
&& h->elf.root.type == bfd_link_hash_undefweak
&& r_type == R_PPC64_REL24
&& relocation == 0
- && rel->r_addend == 0)
+ && addend == 0)
{
bfd_put_32 (output_bfd, NOP, contents + rel->r_offset);
continue;
@@ -10300,7 +10313,7 @@ ppc64_elf_relocate_section (bfd *output_
}
for (; ent != NULL; ent = ent->next)
- if (ent->addend == rel->r_addend
+ if (ent->addend == orig_addend
&& ent->owner == input_bfd
&& ent->tls_type == tls_type)
break;
@@ -10335,7 +10348,7 @@ ppc64_elf_relocate_section (bfd *output_
outrel.r_offset = (got->output_section->vma
+ got->output_offset
+ off);
- outrel.r_addend = rel->r_addend;
+ outrel.r_addend = addend;
if (tls_type & (TLS_LD | TLS_GD))
{
outrel.r_addend = 0;
@@ -10348,7 +10361,7 @@ ppc64_elf_relocate_section (bfd *output_
bfd_elf64_swap_reloca_out (output_bfd,
&outrel, loc);
outrel.r_offset += 8;
- outrel.r_addend = rel->r_addend;
+ outrel.r_addend = addend;
outrel.r_info
= ELF64_R_INFO (indx, R_PPC64_DTPREL64);
}
@@ -10386,7 +10399,7 @@ ppc64_elf_relocate_section (bfd *output_
emitting a reloc. */
else
{
- relocation += rel->r_addend;
+ relocation += addend;
if (tls_type == (TLS_TLS | TLS_LD))
relocation = 1;
else if (tls_type != 0)
@@ -10439,7 +10452,7 @@ ppc64_elf_relocate_section (bfd *output_
{
struct plt_entry *ent;
for (ent = h->elf.plt.plist; ent != NULL; ent = ent->next)
- if (ent->addend == rel->r_addend
+ if (ent->addend == orig_addend
&& ent->plt.offset != (bfd_vma) -1)
{
relocation = (htab->plt->output_section->vma
@@ -10885,7 +10898,7 @@ ppc64_elf_relocate_section (bfd *output_
if (!((*info->callbacks->reloc_overflow)
(info, (h ? &h->elf.root : NULL), sym_name,
ppc64_elf_howto_table[r_type]->name,
- rel->r_addend, input_bfd, input_section, rel->r_offset)))
+ orig_addend, input_bfd, input_section, rel->r_offset)))
return FALSE;
}
else
@@ -10908,7 +10921,7 @@ ppc64_elf_relocate_section (bfd *output_
adjusted. Worse, reloc symbol indices will be for the output
file rather than the input. Save a copy of the relocs for
opd_entry_value. */
- if (is_opd && info->emitrelocations)
+ if (is_opd && (info->emitrelocations || info->relocatable))
{
bfd_size_type amt;
amt = input_section->reloc_count * sizeof (Elf_Internal_Rela);
++++++ ppc64-toc1.diff ++++++
2006-01-01 Jakub Jelinek <jakub(a)redhat.com>
* elf64-ppc.c (ppc64_elf_action_discarded): Return 0
for .toc1 section.
cvs diff -D"2006/01/01 00:05Z" -D"2006/01/01 00:07Z"
Index: bfd/elf64-ppc.c
===================================================================
RCS file: /src/cygnus-cvs/src/bfd/elf64-ppc.c,v
retrieving revision 1.229
retrieving revision 1.230
diff -u -p -r1.229 -r1.230
--- bfd/elf64-ppc.c 31 Dec 2005 12:55:10 -0000 1.229
+++ bfd/elf64-ppc.c 1 Jan 2006 00:06:24 -0000 1.230
@@ -1,5 +1,5 @@
/* PowerPC64-specific support for 64-bit ELF.
- Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
Free Software Foundation, Inc.
Written by Linus Nordberg, Swox AB <info(a)swox.com>,
based on elf32-ppc.c by Ian Lance Taylor.
@@ -9492,6 +9492,9 @@ ppc64_elf_action_discarded (asection *se
return 0;
if (strcmp (".toc", sec->name) == 0)
+ return 0;
+
+ if (strcmp (".toc1", sec->name) == 0)
return 0;
return _bfd_elf_default_action_discarded (sec);
++++++ readelf.diff ++++++
2006-03-10 Alan Modra <amodra(a)bigpond.net.au>
* dwarf.c (process_extended_line_op): Remove pointer_size param.
Use length instead to determine address size.
(get_pointer_size_and_offset_of_comp_unit): Delete.
(display_debug_lines): Adjust for above.
(display_debug_aranges): Don't stop on finding two zeros.
(display_debug_frames): For warning, print offset not pointer.
cvs diff -D"2006/03/10 13:29Z" -D"2006/03/10 13:32Z"
Index: binutils/dwarf.c
===================================================================
RCS file: /src/cygnus-cvs/src/binutils/dwarf.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- binutils/dwarf.c 3 Mar 2006 18:29:40 -0000 1.3
+++ binutils/dwarf.c 10 Mar 2006 13:30:10 -0000 1.4
@@ -221,7 +221,7 @@ reset_state_machine (int is_stmt)
Returns the number of bytes read. */
static int
-process_extended_line_op (unsigned char *data, int is_stmt, int pointer_size)
+process_extended_line_op (unsigned char *data, int is_stmt)
{
unsigned char op_code;
unsigned int bytes_read;
@@ -251,7 +251,7 @@ process_extended_line_op (unsigned char
break;
case DW_LNE_set_address:
- adr = byte_get (data, pointer_size);
+ adr = byte_get (data, len - bytes_read - 1);
printf (_("set Address to 0x%lx\n"), adr);
state_machine_regs.address = adr;
break;
@@ -1766,55 +1766,12 @@ load_debug_info (void * file)
return 0;
}
-/* Retrieve the pointer size associated with the given compilation unit.
- Optionally the offset of this unit into the .debug_info section is
- also retutned. If there is no .debug_info section then an error
- message is issued and 0 is returned. If the requested comp unit has
- not been defined in the .debug_info section then a warning message
- is issued and the last know pointer size is returned. This message
- is only issued once per section dumped per file dumped. */
-
-static unsigned int
-get_pointer_size_and_offset_of_comp_unit (unsigned int comp_unit,
- const char * section_name,
- unsigned long * offset_return)
-{
- unsigned long offset = 0;
-
- if (num_debug_info_entries == 0)
- error (_("%s section needs a populated .debug_info section\n"),
- section_name);
-
- else if (comp_unit >= num_debug_info_entries)
- {
- if (!warned_about_missing_comp_units)
- {
- warn (_("%s section has more comp units than .debug_info section\n"),
- section_name);
- warn (_("assuming that the pointer size is %d, from the last comp unit in .debug_info\n\n"),
- last_pointer_size);
- warned_about_missing_comp_units = TRUE;
- }
- }
- else
- {
- last_pointer_size = debug_information [comp_unit].pointer_size;
- offset = debug_information [comp_unit].cu_offset;
- }
-
- if (offset_return != NULL)
- * offset_return = offset;
-
- return last_pointer_size;
-}
-
static int
display_debug_lines (struct dwarf_section *section, void *file)
{
unsigned char *start = section->start;
unsigned char *data = start;
unsigned char *end = start + section->size;
- unsigned int comp_unit = 0;
printf (_("\nDump of debug contents of section %s:\n\n"),
section->name);
@@ -1827,7 +1784,6 @@ display_debug_lines (struct dwarf_sectio
unsigned char *standard_opcodes;
unsigned char *end_of_sequence;
unsigned char *hdrptr;
- unsigned int pointer_size;
int initial_length_size;
int offset_size;
int i;
@@ -1885,12 +1841,6 @@ display_debug_lines (struct dwarf_sectio
info.li_line_base <<= 24;
info.li_line_base >>= 24;
- /* Get the pointer size from the comp unit associated
- with this block of line number information. */
- pointer_size = get_pointer_size_and_offset_of_comp_unit
- (comp_unit, ".debug_line", NULL);
- comp_unit ++;
-
printf (_(" Length: %ld\n"), info.li_length);
printf (_(" DWARF Version: %d\n"), info.li_version);
printf (_(" Prologue Length: %d\n"), info.li_prologue_length);
@@ -1899,9 +1849,6 @@ display_debug_lines (struct dwarf_sectio
printf (_(" Line Base: %d\n"), info.li_line_base);
printf (_(" Line Range: %d\n"), info.li_line_range);
printf (_(" Opcode Base: %d\n"), info.li_opcode_base);
- printf (_(" (Pointer size: %u)%s\n"),
- pointer_size,
- warned_about_missing_comp_units ? " [assumed]" : "" );
end_of_sequence = data + info.li_length + initial_length_size;
@@ -1993,14 +1940,7 @@ display_debug_lines (struct dwarf_sectio
else switch (op_code)
{
case DW_LNS_extended_op:
- if (pointer_size == 0)
- {
- warn (_("Extend line ops need a valid pointer size, guessing at 4\n"));
- pointer_size = 4;
- }
-
- data += process_extended_line_op (data, info.li_default_is_stmt,
- pointer_size);
+ data += process_extended_line_op (data, info.li_default_is_stmt);
break;
case DW_LNS_copy:
@@ -2634,7 +2574,9 @@ display_debug_aranges (struct dwarf_sect
if (excess)
ranges += (2 * arange.ar_pointer_size) - excess;
- for (;;)
+ start += arange.ar_length + initial_length_size;
+
+ while (ranges + 2 * arange.ar_pointer_size <= start)
{
address = byte_get (ranges, arange.ar_pointer_size);
@@ -2644,14 +2586,8 @@ display_debug_aranges (struct dwarf_sect
ranges += arange.ar_pointer_size;
- /* A pair of zeros marks the end of the list. */
- if (address == 0 && length == 0)
- break;
-
printf (" %8.8lx %lu\n", address, length);
}
-
- start += arange.ar_length + initial_length_size;
}
printf ("\n");
@@ -3142,8 +3078,8 @@ display_debug_frames (struct dwarf_secti
if (!cie)
{
- warn ("Invalid CIE pointer %08lx in FDE at %p\n",
- cie_id, saved_start);
+ warn ("Invalid CIE pointer %08lx in FDE at %08lx\n",
+ cie_id, (unsigned long)(saved_start - section_start));
start = block_end;
fc->ncols = 0;
fc->col_type = xmalloc (sizeof (short int));
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0
Hello community,
here is the log from the commit of package yast2-bluetooth
checked in at Wed Apr 5 10:28:45 CEST 2006.
--------
--- yast2-bluetooth/yast2-bluetooth.changes 2006-03-06 08:58:51.000000000 +0100
+++ yast2-bluetooth/yast2-bluetooth.changes 2006-04-05 08:15:11.000000000 +0200
@@ -1,0 +2,7 @@
+Wed Apr 5 08:06:00 CEST 2006 - lslezak(a)suse.cz
+
+- fixed pand option ("--search" instead of "--search_option")
+ (#162799)
+- 2.13.3
+
+-------------------------------------------------------------------
Old:
----
yast2-bluetooth-2.13.2.tar.bz2
New:
----
yast2-bluetooth-2.13.3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-bluetooth.spec ++++++
--- /var/tmp/diff_new_pack.LFGik9/_old 2006-04-05 10:28:32.000000000 +0200
+++ /var/tmp/diff_new_pack.LFGik9/_new 2006-04-05 10:28:32.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-bluetooth (Version 2.13.2)
+# spec file for package yast2-bluetooth (Version 2.13.3)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -11,12 +11,12 @@
# norootforbuild
Name: yast2-bluetooth
-Version: 2.13.2
+Version: 2.13.3
Release: 1
License: GPL
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-bluetooth-2.13.2.tar.bz2
+Source0: yast2-bluetooth-2.13.3.tar.bz2
prefix: /usr
BuildRequires: perl-XML-Writer update-desktop-files yast2 yast2-devtools yast2-testsuite
Requires: yast2
@@ -34,7 +34,7 @@
Ladislav Slezak <lslezak(a)suse.cz>
%prep
-%setup -n yast2-bluetooth-2.13.2
+%setup -n yast2-bluetooth-2.13.3
%build
%{prefix}/bin/y2tool y2autoconf
@@ -70,6 +70,10 @@
%doc %{prefix}/share/doc/packages/yast2-bluetooth
%changelog -n yast2-bluetooth
+* Wed Apr 05 2006 - lslezak(a)suse.cz
+- fixed pand option ("--search" instead of "--search_option")
+ (#162799)
+- 2.13.3
* Mon Mar 06 2006 - lslezak(a)suse.cz
- removed yast2-devel-packages macro from .spec file
- hook in Makefile.am (fixed make package)
++++++ yast2-bluetooth-2.13.2.tar.bz2 -> yast2-bluetooth-2.13.3.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-bluetooth-2.13.2/VERSION new/yast2-bluetooth-2.13.3/VERSION
--- old/yast2-bluetooth-2.13.2/VERSION 2006-03-06 08:07:26.000000000 +0100
+++ new/yast2-bluetooth-2.13.3/VERSION 2006-04-05 08:05:57.000000000 +0200
@@ -1 +1 @@
-2.13.2
+2.13.3
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-bluetooth-2.13.2/src/dialogs.ycp new/yast2-bluetooth-2.13.3/src/dialogs.ycp
--- old/yast2-bluetooth-2.13.2/src/dialogs.ycp 2005-12-06 14:10:01.000000000 +0100
+++ new/yast2-bluetooth-2.13.3/src/dialogs.ycp 2006-04-05 08:14:38.000000000 +0200
@@ -4,7 +4,7 @@
* Summary: Dialogs definitions
* Authors: Ladislav Slezak <lslezak(a)suse.cz>
*
- * $Id: dialogs.ycp 26426 2005-12-06 13:09:58Z lslezak $
+ * $Id: dialogs.ycp 29691 2006-04-05 06:11:16Z lslezak $
*/
{
@@ -22,7 +22,7 @@
string NO = _("No");
string listen = "--listen --role NAP";
-string search_option = "--search_option";
+string search_option = "--search";
void RefreshGlobalWidgets() {
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0
Hello community,
here is the log from the commit of package yast2-packager
checked in at Wed Apr 5 10:26:35 CEST 2006.
--------
--- yast2-packager/yast2-packager.changes 2006-04-04 19:53:40.000000000 +0200
+++ yast2-packager/yast2-packager.changes 2006-04-05 09:54:09.000000000 +0200
@@ -1,0 +2,6 @@
+Wed Apr 5 09:49:01 CEST 2006 - visnov(a)suse.cz
+
+- Show the type of the source in installation sources module if needed
+- 2.13.60
+
+-------------------------------------------------------------------
Old:
----
yast2-packager-2.13.59.tar.bz2
New:
----
yast2-packager-2.13.60.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-packager.spec ++++++
--- /var/tmp/diff_new_pack.kXaE5i/_old 2006-04-05 10:25:29.000000000 +0200
+++ /var/tmp/diff_new_pack.kXaE5i/_new 2006-04-05 10:25:29.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-packager (Version 2.13.59)
+# spec file for package yast2-packager (Version 2.13.60)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -11,12 +11,12 @@
# norootforbuild
Name: yast2-packager
-Version: 2.13.59
+Version: 2.13.60
Release: 1
License: GPL
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-packager-2.13.59.tar.bz2
+Source0: yast2-packager-2.13.60.tar.bz2
prefix: /usr
BuildRequires: docbook-xsl-stylesheets doxygen gcc-c++ libxcrypt-devel libxslt perl-XML-Writer sgml-skel update-desktop-files yast2 yast2-country yast2-devtools yast2-installation yast2-testsuite yast2-xml
Requires: yast2 yast2-installation checkmedia yast2-country
@@ -41,7 +41,7 @@
Arvin Schnell <arvin(a)suse.de>
%prep
-%setup -n yast2-packager-2.13.59
+%setup -n yast2-packager-2.13.60
%build
%{prefix}/bin/y2tool y2autoconf
@@ -78,6 +78,9 @@
%doc %{prefix}/share/doc/packages/yast2-packager
%changelog -n yast2-packager
+* Wed Apr 05 2006 - visnov(a)suse.cz
+- Show the type of the source in installation sources module if needed
+- 2.13.60
* Tue Apr 04 2006 - jsrain(a)suse.de
- fixed servicepack.tgz integration
- added support for loopback mounted ISO (#159565)
++++++ yast2-packager-2.13.59.tar.bz2 -> yast2-packager-2.13.60.tar.bz2 ++++++
++++ 2386 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.59/Makefile.am new/yast2-packager-2.13.60/Makefile.am
--- old/yast2-packager-2.13.59/Makefile.am 2006-04-04 19:53:47.000000000 +0200
+++ new/yast2-packager-2.13.60/Makefile.am 2006-03-13 14:18:11.000000000 +0100
@@ -154,7 +154,7 @@
$(PREFIX)/bin/y2tool create-spec < $$i > $$here/package/$${newname} ; \
done
-package: check-up-to-date check-tagversion check-all-packages check-textdomain package-local
+package: check-up-to-date check-tagversion check-all-packages package-local
TAGVERSION = $(PREFIX)/bin/y2tool tagversion
@@ -199,9 +199,6 @@
false; \
fi
-check-textdomain:
- $(PREFIX)/bin/y2tool check-textdomain $(srcdir)
-
stable: checkin-stable
checkin-stable: package
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.59/VERSION new/yast2-packager-2.13.60/VERSION
--- old/yast2-packager-2.13.59/VERSION 2006-04-04 19:51:07.000000000 +0200
+++ new/yast2-packager-2.13.60/VERSION 2006-04-05 09:49:53.000000000 +0200
@@ -1 +1 @@
-2.13.59
+2.13.60
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.59/configure.in new/yast2-packager-2.13.60/configure.in
--- old/yast2-packager-2.13.59/configure.in 2006-04-04 19:53:47.000000000 +0200
+++ new/yast2-packager-2.13.60/configure.in 2006-03-13 14:18:11.000000000 +0100
@@ -3,7 +3,7 @@
dnl -- This file is generated by y2autoconf - DO NOT EDIT! --
dnl (edit configure.in.in instead)
-AC_INIT(yast2-packager, 2.13.59, http://www.suse.de/feedback, yast2-packager)
+AC_INIT(yast2-packager, 2.13.41, http://www.suse.de/feedback, yast2-packager)
dnl Check for presence of file 'RPMNAME'
AC_CONFIG_SRCDIR([RPMNAME])
@@ -17,7 +17,7 @@
AM_INIT_AUTOMAKE(tar-ustar) dnl searches for some needed programs
dnl Important YaST2 variables
-VERSION="2.13.59"
+VERSION="2.13.41"
RPMNAME="yast2-packager"
MAINTAINER="Jiri Srain <jsrain(a)suse.cz>"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.59/src/clients/inst_source.ycp new/yast2-packager-2.13.60/src/clients/inst_source.ycp
--- old/yast2-packager-2.13.59/src/clients/inst_source.ycp 2006-03-30 19:23:46.000000000 +0200
+++ new/yast2-packager-2.13.60/src/clients/inst_source.ycp 2006-04-05 09:48:34.000000000 +0200
@@ -66,7 +66,8 @@
// corresponds to the "Enable/Disable" button
source[ "enabled" ]:true ? _("On") : _("Off"),
source["autorefresh"]:true ? _("On") : _("Off"),
- productData[ "label" ]:"unknown",
+ // translators: unknown name for a given source
+ productData[ "label" ]:generalData[ "type" ]: _("unknown"),
generalData[ "url" ]:""
);
return item;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0
Hello community,
here is the log from the commit of package libzypp
checked in at Wed Apr 5 09:52:41 CEST 2006.
--------
--- libzypp/libzypp.changes 2006-04-04 17:49:31.000000000 +0200
+++ libzypp/libzypp.changes 2006-04-05 09:51:29.000000000 +0200
@@ -1,0 +2,21 @@
+Wed Apr 5 09:27:08 CEST 2006 - visnov(a)suse.cz
+
+- properly initialize autorefresh for non-remote sources (#154990)
+- rev 2919
+
+-------------------------------------------------------------------
+Tue Apr 4 19:19:39 CEST 2006 - mt(a)suse.de
+
+- Added flag to MediaManager::isUseableAttachPoint, whether
+ to check against system mount entries or not.
+- Disallow to use the attachpoints of another media handlers
+ as source path in MediaDIR.
+- rev 2917
+
+-------------------------------------------------------------------
+Tue Apr 4 18:47:01 CEST 2006 - dmacvicar(a)suse.de
+
+-implement callbacks for when package verification (checksum)
+ fails, offer to retry or abort
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.jUh1gG/_old 2006-04-05 09:52:17.000000000 +0200
+++ /var/tmp/diff_new_pack.jUh1gG/_new 2006-04-05 09:52:17.000000000 +0200
@@ -18,7 +18,7 @@
Autoreqprov: on
Summary: Package, Patch, Pattern, and Product Management
Version: 0.0.8
-Release: 74
+Release: 75
Source: zypp-0.0.0.tar.bz2
Prefix: /usr
Provides: yast2-packagemanager
@@ -104,6 +104,18 @@
%{_libdir}/pkgconfig/libzypp.pc
%changelog -n libzypp
+* Wed Apr 05 2006 - visnov(a)suse.cz
+- properly initialize autorefresh for non-remote sources (#154990)
+- rev 2919
+* Tue Apr 04 2006 - mt(a)suse.de
+- Added flag to MediaManager::isUseableAttachPoint, whether
+ to check against system mount entries or not.
+- Disallow to use the attachpoints of another media handlers
+ as source path in MediaDIR.
+- rev 2917
+* Tue Apr 04 2006 - dmacvicar(a)suse.de
+-implement callbacks for when package verification (checksum)
+ fails, offer to retry or abort
* Tue Apr 04 2006 - dmacvicar(a)suse.de
- Fix construction of checksum objects when using non-standard
checksum algorithms
++++++ zypp-0.0.0.tar.bz2 ++++++
libzypp/zypp-0.0.0.tar.bz2 libzypp/zypp-0.0.0.tar.bz2 differ: char 11, line 1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
1
0