public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: Andreas Schwab <schwab@linux-m68k.org>,
	Adhemerval Zanella via Libc-alpha <libc-alpha@sourceware.org>
Cc: Florian Weimer <fweimer@redhat.com>
Subject: Re: [PATCH v4] elf: Fix DFS sorting algorithm for LD_TRACE_LOADED_OBJECTS with missing libraries (BZ #28868)
Date: Fri, 4 Mar 2022 11:01:21 -0300	[thread overview]
Message-ID: <85c16187-11e4-6723-476f-9933262432cf@linaro.org> (raw)
In-Reply-To: <877d99lwgi.fsf@igel.home>



On 04/03/2022 09:43, Andreas Schwab wrote:
> On Mär 04 2022, Adhemerval Zanella via Libc-alpha wrote:
> 
>> @@ -2725,3 +2735,50 @@ $(objpfx)tst-p_align3: $(objpfx)tst-p_alignmod3.so
>>  $(objpfx)tst-p_align3.out: tst-p_align3.sh $(objpfx)tst-p_align3
>>  	$(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
>>  	$(evaluate-test)
>> +
>> +
>> +# Move the library to a folder so it can be selected by --library-path
>> +define libtracemod-mv
>> +  test -d $(objpfx)libtracemod$(1) || mkdir $(objpfx)libtracemod$(1)
> 
> You can use mkdir -p, which avoids any races.

Ok.

> 
>> +  test -f $(objpfx)libtracemod$(1).so \
>> +	  && mv $(objpfx)libtracemod$(1).so $(objpfx)libtracemod$(1)
> 
> This will result in a non-zero status if $(objpfx)libtracemod$(1).so
> doesn't exist, causing the command to fail.  It's also not race-free.

Right, but since $(objpfx)libtracemod$(1).so is a prerequisite I don't
see how the failure will happen.  How do you suggest to handle it?

> 
>> +define tst-trace-skeleton
>> +$(objpfx)tst-trace$(1).out: $(..)scripts/tst-ld-trace.py \
>> +			    $(objpfx)libtracemod1.so \
>> +			    libtracemod-mv \
>> +			    tst-trace$(1).exp
> 
> The dependency on the phony libtracemod-mv will cause the command to
> always be rerun.
> 

Thinking twice the phony does not seem the best option, I replaced with
a stamp file:

  $(objpfx)libtracemod-mv.stamp: $(objpfx)libtracemod1.so
          $(call libtracemod-mv,2)
          [...]
          touch $@

  $(objpfx)tst-trace$(1).out: $(..)scripts/tst-ld-trace.py \
                               $(objpfx)libtracemod-mv.stamp \
                               tst-trace$(1).exp

However even with this the rule seems to be rerun every time.  Any idea
on how to avoid it?

  reply	other threads:[~2022-03-04 14:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-04 12:02 Adhemerval Zanella
2022-03-04 12:43 ` Andreas Schwab
2022-03-04 14:01   ` Adhemerval Zanella [this message]
2022-03-04 15:24     ` Andreas Schwab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=85c16187-11e4-6723-476f-9933262432cf@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=fweimer@redhat.com \
    --cc=libc-alpha@sourceware.org \
    --cc=schwab@linux-m68k.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).