From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by sourceware.org (Postfix) with ESMTPS id BB0863858C56 for ; Thu, 4 Apr 2024 16:56:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BB0863858C56 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org BB0863858C56 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::62b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712249802; cv=none; b=Ci+60dMPzr3SErPJLIYbG4MVV+e15WaaYhIt1S4VTSxhJe+93P4/G8on4CdAPjI8oEwctn2KQ6ZOsfI3IZd6k4JWV6GQk+DxcE2Y3sfJlKAtM8J9DPqifECA3k6YvIkYQDQlKKahlwf9kznrBJ+ChqaxZyK2CvpXacDCrnqSABM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712249802; c=relaxed/simple; bh=k1vDtJJRA/8sw7SxTp3ZrFIqE9zjRxqEa4tWMV/4hf0=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=EZQBFVow/Z61tXaJjB8i8sm7kaxYQH6MEAV/AJfjpnNkoHh0WcJV3QygqP6UQolpvK3OAuQh+3QEx4CIn5yI/OMSrdz6NlOEBTGlbhirbhjJL5hMZ2/N0mMGUqojc3WZfFXC9/Y0ZvEh5VhLol49kx3L0Um6/2xqkG8PMzU2MP0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-1e2a7b5ef7bso9449825ad.1 for ; Thu, 04 Apr 2024 09:56:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712249799; x=1712854599; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:organization:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=7MRjOClKpuM9iiRNnpaYn4Hx5Dt0foFc2PYaqrGPyYM=; b=PDYHBqQVo7/OByEZHD9CNMLiROUncbo6kvvmqEwhIkbjOoG7e38W/QFFZxeD2NN/wU r81sXEsVJRcJYq0Cly0N5DftNKY7Y/4CwgKAQCJNPxXYoiKLEleMMerXdssgTL9bpNoL amL2ytYK7FC8VAXdjRj62lUSHLf2SRQbXwrBwSvjM8SAMjjvjeo5dK8VsXBC0Uk/15l/ oeV2NdHOLloZ3q7jDdFjLVqpkKNMWIXAJHR+Cc6JllGZ8yhE7il2ZPi7Zw9sRA4ICX7n YfgP7cP3vrHAjUxPWhUjg0qXsurNu80fx+ApdygkqhdnP/WtK7oojzKQfI/vEuCRfHDr dw5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712249799; x=1712854599; h=content-transfer-encoding:in-reply-to:organization:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7MRjOClKpuM9iiRNnpaYn4Hx5Dt0foFc2PYaqrGPyYM=; b=qJ0KeCBqfYImwFmC2ZzxzhUVCpgg5/ZWgPOOSy1U3jQUFqcsr1nOTWwiM068fdnWhE sMN5Ac1kYU2qLHgDBTJL6VvdHg2fb9luOSd1Nl5OrEwRxVM04gEi71iEYpAn6o/NJejl UErlsJc7TDfDtgdgO4abRx3XnLfs+xc1c+v2oOgr4g9u9YpwhWWYlmUpToCOij4x2uae +yTa2hrwZSx1n7CZtPih0+pzt4MRA++l4QuMZNDADlg+5dwmAGebshFLQSXXzWdpC403 JCg/m6sA/Fph7d3nHq5QmPaYCTX87D1UjET/yIzGrTLbR6uKXuCeyLTSw0wfzXymUK9t 3hkg== X-Gm-Message-State: AOJu0YxRsG4G6Tp6/ajWDbiDHy6/1hB2gzUYjRHA7omlyZVmXlsCb60X iZbOS94LKvyZqOIcGpEhhNFu7COP2UiIfiRjTtmy0dy/WN2GBnZyWQsvwKdve/aG6B2BleAzXZ+ k X-Google-Smtp-Source: AGHT+IFi+7ojNdHtD+sgfXswLLADmVVqt1O4Dg6QYGtsu3JXt+SNx+Gqoj/HDK8VR4xaoAvXgsxABQ== X-Received: by 2002:a17:902:c3c5:b0:1e2:307e:8c99 with SMTP id j5-20020a170902c3c500b001e2307e8c99mr2677444plj.50.1712249799609; Thu, 04 Apr 2024 09:56:39 -0700 (PDT) Received: from ?IPV6:2804:1b3:a7c0:3e7e:1da:fede:338:8975? ([2804:1b3:a7c0:3e7e:1da:fede:338:8975]) by smtp.gmail.com with ESMTPSA id g18-20020a170902869200b001e2c1e56f3bsm389371plo.104.2024.04.04.09.56.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Apr 2024 09:56:39 -0700 (PDT) Message-ID: Date: Thu, 4 Apr 2024 13:56:35 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] elf: Don't call fatal_error in _dl_signal_error To: "H.J. Lu" Cc: libc-alpha@sourceware.org References: <20240403123928.165033-1-hjl.tools@gmail.com> Content-Language: en-US From: Adhemerval Zanella Netto Organization: Linaro In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 03/04/24 17:00, H.J. Lu wrote: > On Wed, Apr 3, 2024 at 12:54 PM Adhemerval Zanella Netto > wrote: >> >> >> >> On 03/04/24 09:39, H.J. Lu wrote: >>> Don't call fatal_error in _dl_signal_error since _dl_signal_error should >>> only be called from _dl_catch_exception and get_catch should never return >>> NULL. Otherwise, fatal_error should be called directly instead. >> >> Is this related to BZ#31596 or did you catch it by code review? I think > > Yes, it is related. I noticed by code review. > >> this is required for lazy binding being fatal error on initializer >> functions (elf/dl-open.c:829). > > elf/dl-open.c:829 calls _dl_catch_exception. I think it because lazy binding errors from _dl_lookup_symbol_x calls _dl_exception_create_format/_dl_signal_cexception instead of _dl_signal_error mainly because it can not translate the message at the time. >From _dl_catch_exception comment, it aims to support first argument being NULL so all exceptions are fatal. This change change this assumption, meaning _dl_signal_error can not be called in this way (since now it always expects to return the exception to caller). > >>> --- >>> elf/dl-catch.c | 13 ++++--------- >>> 1 file changed, 4 insertions(+), 9 deletions(-) >>> >>> diff --git a/elf/dl-catch.c b/elf/dl-catch.c >>> index 2109516dba..a023555165 100644 >>> --- a/elf/dl-catch.c >>> +++ b/elf/dl-catch.c >>> @@ -117,16 +117,11 @@ _dl_signal_error (int errcode, const char *objname, const char *occasion, >>> if (! errstring) >>> errstring = N_("DYNAMIC LINKER BUG!!!"); >>> >>> - if (lcatch != NULL) >>> - { >>> - _dl_exception_create (lcatch->exception, objname, errstring); >>> - *lcatch->errcode = errcode; >>> + _dl_exception_create (lcatch->exception, objname, errstring); >>> + *lcatch->errcode = errcode; >>> >>> - /* We do not restore the signal mask because none was saved. */ >>> - __longjmp (lcatch->env[0].__jmpbuf, 1); >>> - } >>> - else >>> - fatal_error (errcode, objname, occasion, errstring); >>> + /* We do not restore the signal mask because none was saved. */ >>> + __longjmp (lcatch->env[0].__jmpbuf, 1); >>> } >>> rtld_hidden_def (_dl_signal_error) >>> > > >