[review] Clarify purpose of assert in _dl_lookup_symbol_x

Message ID gerrit.1572549639000.I3384349cef90cfd91862ebc34a4053f0c0a99404@gnutoolchain-gerrit.osci.io
State Superseded
Headers

Commit Message

Simon Marchi (Code Review) Oct. 31, 2019, 7:20 p.m. UTC
  Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/469
......................................................................

Clarify purpose of assert in _dl_lookup_symbol_x

Only one of the currently defined flags is incompatible with versioned
symbol lookups, so it makes sense to check for that flag and not its
complement.

Change-Id: I3384349cef90cfd91862ebc34a4053f0c0a99404
---
M elf/dl-lookup.c
1 file changed, 3 insertions(+), 5 deletions(-)
  

Comments

Simon Marchi (Code Review) Nov. 12, 2019, 12:47 p.m. UTC | #1
Gabriel F. T. Gomes has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/469
......................................................................


Patch Set 1: Code-Review+1

(1 comment)

Hi, Florian,

This cleanup looks good to me.  Thanks.

Reviewed-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>

| --- elf/dl-lookup.c
| +++ elf/dl-lookup.c
| @@ -793,16 +793,14 @@ _dl_lookup_symbol_x (const char *undef_name, struct link_map *undef_map,
|    bump_num_relocations ();
|  
| -  /* No other flag than DL_LOOKUP_ADD_DEPENDENCY or DL_LOOKUP_GSCOPE_LOCK
| -     is allowed if we look up a versioned symbol.  */
| -  assert (version == NULL
| -	  || (flags & ~(DL_LOOKUP_ADD_DEPENDENCY | DL_LOOKUP_GSCOPE_LOCK))
| -	     == 0);
| +  /* DL_LOOKUP_RETURN_NEWEST does not make sense for versioned
| +     lookups.  */
| +  assert (version == NULL || !(flags & DL_LOOKUP_RETURN_NEWEST));

PS1, Line 797:

Checking for the incompatible flag makes more sense, imo, too.

|  
|    size_t i = 0;
|    if (__glibc_unlikely (skip_map != NULL))
|      /* Search the relevant loaded objects for a definition.  */
|      while ((*scope)->r_list[i] != skip_map)
|        ++i;
|  
|    /* Search the relevant loaded objects for a definition.  */
|    for (size_t start = i; *scope != NULL; start = 0, ++scope)
  
Simon Marchi (Code Review) Nov. 12, 2019, 12:52 p.m. UTC | #2
Florian Weimer has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/469
......................................................................


Patch Set 2:

(1 comment)

I've added you to the glibc-maintainers group, so you can give +2 now as well.

(I'm not sure if we can keep up the practice of adding Reviewed-By: lines with Gerrit, because doing so creates a new patch version that needs review.)

| --- elf/dl-lookup.c
| +++ elf/dl-lookup.c
| @@ -793,16 +793,14 @@ _dl_lookup_symbol_x (const char *undef_name, struct link_map *undef_map,
|    bump_num_relocations ();
|  
| -  /* No other flag than DL_LOOKUP_ADD_DEPENDENCY or DL_LOOKUP_GSCOPE_LOCK
| -     is allowed if we look up a versioned symbol.  */
| -  assert (version == NULL
| -	  || (flags & ~(DL_LOOKUP_ADD_DEPENDENCY | DL_LOOKUP_GSCOPE_LOCK))
| -	     == 0);
| +  /* DL_LOOKUP_RETURN_NEWEST does not make sense for versioned
| +     lookups.  */
| +  assert (version == NULL || !(flags & DL_LOOKUP_RETURN_NEWEST));

PS1, Line 797:

Indeed. (You can mark comments as not requiring a reply by marking
them as Resolved.)

|  
|    size_t i = 0;
|    if (__glibc_unlikely (skip_map != NULL))
|      /* Search the relevant loaded objects for a definition.  */
|      while ((*scope)->r_list[i] != skip_map)
|        ++i;
|  
|    /* Search the relevant loaded objects for a definition.  */
|    for (size_t start = i; *scope != NULL; start = 0, ++scope)
  
Simon Marchi (Code Review) Nov. 12, 2019, 5:24 p.m. UTC | #3
Carlos O'Donell has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/469
......................................................................


Patch Set 2:

> Patch Set 2:
> 
> (1 comment)
> 
> I've added you to the glibc-maintainers group, so you can give +2 now as well.
> 
> (I'm not sure if we can keep up the practice of adding Reviewed-By: lines with Gerrit, because doing so creates a new patch version that needs review.)

Reviewed-By: lines are important for my yearly metrics to see how we as a community are growing and who is reviewing and thanking them.

Let me try something.
  
Simon Marchi (Code Review) Nov. 12, 2019, 5:25 p.m. UTC | #4
Carlos O'Donell has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/469
......................................................................


Patch Set 3: Code-Review+2

This looks good to me.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
  
Simon Marchi (Code Review) Nov. 12, 2019, 5:26 p.m. UTC | #5
Carlos O'Donell has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/469
......................................................................


Patch Set 3:

> Patch Set 2:
> 
> > Patch Set 2:
> > 
> > (1 comment)
> > 
> > I've added you to the glibc-maintainers group, so you can give +2 now as well.
> > 
> > (I'm not sure if we can keep up the practice of adding Reviewed-By: lines with Gerrit, because doing so creates a new patch version that needs review.)
> 
> Reviewed-By: lines are important for my yearly metrics to see how we as a community are growing and who is reviewing and thanking them.
> 
> Let me try something.

I have added my Reviewed-by directly into the bug comment, so that if you push and it matches, then it should be fine.
  

Patch

diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index fd44cd4..aaaf437 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -792,11 +792,9 @@ 
 
   bump_num_relocations ();
 
-  /* No other flag than DL_LOOKUP_ADD_DEPENDENCY or DL_LOOKUP_GSCOPE_LOCK
-     is allowed if we look up a versioned symbol.  */
-  assert (version == NULL
-	  || (flags & ~(DL_LOOKUP_ADD_DEPENDENCY | DL_LOOKUP_GSCOPE_LOCK))
-	     == 0);
+  /* DL_LOOKUP_RETURN_NEWEST does not make sense for versioned
+     lookups.  */
+  assert (version == NULL || !(flags & DL_LOOKUP_RETURN_NEWEST));
 
   size_t i = 0;
   if (__glibc_unlikely (skip_map != NULL))