<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 2/27/2014 4:45 PM, Nick Kledzik
      wrote:<br>
    </div>
    <blockquote
      cite="mid:A33F7C17-3777-4189-B339-4F92202792CA@apple.com"
      type="cite">
      <pre wrap="">
On Feb 27, 2014, at 2:31 PM, Michael Spencer <a class="moz-txt-link-rfc2396E" href="mailto:bigcheesegs@gmail.com"><bigcheesegs@gmail.com></a> wrote:

</pre>
      <blockquote type="cite">
        <pre wrap="">On Thu, Feb 27, 2014 at 2:14 PM, Rafael Espíndola
<a class="moz-txt-link-rfc2396E" href="mailto:rafael.espindola@gmail.com"><rafael.espindola@gmail.com></a> wrote:
</pre>
        <blockquote type="cite">
          <blockquote type="cite">
            <pre wrap="">It appears that the linker needs to deal with two namespaces, and think its
best to consider the group signature separately from the other atoms. We
could have an additional map in the Resolver that would just handle
resolution for groups ?
</pre>
          </blockquote>
          <pre wrap="">
It is probably a good idea. The part of the linker deciding to load or
not a group only needs to checks those symbols. The rest of the linker
never needs to check those symbols. Cases like the simple inline c++
function would just happen to be in both tables.

Cheers,
Rafael
</pre>
        </blockquote>
        <pre wrap="">
>From what I understand, there is nothing special about signature
symbols. They are just a way to give a name to a group and participate
in linking as normal.

Are you saying that we have a separate table that represents groups in
addition to leaving all the symbols in the normal symbol table?
</pre>
      </blockquote>
    </blockquote>
    Yes, lets have a separate group table from the symbol table. <br>
    <br>
    I think we need two special signature atom types <br>
    <br>
    a) typeGroup<br>
    b) typeGroupComdat<br>
    <br>
    These atoms would be inserted into a separate group table as part of
    symbol resolution.<br>
    <br>
    The signatureAtoms would list all the members, that the group will
    contain, like how Nick mentioned earlier. <br>
    <br>
    <div><font size="1" face="Monaco">defined-atoms:<br>
          - name:            g1<br>
            scope:           global<br>
            type:            typeGroup/typeGroupComdat<br>
            references:<br>
              - kind:            group-child<br>
                target:          f1<br>
              - kind:            group-</font><span style="font-family:
        Monaco; font-size: x-small;">child</span><font size="1"
        face="Monaco"><br>
      </font>
      <div text="#000000" bgcolor="#FFFFFF">
        <div class="moz-cite-prefix"><font size="1" face="Monaco">     
              target:          f2 <br>
          </font></div>
      </div>
    </div>
    <div>
      <div><font size="1" face="Monaco">      - kind:            group-</font><span
          style="font-family: Monaco; font-size: x-small;">child</span><font
          size="1" face="Monaco"><br>
        </font>
        <div text="#000000" bgcolor="#FFFFFF">
          <div class="moz-cite-prefix"><font size="1" face="Monaco">   
                  target:          d1 <br>
            </font></div>
          <div><font size="1" face="Monaco">  - name:            f1<br>
                  scope:           global<br>
                  type:            typeCode<br>
            </font></div>
        </div>
      </div>
    </div>
    <div><font size="1" face="Monaco">    references:<br>
              - kind:            group-parent<br>
                target:          g1<br>
      </font></div>
    <div>
      <div>
        <div text="#000000" bgcolor="#FFFFFF"><font size="1"
            face="Monaco">  - name:            f2<br>
                scope:           global<br>
                type:            typeCode<br>
          </font></div>
      </div>
      <div><font size="1" face="Monaco">    references:<br>
                - kind:            group-</font><span
          style="font-family: Monaco; font-size: x-small;">parent</span><font
          size="1" face="Monaco"><br>
                  target:          g1<br>
        </font></div>
    </div>
    <div>
      <div>
        <div>
          <div text="#000000" bgcolor="#FFFFFF"><font size="1"
              face="Monaco">  - name:            d1<br>
                  scope:           global<br>
                  type:            typeData<br>
            </font></div>
        </div>
        <div><font size="1" face="Monaco">    references:<br>
                  - kind:            group-</font><span
            style="font-family: Monaco; font-size: x-small;">parent</span><font
            size="1" face="Monaco"><br>
                    target:          g1<br>
          </font></div>
      </div>
    </div>
    <div>
      <div>
        <div>
          <div text="#000000" bgcolor="#FFFFFF"><font size="1"
              face="Monaco">  - name:            f3<br>
                  scope:           global<br>
                  type:            typeCode</font></div>
        </div>
        <div><br>
        </div>
      </div>
    </div>
    <br>
    Atoms within the signature group table will be iterated to make sure
    groups contain the same group members by name. If they are not,
    depending on the configuration, the new group will be ignored or an
    error would be thrown.<br>
    <br>
    What do you think ?<br>
    <br>
    Thanks<br>
    <br>
    Shankar Easwaran<br>
    <pre class="moz-signature" cols="72">-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation</pre>
  </body>
</html>