libstdc++/2779: resolution conflicts between std namespace and <cstring>

bonachea@cs.berkeley.edu bonachea@cs.berkeley.edu
Tue May 8 15:06:00 GMT 2001


>Number:         2779
>Category:       libstdc++
>Synopsis:       resolution conflicts between std namespace and <cstring>
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Tue May 08 15:06:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Dan Bonachea
>Release:        gcc version 3.1 20010507 (experimental)
>Organization:
>Environment:
RedHat 7.0
Linux napa.Millennium.Berkeley.EDU 2.4.1 #2 SMP Mon Apr 16 19:00:26 PDT 2001 i686 unknown
>Description:
The simple little C++ program below (preprocessed code attached)
causes g++ to output the following error on RedHat 7.0:

teststr2.cc: In function `int main()':
teststr2.cc:7: call of overloaded `strstr(const char*&, const char*&)' is 
   ambiguous
/usr/include/string.h:178: candidates are: char* strstr(const char*, const 
   char*)
/project/cs/yelick/c/home/grad/bonachea/bigbin/.gcc-linux/include/g++-v3/bits/std_cstring.h:111: 
                  char* std::strstr(char*, const char*) <near match>
/project/cs/yelick/c/home/grad/bonachea/bigbin/.gcc-linux/include/g++-v3/bits/std_cstring.h:108: 
                  const char* std::strstr(const char*, const char*)

Apparently, the std::strstr() function conflicts with a function of the 
same name in <cstring>, and the compiler doesn't know which to choose.
The same problem occurs for strchr(), and possibly others as well.
>How-To-Repeat:

#include <cstring>
using namespace std;

int main() {
 const char *a = "hello there you buggy-boo";
 const char *b = "you";
 const char *p = strstr(a, b);
 return 0;
}
>Fix:

A user workaround is to preface all calls to strstr() with :: or std::,
but this is a pain.
It seems like perhaps <cstring> should not be including <string.h>,
since it redefines everything into the std:: namespace anyhow
(commenting out that include also fixes the problem)

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="teststr2.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="teststr2.i"

IyAxICJ0ZXN0c3RyMi5jYyIKIyAxICIvcHJvamVjdC9jcy95ZWxpY2svYy9ob21lL2dyYWQvYm9u
YWNoZWEvYmlnYmluLy5nY2MtbGludXgvaW5jbHVkZS9nKystdjMvY3N0cmluZyIgMSAzCgojIDEg
Ii9wcm9qZWN0L2NzL3llbGljay9jL2hvbWUvZ3JhZC9ib25hY2hlYS9iaWdiaW4vLmdjYy1saW51
eC9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RyaW5nLmgiIDEgMwojIDM5ICIvcHJvamVjdC9j
cy95ZWxpY2svYy9ob21lL2dyYWQvYm9uYWNoZWEvYmlnYmluLy5nY2MtbGludXgvaW5jbHVkZS9n
KystdjMvYml0cy9zdGRfY3N0cmluZy5oIiAzCiMgMSAiL3Byb2plY3QvY3MveWVsaWNrL2MvaG9t
ZS9ncmFkL2JvbmFjaGVhL2JpZ2Jpbi8uZ2NjLWxpbnV4L2luY2x1ZGUvZysrLXYzL2k2ODYtcGMt
bGludXgtZ251L2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDM0ICIvcHJvamVjdC9jcy95ZWxpY2sv
Yy9ob21lL2dyYWQvYm9uYWNoZWEvYmlnYmluLy5nY2MtbGludXgvaW5jbHVkZS9nKystdjMvaTY4
Ni1wYy1saW51eC1nbnUvYml0cy9jKytjb25maWcuaCIgMwojIDEgIi9wcm9qZWN0L2NzL3llbGlj
ay9jL2hvbWUvZ3JhZC9ib25hY2hlYS9iaWdiaW4vLmdjYy1saW51eC9pbmNsdWRlL2crKy12My9p
Njg2LXBjLWxpbnV4LWdudS9iaXRzL29zX2RlZmluZXMuaCIgMSAzCiMgMzcgIi9wcm9qZWN0L2Nz
L3llbGljay9jL2hvbWUvZ3JhZC9ib25hY2hlYS9iaWdiaW4vLmdjYy1saW51eC9pbmNsdWRlL2cr
Ky12My9pNjg2LXBjLWxpbnV4LWdudS9iaXRzL29zX2RlZmluZXMuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyODMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAyODQgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAyIDMKIyAzMTEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAzMTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAy
IDMKIyAzOCAiL3Byb2plY3QvY3MveWVsaWNrL2MvaG9tZS9ncmFkL2JvbmFjaGVhL2JpZ2Jpbi8u
Z2NjLWxpbnV4L2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbGludXgtZ251L2JpdHMvb3NfZGVmaW5l
cy5oIiAyIDMKIyAzNSAiL3Byb2plY3QvY3MveWVsaWNrL2MvaG9tZS9ncmFkL2JvbmFjaGVhL2Jp
Z2Jpbi8uZ2NjLWxpbnV4L2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbGludXgtZ251L2JpdHMvYysr
Y29uZmlnLmgiIDIgMwojIDQwICIvcHJvamVjdC9jcy95ZWxpY2svYy9ob21lL2dyYWQvYm9uYWNo
ZWEvYmlnYmluLy5nY2MtbGludXgvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0cmluZy5oIiAy
IDMKIyAxICIvcHJvamVjdC9jcy95ZWxpY2svYy9ob21lL2dyYWQvYm9uYWNoZWEvYmlnYmluLy5n
Y2MtbGludXgvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGRlZi5oIiAxIDMKIyA0MCAiL3By
b2plY3QvY3MveWVsaWNrL2MvaG9tZS9ncmFkL2JvbmFjaGVhL2JpZ2Jpbi8uZ2NjLWxpbnV4L2lu
Y2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRkZWYuaCIgMwojIDEgIi9wcm9qZWN0L2NzL3llbGlj
ay9jL2hvbWUvZ3JhZC9ib25hY2hlYS9iaWdiaW4vLmdjYy1saW51eC9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICIvcHJvamVjdC9j
cy95ZWxpY2svYy9ob21lL2dyYWQvYm9uYWNoZWEvYmlnYmluLy5nY2MtbGludXgvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBpbnQg
cHRyZGlmZl90OwojIDE5OSAiL3Byb2plY3QvY3MveWVsaWNrL2MvaG9tZS9ncmFkL2JvbmFjaGVh
L2JpZ2Jpbi8uZ2NjLWxpbnV4L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNs
dWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyA0MSAiL3Byb2pl
Y3QvY3MveWVsaWNrL2MvaG9tZS9ncmFkL2JvbmFjaGVhL2JpZ2Jpbi8uZ2NjLWxpbnV4L2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRkZWYuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKICB1c2lu
ZyA6OnB0cmRpZmZfdDsKICB1c2luZyA6OnNpemVfdDsKfQojIDQxICIvcHJvamVjdC9jcy95ZWxp
Y2svYy9ob21lL2dyYWQvYm9uYWNoZWEvYmlnYmluLy5nY2MtbGludXgvaW5jbHVkZS9nKystdjMv
Yml0cy9zdGRfY3N0cmluZy5oIiAyIDMKIyA0MyAiL3Byb2plY3QvY3MveWVsaWNrL2MvaG9tZS9n
cmFkL2JvbmFjaGVhL2JpZ2Jpbi8uZ2NjLWxpbnV4L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2Nz
dHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjYgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAi
L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgoKIyAxICIvcHJvamVj
dC9jcy95ZWxpY2svYy9ob21lL2dyYWQvYm9uYWNoZWEvYmlnYmluLy5nY2MtbGludXgvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpf
X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jl
c3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCAqbWVtbW92
ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIHRo
cm93ICgpOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVz
dCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAg
aW50IF9fYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkICptZW1z
ZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGlu
dCBtZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3Qg
X19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2
b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiB2b2lkICpy
YXdtZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVy
biBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cg
KCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpz
dHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0
ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJu
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0
cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDMK
dHlwZWRlZiBzdHJ1Y3QgX19sb2NhbGVfc3RydWN0CnsKCiAgc3RydWN0IGxvY2FsZV9kYXRhICpf
X2xvY2FsZXNbMTNdOwoKCiAgY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CiAg
Y29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvdXBwZXI7
Cn0gKl9fbG9jYWxlX3Q7CiMgMTA5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCmV4dGVy
biBpbnQgX19zdHJjb2xsX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3My
LCBfX2xvY2FsZV90IF9fbCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCmV4dGVybiBzaXplX3QgX19zdHJ4ZnJtX2wgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFy
ICpfX3NyYywgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVf
dCBfX2wpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpf
X3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4dGVybiBj
aGFyICpzdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTU1ICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBf
X2MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0
cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4
dGVybiBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19y
ZWplY3QpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIg
KnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0
ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAqc3Ry
Y2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxl
KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hh
ciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZGVsaW0pCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19zYXZlX3B0cikgdGhyb3cgKCk7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSB0aHJvdyAoKTsK
CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXpl
X3QgX19oYXlzdGFja2xlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25l
ZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19tZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9f
ZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9f
c3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZvaWQgKl9f
cmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jl
c3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBzaXplX3Qgc3Ry
bGVuIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNp
emVfdCBfX21heGxlbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSB0aHJvdyAoKTsKCgoKZXh0
ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fYnVmbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGludCBfX2Vycm51
bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9p
ZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gdm9p
ZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKSB0
aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSB0aHJv
dyAoKTsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lk
ICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpyaW5kZXgg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgoKZXh0ZXJuIGludCBfX2ZmcyAoaW50IF9faSkgdGhyb3cgKCkgX19hdHRyaWJ1
dGVfXyAoKGNvbnN0KSk7CmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoY29uc3QpKTsKCgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQgX19sKSB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGludCBm
ZnNsbCAobG9uZyBsb25nIGludCBfX2xsKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChj
b25zdCkpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgoKCgpleHRlcm4gaW50IF9fc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9f
czEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2Nh
bGVfdCBfX2xvYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4g
aW50IF9fc3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f
czIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9f
bG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVy
biBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
Y2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpfX3N0
cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3NyYykKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmlj
dCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90
IF9fbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpzdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
Yywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmZyeSAoY2hhciAqX19z
dHJpbmcpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVf
dCBfX24pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hhciAqYmFzZW5hbWUgKF9fY29uc3QgY2hh
ciAqX19maWxlbmFtZSkgdGhyb3cgKCk7CiMgMzY1ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMK
fQojIDQ0ICIvcHJvamVjdC9jcy95ZWxpY2svYy9ob21lL2dyYWQvYm9uYWNoZWEvYmlnYmluLy5n
Y2MtbGludXgvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0cmluZy5oIiAyIDMKIyA2OSAiL3By
b2plY3QvY3MveWVsaWNrL2MvaG9tZS9ncmFkL2JvbmFjaGVhL2JpZ2Jpbi8uZ2NjLWxpbnV4L2lu
Y2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdHJpbmcuaCIgMwpuYW1lc3BhY2Ugc3RkCnsKICBleHRl
cm4gIkMiIHZvaWQqIG1lbWNweSh2b2lkKiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiAgZXh0ZXJu
ICJDIiB2b2lkKiBtZW1tb3ZlKHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKICBleHRlcm4g
IkMiIGNoYXIqIHN0cmNweShjaGFyKiwgY29uc3QgY2hhciopOwogIGV4dGVybiAiQyIgY2hhciog
c3RybmNweShjaGFyKiwgY29uc3QgY2hhciosIHNpemVfdCk7CiAgZXh0ZXJuICJDIiBjaGFyKiBz
dHJjYXQoY2hhciosIGNvbnN0IGNoYXIqKTsKICBleHRlcm4gIkMiIGNoYXIqIHN0cm5jYXQoY2hh
ciosIGNvbnN0IGNoYXIqLCBzaXplX3QpOwogIGV4dGVybiAiQyIgaW50IG1lbWNtcChjb25zdCB2
b2lkKiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiAgZXh0ZXJuICJDIiBpbnQgc3RyY21wKGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKik7CiAgZXh0ZXJuICJDIiBpbnQgc3RyY29sbChjb25zdCBjaGFy
KiwgY29uc3QgY2hhciopOwogIGV4dGVybiAiQyIgaW50IHN0cm5jbXAoY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqLCBzaXplX3QpOwogIGV4dGVybiAiQyIgc2l6ZV90IHN0cnhmcm0oY2hhciosIGNv
bnN0IGNoYXIqLCBzaXplX3QpOwogIGV4dGVybiAiQyIgY29uc3Qgdm9pZCogbWVtY2hyKGNvbnN0
IHZvaWQqLCBpbnQsIHNpemVfdCk7CiAgaW5saW5lIHZvaWQqCiAgbWVtY2hyKHZvaWQqIF9fcCwg
aW50IF9fYywgc2l6ZV90IF9fbikKICB7CiAgICByZXR1cm4gY29uc3RfY2FzdDx2b2lkKj4obWVt
Y2hyKGNvbnN0X2Nhc3Q8Y29uc3Qgdm9pZCo+KF9fcCksIF9fYywgX19uKSk7CiAgfQogIGV4dGVy
biAiQyIgY29uc3QgY2hhciogc3RyY2hyKGNvbnN0IGNoYXIqLCBpbnQpOwogIGlubGluZSBjaGFy
KgogIHN0cmNocihjaGFyKiBfX3MxLCBpbnQgX19uKQogIHsKICAgIHJldHVybiBjb25zdF9jYXN0
PGNoYXIqPihzdHJjaHIoY29uc3RfY2FzdDxjb25zdCBjaGFyKj4oX19zMSksIF9fbikpOwogIH0K
ICBleHRlcm4gIkMiIHNpemVfdCBzdHJjc3BuKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CiAg
ZXh0ZXJuICJDIiBjb25zdCBjaGFyKiBzdHJwYnJrKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKik7
CiAgaW5saW5lIGNoYXIqCiAgc3RycGJyayhjaGFyKiBfX3MxLCBjb25zdCBjaGFyKiBfX3MyKQog
IHsKICAgIHJldHVybiBjb25zdF9jYXN0PGNoYXIqPihzdHJwYnJrKGNvbnN0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KF9fczEpLCBfX3MyKSk7CiAgfQogIGV4dGVybiAiQyIgY29uc3QgY2hhciogc3RycmNo
cihjb25zdCBjaGFyKiwgaW50KTsKICBpbmxpbmUgY2hhcioKICBzdHJyY2hyKGNoYXIqIF9fczEs
IGludCBfX24pCiAgewogICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Y2hhcio+KHN0cnJjaHIoY29uc3Rf
Y2FzdDxjb25zdCBjaGFyKj4oX19zMSksIF9fbikpOwogIH0KICBleHRlcm4gIkMiIHNpemVfdCBz
dHJzcG4oY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKICBleHRlcm4gIkMiIGNvbnN0IGNoYXIq
IHN0cnN0cihjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwogIGlubGluZSBjaGFyKgogIHN0cnN0
cihjaGFyKiBfX3MxLCBjb25zdCBjaGFyKiBfX3MyKQogIHsKICAgIHJldHVybiBjb25zdF9jYXN0
PGNoYXIqPihzdHJzdHIoY29uc3RfY2FzdDxjb25zdCBjaGFyKj4oX19zMSksIF9fczIpKTsKICB9
CiAgZXh0ZXJuICJDIiBjaGFyKiBzdHJ0b2soY2hhciosIGNvbnN0IGNoYXIqKTsKICBleHRlcm4g
IkMiIHZvaWQqIG1lbXNldCh2b2lkKiwgaW50LCBzaXplX3QpOwogIGV4dGVybiAiQyIgY2hhciog
c3RyZXJyb3IoaW50KTsKICBleHRlcm4gIkMiIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciopOwp9
CiMgMyAiL3Byb2plY3QvY3MveWVsaWNrL2MvaG9tZS9ncmFkL2JvbmFjaGVhL2JpZ2Jpbi8uZ2Nj
LWxpbnV4L2luY2x1ZGUvZysrLXYzL2NzdHJpbmciIDIgMwojIDIgInRlc3RzdHIyLmNjIiAyCnVz
aW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKIGNvbnN0IGNoYXIgKmEgPSAiaGVsbG8g
dGhlcmUgeW91IGJ1Z2d5LWJvbyI7CiBjb25zdCBjaGFyICpiID0gInlvdSI7CiBjb25zdCBjaGFy
ICpwID0gc3Ryc3RyKGEsIGIpOwogcmV0dXJuIDA7Cn0K



More information about the Gcc-prs mailing list