From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by sourceware.org (Postfix) with ESMTPS id 79160395340C for ; Tue, 10 Mar 2020 00:12:28 +0000 (GMT) Received: by mail-pf1-x442.google.com with SMTP id 2so5580321pfg.12 for ; Mon, 09 Mar 2020 17:12:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=52KmjzIcc8WvcKfRYfe2hXG37liQEfb13RuGpJx0KkI=; b=tHIxzIFQShfGNT0O/43yMj1sPz6ydUpXjlYbiRlg9qo2davLY5RXa910xdGWFTf/oc OyuCQE+NYWi8OWbejO2QEtDFfQRp5hwg0X9cFZr/BfIVcKzWCkBuq73sM06Ac1psw2yi BUdLQC/2Jxu0AqemqYmzhADBkDAl3tninVZQiJtaVAkYrA0e/TOwSh2Q4/TtDZpJRtnM bqzlwod91RTaDhWTPcul6Vg5c3tcE720q7u6cyx0ljYsNzEt41jmLNNT5ZrUZNZl7HAj mXTLi15vVr09qyiDFdmr2IaB6IpHDgson+kKIWNFKOGsTPmiByzcc9xPbHFf9/r4ngUs koDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=52KmjzIcc8WvcKfRYfe2hXG37liQEfb13RuGpJx0KkI=; b=C+FgjerLNv7uPsL4Q0yfZCFLi5s0DwDPkio4N+x+pK0+hM0tdZpbgCjxHrLCxpni+b YRIeJQFXb3FEAIVxaRn0LnYQb9mqfctHgYYmR/swmaOgoxTpoH92zb28nVAC0Q2yT3CZ XK6u2lGHa68U3As9wwwwxPsIuLCCQr8aP7bVGJG8pDJDm9+fQ4QSDYzPOBqhiOJzzz6h PfNssTxQQxBCoitvA+591L0VvTigGuvFNlp1xCTx4vY6MpDMIfT+Wm9sAT0qdfZ+0jH+ E9dPCInYvicHcE62akF/SXbhzKG+wIbHUaXHLVLdYUzMM21DKy/8gKjgrW1RKMkavXki Q3TA== X-Gm-Message-State: ANhLgQ3v8thxxY1cztKsm/LP3J/xZAYIbYmpZ6IRb2nEh6Uk1xAY/3rH xCc+2n+E7p0TKUFtN9xjFLxTmENM X-Google-Smtp-Source: ADFU+vsX7DqkTfXffGsoFMQ9p96NLes4wYPmnnqpiFlCKnTvysLD9z2VJzWQhrRIcJLdjyHtCPIl2w== X-Received: by 2002:a63:d244:: with SMTP id t4mr18209431pgi.241.1583799146972; Mon, 09 Mar 2020 17:12:26 -0700 (PDT) Received: from gnu-cfl-2.localdomain (c-73-93-86-59.hsd1.ca.comcast.net. [73.93.86.59]) by smtp.gmail.com with ESMTPSA id h2sm628721pjc.7.2020.03.09.17.12.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Mar 2020 17:12:26 -0700 (PDT) Received: from gnu-cfl-2.hsd1.ca.comcast.net (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id CC061C0117 for ; Mon, 9 Mar 2020 17:12:24 -0700 (PDT) From: "H.J. Lu" To: binutils@sourceware.org Subject: [PATCH 0/7] ELF: Omit section header on ELF objects Date: Mon, 9 Mar 2020 17:12:16 -0700 Message-Id: <20200310001224.131714-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Mar 2020 00:12:29 -0000 Section header isn't mandatory on ELF executable nor shared library. This patch adds a new linker option, -z nosectionheader, to omit ELF section header when building an executable or shared library, an objcopy and strip option, --remove-section-header, to remove ELF section header from an executable or shared library. When there is no section header in an executable or shared library, we reconstruct dynamic symbol table from the PT_DYNAMIC segment, which contains DT_HASH/DT_GNU_HASH/DT_MIPS_XHASH, DT_STRTAB, DT_SYMTAB, DT_STRSZ and DT_SYMENT entries, to improve nm and objdump. H.J. Lu (5): bfd: Improve nm and objdump without section header readelf: Compute dynamic symbol table size from hash table binutils: Add --remove-section-header tests ld: Add tests for -z nosectionheader and --remove-section-header ld: Add -z nosectionheader test to bootstrap.exp Kaylee Blake (2): ELF: Omit section header in ELF objects ld: Add a simple test for -z nosectionheader bfd/bfd-in2.h | 8 +- bfd/bfd.c | 8 +- bfd/elf-bfd.h | 10 + bfd/elf.c | 497 ++++++++++++++++++ bfd/elfcode.h | 83 ++- bfd/elflink.c | 12 + bfd/elfxx-target.h | 6 +- binutils/NEWS | 3 + binutils/doc/binutils.texi | 12 + binutils/objcopy.c | 54 +- binutils/readelf.c | 226 ++++---- binutils/testsuite/binutils-all/objcopy.exp | 13 + .../testsuite/binutils-all/remove-header-1.d | 8 + ld/NEWS | 3 + ld/emultempl/elf.em | 4 + ld/ld.h | 3 + ld/ld.texi | 6 + ld/ldlang.c | 4 + ld/lexsup.c | 12 + ld/testsuite/ld-bootstrap/bootstrap.exp | 10 +- ld/testsuite/ld-elf/hash.d | 8 +- ld/testsuite/ld-elf/no-section-header.exp | 374 +++++++++++++ ld/testsuite/ld-elf/nosectionheader.d | 12 + ld/testsuite/ld-elf/pr13195.d | 2 +- ld/testsuite/ld-elf/pr25617-1-no-sec-hdr.nd | 3 + ld/testsuite/ld-elf/pr25617-1-no-sec-hdr.rd | 20 + .../ld-elf/pr25617-1-static-no-sec-hdr.rd | 12 + ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.nd | 3 + ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.rd | 20 + ld/testsuite/ld-elf/pr25617-1a-sec-hdr.rd | 19 + ld/testsuite/ld-elf/pr25617-1a.c | 11 + ld/testsuite/ld-elf/pr25617-1b.c | 15 + ld/testsuite/ld-elf/start-noheader.rd | 11 + .../ld-elf/start-shared-noheader-gnu.rd | 22 + .../ld-elf/start-shared-noheader-sysv.rd | 22 + ld/testsuite/ld-elf/start-shared-noheader.nd | 5 + ld/testsuite/ld-elfvsb/hidden2.d | 2 +- ld/testsuite/ld-mips-elf/hash2.d | 8 +- 38 files changed, 1406 insertions(+), 145 deletions(-) create mode 100644 binutils/testsuite/binutils-all/remove-header-1.d create mode 100644 ld/testsuite/ld-elf/no-section-header.exp create mode 100644 ld/testsuite/ld-elf/nosectionheader.d create mode 100644 ld/testsuite/ld-elf/pr25617-1-no-sec-hdr.nd create mode 100644 ld/testsuite/ld-elf/pr25617-1-no-sec-hdr.rd create mode 100644 ld/testsuite/ld-elf/pr25617-1-static-no-sec-hdr.rd create mode 100644 ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.nd create mode 100644 ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.rd create mode 100644 ld/testsuite/ld-elf/pr25617-1a-sec-hdr.rd create mode 100644 ld/testsuite/ld-elf/pr25617-1a.c create mode 100644 ld/testsuite/ld-elf/pr25617-1b.c create mode 100644 ld/testsuite/ld-elf/start-noheader.rd create mode 100644 ld/testsuite/ld-elf/start-shared-noheader-gnu.rd create mode 100644 ld/testsuite/ld-elf/start-shared-noheader-sysv.rd create mode 100644 ld/testsuite/ld-elf/start-shared-noheader.nd -- 2.24.1