From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9255 invoked by alias); 4 Oct 2002 13:36:03 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 9226 invoked by uid 71); 4 Oct 2002 13:36:02 -0000 Resent-Date: 4 Oct 2002 13:36:02 -0000 Resent-Message-ID: <20021004133602.9225.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, java-prs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, uweigand@de.ibm.com Received: (qmail 7233 invoked by uid 61); 4 Oct 2002 13:29:16 -0000 Message-Id: <20021004132916.7232.qmail@sources.redhat.com> Date: Fri, 04 Oct 2002 06:36:00 -0000 From: uweigand@de.ibm.com Reply-To: uweigand@de.ibm.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: libgcj/8142: '$' in class names vs. dlopen 'dynamic string tokens' X-SW-Source: 2002-10/txt/msg00150.txt.bz2 List-Id: >Number: 8142 >Category: libgcj >Synopsis: '$' in class names vs. dlopen 'dynamic string tokens' >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: change-request >Submitter-Id: net >Arrival-Date: Fri Oct 04 06:36:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Ulrich Weigand >Release: gcc 3.3 >Organization: >Environment: Linux (glibc 2.x, x >= 1) >Description: libgcj passes class names to dlopen to find shared libraries implementing the class. In particular, in the case of inner classes, this name will contains '$' characters. However, the Linux dlopen implementation interprets '$' to signify a 'dynamic string token' that is subject to replacement. Currently, Linux implements the dynamic string tokens $ORIGIN and $PLATFORM. Thus, if an inner class happens to be named ORIGIN or PLATFORM, dlopen will substitute those strings, and either the intended shared library will not be found, or possibly even an incorrect library will be loaded. Furthermore, there is a bug in glibc 2.2.5 that causes dlopen to go into an endless loop if the path contains a '$' that is not followed by one of the recognized dynamic string tokens. This causes libgcj to hang whenever it tries to load an inner class. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: