From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Subject: [PATCH v6 10/14] dynamic_debug: port to use linker tables Date: Mon, 9 Jan 2017 06:58:28 -0800 Message-ID: <20170109145833.11502-11-mcgrof@kernel.org> References: <20161222023811.21246-1-mcgrof@kernel.org> <20170109145833.11502-1-mcgrof@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170109145833.11502-1-mcgrof@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: gnomes@lxorguk.ukuu.org.uk, linux-ia64@vger.kernel.org, jkosina@suse.cz, benh@kernel.crashing.org, ming.lei@canonical.com, linux@rasmusvillemoes.dk, platform-driver-x86@vger.kernel.org, James.Bottomley@HansenPartnership.com, paul.gortmaker@windriver.com, paulus@samba.org, sparclinux@vger.kernel.org, wangnan0@huawei.com, Michael Matz , Barry Song , mchehab@osg.samsung.com, linux-arch@vger.kernel.org, markus.heiser@darmarit.de, xen-devel@lists.xensource.com, msalter@redhat.com, linux-sh@vger.kernel.org, mpe@ellerman.id.au, joro@8bytes.org, x86@kernel.org, fontana@sharpeleven.org, dsahern@gmail.com, linux-arm-kernel@lists.infradead.org, catalin.marinas@arm.com, dvhart@infradead.org, dwmw2@infradead.org, linux@roeck-us.net, linux-xtensa@linux-xtensa.org, pali.rohar@gmail.com, Mike Frysinger , keescook@chromium.org, arnd@ List-Id: linux-arch.vger.kernel.org VGhpcyByZW1vdmVzIHRoZSBjdXN0b20gdm1saW51eC5sZHMuaCBoYWNrcyBhbmQgdXNlcwp0aGUg Z2VuZXJhbGl6ZWQgc29sdXRpb24gZm9yIC5kYXRhIGVudHJpZXMuCgpUaGVyZSBpcyBtdWNoIG1v cmUgcG90ZW50aWFsIGZvciBmdXJ0aGVyIGZpbmUgdHVuaW5nIGhlcmUKaW4gdGhlIGZ1dHVyZSB0 aG91Z2guIEZvciBpbnN0YW5jZSwgbGlua2VyIHRhYmxlcyBlbmFibGUKYW4gZXh0cmEgcG9zdGZp eCBmb3Igb3JkZXIgbGV2ZWwgYW5ub3RhdGlvbnMsIHRoaXMgY291bGQKZWFzaWx5IGJlIHVzZWQg YXMgdGhlIEtCVUlMRF9NT0ROQU1FIGFuZCB3aXRoIGEgYml0IG9mCmxpbmtlciB0YWJsZSBjaGFu Z2VzIHdlIG1heSBiZSBhYmxlIHRvIGdldCBhIGRpcmVjdCBPKDEpCmNvdW50IG9mIHRoZSBlbnRy aWVzIGZvciB0aGF0IEtCVUlMRF9NT0ROQU1FOiBpdCB3b3VsZApqdXN0IGJlIGEgY291bnQgb24g dGhlIG51bWJlciBvZiBlbnRyaWVzIGZvciB0aGUgZ2l2ZW4Kb3JkZXIgbGV2ZWwuIFRoaXMgc2hv dWxkIGhlbHAgbWFrZSBkeW5hbWljX2RlYnVnX2luaXQoKQpjbGVhbmVyIGFuZCBhbHNvIHJlZHVj ZSB0aGUgYW1vdW50IG9mIHRpbWUgaXQgdGFrZXMgYXQKYm9vdCB0aW1lLiBJbnN0ZWFkIG9mIGl0 ZXJhdGluZyBvdmVyIGVhY2ggcHJpbnQgdW50aWwgd2UKaGF2ZSBhbGwgZm9yIGEgS0JVSUxEX01P RE5BTUUsIHdlJ2QgaW5zdGVhZCBkaXJlY3RseQpvcGVyYXRlIG9uIGVhY2ggS0JVSUxEX01PRE5B TUUgZGlyZWN0bHkuIFdlIGNhbiB3b3JrIG9uCnRoaXMgbGF0ZXIgdG8gbWFrZSB0aGlzIGNoYW5n ZSBlYXNpZXIgdG8gcmV2aWV3LgoKVGVzdGVkIGR5bmFtaWMgZGVidWcgd2l0aCBkeW5kYmcgcXVl cnkgYW5kIGRlYnVnZnMgY29udHJvbAphbmQgaXQgd29ya3MgYXMgZXhwZWN0ZWQsIGZvciBib3Ro IGJ1aWx0LWluIGNvZGUgYW5kIG1vZHVsZXMuCgp2NjogcmVuYW1lIHRhYmxlIG1hY3JvIGFzIHN1 Z2dlc3RlZCBieSBBbmR5IFNoZXZjaGVua28KCnY1OgoKbyBVc2UgLi50YmwgaW5zdGVhZCBvZiAu dGJsIGFzIHN1Z2dlc3RlZCBieSBOaWNob2xhcyBQaWdnaW4uCiAgVGhpcyBpcyB0aGUgdHlwaWNh bCB3YXkgdG8gYXZvaWQgY2xhc2ggd2l0aCBjb21waWxlciBnZW5lcmF0ZWQKICBzZWN0aW9uLgoK byBSZXBsYWNlIHNlY3Rpb24gbWFjcm9zIHdpdGggc2VjdGlvbiBuYW1lcywKICB1c2UgTElOS1RB QkxFX0VNUFRZKCksIExJTktUQUJMRV9TVEFSVCgpCgp2NDogZml4IGNvbXBpbGF0aW9uIG9uIGJs YWNrZmluCnYzOiBhZGRlZCBtb2R1bGFyIHN1cHBvcnQKdjI6IGludHJvZHVjZWQgdGhpcyBwYXRj aCBpbnRvIHRoZSBzZXJpZXMKCkNjOiBCYXJyeSBTb25nIDxiYXJyeS5zb25nQGFuYWxvZy5jb20+ CkNjOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+CkNjOiBTdGV2ZW4gTWlhbyA8 cmVhbG16NkBnbWFpbC5jb20+CkNjOiBNaWNoYWVsIE1hdHogPG1hdHpAc3VzZS5kZT4KQ2M6IEd1 ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KQ2M6IEZlbmdndWFuZyBXdSA8ZmVuZ2d1 YW5nLnd1QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3Jv ZkBrZXJuZWwub3JnPgotLS0KIGluY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaCB8ICA0 IC0tLS0KIGluY2x1ZGUvbGludXgvZHluYW1pY19kZWJ1Zy5oICAgICB8ICA1ICsrKy0tCiBsaWIv ZHluYW1pY19kZWJ1Zy5jICAgICAgICAgICAgICAgfCAxMyArKysrKystLS0tLS0tCiBzY3JpcHRz L21vZHVsZS1jb21tb24ubGRzICAgICAgICAgfCAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDEwIGlu c2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdl bmVyaWMvdm1saW51eC5sZHMuaCBiL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaApp bmRleCA4ODdkODQ0ZjA0MDYuLjM3Yjk5NTM3ZDVhOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20t Z2VuZXJpYy92bWxpbnV4Lmxkcy5oCisrKyBiL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5s ZHMuaApAQCAtMjE2LDEwICsyMTYsNiBAQAogCSooLmRhdGEudW5saWtlbHkpCQkJCQkJXAogCVNU UlVDVF9BTElHTigpOwkJCQkJCQlcCiAJKihfX3RyYWNlcG9pbnRzKQkJCQkJCVwKLQkuID0gQUxJ R04oOCk7CQkJCQkJCVwKLQlWTUxJTlVYX1NZTUJPTChfX3N0YXJ0X19fdmVyYm9zZSkgPSAuOyAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotCUtFRVAoKihfX3ZlcmJvc2UpKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0JVk1MSU5VWF9TWU1CT0woX19z dG9wX19fdmVyYm9zZSkgPSAuOwkJCQlcCiAJTElLRUxZX1BST0ZJTEUoKQkJICAgICAgIAkJCQlc CiAJQlJBTkNIX1BST0ZJTEUoKQkJCQkJCVwKIAlUUkFDRV9QUklOVEtTKCkJCQkJCQkJXApkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9keW5hbWljX2RlYnVnLmggYi9pbmNsdWRlL2xpbnV4L2R5 bmFtaWNfZGVidWcuaAppbmRleCA1NDZkNjgwNTdlM2IuLmE1MjYxOGE3N2IwOSAxMDA2NDQKLS0t IGEvaW5jbHVkZS9saW51eC9keW5hbWljX2RlYnVnLmgKKysrIGIvaW5jbHVkZS9saW51eC9keW5h bWljX2RlYnVnLmgKQEAgLTQsNiArNCw3IEBACiAjaWYgZGVmaW5lZChDQ19IQVZFX0FTTV9HT1RP KSAmJiBkZWZpbmVkKENPTkZJR19KVU1QX0xBQkVMKQogI2luY2x1ZGUgPGxpbnV4L2p1bXBfbGFi ZWwuaD4KICNlbmRpZgorI2luY2x1ZGUgPGxpbnV4L3RhYmxlcy5oPgogCiAvKgogICogQW4gaW5z dGFuY2Ugb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgY3JlYXRlZCBpbiBhIHNwZWNpYWwKQEAgLTUwLDYg KzUxLDcgQEAgaW50IGRkZWJ1Z19hZGRfbW9kdWxlKHN0cnVjdCBfZGRlYnVnICp0YWIsIHVuc2ln bmVkIGludCBuLAogCQkJCWNvbnN0IGNoYXIgKm1vZG5hbWUpOwogCiAjaWYgZGVmaW5lZChDT05G SUdfRFlOQU1JQ19ERUJVRykKK0RFQ0xBUkVfTElOS1RBQkxFKHN0cnVjdCBfZGRlYnVnLCBfX3Zl cmJvc2UpOwogZXh0ZXJuIGludCBkZGVidWdfcmVtb3ZlX21vZHVsZShjb25zdCBjaGFyICptb2Rf bmFtZSk7CiBleHRlcm4gX19wcmludGYoMiwgMykKIHZvaWQgX19keW5hbWljX3ByX2RlYnVnKHN0 cnVjdCBfZGRlYnVnICpkZXNjcmlwdG9yLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CkBAIC03MSw4 ICs3Myw3IEBAIHZvaWQgX19keW5hbWljX25ldGRldl9kYmcoc3RydWN0IF9kZGVidWcgKmRlc2Ny aXB0b3IsCiAJCQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIAogI2RlZmluZSBERUZJTkVfRFlO QU1JQ19ERUJVR19NRVRBREFUQV9LRVkobmFtZSwgZm10LCBrZXksIGluaXQpCVwKLQlzdGF0aWMg c3RydWN0IF9kZGVidWcgIF9fYWxpZ25lZCg4KQkJCVwKLQlfX2F0dHJpYnV0ZV9fKChzZWN0aW9u KCJfX3ZlcmJvc2UiKSkpIG5hbWUgPSB7CQlcCisJc3RhdGljIExJTktUQUJMRShfX3ZlcmJvc2Us IFNFQ1RJT05fT1JERVJfQU5ZKSBuYW1lID0gewlcCiAJCS5tb2RuYW1lID0gS0JVSUxEX01PRE5B TUUsCQkJXAogCQkuZnVuY3Rpb24gPSBfX2Z1bmNfXywJCQkJXAogCQkuZmlsZW5hbWUgPSBfX0ZJ TEVfXywJCQkJXApkaWZmIC0tZ2l0IGEvbGliL2R5bmFtaWNfZGVidWcuYyBiL2xpYi9keW5hbWlj X2RlYnVnLmMKaW5kZXggZGE3OTZlMmRjNGY1Li4yN2EzMzVlM2IxZjMgMTAwNjQ0Ci0tLSBhL2xp Yi9keW5hbWljX2RlYnVnLmMKKysrIGIvbGliL2R5bmFtaWNfZGVidWcuYwpAQCAtMzcsOCArMzcs NyBAQAogI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L25ldGRldmlj ZS5oPgogCi1leHRlcm4gc3RydWN0IF9kZGVidWcgX19zdGFydF9fX3ZlcmJvc2VbXTsKLWV4dGVy biBzdHJ1Y3QgX2RkZWJ1ZyBfX3N0b3BfX192ZXJib3NlW107CitERUZJTkVfTElOS1RBQkxFKHN0 cnVjdCBfZGRlYnVnLCBfX3ZlcmJvc2UpOwogCiBzdHJ1Y3QgZGRlYnVnX3RhYmxlIHsKIAlzdHJ1 Y3QgbGlzdF9oZWFkIGxpbms7CkBAIC05NzgsMTQgKzk3NywxNCBAQCBzdGF0aWMgaW50IF9faW5p dCBkeW5hbWljX2RlYnVnX2luaXQodm9pZCkKIAlpbnQgbiA9IDAsIGVudHJpZXMgPSAwLCBtb2Rj dCA9IDA7CiAJaW50IHZlcmJvc2VfYnl0ZXMgPSAwOwogCi0JaWYgKF9fc3RhcnRfX192ZXJib3Nl ID09IF9fc3RvcF9fX3ZlcmJvc2UpIHsKLQkJcHJfd2FybigiX2RkZWJ1ZyB0YWJsZSBpcyBlbXB0 eSBpbiBhIENPTkZJR19EWU5BTUlDX0RFQlVHIGJ1aWxkXG4iKTsKKwlpZiAoTElOS1RBQkxFX0VN UFRZKF9fdmVyYm9zZSkpIHsKKwkJcHJfd2FybigiZHluYW1pYyBkZWJ1ZyBsaW5rZXIgdGFibGUg ZW1wdHkgb24gQ09ORklHX0RZTkFNSUNfREVCVUcgYnVpbGRcbiIpOwogCQlyZXR1cm4gMTsKIAl9 Ci0JaXRlciA9IF9fc3RhcnRfX192ZXJib3NlOworCWl0ZXIgPSBMSU5LVEFCTEVfU1RBUlQoX192 ZXJib3NlKTsKIAltb2RuYW1lID0gaXRlci0+bW9kbmFtZTsKIAlpdGVyX3N0YXJ0ID0gaXRlcjsK LQlmb3IgKDsgaXRlciA8IF9fc3RvcF9fX3ZlcmJvc2U7IGl0ZXIrKykgeworCWxpbmt0YWJsZV9m b3JfZWFjaChpdGVyLCBfX3ZlcmJvc2UpIHsKIAkJZW50cmllcysrOwogCQl2ZXJib3NlX2J5dGVz ICs9IHN0cmxlbihpdGVyLT5tb2RuYW1lKSArIHN0cmxlbihpdGVyLT5mdW5jdGlvbikKIAkJCSsg c3RybGVuKGl0ZXItPmZpbGVuYW1lKSArIHN0cmxlbihpdGVyLT5mb3JtYXQpOwpAQCAtMTAwOCw3 ICsxMDA3LDcgQEAgc3RhdGljIGludCBfX2luaXQgZHluYW1pY19kZWJ1Z19pbml0KHZvaWQpCiAJ ZGRlYnVnX2luaXRfc3VjY2VzcyA9IDE7CiAJdnByX2luZm8oIiVkIG1vZHVsZXMsICVkIGVudHJp ZXMgYW5kICVkIGJ5dGVzIGluIGRkZWJ1ZyB0YWJsZXMsICVkIGJ5dGVzIGluIChyZWFkb25seSkg dmVyYm9zZSBzZWN0aW9uXG4iLAogCQkgbW9kY3QsIGVudHJpZXMsIChpbnQpKG1vZGN0ICogc2l6 ZW9mKHN0cnVjdCBkZGVidWdfdGFibGUpKSwKLQkJIHZlcmJvc2VfYnl0ZXMgKyAoaW50KShfX3N0 b3BfX192ZXJib3NlIC0gX19zdGFydF9fX3ZlcmJvc2UpKTsKKwkJIHZlcmJvc2VfYnl0ZXMgKyAo aW50KShMSU5LVEFCTEVfU0laRShfX3ZlcmJvc2UpKSk7CiAKIAkvKiBhcHBseSBkZGVidWdfcXVl cnkgYm9vdCBwYXJhbSwgZG9udCB1bmxvYWQgdGFibGVzIG9uIGVyciAqLwogCWlmIChkZGVidWdf c2V0dXBfc3RyaW5nWzBdICE9ICdcMCcpIHsKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbW9kdWxlLWNv bW1vbi5sZHMgYi9zY3JpcHRzL21vZHVsZS1jb21tb24ubGRzCmluZGV4IGRiMGU3MjQ1NTZjNS4u MjU3NTVkNDU4ZjA5IDEwMDY0NAotLS0gYS9zY3JpcHRzL21vZHVsZS1jb21tb24ubGRzCisrKyBi L3NjcmlwdHMvbW9kdWxlLWNvbW1vbi5sZHMKQEAgLTE3LDYgKzE3LDcgQEAgU0VDVElPTlMgewog CV9fa2NyY3RhYl91bnVzZWRfZ3BsCTAgOiB7ICooU09SVChfX19rY3JjdGFiX3VudXNlZF9ncGwr KikpIH0KIAlfX2tjcmN0YWJfZ3BsX2Z1dHVyZQkwIDogeyAqKFNPUlQoX19fa2NyY3RhYl9ncGxf ZnV0dXJlKyopKSB9CiAJX19qdW1wX3RhYmxlCQkwIDogeyAqKFNPUlQoLmRhdGEuLnRibC5fX2p1 bXBfdGFibGUuKikpIH0KKwlfX3ZlcmJvc2UJCTAgOiB7ICooU09SVCguZGF0YS4udGJsLl9fdmVy Ym9zZS4qKSkgfQogCiAJLiA9IEFMSUdOKDgpOwogCS5pbml0X2FycmF5CQkwIDogeyAqKFNPUlQo LmluaXRfYXJyYXkuKikpICooLmluaXRfYXJyYXkpIH0KLS0gCjIuMTEuMAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.kernel.org ([198.145.29.136]:53270 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935466AbdAIO7a (ORCPT ); Mon, 9 Jan 2017 09:59:30 -0500 From: "Luis R. Rodriguez" Subject: [PATCH v6 10/14] dynamic_debug: port to use linker tables Date: Mon, 9 Jan 2017 06:58:28 -0800 Message-ID: <20170109145833.11502-11-mcgrof@kernel.org> In-Reply-To: <20170109145833.11502-1-mcgrof@kernel.org> References: <20161222023811.21246-1-mcgrof@kernel.org> <20170109145833.11502-1-mcgrof@kernel.org> Sender: linux-arch-owner@vger.kernel.org List-ID: To: hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, bp@alien8.de, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel.org, tony.luck@intel.com, akpm@linux-foundation.org, linux-ia64@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, catalin.marinas@arm.com, will.deacon@arm.com, rostedt@goodmis.org, jani.nikula@intel.com, mchehab@osg.samsung.com, markus.heiser@darmarit.de, jolsa@kernel.org, msalter@redhat.com, chris@zankel.net, jcmvbkbc@gmail.com, linux-xtensa@linux-xtensa.org, adrian.hunter@intel.com, dsahern@gmail.com, namhyung@kernel.org, wangnan0@huawei.com, dmitry.torokhov@gmail.com, joro@8bytes.org, paulus@samba.org, mpe@ellerman.id.au, James.Bottomley@HansenPartnership.com, "Luis R. Rodriguez" , Barry Song , Mike Frysinger , Michael Matz , Fengguang Wu Message-ID: <20170109145828.aqQUIiKpQt6ZwXDMl8J9wSnrmu4MlpYZTlNouMSO5sg@z> This removes the custom vmlinux.lds.h hacks and uses the generalized solution for .data entries. There is much more potential for further fine tuning here in the future though. For instance, linker tables enable an extra postfix for order level annotations, this could easily be used as the KBUILD_MODNAME and with a bit of linker table changes we may be able to get a direct O(1) count of the entries for that KBUILD_MODNAME: it would just be a count on the number of entries for the given order level. This should help make dynamic_debug_init() cleaner and also reduce the amount of time it takes at boot time. Instead of iterating over each print until we have all for a KBUILD_MODNAME, we'd instead directly operate on each KBUILD_MODNAME directly. We can work on this later to make this change easier to review. Tested dynamic debug with dyndbg query and debugfs control and it works as expected, for both built-in code and modules. v6: rename table macro as suggested by Andy Shevchenko v5: o Use ..tbl instead of .tbl as suggested by Nicholas Piggin. This is the typical way to avoid clash with compiler generated section. o Replace section macros with section names, use LINKTABLE_EMPTY(), LINKTABLE_START() v4: fix compilation on blackfin v3: added modular support v2: introduced this patch into the series Cc: Barry Song Cc: Mike Frysinger Cc: Steven Miao Cc: Michael Matz Cc: Guenter Roeck Cc: Fengguang Wu Signed-off-by: Luis R. Rodriguez --- include/asm-generic/vmlinux.lds.h | 4 ---- include/linux/dynamic_debug.h | 5 +++-- lib/dynamic_debug.c | 13 ++++++------- scripts/module-common.lds | 1 + 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 887d844f0406..37b99537d5a9 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -216,10 +216,6 @@ *(.data.unlikely) \ STRUCT_ALIGN(); \ *(__tracepoints) \ - . = ALIGN(8); \ - VMLINUX_SYMBOL(__start___verbose) = .; \ - KEEP(*(__verbose)) \ - VMLINUX_SYMBOL(__stop___verbose) = .; \ LIKELY_PROFILE() \ BRANCH_PROFILE() \ TRACE_PRINTKS() \ diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index 546d68057e3b..a52618a77b09 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -4,6 +4,7 @@ #if defined(CC_HAVE_ASM_GOTO) && defined(CONFIG_JUMP_LABEL) #include #endif +#include /* * An instance of this structure is created in a special @@ -50,6 +51,7 @@ int ddebug_add_module(struct _ddebug *tab, unsigned int n, const char *modname); #if defined(CONFIG_DYNAMIC_DEBUG) +DECLARE_LINKTABLE(struct _ddebug, __verbose); extern int ddebug_remove_module(const char *mod_name); extern __printf(2, 3) void __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...); @@ -71,8 +73,7 @@ void __dynamic_netdev_dbg(struct _ddebug *descriptor, const char *fmt, ...); #define DEFINE_DYNAMIC_DEBUG_METADATA_KEY(name, fmt, key, init) \ - static struct _ddebug __aligned(8) \ - __attribute__((section("__verbose"))) name = { \ + static LINKTABLE(__verbose, SECTION_ORDER_ANY) name = { \ .modname = KBUILD_MODNAME, \ .function = __func__, \ .filename = __FILE__, \ diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index da796e2dc4f5..27a335e3b1f3 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -37,8 +37,7 @@ #include #include -extern struct _ddebug __start___verbose[]; -extern struct _ddebug __stop___verbose[]; +DEFINE_LINKTABLE(struct _ddebug, __verbose); struct ddebug_table { struct list_head link; @@ -978,14 +977,14 @@ static int __init dynamic_debug_init(void) int n = 0, entries = 0, modct = 0; int verbose_bytes = 0; - if (__start___verbose == __stop___verbose) { - pr_warn("_ddebug table is empty in a CONFIG_DYNAMIC_DEBUG build\n"); + if (LINKTABLE_EMPTY(__verbose)) { + pr_warn("dynamic debug linker table empty on CONFIG_DYNAMIC_DEBUG build\n"); return 1; } - iter = __start___verbose; + iter = LINKTABLE_START(__verbose); modname = iter->modname; iter_start = iter; - for (; iter < __stop___verbose; iter++) { + linktable_for_each(iter, __verbose) { entries++; verbose_bytes += strlen(iter->modname) + strlen(iter->function) + strlen(iter->filename) + strlen(iter->format); @@ -1008,7 +1007,7 @@ static int __init dynamic_debug_init(void) ddebug_init_success = 1; vpr_info("%d modules, %d entries and %d bytes in ddebug tables, %d bytes in (readonly) verbose section\n", modct, entries, (int)(modct * sizeof(struct ddebug_table)), - verbose_bytes + (int)(__stop___verbose - __start___verbose)); + verbose_bytes + (int)(LINKTABLE_SIZE(__verbose))); /* apply ddebug_query boot param, dont unload tables on err */ if (ddebug_setup_string[0] != '\0') { diff --git a/scripts/module-common.lds b/scripts/module-common.lds index db0e724556c5..25755d458f09 100644 --- a/scripts/module-common.lds +++ b/scripts/module-common.lds @@ -17,6 +17,7 @@ SECTIONS { __kcrctab_unused_gpl 0 : { *(SORT(___kcrctab_unused_gpl+*)) } __kcrctab_gpl_future 0 : { *(SORT(___kcrctab_gpl_future+*)) } __jump_table 0 : { *(SORT(.data..tbl.__jump_table.*)) } + __verbose 0 : { *(SORT(.data..tbl.__verbose.*)) } . = ALIGN(8); .init_array 0 : { *(SORT(.init_array.*)) *(.init_array) } -- 2.11.0