From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andy Wingo Newsgroups: gmane.lisp.guile.devel Subject: [PATCH 3/6] elf: add accessors for header members that might need relocation Date: Sat, 18 May 2013 17:05:37 +0200 Message-ID: <1368889540-27139-4-git-send-email-wingo@pobox.com> References: <1368889540-27139-1-git-send-email-wingo@pobox.com> NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1368890697 24628 80.91.229.3 (18 May 2013 15:24:57 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 18 May 2013 15:24:57 +0000 (UTC) Cc: Andy Wingo To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sat May 18 17:24:54 2013 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Udj01-00075f-L4 for guile-devel@m.gmane.org; Sat, 18 May 2013 17:24:45 +0200 Original-Received: from localhost ([::1]:56584 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Udj01-00051l-7D for guile-devel@m.gmane.org; Sat, 18 May 2013 11:24:45 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:43121) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Udizv-00050g-Eu for guile-devel@gnu.org; Sat, 18 May 2013 11:24:40 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Udizu-0003Ep-4H for guile-devel@gnu.org; Sat, 18 May 2013 11:24:39 -0400 Original-Received: from a-pb-sasl-quonix.pobox.com ([208.72.237.25]:64986 helo=sasl.smtp.pobox.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Udizt-0003Ek-VW for guile-devel@gnu.org; Sat, 18 May 2013 11:24:37 -0400 Original-Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id C3BADABC8; Sat, 18 May 2013 11:24:37 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:date:message-id:in-reply-to:references; s=sasl; bh=yV65 d0Bk+DAx3uPh5nDunczwZs0=; b=QdKqVFO2kQ/Pfn6UbU/LUAIJvXUz18nsYfi8 J7eKkMK5VHZiBHD42/w7YtGNVyWQJ03pNbLFebucr2Hj3dmlOBXkV4o+gJnTOmYM l63rxZs1o4OiaeOJHxMStjVgw9QCLNRI7lqeYzhkbtNVmbk03buJCrDAombnOTCp yWxINa0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:date:message-id:in-reply-to:references; q=dns; s=sasl; b= lPpYBzLegxZW8De6A3zoqV4dMTe1MMon+ibjN4UVd3uP9DmSXtq+6W3XPJ7uiV/f B/KYUA7XulClRxjBxe86fNzmT9ubREoFRnIq/H+snnaiNnKnwlLIkmoIEVy5pWCf fDMK4N4JndzhqoL58DIn6+JLO50sBSM/KbHrBnlh+9c= Original-Received: from a-pb-sasl-quonix.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id B28A7ABC7; Sat, 18 May 2013 11:24:37 -0400 (EDT) Original-Received: from badger (unknown [88.160.190.192]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTPSA id AA1CEABC6; Sat, 18 May 2013 11:24:36 -0400 (EDT) X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1368889540-27139-1-git-send-email-wingo@pobox.com> X-Pobox-Relay-ID: 0CCA0B5A-BFCF-11E2-968E-9F710E5B5709-02397024!a-pb-sasl-quonix.pobox.com X-detected-operating-system: by eggs.gnu.org: Solaris 10 X-Received-From: 208.72.237.25 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:16379 Archived-At: * module/system/vm/elf.scm (elf-header-shoff-offset) (elf-section-header-addr-offset, elf-section-header-offset-offset): New accessors. --- module/system/vm/elf.scm | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/module/system/vm/elf.scm b/module/system/vm/elf.scm index efa9782..b59970c 100644 --- a/module/system/vm/elf.scm +++ b/module/system/vm/elf.scm @@ -47,7 +47,8 @@ elf-entry elf-phoff elf-shoff elf-flags elf-ehsize elf-phentsize elf-phnum elf-shentsize elf-shnum elf-shstrndx - elf-header-len write-elf-header + elf-header-len elf-header-shoff-offset + write-elf-header (make-elf-segment* . make-elf-segment) elf-segment? @@ -72,7 +73,9 @@ elf-section-link elf-section-info elf-section-addralign elf-section-entsize - elf-section-header-len write-elf-section-header + elf-section-header-len elf-section-header-addr-offset + elf-section-header-offset-offset + write-elf-section-header make-elf-symbol elf-symbol? elf-symbol-name elf-symbol-value elf-symbol-size @@ -149,6 +152,11 @@ ((4) elf32-header-len) ((8) elf64-header-len) (else (error "invalid word size" word-size)))) +(define (elf-header-shoff-offset word-size) + (case word-size + ((4) 32) + ((8) 40) + (else (error "bad word size" word-size)))) (define ELFCLASS32 1) ; 32-bit objects (define ELFCLASS64 2) ; 64-bit objects @@ -621,6 +629,18 @@ ((8) 64) (else (error "bad word size" word-size)))) +(define (elf-section-header-addr-offset word-size) + (case word-size + ((4) 12) + ((8) 16) + (else (error "bad word size" word-size)))) + +(define (elf-section-header-offset-offset word-size) + (case word-size + ((4) 16) + ((8) 24) + (else (error "bad word size" word-size)))) + (define (parse-elf64-section-header index bv offset byte-order) (if (<= (+ offset 64) (bytevector-length bv)) (make-elf-section index -- 1.7.10.4