From ohki@gssm.otsuka.tsukuba.ac.jp  Tue Apr  9 22:53:18 2002
Return-Path: <ohki@gssm.otsuka.tsukuba.ac.jp>
Received: from gssm.otsuka.tsukuba.ac.jp (utogwgw.gssm.otsuka.tsukuba.ac.jp [130.158.176.189])
	by hub.freebsd.org (Postfix) with SMTP id 80C7837B405
	for <FreeBSD-gnats-submit@freebsd.org>; Tue,  9 Apr 2002 22:53:16 -0700 (PDT)
Received: (qmail 96504 invoked from network); 10 Apr 2002 05:53:14 -0000
Received: from OneOfLocalMachines (HELO smr01.gssm.otsuka.tsukuba.ac.jp) (10.2.1.2)
  by 10.1.1.1 with SMTP; 10 Apr 2002 05:53:14 -0000
Received: (from ohki@localhost)
	by smr01.gssm.otsuka.tsukuba.ac.jp (8.11.6/8.11.6) id g3A5rEC02288;
	Wed, 10 Apr 2002 14:53:14 +0900 (JST)
	(envelope-from ohki)
Message-Id: <200204100553.g3A5rEC02288@smr01.gssm.otsuka.tsukuba.ac.jp>
Date: Wed, 10 Apr 2002 14:53:14 +0900 (JST)
From: Atsuo Ohki <ohki@gssm.otsuka.tsukuba.ac.jp>
Reply-To: Atsuo Ohki <ohki@gssm.otsuka.tsukuba.ac.jp>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: ldd comand of linux does not work
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         36952
>Category:       kern
>Synopsis:       [patch] [linux] ldd(1) command of linux does not work
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-emulation
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Apr 09 23:00:01 PDT 2002
>Closed-Date:    
>Last-Modified:  Mon Aug 23 22:11:26 UTC 2010
>Originator:     Atsuo Ohki
>Release:        FreeBSD 4.5-RELEASE i386
>Organization:
gssm, University of Tsukuba, Tokyo
>Environment:
System: FreeBSD smr01 4.5-RELEASE FreeBSD 4.5-RELEASE #0: Wed Feb 27 19:18:56 JST 2002 ohki@smr01:/usr/src/sys/compile/gssm i386


>Description:
	ldd command of linux does not work.

>How-To-Repeat:
	/compat/linux/usr/bin/ldd /compat/linux/bin/uname

>Fix:
--- sys/kern/imgact_elf.c-ORIG	Mon Dec 17 03:26:16 2001
+++ sys/kern/imgact_elf.c	Wed Feb 27 18:46:49 2002
@@ -469,10 +469,17 @@
 	const char *interp = NULL;
 	Elf_Brandinfo *brand_info;
 	char *path;
+	int fallback_elf_brand_val = fallback_elf_brand;
 
 	/*
 	 * Do we have a valid ELF header ?
 	 */
+	if (bcmp("Linux ", imgp->proc->p_sysent->sv_name, 6) == 0) {
+		if (elf_check_header(hdr) != 0 ||
+		    (hdr->e_type != ET_EXEC && hdr->e_type != ET_DYN))
+			return -1;
+		fallback_elf_brand_val = ELFOSABI_LINUX;
+	} else
 	if (elf_check_header(hdr) != 0 || hdr->e_type != ET_EXEC)
 		return -1;
 
@@ -616,7 +623,7 @@
 		for (i = 0; i < MAX_BRANDS; i++) {
 			Elf_Brandinfo *bi = elf_brand_list[i];
 
-			if (bi != NULL && fallback_elf_brand == bi->brand) {
+			if (bi != NULL && fallback_elf_brand_val == bi->brand) {
 				brand_info = bi;
 				break;
 			}



>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-emulation 
Responsible-Changed-By: arundel 
Responsible-Changed-When: Mon Aug 23 22:08:22 UTC 2010 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=36952 
>Unformatted:
