|
From: Madhan S. <mad...@gm...> - 2007-11-19 18:19:34
|
Hi,
when my c file is compiled with intel compiler's "-g" option
$ objdump -x prg.o
4 .debug_info 000a517b 00000000 00000000 000398c9 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
5 .debug_line 00004398 00000000 00000000 000dea44 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
6 .debug_abbrev 000004d6 00000000 00000000 000e2ddc 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00001104 00000000 00000000 000e32b2 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
when my c file is compiled with intel compiler's "-debug minimal" option
$ objdump -x prg.o
6 .debug_info 00000000 00000000 00000000 00017e94 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 00002ef0 00000000 00000000 00017e94 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
8 .debug_abbrev 00000000 00000000 00000000 0001ad84 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 000018ec 00000000 00000000 0001ad84 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
With valgrind 3.2.3, line numbers appear with -g option but not with
the -debug minimal. debug_info section is used to pick information
from debug_line. I guess in earlier versions of valgrind this was not
the case.
-debug minimal is useful to reduce my executable size to a very
manageable level. At 1.9G with full debug information, valgrind
fails to mmap the executable to read debug information.
Can a zero size debug_info section be supported
or is there an alternative for making a very big executable work with
valgrind.
(objcopy to make debug link fails with an out-of-memory error)
Thanks,
Madhan.
|
|
From: Madhan S. <mad...@gm...> - 2007-11-20 10:03:18
|
Here are some questions that make my earlier mail a little more usable and understandable. - Is the .debug_info section of DWARF2 necessary for memcheck and other tools The coregrind/m_debuginfo/README.txt says the following about stabs reader >> the type info is only used by Helgrind, which is looking pretty dead at the moment. >> So I have lifed out the type-reader code" - When .debug_info section is omitted by the compiler or removed by other means will .debug_line contents be useful to generate line numbers in the stack traces generated by memcheck Thanks, Madhan. On Nov 19, 2007 11:49 PM, Madhan Sadasivam <mad...@gm...> wrote: > Hi, > > when my c file is compiled with intel compiler's "-g" option > $ objdump -x prg.o > 4 .debug_info 000a517b 00000000 00000000 000398c9 2**0 > CONTENTS, RELOC, READONLY, DEBUGGING > 5 .debug_line 00004398 00000000 00000000 000dea44 2**0 > CONTENTS, RELOC, READONLY, DEBUGGING > 6 .debug_abbrev 000004d6 00000000 00000000 000e2ddc 2**0 > CONTENTS, READONLY, DEBUGGING > 7 .debug_frame 00001104 00000000 00000000 000e32b2 2**0 > CONTENTS, RELOC, READONLY, DEBUGGING > > > when my c file is compiled with intel compiler's "-debug minimal" option > $ objdump -x prg.o > 6 .debug_info 00000000 00000000 00000000 00017e94 2**0 > CONTENTS, READONLY, DEBUGGING > 7 .debug_line 00002ef0 00000000 00000000 00017e94 2**0 > CONTENTS, RELOC, READONLY, DEBUGGING > 8 .debug_abbrev 00000000 00000000 00000000 0001ad84 2**0 > CONTENTS, READONLY, DEBUGGING > 9 .debug_frame 000018ec 00000000 00000000 0001ad84 2**0 > CONTENTS, RELOC, READONLY, DEBUGGING > > > With valgrind 3.2.3, line numbers appear with -g option but not with > the -debug minimal. debug_info section is used to pick information > from debug_line. I guess in earlier versions of valgrind this was not > the case. > > -debug minimal is useful to reduce my executable size to a very > manageable level. At 1.9G with full debug information, valgrind > fails to mmap the executable to read debug information. > > Can a zero size debug_info section be supported > or is there an alternative for making a very big executable work with > valgrind. > (objcopy to make debug link fails with an out-of-memory error) > > Thanks, > Madhan. > |
|
From: Madhan S. <mad...@gm...> - 2007-11-28 06:01:19
Attachments:
readelf.txt
|
LS0tIC4uLy4uLy4uL3ZhbGdyaW5kLTMuMi4zX29yZy9jb3JlZ3JpbmQvbV9kZWJ1Z2luZm8vcmVh ZGR3YXJmLmMJMjAwNy0xMS0xOSAwODoyMjo0NC4wMDAwMDAwMDAgLTA4MDAKKysrIC4vcmVhZGR3 YXJmLmMJMjAwNy0xMS0yMSAxMDo1Mzo0OS4wMDAwMDAwMDAgLTA4MDAKQEAgLTE5Myw2ICsxOTMs OSBAQAogICBJbnQgICBpc19zdG10OwogICBJbnQgICBiYXNpY19ibG9jazsKICAgSW50ICAgZW5k X3NlcXVlbmNlOworICAvKiBUaGlzIHZhcmlhYmxlIGhvbGQgdGhlIG51bWJlciBvZiB0aGUgbGFz dCBlbnRyeSBzZWVuCisgICAgIGluIHRoZSBGaWxlIFRhYmxlLiAgKi8KKyAgVUludCAgbGFzdF9m aWxlX2VudHJ5OwogfSBTTVI7CiAKIApAQCAtMjgyLDYgKzI4NSw3IEBACiAgICBzdGF0ZV9tYWNo aW5lX3JlZ3MuaXNfc3RtdCA9IGlzX3N0bXQ7CiAgICBzdGF0ZV9tYWNoaW5lX3JlZ3MuYmFzaWNf YmxvY2sgPSAwOwogICAgc3RhdGVfbWFjaGluZV9yZWdzLmVuZF9zZXF1ZW5jZSA9IDA7CisgIHN0 YXRlX21hY2hpbmVfcmVncy5sYXN0X2ZpbGVfZW50cnkgPSAwOwogfQogCiAvKiBMb29rIHVwIGEg ZGlyZWN0b3J5IG5hbWUsIG9yIHJldHVybiBOVUxMIGlmIHVua25vd24uICovCkBAIC0xMDExLDYg KzEwMTUsNDMzIEBACiAgICB9CiB9CiAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKiBT dHJ1Y3R1cmUgZm91bmQgaW4gdGhlIC5kZWJ1Z19saW5lIHNlY3Rpb24uICAqLwordHlwZWRlZiBz dHJ1Y3QKK3sKKyAgVUNoYXIgbGlfbGVuZ3RoICAgICAgICAgIFs0XTsKKyAgVUNoYXIgbGlfdmVy c2lvbiAgICAgICAgIFsyXTsKKyAgVUNoYXIgbGlfcHJvbG9ndWVfbGVuZ3RoIFs0XTsKKyAgVUNo YXIgbGlfbWluX2luc25fbGVuZ3RoIFsxXTsKKyAgVUNoYXIgbGlfZGVmYXVsdF9pc19zdG10IFsx XTsKKyAgVUNoYXIgbGlfbGluZV9iYXNlICAgICAgIFsxXTsKKyAgVUNoYXIgbGlfbGluZV9yYW5n ZSAgICAgIFsxXTsKKyAgVUNoYXIgbGlfb3Bjb2RlX2Jhc2UgICAgIFsxXTsKK30KK0RXQVJGMl9F eHRlcm5hbF9MaW5lSW5mbzsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgVUludCAgIGxpX2xlbmd0 aDsKKyAgVVNob3J0IGxpX3ZlcnNpb247CisgIFVJbnQgICBsaV9wcm9sb2d1ZV9sZW5ndGg7Cisg IFVDaGFyICBsaV9taW5faW5zbl9sZW5ndGg7CisgIFVDaGFyICBsaV9kZWZhdWx0X2lzX3N0bXQ7 CisgIEludCAgICBsaV9saW5lX2Jhc2U7CisgIFVDaGFyICBsaV9saW5lX3JhbmdlOworICBVQ2hh ciAgbGlfb3Bjb2RlX2Jhc2U7Cit9IAorRFdBUkYyX0ludGVybmFsX0xpbmVJbmZvOworCisKKy8q IEhhbmRsZWQgYW4gZXh0ZW5kIGxpbmUgb3AuICBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyB0aGUg ZW5kCisgICBvZiBzZXF1ZW5jZS4gIC0gMi40LjEgdmVyc2lvbiovCitzdGF0aWMgCitpbnQgcHJv Y2Vzc19leHRlbmRlZF9saW5lX29wMiggc3RydWN0IF9TZWdJbmZvKiBzaSwgT2ZmVCBkZWJ1Z19v ZmZzZXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXIqKiogZm5hbWVzLCAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhciogZGF0YSwgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW50IGlzX3N0bXQsIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEludCBwb2ludGVyX3NpemUpCit7CisgIFVDaGFyICAgb3BfY29kZTsKKyAgSW50 ICAgICBieXRlc19yZWFkOworICBVSW50ICAgIGxlbjsKKyAgVUNoYXIgKiBuYW1lOworICBBZGRy ICAgIGFkcjsKKworICBsZW4gPSByZWFkX2xlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCAwKTsK KyAgZGF0YSArPSBieXRlc19yZWFkOworCisgIGlmIChsZW4gPT0gMCkKKyAgICB7CisgICAgICBW R18obWVzc2FnZSkoVmdfVXNlck1zZywKKyAgICAgICAgICJiYWRseSBmb3JtZWQgZXh0ZW5kZWQg bGluZSBvcCBlbmNvdW50ZXJlZCFcbiIpOworICAgICAgcmV0dXJuIGJ5dGVzX3JlYWQ7CisgICAg fQorCisgIGxlbiArPSBieXRlc19yZWFkOworICBvcF9jb2RlID0gKiBkYXRhICsrOworCisgIGlm ICgwKSBWR18ocHJpbnRmKSgiZHdhcmYyOiBleHQgT1BDOiAlZFxuIiwgb3BfY29kZSk7CisKKyAg c3dpdGNoIChvcF9jb2RlKQorICAgIHsKKyAgICBjYXNlIERXX0xORV9lbmRfc2VxdWVuY2U6Cisg ICAgICBpZiAoMCkgVkdfKHByaW50ZikoIjEwMDE6IHNpLT5vICVwLCBzbXIuYSAlcFxuIiwgCisg ICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb2Zmc2V0LCBzdGF0ZV9tYWNoaW5lX3JlZ3Mu YWRkcmVzcyApOworICAgICAgc3RhdGVfbWFjaGluZV9yZWdzLmVuZF9zZXF1ZW5jZSA9IDE7IC8q IEpSUzogYWRkZWQgZm9yIGNvbXBsaWFuY2UKKyAgICAgICAgIHdpdGggc3BlYzsgaXMgcG9pbnRs ZXNzIGR1ZSB0byByZXNldF9zdGF0ZV9tYWNoaW5lIGJlbG93IAorICAgICAgKi8KKyAgICAgIGlm IChzdGF0ZV9tYWNoaW5lX3JlZ3MuaXNfc3RtdCkgeworCSBpZiAoc3RhdGVfbWFjaGluZV9yZWdz Lmxhc3RfYWRkcmVzcykKKwkgICAgTUxfKGFkZExpbmVJbmZvKSAoc2ksICgqZm5hbWVzKVtzdGF0 ZV9tYWNoaW5lX3JlZ3MubGFzdF9maWxlXSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLAorCQkJICAgICAgZGVidWdfb2Zmc2V0ICsgc3RhdGVfbWFjaGluZV9yZWdzLmxhc3Rf YWRkcmVzcywgCisJCQkgICAgICBkZWJ1Z19vZmZzZXQgKyBzdGF0ZV9tYWNoaW5lX3JlZ3MuYWRk cmVzcywgCisJCQkgICAgICBzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9saW5lLCAwKTsKKyAgICAg IH0KKyAgICAgIHJlc2V0X3N0YXRlX21hY2hpbmUgKGlzX3N0bXQpOworICAgICAgYnJlYWs7CisK KyAgICBjYXNlIERXX0xORV9zZXRfYWRkcmVzczoKKyAgICAgIC8qIFhYWDogUG9pbnRlciBzaXpl IGNvdWxkIGJlIDggKi8KKyAgICAgIHZnX2Fzc2VydChwb2ludGVyX3NpemUgPT0gNCk7CisgICAg ICBhZHIgPSAqKChBZGRyICopZGF0YSk7CisgICAgICBpZiAoMCkgVkdfKHByaW50ZikoInNtci5h IDo9ICVwXG4iLCBhZHIgKTsKKyAgICAgIHN0YXRlX21hY2hpbmVfcmVncy5hZGRyZXNzID0gYWRy OworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERXX0xORV9kZWZpbmVfZmlsZToKKyAgICAgICsr IHN0YXRlX21hY2hpbmVfcmVncy5sYXN0X2ZpbGVfZW50cnk7CisgICAgICBuYW1lID0gZGF0YTsK KyAgICAgIGlmICgqZm5hbWVzID09IE5VTEwpCisgICAgICAgICpmbmFtZXMgPSBWR18oYXJlbmFf bWFsbG9jKShWR19BUl9TWU1UQUIsIHNpemVvZiAoVUludCkgKiAyKTsKKyAgICAgIGVsc2UKKyAg ICAgICAgKmZuYW1lcyA9IFZHXyhhcmVuYV9yZWFsbG9jKSgKKyAgICAgICAgICAgICAgICAgICAg IFZHX0FSX1NZTVRBQiwgKmZuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgIHNpemVvZihVSW50 KSAKKyAgICAgICAgICAgICAgICAgICAgICAgICogKHN0YXRlX21hY2hpbmVfcmVncy5sYXN0X2Zp bGVfZW50cnkgKyAxKSk7CisgICAgICAoKmZuYW1lcylbc3RhdGVfbWFjaGluZV9yZWdzLmxhc3Rf ZmlsZV9lbnRyeV0gPSBNTF8oYWRkU3RyKSAoc2ksbmFtZSwgLTEpOworICAgICAgZGF0YSArPSBW R18oc3RybGVuKSAoKGNoYXIgKikgZGF0YSkgKyAxOworICAgICAgcmVhZF9sZWIxMjggKGRhdGEs ICYgYnl0ZXNfcmVhZCwgMCk7CisgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CisgICAgICByZWFk X2xlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCAwKTsKKyAgICAgIGRhdGEgKz0gYnl0ZXNfcmVh ZDsKKyAgICAgIHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApOworICAgICAgYnJl YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgICAgfQorCisgIHJldHVybiBsZW47 Cit9CisKKworCisvKiBDb2xsZWN0IHRoZSBkZWJ1ZyBpbmZvIGZyb20gZHdhcmYyIGRlYnVnZ2lu ZyBzZWN0aW9ucworICogb2YgYSBnaXZlbiBtb2R1bGUuCisgKiAKKyAqIElucHV0czogZ2l2ZW4g LmRlYnVnX3h4eCBzZWN0aW9ucworICogT3V0cHV0OiB1cGRhdGUgc2kgdG8gY29udGFpbiBhbGwg dGhlIGR3YXJmMiBkZWJ1ZyBpbmZvcworICovCit2b2lkIE1MXyhyZWFkX2RlYnVnbGluZWluZm9f ZHdhcmYyKSAKKyAgICAgICAgKCBzdHJ1Y3QgX1NlZ0luZm8qIHNpLCBPZmZUIGRlYnVnX29mZnNl dCwKKyAgICAgICAgICBVQ2hhciogZGVidWdpbmZvLCAgIEludCBkZWJ1Z19pbmZvX3N6LCAgLyog LmRlYnVnX2luZm8gKi8KKyAgICAgICAgICBVQ2hhciogZGVidWdhYmJyZXYsICAgICAgICAgICAg ICAgICAgICAgLyogLmRlYnVnX2FiYnJldiAqLworICAgICAgICAgIFVDaGFyKiBkd2FyZjIsIElu dCBkd2FyZjJfc3osICAgICAgICAgICAvKiAuZGVidWdfbGluZSAqLworICAgICAgICAgIFVDaGFy KiBkZWJ1Z3N0ciApICAgICAgICAgICAgICAgICAgICAgICAvKiAuZGVidWdfc3RyICovCit7Cisg IERXQVJGMl9FeHRlcm5hbF9MaW5lSW5mbyAqIGV4dGVybmFsOworICBEV0FSRjJfSW50ZXJuYWxf TGluZUluZm8gICBpbmZvOworICBVQ2hhciAqICAgICAgICAgICAgc3RhbmRhcmRfb3Bjb2RlczsK KyAgVUNoYXIgKiAgICAgICAgICAgIGRhdGEgPSBkd2FyZjI7CisgIFVDaGFyICogICAgICAgICAg ICBlbmQgID0gZHdhcmYyICsgZHdhcmYyX3N6OworICBVQ2hhciAqICAgICAgICAgICAgZW5kX29m X3NlcXVlbmNlOworICBDaGFyICAqKiAgICAgICAgICAgZm5hbWVzID0gTlVMTDsKKworICAvKiBG YWlscyBkdWUgdG8gZ2NjIHBhZGRpbmcgLi4uCisgIHZnX2Fzc2VydChzaXplb2YoRFdBUkYyX0V4 dGVybmFsX0xpbmVJbmZvKQorICAgICAgICAgICAgPT0gc2l6ZW9mKERXQVJGMl9JbnRlcm5hbF9M aW5lSW5mbykpOworICAqLworCisgIHdoaWxlIChkYXRhIDwgZW5kKQorICAgIHsKKyAgICAgIGV4 dGVybmFsID0gKERXQVJGMl9FeHRlcm5hbF9MaW5lSW5mbyAqKSBkYXRhOworCisgICAgICAvKiBD aGVjayB0aGUgbGVuZ3RoIG9mIHRoZSBibG9jay4gICovCisgICAgICBpbmZvLmxpX2xlbmd0aCA9 ICogKChVSW50ICopKGV4dGVybmFsLT5saV9sZW5ndGgpKTsKKworICAgICAgaWYgKGluZm8ubGlf bGVuZ3RoID09IDB4ZmZmZmZmZmYpCisgICAgICAgeworICAgICAgICAgTUxfKHN5bWVycikoIjY0 LWJpdCBEV0FSRiBsaW5lIGluZm8gaXMgbm90IHN1cHBvcnRlZCB5ZXQuIik7CisgICAgICAgICBi cmVhazsKKyAgICAgICB9CisKKyAgICAgIGlmIChpbmZvLmxpX2xlbmd0aCArIHNpemVvZiAoZXh0 ZXJuYWwtPmxpX2xlbmd0aCkgPiBkd2FyZjJfc3opCisgICAgICAgeworICAgICAgICBNTF8oc3lt ZXJyKSgiRFdBUkYgbGluZSBpbmZvIGFwcGVhcnMgdG8gYmUgY29ycnVwdCAiCisgICAgICAgICAg ICAgICAgICAiLSB0aGUgc2VjdGlvbiBpcyB0b28gc21hbGwiKTsKKyAgICAgICAgIHJldHVybjsK KyAgICAgICB9CisKKyAgICAgIC8qIENoZWNrIGl0cyB2ZXJzaW9uIG51bWJlci4gICovCisgICAg ICBpbmZvLmxpX3ZlcnNpb24gPSAqICgoVVNob3J0ICopIChleHRlcm5hbC0+bGlfdmVyc2lvbikp OworICAgICAgaWYgKGluZm8ubGlfdmVyc2lvbiAhPSAyKQorICAgICAgIHsKKyAgICAgICAgIE1M XyhzeW1lcnIpKCJPbmx5IERXQVJGIHZlcnNpb24gMiBsaW5lIGluZm8gIgorICAgICAgICAgICAg ICAgICAgICJpcyBjdXJyZW50bHkgc3VwcG9ydGVkLiIpOworICAgICAgICAgcmV0dXJuOworICAg ICAgIH0KKworICAgICAgaW5mby5saV9wcm9sb2d1ZV9sZW5ndGggPSAqICgoVUludCAqKSAoZXh0 ZXJuYWwtPmxpX3Byb2xvZ3VlX2xlbmd0aCkpOworICAgICAgaW5mby5saV9taW5faW5zbl9sZW5n dGggPSAqICgoVUNoYXIgKikoZXh0ZXJuYWwtPmxpX21pbl9pbnNuX2xlbmd0aCkpOworCisgICAg ICBpbmZvLmxpX2RlZmF1bHRfaXNfc3RtdCA9IFRydWU7IAorICAgICAgICAgLyogV0FTOiA9ICog KChVQ2hhciAqKShleHRlcm5hbC0+bGlfZGVmYXVsdF9pc19zdG10KSk7ICovCisgICAgICAgICAv KiBKb3NlZiBXZWlkZW5kb3JmZXIgKDIwMDIxMDIxKSB3cml0ZXM6CisKKyAgICAgICAgICAgIEl0 IHNlZW1zIHRvIG1lIHRoYXQgdGhlIEludGVsIEZvcnRyYW4gY29tcGlsZXIgZ2VuZXJhdGVzCisg ICAgICAgICAgICBiYWQgRFdBUkYyIGxpbmUgaW5mbyBjb2RlOiBJdCBzZXRzICJpc19zdG10IiBv ZiB0aGUgc3RhdGUKKyAgICAgICAgICAgIG1hY2hpbmUgaW4gdGhlIHRoZSBsaW5lIGluZm8gcmVh ZGVyIHRvIGJlIGFsd2F5cworICAgICAgICAgICAgZmFsc2UuIFRodXMsIHRoZXJlIGlzIG5ldmVy IGEgc3RhdGVtZW50IGJvdW5kYXJ5IGdlbmVyYXRlZAorICAgICAgICAgICAgYW5kIHRoZXJlZm9y ZSBuZXZlciBhIGluc3RydWN0aW9uIHJhbmdlL2xpbmUgbnVtYmVyCisgICAgICAgICAgICBtYXBw aW5nIGdlbmVyYXRlZCBmb3IgdmFsZ3JpbmQuCisKKyAgICAgICAgICAgIFBsZWFzZSBoYXZlIGEg bG9vayBhdCB0aGUgRFdBUkYyIHNwZWNpZmljYXRpb24sIENoLiA2LjIKKyAgICAgICAgICAgICh4 ODYuZGRqLmNvbS9mdHAvbWFudWFscy90b29scy9kd2FyZi5wZGYpLiAgUGVyaGFwcyBJCisgICAg ICAgICAgICB1bmRlcnN0YW5kIHRoaXMgd3JvbmcsIGJ1dCBJIGRvbid0IHRoaW5rIHNvLgorCisg ICAgICAgICAgICBJIGp1c3QgaGFkIGEgbG9vayBhdCB0aGUgR0RCIERXQVJGMiByZWFkZXIuLi4g IFRoZXkKKyAgICAgICAgICAgIGNvbXBsZXRlbHkgaWdub3JlICJpc19zdG10IiB3aGVuIHJlY29y ZGluZyBsaW5lIGluZm8gOy0pCisgICAgICAgICAgICBUaGF0J3MgdGhlIHJlYXNvbiAib2JqZHVt cCAtUyIgd29ya3Mgb24gZmlsZXMgZnJvbSB0aGUgdGhlCisgICAgICAgICAgICBpbnRlbCBmb3J0 cmFuIGNvbXBpbGVyLiAgCisgICAgICAgICAqLworCisKKyAgICAgIC8qIEpSUzogY2hhbmdlZCAo VUludCopIHRvIChVQ2hhciopICovCisgICAgICBpbmZvLmxpX2xpbmVfYmFzZSAgICAgICA9ICog KChVQ2hhciAqKShleHRlcm5hbC0+bGlfbGluZV9iYXNlKSk7CisKKyAgICAgIGluZm8ubGlfbGlu ZV9yYW5nZSAgICAgID0gKiAoKFVDaGFyICopKGV4dGVybmFsLT5saV9saW5lX3JhbmdlKSk7Cisg ICAgICBpbmZvLmxpX29wY29kZV9iYXNlICAgICA9ICogKChVQ2hhciAqKShleHRlcm5hbC0+bGlf b3Bjb2RlX2Jhc2UpKTsgCisKKyAgICAgIGlmICgwKSBWR18ocHJpbnRmKSgiZHdhcmYyOiBsaW5l IGJhc2U6ICVkLCByYW5nZSAlZCwgb3BjIGJhc2U6ICVkXG4iLAorCQkgIGluZm8ubGlfbGluZV9i YXNlLCBpbmZvLmxpX2xpbmVfcmFuZ2UsIGluZm8ubGlfb3Bjb2RlX2Jhc2UpOworCisgICAgICAv KiBTaWduIGV4dGVuZCB0aGUgbGluZSBiYXNlIGZpZWxkLiAgKi8KKyAgICAgIGluZm8ubGlfbGlu ZV9iYXNlIDw8PSAyNDsKKyAgICAgIGluZm8ubGlfbGluZV9iYXNlID4+PSAyNDsKKworICAgICAg ZW5kX29mX3NlcXVlbmNlID0gZGF0YSArIGluZm8ubGlfbGVuZ3RoIAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArIHNpemVvZiAoZXh0ZXJuYWwtPmxpX2xlbmd0aCk7CisKKyAgICAgIHJl c2V0X3N0YXRlX21hY2hpbmUgKGluZm8ubGlfZGVmYXVsdF9pc19zdG10KTsKKworICAgICAgLyog UmVhZCB0aGUgY29udGVudHMgb2YgdGhlIE9wY29kZXMgdGFibGUuICAqLworICAgICAgc3RhbmRh cmRfb3Bjb2RlcyA9IGRhdGEgKyBzaXplb2YgKCogZXh0ZXJuYWwpOworCisgICAgICAvKiBSZWFk IHRoZSBjb250ZW50cyBvZiB0aGUgRGlyZWN0b3J5IHRhYmxlLiAgKi8KKyAgICAgIGRhdGEgPSBz dGFuZGFyZF9vcGNvZGVzICsgaW5mby5saV9vcGNvZGVfYmFzZSAtIDE7CisKKyAgICAgIGlmICgq IGRhdGEgPT0gMCkgCisgICAgICAgeworICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICB7Cisg ICAgICAgICAvKiBXZSBpZ25vcmUgdGhlIGRpcmVjdG9yeSB0YWJsZSwgc2luY2UgZ2NjIGdpdmVz IHRoZSBlbnRpcmUKKyAgICAgICAgICAgIHBhdGggYXMgcGFydCBvZiB0aGUgZmlsZW5hbWUgKi8K KyAgICAgICAgIHdoaWxlICgqIGRhdGEgIT0gMCkKKyAgICAgICAgICAgeworICAgICAgICAgICAg IGRhdGEgKz0gVkdfKHN0cmxlbikgKChjaGFyICopIGRhdGEpICsgMTsKKyAgICAgICAgICAgfQor ICAgICAgIH0KKworICAgICAgLyogU2tpcCB0aGUgTlVMIGF0IHRoZSBlbmQgb2YgdGhlIHRhYmxl LiAgKi8KKyAgICAgIGlmICgqZGF0YSAhPSAwKSB7CisgICAgICAgICBNTF8oc3ltZXJyKSgiY2Fu J3QgZmluZCBOVUwgYXQgZW5kIG9mIERXQVJGMiBkaXJlY3RvcnkgdGFibGUiKTsKKyAgICAgICAg IHJldHVybjsKKyAgICAgIH0KKyAgICAgIGRhdGEgKys7CisKKyAgICAgIC8qIFJlYWQgdGhlIGNv bnRlbnRzIG9mIHRoZSBGaWxlIE5hbWUgdGFibGUuICAqLworICAgICAgaWYgKCogZGF0YSA9PSAw KQorICAgICAgIHsKKyAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgeworICAgICAgICAgd2hp bGUgKCogZGF0YSAhPSAwKQorICAgICAgICAgICB7CisgICAgICAgICAgICAgVUNoYXIgKiBuYW1l OworICAgICAgICAgICAgIEludCBieXRlc19yZWFkOworCisgICAgICAgICAgICAgKysgc3RhdGVf bWFjaGluZV9yZWdzLmxhc3RfZmlsZV9lbnRyeTsKKyAgICAgICAgICAgICBuYW1lID0gZGF0YTsK KyAgICAgICAgICAgICAvKiBTaW5jZSB3ZSBkb24ndCBoYXZlIHJlYWxsb2MgKDAsIC4uLi4pID09 IG1hbGxvYyAoLi4uKQorCQlzZW1hbnRpY3MsIHdlIG5lZWQgdG8gbWFsbG9jIHRoZSBmaXJzdCB0 aW1lLiAqLworCisgICAgICAgICAgICAgaWYgKGZuYW1lcyA9PSBOVUxMKQorICAgICAgICAgICAg ICAgZm5hbWVzID0gVkdfKGFyZW5hX21hbGxvYykoVkdfQVJfU1lNVEFCLCBzaXplb2YgKFVJbnQp ICogMik7CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgZm5hbWVzID0gVkdfKGFy ZW5hX3JlYWxsb2MpKFZHX0FSX1NZTVRBQiwgZm5hbWVzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mKFVJbnQpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAoc3Rh dGVfbWFjaGluZV9yZWdzLmxhc3RfZmlsZV9lbnRyeSArIDEpKTsKKyAgICAgICAgICAgICBkYXRh ICs9IFZHXyhzdHJsZW4pICgoQ2hhciAqKSBkYXRhKSArIDE7CisgICAgICAgICAgICAgZm5hbWVz W3N0YXRlX21hY2hpbmVfcmVncy5sYXN0X2ZpbGVfZW50cnldID0gTUxfKGFkZFN0cikgKHNpLG5h bWUsIC0xKTsKKworICAgICAgICAgICAgIHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQs IDApOworICAgICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKKyAgICAgICAgICAgICByZWFk X2xlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCAwKTsKKyAgICAgICAgICAgICBkYXRhICs9IGJ5 dGVzX3JlYWQ7CisgICAgICAgICAgICAgcmVhZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwg MCk7CisgICAgICAgICAgICAgZGF0YSArPSBieXRlc19yZWFkOworCisgICAgICAgICAgICAgaWYg KDApIFZHXyhwcmludGYpKCJmaWxlICVzXG4iLCAgCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZuYW1lc1tzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9maWxlX2VudHJ5XSk7CisgICAg ICAgICAgIH0KKyAgICAgICB9CisKKyAgICAgIC8qIFNraXAgdGhlIE5VTCBhdCB0aGUgZW5kIG9m IHRoZSB0YWJsZS4gICovCisgICAgICBpZiAoKmRhdGEgIT0gMCkgeworICAgICAgICAgTUxfKHN5 bWVycikoImNhbid0IGZpbmQgTlVMIGF0IGVuZCBvZiBEV0FSRjIgZmlsZSBuYW1lIHRhYmxlIik7 CisgICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgICBkYXRhICsrOworCisgICAgICAvKiBO b3cgZGlzcGxheSB0aGUgc3RhdGVtZW50cy4gICovCisKKyAgICAgIHdoaWxlIChkYXRhIDwgZW5k X29mX3NlcXVlbmNlKQorICAgICAgIHsKKyAgICAgICAgIFVDaGFyIG9wX2NvZGU7CisgICAgICAg ICBJbnQgICAgICAgICAgIGFkdjsKKyAgICAgICAgIEludCAgICAgICAgICAgYnl0ZXNfcmVhZDsK KworICAgICAgICAgb3BfY29kZSA9ICogZGF0YSArKzsKKworCSBpZiAoMCkgVkdfKHByaW50Ziko ImR3YXJmMjogT1BDOiAlZFxuIiwgb3BfY29kZSk7CisKKyAgICAgICAgIGlmIChvcF9jb2RlID49 IGluZm8ubGlfb3Bjb2RlX2Jhc2UpCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICBJbnQgYWR2 QWRkcjsKKyAgICAgICAgICAgICBvcF9jb2RlIC09IGluZm8ubGlfb3Bjb2RlX2Jhc2U7CisgICAg ICAgICAgICAgYWR2ICAgICAgPSAob3BfY29kZSAvIGluZm8ubGlfbGluZV9yYW5nZSkgCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIGluZm8ubGlfbWluX2luc25fbGVuZ3RoOworICAgICAg ICAgICAgIGFkdkFkZHIgPSBhZHY7CisgICAgICAgICAgICAgc3RhdGVfbWFjaGluZV9yZWdzLmFk ZHJlc3MgKz0gYWR2OworICAgICAgICAgICAgIGlmICgwKSBWR18ocHJpbnRmKSgic21yLmEgKz0g JXBcbiIsIGFkdiApOworICAgICAgICAgICAgIGFkdiA9IChvcF9jb2RlICUgaW5mby5saV9saW5l X3JhbmdlKSArIGluZm8ubGlfbGluZV9iYXNlOworICAgICAgICAgICAgIGlmICgwKSBWR18ocHJp bnRmKSgiMTAwMjogc2ktPm8gJXAsIHNtci5hICVwXG4iLCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVidWdfb2Zmc2V0LCBzdGF0ZV9tYWNoaW5lX3JlZ3MuYWRkcmVzcyApOwor ICAgICAgICAgICAgIHN0YXRlX21hY2hpbmVfcmVncy5saW5lICs9IGFkdjsKKworCSAgICAgaWYg KHN0YXRlX21hY2hpbmVfcmVncy5pc19zdG10KSB7CisJCSAvKiBvbmx5IGFkZCBhIHN0YXRlbWVu dCBpZiB0aGVyZSB3YXMgYSBwcmV2aW91cyBib3VuZGFyeSAqLworCQkgaWYgKHN0YXRlX21hY2hp bmVfcmVncy5sYXN0X2FkZHJlc3MpIAorCQkgICAgIE1MXyhhZGRMaW5lSW5mbykgKHNpLCBmbmFt ZXNbc3RhdGVfbWFjaGluZV9yZWdzLmxhc3RfZmlsZV0sIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwKKwkJCQkgICAgICAgZGVidWdfb2Zmc2V0ICsgc3RhdGVf bWFjaGluZV9yZWdzLmxhc3RfYWRkcmVzcywgCisJCQkJICAgICAgIGRlYnVnX29mZnNldCArIHN0 YXRlX21hY2hpbmVfcmVncy5hZGRyZXNzLCAKKwkJCQkgICAgICAgc3RhdGVfbWFjaGluZV9yZWdz Lmxhc3RfbGluZSwgMCk7CisJCSBzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9hZGRyZXNzID0gc3Rh dGVfbWFjaGluZV9yZWdzLmFkZHJlc3M7CisJCSBzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9maWxl ID0gc3RhdGVfbWFjaGluZV9yZWdzLmZpbGU7CisJCSBzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9s aW5lID0gc3RhdGVfbWFjaGluZV9yZWdzLmxpbmU7CisJICAgICB9CisgICAgICAgICAgIH0KKyAg ICAgICAgIGVsc2Ugc3dpdGNoIChvcF9jb2RlKQorICAgICAgICAgICB7CisgICAgICAgICAgIGNh c2UgRFdfTE5TX2V4dGVuZGVkX29wOgorICAgICAgICAgICAgIGRhdGEgKz0gcHJvY2Vzc19leHRl bmRlZF9saW5lX29wMiAoCisgICAgICAgICAgICAgICAgICAgICAgICBzaSwgZGVidWdfb2Zmc2V0 LCAmZm5hbWVzLCBkYXRhLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm8ubGlfZGVmYXVs dF9pc19zdG10LCBzaXplb2YgKEFkZHIpKTsKKyAgICAgICAgICAgICBicmVhazsKKworICAgICAg ICAgICBjYXNlIERXX0xOU19jb3B5OgorICAgICAgICAgICAgIGlmICgwKSBWR18ocHJpbnRmKSgi MTAwMjogc2ktPm8gJXAsIHNtci5hICVwXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGVidWdfb2Zmc2V0LCBzdGF0ZV9tYWNoaW5lX3JlZ3MuYWRkcmVzcyApOworCSAgICAg aWYgKHN0YXRlX21hY2hpbmVfcmVncy5pc19zdG10KSB7CisJCS8qIG9ubHkgYWRkIGEgc3RhdGVt ZW50IGlmIHRoZXJlIHdhcyBhIHByZXZpb3VzIGJvdW5kYXJ5ICovCisJCWlmIChzdGF0ZV9tYWNo aW5lX3JlZ3MubGFzdF9hZGRyZXNzKSAKKwkJICAgICBNTF8oYWRkTGluZUluZm8pIChzaSwgZm5h bWVzW3N0YXRlX21hY2hpbmVfcmVncy5sYXN0X2ZpbGVdLCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsCisJCQkJICAgICAgIGRlYnVnX29mZnNldCArIHN0YXRl X21hY2hpbmVfcmVncy5sYXN0X2FkZHJlc3MsIAorCQkJCSAgICAgICBkZWJ1Z19vZmZzZXQgKyBz dGF0ZV9tYWNoaW5lX3JlZ3MuYWRkcmVzcywKKwkJCQkgICAgICAgc3RhdGVfbWFjaGluZV9yZWdz Lmxhc3RfbGluZSwgMCk7CisJCSBzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9hZGRyZXNzID0gc3Rh dGVfbWFjaGluZV9yZWdzLmFkZHJlc3M7CisJCSBzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9maWxl ID0gc3RhdGVfbWFjaGluZV9yZWdzLmZpbGU7CisJCSBzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9s aW5lID0gc3RhdGVfbWFjaGluZV9yZWdzLmxpbmU7CisJICAgICB9CisgICAgICAgICAgICAgc3Rh dGVfbWFjaGluZV9yZWdzLmJhc2ljX2Jsb2NrID0gMDsgLyogSlJTIGFkZGVkICovCisgICAgICAg ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgY2FzZSBEV19MTlNfYWR2YW5jZV9wYzoKKyAgICAg ICAgICAgICBhZHYgPSBpbmZvLmxpX21pbl9pbnNuX2xlbmd0aCAKKyAgICAgICAgICAgICAgICAg ICAgICAqIHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApOworICAgICAgICAgICAg IGRhdGEgKz0gYnl0ZXNfcmVhZDsKKyAgICAgICAgICAgICBzdGF0ZV9tYWNoaW5lX3JlZ3MuYWRk cmVzcyArPSBhZHY7CisgICAgICAgICAgICAgaWYgKDApIFZHXyhwcmludGYpKCJzbXIuYSArPSAl cFxuIiwgYWR2ICk7CisgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgY2FzZSBEV19M TlNfYWR2YW5jZV9saW5lOgorICAgICAgICAgICAgIGFkdiA9IHJlYWRfbGViMTI4IChkYXRhLCAm IGJ5dGVzX3JlYWQsIDEpOworICAgICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKKyAgICAg ICAgICAgICBzdGF0ZV9tYWNoaW5lX3JlZ3MubGluZSArPSBhZHY7CisgICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgICAgY2FzZSBEV19MTlNfc2V0X2ZpbGU6CisgICAgICAgICAgICAgYWR2 ID0gcmVhZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgMCk7CisgICAgICAgICAgICAgZGF0 YSArPSBieXRlc19yZWFkOworICAgICAgICAgICAgIHN0YXRlX21hY2hpbmVfcmVncy5maWxlID0g YWR2OworICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgIGNhc2UgRFdfTE5TX3NldF9j b2x1bW46CisgICAgICAgICAgICAgYWR2ID0gcmVhZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVh ZCwgMCk7CisgICAgICAgICAgICAgZGF0YSArPSBieXRlc19yZWFkOworICAgICAgICAgICAgIHN0 YXRlX21hY2hpbmVfcmVncy5jb2x1bW4gPSBhZHY7CisgICAgICAgICAgICAgYnJlYWs7CisKKyAg ICAgICAgICAgY2FzZSBEV19MTlNfbmVnYXRlX3N0bXQ6CisgICAgICAgICAgICAgYWR2ID0gc3Rh dGVfbWFjaGluZV9yZWdzLmlzX3N0bXQ7CisgICAgICAgICAgICAgYWR2ID0gISBhZHY7CisgICAg ICAgICAgICAgc3RhdGVfbWFjaGluZV9yZWdzLmlzX3N0bXQgPSBhZHY7CisgICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgICAgY2FzZSBEV19MTlNfc2V0X2Jhc2ljX2Jsb2NrOgorICAgICAg ICAgICAgIHN0YXRlX21hY2hpbmVfcmVncy5iYXNpY19ibG9jayA9IDE7CisgICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgICAgY2FzZSBEV19MTlNfY29uc3RfYWRkX3BjOgorICAgICAgICAg ICAgIGFkdiA9ICgoKDI1NSAtIGluZm8ubGlfb3Bjb2RlX2Jhc2UpIC8gaW5mby5saV9saW5lX3Jh bmdlKQorICAgICAgICAgICAgICAgICAgICAqIGluZm8ubGlfbWluX2luc25fbGVuZ3RoKTsKKyAg ICAgICAgICAgICBzdGF0ZV9tYWNoaW5lX3JlZ3MuYWRkcmVzcyArPSBhZHY7CisgICAgICAgICAg ICAgaWYgKDApIFZHXyhwcmludGYpKCJzbXIuYSArPSAlcFxuIiwgYWR2ICk7CisgICAgICAgICAg ICAgYnJlYWs7CisKKyAgICAgICAgICAgY2FzZSBEV19MTlNfZml4ZWRfYWR2YW5jZV9wYzoKKyAg ICAgICAgICAgICAvKiBYWFg6IE5lZWQgc29tZXRoaW5nIHRvIGdldCAyIGJ5dGVzICovCisgICAg ICAgICAgICAgYWR2ID0gKigoVVNob3J0ICopZGF0YSk7CisgICAgICAgICAgICAgZGF0YSArPSAy OworICAgICAgICAgICAgIHN0YXRlX21hY2hpbmVfcmVncy5hZGRyZXNzICs9IGFkdjsKKyAgICAg ICAgICAgICBpZiAoMCkgVkdfKHByaW50ZikoInNtci5hICs9ICVwXG4iLCBhZHYgKTsKKyAgICAg ICAgICAgICBicmVhazsKKworICAgICAgICAgICBjYXNlIERXX0xOU19zZXRfcHJvbG9ndWVfZW5k OgorICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgIGNhc2UgRFdfTE5TX3NldF9lcGls b2d1ZV9iZWdpbjoKKyAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICBjYXNlIERXX0xO U19zZXRfaXNhOgorICAgICAgICAgICAgIGFkdiA9IHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVz X3JlYWQsIDApOworICAgICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKKyAgICAgICAgICAg ICBicmVhazsKKworICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgIGludCBqOworICAgICAgICAgICAgICAgZm9yIChqID0gc3RhbmRhcmRfb3Bjb2Rlc1tv cF9jb2RlIC0gMV07IGogPiAwIDsgLS1qKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgcmVhZF9sZWIxMjggKGRhdGEsICZieXRlc19yZWFkLCAwKTsKKyAgICAgICAgICAg ICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgIH0KKyAgICAgICB9CisgICAg ICBWR18oYXJlbmFfZnJlZSkoVkdfQVJfU1lNVEFCLCBmbmFtZXMpOworICAgICAgZm5hbWVzID0g TlVMTDsKKyAgICB9Cit9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo= |