From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31659 invoked by alias); 20 Aug 2002 19:50:16 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 31652 invoked from network); 20 Aug 2002 19:50:15 -0000 Received: from unknown (HELO devserv.devel.redhat.com) (66.187.233.200) by sources.redhat.com with SMTP; 20 Aug 2002 19:50:15 -0000 Received: from localhost (alexl@localhost) by devserv.devel.redhat.com (8.11.6/8.11.0) with ESMTP id g7KJoFY19422 for ; Tue, 20 Aug 2002 15:50:15 -0400 X-Authentication-Warning: devserv.devel.redhat.com: alexl owned process doing -bs Date: Tue, 20 Aug 2002 12:50:00 -0000 From: Alexander Larsson X-X-Sender: alexl@devserv.devel.redhat.com To: gdb@sources.redhat.com Subject: External debug symbols Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="279707962-1909961223-1029873014=:12684" X-SW-Source: 2002-08/txt/msg00236.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --279707962-1909961223-1029873014=:12684 Content-Type: TEXT/PLAIN; charset=US-ASCII Content-length: 2023 Hi I've been experimenting some with removing debug information from binaries and placing it in a separate file, and then having gdb automatically load these if availible. (The goal here is to package debug information in separate packages that can be on-demand downloaded and installed.) I have written a libelf based application that takes an elf file, splits out debug information to a separate file, strips the original file and adds a ".debuglink" section to the stripped file. This section contains the basename of the filename of the debug file and a crc32 checksum of it. I've also written an "unstrip" application that puts together the original ELF file from the stripped one and the debug file (and some extra information I put in a section of the debug file). This produces a bitwise identical file to the original. My next step is to make gdb automatically follow ".debuglink" sections so that i don't have to use the unstrip application. Attached to this mail is a patch that implements a "badhack" which seems to almost work. In order for it to work I had to add all the original section headers to the debug file (but SHT_NOBITS, so they take no space). It seems to work for the main binary, but setting breakpoints in libraries doesn't work. I think it gets the base address wrong or something. What are your opinions about this solution? Has anything like this been done or tought of before? I'm pretty scared of the gdb codebase (looked at it for the first time today), so my solution is probably both buggy and generally wrong, tips of other ways to do this are appreciated. -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a benighted Jewish romance novelist plagued by the memory of his family's brutal murder. She's a time-travelling Bolivian traffic cop with only herself to blame. They fight crime! --279707962-1909961223-1029873014=:12684 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="gdb-5.2.1-separate-debug.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="gdb-5.2.1-separate-debug.patch" Content-length: 3709 ZGlmZiAtdXIgZ2RiLTUuMi4xL2dkYi9vYmpmaWxlcy5jIGdkYi01LjIuMS5z ZXBhcmF0ZV9kZWJ1Z19zeW1ib2xzL2dkYi9vYmpmaWxlcy5jDQotLS0gZ2Ri LTUuMi4xL2dkYi9vYmpmaWxlcy5jCVRodSBEZWMgIDYgMjE6NTk6MTEgMjAw MQ0KKysrIGdkYi01LjIuMS5zZXBhcmF0ZV9kZWJ1Z19zeW1ib2xzL2dkYi9v YmpmaWxlcy5jCVR1ZSBBdWcgMjAgMTU6MzI6MTUgMjAwMg0KQEAgLTM5Nyw2 ICszOTcsMTEgQEANCiB2b2lkDQogZnJlZV9vYmpmaWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkNCiB7DQorICBpZiAob2JqZmlsZS0+c2VwYXJhdGVf ZGVidWdfb2JqZmlsZSkNCisgICAgew0KKyAgICAgIGZyZWVfb2JqZmlsZSAo b2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSk7DQorICAgIH0NCisg IA0KICAgLyogRmlyc3QgZG8gYW55IHN5bWJvbCBmaWxlIHNwZWNpZmljIGFj dGlvbnMgcmVxdWlyZWQgd2hlbiB3ZSBhcmUNCiAgICAgIGZpbmlzaGVkIHdp dGggYSBwYXJ0aWN1bGFyIHN5bWJvbCBmaWxlLiAgTm90ZSB0aGF0IGlmIHRo ZSBvYmpmaWxlDQogICAgICBpcyB1c2luZyByZXVzYWJsZSBzeW1ib2wgaW5m b3JtYXRpb24gKHZpYSBtbWFsbG9jKSB0aGVuIGVhY2ggb2YNCk9ubHkgaW4g Z2RiLTUuMi4xLnNlcGFyYXRlX2RlYnVnX3N5bWJvbHMvZ2RiOiBvYmpmaWxl cy5jfg0KZGlmZiAtdXIgZ2RiLTUuMi4xL2dkYi9vYmpmaWxlcy5oIGdkYi01 LjIuMS5zZXBhcmF0ZV9kZWJ1Z19zeW1ib2xzL2dkYi9vYmpmaWxlcy5oDQot LS0gZ2RiLTUuMi4xL2dkYi9vYmpmaWxlcy5oCVNhdCBKdW4gMjkgMDA6MDU6 NDcgMjAwMg0KKysrIGdkYi01LjIuMS5zZXBhcmF0ZV9kZWJ1Z19zeW1ib2xz L2dkYi9vYmpmaWxlcy5oCVR1ZSBBdWcgMjAgMTU6MTU6NTYgMjAwMg0KQEAg LTQwOSw2ICs0MDksOCBAQA0KICAgICBFeHBvcnRFbnRyeSAqZXhwb3J0X2xp c3Q7DQogICAgIGludCBleHBvcnRfbGlzdF9zaXplOw0KIA0KKyAgICBzdHJ1 Y3Qgb2JqZmlsZSAqc2VwYXJhdGVfZGVidWdfb2JqZmlsZTsNCisgICAgDQog ICAgIC8qIFBsYWNlIHRvIHN0YXNoIHZhcmlvdXMgc3RhdGlzdGljcyBhYm91 dCB0aGlzIG9iamZpbGUgKi8NCiAgICAgICBPQkpTVEFUUzsNCiAgIH07DQpk aWZmIC11ciBnZGItNS4yLjEvZ2RiL3N5bWZpbGUuYyBnZGItNS4yLjEuc2Vw YXJhdGVfZGVidWdfc3ltYm9scy9nZGIvc3ltZmlsZS5jDQotLS0gZ2RiLTUu Mi4xL2dkYi9zeW1maWxlLmMJU2F0IEp1biAyMiAxODo0OTozMyAyMDAyDQor KysgZ2RiLTUuMi4xLnNlcGFyYXRlX2RlYnVnX3N5bWJvbHMvZ2RiL3N5bWZp bGUuYwlUdWUgQXVnIDIwIDE2OjE1OjMzIDIwMDINCkBAIC04MzcsNiArODM3 LDcgQEANCiAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOw0KICAgc3RydWN0 IHBhcnRpYWxfc3ltdGFiICpwc3ltdGFiOw0KICAgYmZkICphYmZkOw0KKyAg YXNlY3Rpb24gKnNlY3QgPSBOVUxMOw0KIA0KICAgLyogT3BlbiBhIGJmZCBm b3IgdGhlIGZpbGUsIGFuZCBnaXZlIHVzZXIgYSBjaGFuY2UgdG8gYnVycCBp ZiB3ZSdkIGJlDQogICAgICBpbnRlcmFjdGl2ZWx5IHdpcGluZyBvdXQgYW55 IGV4aXN0aW5nIHN5bWJvbHMuICAqLw0KQEAgLTkyNiw2ICs5MjcsNDIgQEAN CiAgIGlmICh0YXJnZXRfbmV3X29iamZpbGVfaG9vaykNCiAgICAgdGFyZ2V0 X25ld19vYmpmaWxlX2hvb2sgKG9iamZpbGUpOw0KIA0KKyAgDQorICBzZWN0 ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG9iamZpbGUtPm9iZmQsICIu ZGVidWdsaW5rIik7DQorICBpZiAoc2VjdCkNCisgICAgew0KKyAgICAgIGJm ZF9zaXplX3R5cGUgc2l6ZSA9IGJmZF9zZWN0aW9uX3NpemUgKG9iamZpbGUt Pm9iZmQsIHNlY3QpOw0KKyAgICAgIGNoYXIgKmRlYnVnbGluazsNCisgICAg ICBjaGFyICpkaXI7DQorICAgICAgY2hhciAqZGVidWdmaWxlOw0KKyAgICAg IGNoYXIgKm5hbWVfY29weTsNCisgICAgICBjaGFyICpwOw0KKyAgICAgIA0K KyAgICAgIGRlYnVnbGluayA9IGFsbG9jYSAoc2l6ZSk7DQorICAgICAgYmZk X2dldF9zZWN0aW9uX2NvbnRlbnRzIChvYmpmaWxlLT5vYmZkLCBzZWN0LCBk ZWJ1Z2xpbmssDQorCQkJCShmaWxlX3B0cikwLCAoYmZkX3NpemVfdHlwZSlz aXplKTsNCisNCisgICAgICBkaXIgPSB4c3RyZHVwIChuYW1lKTsNCisgICAg ICBwID0gc3RycmNociAoZGlyLCAnLycpOw0KKyAgICAgIGlmIChwICE9IE5V TEwpDQorCXsNCisJICAqKHArMSkgPSAwOw0KKwkgIA0KKwkgIGRlYnVnZmls ZSA9IGFsbG9jYSAoIHN0cmxlbiAoZGlyKSArIHN0cmxlbiAoZGVidWdsaW5r KSArIDEpOw0KKwkgIHN0cmNweSAoZGVidWdmaWxlLCBkaXIpOw0KKwkgIHN0 cmNhdCAoZGVidWdmaWxlLCBkZWJ1Z2xpbmspOw0KKwl9DQorICAgICAgZWxz ZQ0KKwl7DQorCSAgZGVidWdmaWxlID0gYWxsb2NhICggc3RybGVuIChkZWJ1 Z2xpbmspICsgMSk7DQorCSAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRlYnVnbGlu ayk7DQorCX0NCisgICAgICB4ZnJlZSAoZGlyKTsNCisgICAgICANCisgICAg ICBwcmludGZfZmlsdGVyZWQgKCJsb2FkaW5nIHNlcGFyYXRlIGRlYnVnIGlu Zm8gZnJvbSAnJXMnXG4iLCBkZWJ1Z2ZpbGUpOw0KKyAgICAgIG9iamZpbGUt PnNlcGFyYXRlX2RlYnVnX29iamZpbGUgPSBzeW1ib2xfZmlsZV9hZGQgKGRl YnVnZmlsZSwgZnJvbV90dHksIGFkZHJzLCAwLCBmbGFncyk7DQorICAgIH0N CisgIA0KICAgcmV0dXJuIChvYmpmaWxlKTsNCiB9DQogDQo= --279707962-1909961223-1029873014=:12684--