From nobody Thu Apr 25 08:47:31 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 78.46.105.101 is neither permitted nor denied by domain of seabios.org) client-ip=78.46.105.101; envelope-from=seabios-bounces@seabios.org; helo=coreboot.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 78.46.105.101 is neither permitted nor denied by domain of seabios.org) smtp.mailfrom=seabios-bounces@seabios.org ARC-Seal: i=1; a=rsa-sha256; t=1595601748; cv=none; d=zohomail.com; s=zohoarc; b=niVwz3xd5vMud5PTH/jWTnXJqwteqsr8ZcajwrBLO9JWrtEoh2lMAhRWG1tdSeUxKe+IYjVslUOQbG5UsslxWQX7mQZZ9BIOj/nIuVVYqkG0QSupG0lRgoZKakRxcEziA3XDGJNA3B4FjHxfqG4eVdpMLV4sk9WMV0n2EZzsaDU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1595601748; h=Content-Type:Content-Transfer-Encoding:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Subject:To; bh=uCvAu00k3YvxGNMH/6NFseAFzWEaopA32m5Ep/woHpc=; b=fBKc0Fn0ABw8kraODYes4UUJzUOH6p1Rb5xL7mIzLYd0fpDdHhJMmr7vVcWQt5H2xyXlC6yPm7WNktWSUO6Z+mROIrNNjhKm95/uEXtlQ/DFKoVDi6f5XXqpYnsKcw+zupCtHX8pVKTLAHeMflmImY+ewnykseKcjdTWl+tOD0w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=none (zohomail.com: 78.46.105.101 is neither permitted nor denied by domain of seabios.org) smtp.mailfrom=seabios-bounces@seabios.org Return-Path: Received: from coreboot.org (coreboot.org [78.46.105.101]) by mx.zohomail.com with SMTPS id 1595601748395890.1878547530482; Fri, 24 Jul 2020 07:42:28 -0700 (PDT) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by coreboot.org (Postfix) with ESMTPA id D8FC810C0025; Fri, 24 Jul 2020 14:42:23 +0000 (UTC) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by coreboot.org (Postfix) with ESMTP id 75B7810C001D for ; Fri, 24 Jul 2020 14:42:04 +0000 (UTC) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) for ; Fri, 24 Jul 2020 07:42:04 -0700 (PDT) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by smtp.gmail.com with ESMTPSA id 65sm2005534qkn.103.2020.07.24.07.42.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jul 2020 07:42:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=koconnor.net; s=google; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=loR4XcnXyYXevzQ0imwqjszbvZWkz+kgDN8DYyOKn6o=; b=Tnv8alaXEeIWF1Qja7UZ4Ps8+/8Sj+7cDUmdgWEfMjUKcko6hPIk2fDOn2cHW4Os1a dhpCZA4CmozuBod2FAK1XsQCJyT7Yz6ElSzbTpTIe0xk2THndy4v/iGm+YqTvnEmcR+Q Hyg/dPMCwOvVYx8fcgJSlXSJET6/ekoO5VJ2g= 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=loR4XcnXyYXevzQ0imwqjszbvZWkz+kgDN8DYyOKn6o=; b=iN3FUrIhQ58LCA+3gCLny9gXim+5MB8enspVlmLksDIO76VyDdbsBEXzYZMYl3Nq5T VLS78MvrDGE73YZlYlPf3KkGwIzPKwRZ8ZQcDXv27sJkI05wsfjgqgcchCjfM6L0xn8k NCTf6RNHYt+2xB2N0Tt7NAKRE/z9l99GRYpOux5nSk+dgD75wt91QP6tJ28JVDM8CeSs 3y+i2c84CxAf5UEYNpYEz7tUNl2J6a/aMQ3iPVO7zhSYTu22CPD/c49wFFoCLJuM0cg+ j1XfUIj2IQQ2ix0fgWQuFS6zbjVFodmfc6VKfG790x6Px3UAkqgAkmwo0S4XwzvLZm4f lxMQ== X-Gm-Message-State: AOAM530SiwbcevQ3Ytw79OutHVQnosTFhHReY8kdIUKdiWc7R6kAgZmZ vtYfWsXdSMgyB/u9vf3CkMTgZf2mWTg= X-Google-Smtp-Source: ABdhPJxuPZGYbvu1N7TmENgCivKkTtDh1pN8HMzPSVpBBj8RIIN6Q5gk5ah06X3WrpE6zEqKNFxN4A== X-Received: by 2002:ac8:7ca1:: with SMTP id z1mr9102073qtv.334.1595601722017; Fri, 24 Jul 2020 07:42:02 -0700 (PDT) From: Kevin O'Connor To: seabios@seabios.org Date: Fri, 24 Jul 2020 10:41:56 -0400 Message-Id: <20200724144156.2900701-1-kevin@koconnor.net> MIME-Version: 1.0 X-Spam-Level: *** Message-ID-Hash: JFP7B53PWR47QWO6PIINTINBES4CN3US X-Message-ID-Hash: JFP7B53PWR47QWO6PIINTINBES4CN3US X-MailFrom: kevin@koconnor.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-seabios.seabios.org-0; header-match-seabios.seabios.org-1; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.3.2b1 Precedence: list Subject: [SeaBIOS] [PATCHv2] ldnoexec: Add script to remove ET_EXEC flag from intermediate build objects List-Id: SeaBIOS mailing list Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable Authentication-Results: coreboot.org; auth=pass smtp.auth=mailman@coreboot.org smtp.mailfrom=seabios-bounces@seabios.org X-Spamd-Bar: -- X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Add a script to remove the ET_EXEC flag from the 16bit and "32bit segmented" intermediate objects. This avoids build failures with some linkers that will not allow linking these objects again. Signed-off-by: Kevin O'Connor -- v2: Use python instead of python2 in the script header --- Makefile | 9 +++++---- scripts/ldnoexec.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100755 scripts/ldnoexec.py diff --git a/Makefile b/Makefile index c20be15..3d8943e 100644 --- a/Makefile +++ b/Makefile @@ -127,9 +127,10 @@ $(Q)printf '$(foreach i,$2,#include "$i"\n)' > $3.tmp.c $(Q)$(CC) -I. $1 $(CFLAGSWHOLE) -c $3.tmp.c -o $3 endef =20 -%.strip.o: %.o +%.noexec.o: %.o @echo " Stripping $@" - $(Q)$(STRIP) $< -o $@ + $(Q)$(STRIP) $< -o $<.strip.o + $(Q)$(PYTHON) ./scripts/ldnoexec.py $<.strip.o $@ =20 $(OUT)%.s: %.c @echo " Compiling to assembler $@" @@ -185,9 +186,9 @@ $(OUT)rom32seg.o: $(OUT)code32seg.o $(OUT)romlayout32se= g.lds @echo " Linking $@" $(Q)$(LD) -T $(OUT)romlayout32seg.lds $< -o $@ =20 -$(OUT)rom.o: $(OUT)rom16.strip.o $(OUT)rom32seg.strip.o $(OUT)code32flat.o= $(OUT)romlayout32flat.lds +$(OUT)rom.o: $(OUT)rom16.noexec.o $(OUT)rom32seg.noexec.o $(OUT)code32flat= .o $(OUT)romlayout32flat.lds @echo " Linking $@" - $(Q)$(LD) -N -T $(OUT)romlayout32flat.lds $(OUT)rom16.strip.o $(OUT)rom32= seg.strip.o $(OUT)code32flat.o -o $@ + $(Q)$(LD) -N -T $(OUT)romlayout32flat.lds $(OUT)rom16.noexec.o $(OUT)rom3= 2seg.noexec.o $(OUT)code32flat.o -o $@ =20 $(OUT)bios.bin.prep: $(OUT)rom.o scripts/checkrom.py @echo " Prepping $@" diff --git a/scripts/ldnoexec.py b/scripts/ldnoexec.py new file mode 100755 index 0000000..6d4e14b --- /dev/null +++ b/scripts/ldnoexec.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# Script to remove EXEC flag from an ELF file +# +# Copyright (C) 2020 Kevin O'Connor +# +# This file may be distributed under the terms of the GNU GPLv3 license. +import os, optparse, sys + +FLAG_OFFSET =3D 16 + +def main(): + # Parse command-line arguments + usage =3D "%prog " + opts =3D optparse.OptionParser(usage) + options, args =3D opts.parse_args() + if len(args) !=3D 2: + opts.error("Incorrect number of arguments") + infilename, outfilename =3D args + # Read input + f =3D open(infilename, "rb") + srcdata =3D f.read() + f.close() + # Update + outdata =3D bytearray(srcdata) + outdata[FLAG_OFFSET] =3D 0x01 # change ET_EXEC to ET_REL + # Write output + f =3D open(outfilename, "wb") + f.write(outdata) + f.close() + +if __name__ =3D=3D '__main__': + main() --=20 2.26.2 _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-leave@seabios.org