Properly convert address load of __start_XXX/__stop_XXX
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 26 Oct 2015 13:10:23 +0000 (06:10 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 26 Oct 2015 15:11:55 +0000 (08:11 -0700)
Since __start_XXX and __stop_XXX symbols aren't defined when address
load is being converted, we need to check if there is an XXX output
section to get their section and value.  This patch adds a new function,
bfd_link_get_defined_symbol, to search for the XXX output section to
check if __start_XXX and __stop_XXX symbols are defined.

bfd/

PR ld/19171
* elf32-i386.c (elf_i386_convert_load): Call
bfd_link_get_defined_symbol to check if a symbol is defined.
* elf64-x86-64.c (elf_x86_64_convert_load): Call
bfd_link_get_defined_symbol to get defined symbol section and
value.
* linker.c (bfd_link_get_defined_symbol): New function.
* bfd-in2.h: Regenerated.

ld/testsuite/

PR ld/19171
* ld-i386/lea1.s: Add tests for address load of __start_XXX
and __stop_XXX.
* ld-i386/mov1.s: Likewise.
* ld-x86-64/lea1.s: Likewise.
* ld-x86-64/mov1.s: Likewise.
* ld-i386/lea1a.d: Updated.
* ld-i386/lea1b.d: Likewise.
* ld-i386/lea1c.d: Likewise.
* ld-i386/mov1a.d: Likewise.
* ld-i386/mov1b.d: Likewise.
* ld-x86-64/lea1a.d: Likewise.
* ld-x86-64/lea1b.d: Likewise.
* ld-x86-64/lea1c.d: Likewise.
* ld-x86-64/lea1d.d: Likewise.
* ld-x86-64/lea1e.d: Likewise.
* ld-x86-64/lea1f.d: Likewise.
* ld-x86-64/mov1a.d: Likewise.
* ld-x86-64/mov1b.d: Likewise.
* ld-x86-64/mov1c.d: Likewise.
* ld-x86-64/mov1d.d: Likewise.

25 files changed:
bfd/ChangeLog
bfd/bfd-in2.h
bfd/elf32-i386.c
bfd/elf64-x86-64.c
bfd/linker.c
ld/testsuite/ChangeLog
ld/testsuite/ld-i386/lea1.s
ld/testsuite/ld-i386/lea1a.d
ld/testsuite/ld-i386/lea1b.d
ld/testsuite/ld-i386/lea1c.d
ld/testsuite/ld-i386/mov1.s
ld/testsuite/ld-i386/mov1a.d
ld/testsuite/ld-i386/mov1b.d
ld/testsuite/ld-x86-64/lea1.s
ld/testsuite/ld-x86-64/lea1a.d
ld/testsuite/ld-x86-64/lea1b.d
ld/testsuite/ld-x86-64/lea1c.d
ld/testsuite/ld-x86-64/lea1d.d
ld/testsuite/ld-x86-64/lea1e.d
ld/testsuite/ld-x86-64/lea1f.d
ld/testsuite/ld-x86-64/mov1.s
ld/testsuite/ld-x86-64/mov1a.d
ld/testsuite/ld-x86-64/mov1b.d
ld/testsuite/ld-x86-64/mov1c.d
ld/testsuite/ld-x86-64/mov1d.d

index 19723d25af7a8cbaea1a3270963a563c7c57e017..c838043d808b3345ec798cc22ea10cea4bdfb377 100644 (file)
@@ -1,3 +1,14 @@
+2015-10-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/19171
+       * elf32-i386.c (elf_i386_convert_load): Call
+       bfd_link_get_defined_symbol to check if a symbol is defined.
+       * elf64-x86-64.c (elf_x86_64_convert_load): Call
+       bfd_link_get_defined_symbol to get defined symbol section and
+       value.
+       * linker.c (bfd_link_get_defined_symbol): New function.
+       * bfd-in2.h: Regenerated.
+
 2015-10-23  Alan Modra  <amodra@gmail.com>
 
        PR ld/11133
index 9345e8846c4b4eb77b90359c29fe51d94a0cf3d3..57d31f291389258a88ac83929d84c9da12d6b6df 100644 (file)
@@ -7515,6 +7515,10 @@ struct bfd_elf_version_tree * bfd_find_version_for_sym
 bfd_boolean bfd_hide_sym_by_version
    (struct bfd_elf_version_tree *verdefs, const char *sym_name);
 
+bfd_boolean bfd_link_get_defined_symbol
+   (struct bfd_link_info *info, struct bfd_link_hash_entry *h,
+    asection **sec, bfd_vma *value);
+
 /* Extracted from simple.c.  */
 bfd_byte *bfd_simple_get_relocated_section_contents
    (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
index 60cd91a665d12ea1bebe5170cad3494a64575b6e..9717062307725a337335617ba758d7e570698485 100644 (file)
@@ -2753,7 +2753,7 @@ elf_i386_readonly_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 
 static bfd_boolean
 elf_i386_convert_load (bfd *abfd, asection *sec,
-                            struct bfd_link_info *link_info)
+                      struct bfd_link_info *link_info)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -2976,8 +2976,8 @@ convert_branch:
          if (h == htab->elf.hdynamic)
            continue;
 
-         if ((h->root.type == bfd_link_hash_defined
-              || h->root.type == bfd_link_hash_defweak)
+         if (bfd_link_get_defined_symbol (link_info, &h->root, NULL,
+                                          NULL)
              && SYMBOL_REFERENCES_LOCAL (link_info, h))
            {
 convert_load:
index f864834d2503cb984f996be2cb626aeca40f74c0..9778f2fa49604db6ece9a6482f41cb7c550db980 100644 (file)
@@ -3116,6 +3116,8 @@ elf_x86_64_convert_load (bfd *abfd, asection *sec,
        }
       else
        {
+         bfd_boolean defined;
+
          indx = r_symndx - symtab_hdr->sh_info;
          h = elf_sym_hashes (abfd)[indx];
          BFD_ASSERT (h != NULL);
@@ -3124,19 +3126,17 @@ elf_x86_64_convert_load (bfd *abfd, asection *sec,
                 || h->root.type == bfd_link_hash_warning)
            h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
+         defined = bfd_link_get_defined_symbol (link_info, &h->root,
+                                                &tsec, &toff);
+
          /* STT_GNU_IFUNC must keep GOTPCREL relocations.  We also
             avoid optimizing GOTPCREL relocations againt _DYNAMIC
             since ld.so may use its link-time address.  */
-         if ((h->root.type == bfd_link_hash_defined
-              || h->root.type == bfd_link_hash_defweak)
+         if (defined
              && h->type != STT_GNU_IFUNC
              && h != htab->elf.hdynamic
              && SYMBOL_REFERENCES_LOCAL (link_info, h))
-           {
-             tsec = h->root.u.def.section;
-             toff = h->root.u.def.value;
-             symtype = h->type;
-           }
+           symtype = h->type;
          else
            continue;
        }
index 86a7a1945ba7527b4280045c51472d1a9dc44435..f2290e0ccdf99210fb81f864e2ec3f3f50c47d4a 100644 (file)
@@ -3303,3 +3303,92 @@ bfd_hide_sym_by_version (struct bfd_elf_version_tree *verdefs,
   bfd_find_version_for_sym (verdefs, sym_name, &hidden);
   return hidden;
 }
+
+/*
+FUNCTION
+       bfd_link_get_defined_symbol
+
+SYNOPSIS
+       bfd_boolean bfd_link_get_defined_symbol
+         (struct bfd_link_info *info, struct bfd_link_hash_entry *h,
+          asection **sec, bfd_vma *value);
+
+DESCRIPTION
+       Return TRUE, store symbol section and value in @var{*sec} and
+       @var{*value} if symbol @var{h} is defined during a final link.
+*/
+
+bfd_boolean
+bfd_link_get_defined_symbol (struct bfd_link_info *info,
+                            struct bfd_link_hash_entry *h,
+                            asection **sec, bfd_vma *value)
+{
+  if (h->type == bfd_link_hash_defined
+      || h->type == bfd_link_hash_defweak)
+    {
+      if (sec)
+       *sec = h->u.def.section;
+      if (value)
+       *value = h->u.def.value;
+      return TRUE;
+    }
+
+  if (h->type == bfd_link_hash_new
+      || h->type == bfd_link_hash_undefined
+      || h->type == bfd_link_hash_undefweak)
+    {
+      /* Check yet undefined reference to __start_XXX or __stop_XXX
+        symbols.  The linker will later define such symbols for output
+        sections that have a name representable as a C identifier.  */
+      const char *sec_name;
+      if (strncmp (h->root.string, "__start_", 8) == 0)
+       sec_name = h->root.string + 8;
+      else if (strncmp (h->root.string, "__stop_", 7) == 0)
+       sec_name = h->root.string + 7;
+      else
+       sec_name = NULL;
+
+      if (sec_name != NULL && *sec_name != '\0')
+       {
+         bfd *i;
+
+         for (i = info->input_bfds; i != NULL; i = i->link.next)
+           {
+             asection *s = bfd_get_section_by_name (i, sec_name);
+             if (s != NULL)
+               {
+                 asection *asect;
+                 bfd_vma size;
+
+                 if (sec)
+                   *sec = s;
+
+                 if (!value)
+                   return TRUE;
+                 if (sec_name == (h->root.string + 8))
+                   {
+                     /* Set __start_XXX symbol value.  */
+                     *value = 0;
+                     return TRUE;
+                   }
+
+                 /* Get the size of the output XXX section for
+                    __stop_XXX symbol value.  */
+                 size = 0;
+                 for (asect = s->output_section->map_head.s;
+                      asect != NULL;
+                      asect = asect->map_head.s)
+                   {
+                     size = align_power (size, asect->alignment_power);
+                     size += asect->size;
+                   }
+
+                 *value = size;
+                 return TRUE;
+               }
+           }
+       }
+    }
+
+  return FALSE;
+}
index 90a31e65f28b342cb731b8ee3b07670d8814fe33..42558baa073810ecd45e8526fdec302846edc011 100644 (file)
@@ -1,3 +1,27 @@
+2015-10-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/19171
+       * ld-i386/lea1.s: Add tests for address load of __start_XXX
+       and __stop_XXX.
+       * ld-i386/mov1.s: Likewise.
+       * ld-x86-64/lea1.s: Likewise.
+       * ld-x86-64/mov1.s: Likewise.
+       * ld-i386/lea1a.d: Updated.
+       * ld-i386/lea1b.d: Likewise.
+       * ld-i386/lea1c.d: Likewise.
+       * ld-i386/mov1a.d: Likewise.
+       * ld-i386/mov1b.d: Likewise.
+       * ld-x86-64/lea1a.d: Likewise.
+       * ld-x86-64/lea1b.d: Likewise.
+       * ld-x86-64/lea1c.d: Likewise.
+       * ld-x86-64/lea1d.d: Likewise.
+       * ld-x86-64/lea1e.d: Likewise.
+       * ld-x86-64/lea1f.d: Likewise.
+       * ld-x86-64/mov1a.d: Likewise.
+       * ld-x86-64/mov1b.d: Likewise.
+       * ld-x86-64/mov1c.d: Likewise.
+       * ld-x86-64/mov1d.d: Likewise.
+
 2015-10-23  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/19167
index f754ec03374f9d9e02315bf976f1df2d8258729d..8849a38fb7a3b802dc2c6cc21d77da2a0f4925a5 100644 (file)
@@ -1,3 +1,5 @@
+       .section        my_section,"aw",@progbits
+       .long   0x12345678
        .text
        .globl  foo
        .type   foo, @function
@@ -9,6 +11,8 @@ foo:
 _start:
        movl    foo@GOT(%ecx), %eax
        movl    bar@GOT(%ecx), %eax
+       movl    __start_my_section@GOT(%ecx), %eax
+       movl    __stop_my_section@GOT(%ecx), %eax
        .size   _start, .-_start
        .comm   pad,4,4
        .comm   bar,4,4
index 0435d3495b9f5a786b26f04f940ec8075f5c8307..d8825227008c84a1107ca6b3e10bb5975023a656 100644 (file)
@@ -11,4 +11,6 @@ Disassembly of section .text:
 #...
 [      ]*[a-f0-9]+:    8d 81 ([0-9a-f]{2} ){4} *       lea    -0x[a-f0-9]+\(%ecx\),%eax
 [      ]*[a-f0-9]+:    8d 81 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+\(%ecx\),%eax
+[      ]*[a-f0-9]+:    8d 81 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+\(%ecx\),%eax
+[      ]*[a-f0-9]+:    8d 81 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+\(%ecx\),%eax
 #pass
index 8cef2c4f64a5b6720a20583b49b3f8003f30ae6c..b3f6507d1773338c415031ee1dc1d0df4deee0e4 100644 (file)
@@ -11,4 +11,6 @@ Disassembly of section .text:
 #...
 [      ]*[a-f0-9]+:    8d 81 ([0-9a-f]{2} ){4} *       lea    -0x[a-f0-9]+\(%ecx\),%eax
 [      ]*[a-f0-9]+:    8d 81 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+\(%ecx\),%eax
+[      ]*[a-f0-9]+:    8d 81 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+\(%ecx\),%eax
+[      ]*[a-f0-9]+:    8d 81 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+\(%ecx\),%eax
 #pass
index 54ec0deb18ebfa391ec51e8cc1dc296f63253d7b..dd76258be3465154381e7a9ef43ec1247e15f11c 100644 (file)
@@ -11,4 +11,6 @@ Disassembly of section .text:
 #...
 [      ]*[a-f0-9]+:    8d 05 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+,%eax
 [      ]*[a-f0-9]+:    8d 05 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+,%eax
+[      ]*[a-f0-9]+:    8d 05 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+,%eax
+[      ]*[a-f0-9]+:    8d 05 ([0-9a-f]{2} ){4} *       lea    0x[a-f0-9]+,%eax
 #pass
index c813e718b1899929cb0fa40d31ca17c88e60db58..0ed8015e7e4ed21cf9854f9930fa579485f733f3 100644 (file)
@@ -1,6 +1,10 @@
        .text
+       .weak __start_my_section
+       .weak __stop_my_section
        .globl  _start
        .type   _start, @function
 _start:
        movl    _DYNAMIC@GOT(%ecx), %eax
+       movl    __start_my_section@GOT(%ecx), %eax
+       movl    __stop_my_section@GOT(%ecx), %eax
        .size   _start, .-_start
index d8ce6b821f70219a50a8cf0ba72a16ad9fed8c65..d189627744a6fd132ec44a49462e1f253d9e64a4 100644 (file)
@@ -10,4 +10,6 @@ Disassembly of section .text:
 
 #...
 [      ]*[a-f0-9]+:    8b 81 ([0-9a-f]{2} ){4} *       mov    -0x[a-f0-9]+\(%ecx\),%eax
+[      ]*[a-f0-9]+:    8b 81 ([0-9a-f]{2} ){4} *       mov    -0x[a-f0-9]+\(%ecx\),%eax
+[      ]*[a-f0-9]+:    8b 81 ([0-9a-f]{2} ){4} *       mov    -0x[a-f0-9]+\(%ecx\),%eax
 #pass
index 583dfc82d46e0dc11bbabb56e526fb2bdaf27852..ae40862384e702a0033c7d2c71ff6df7fdc38376 100644 (file)
@@ -10,4 +10,6 @@ Disassembly of section .text:
 
 #...
 [      ]*[a-f0-9]+:    8b 81 ([0-9a-f]{2} ){4} *       mov    -0x[a-f0-9]+\(%ecx\),%eax
+[      ]*[a-f0-9]+:    8b 81 ([0-9a-f]{2} ){4} *       mov    -0x[a-f0-9]+\(%ecx\),%eax
+[      ]*[a-f0-9]+:    8b 81 ([0-9a-f]{2} ){4} *       mov    -0x[a-f0-9]+\(%ecx\),%eax
 #pass
index c2a499c5bf16b28735e97fb5fce77c7b30a938b9..07a2e35473425efd87ed49bc610485892cd06ab8 100644 (file)
@@ -1,3 +1,5 @@
+       .section        my_section,"aw",@progbits
+       .long   0x12345678
        .text
        .globl  foo
        .type   foo, @function
@@ -9,6 +11,8 @@ foo:
 _start:
        movq    foo@GOTPCREL(%rip), %rax
        movq    bar@GOTPCREL(%rip), %rax
+       movq    __start_my_section@GOTPCREL(%rip), %rax
+       movq    __stop_my_section@GOTPCREL(%rip), %rax
        .size   _start, .-_start
        .comm   pad,4,4
        .comm   bar,4,4
index 75dad702da097530218b716d1d703438606eb8d2..36e9f546d30ff0db285ea88446df31db1e327232 100644 (file)
@@ -11,4 +11,6 @@ Disassembly of section .text:
 #...
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    -0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <foo>
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <bar>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__start_my_section>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__stop_my_section>
 #pass
index d968ca29dfb8d12173a6e6a0a54450ea7dc7309c..a92acd73e0544d66cbbccd96f0254634b548b436 100644 (file)
@@ -11,4 +11,6 @@ Disassembly of section .text:
 #...
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    -0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <foo>
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <bar>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__start_my_section>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__stop_my_section>
 #pass
index 5f7e6c36977f27544d4cab025812694a3a2f6681..072b1ee09831c999713214cb1da8480a8c1f998a 100644 (file)
@@ -11,4 +11,6 @@ Disassembly of section .text:
 #...
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    -0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <foo>
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <bar>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__start_my_section>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__stop_my_section>
 #pass
index 524980f9b980f3b7a083376ce066851e00a5febe..2613061b948954e2805f5f8d798257cacb57c845 100644 (file)
@@ -11,4 +11,6 @@ Disassembly of section .text:
 #...
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    -0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <foo>
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <bar>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__start_my_section>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__stop_my_section>
 #pass
index 22e6dcc04df54d1c1a0a98b6c794a88dc98ecf1a..109c1cd1be9ea856440c853f280d6ed3c316a91d 100644 (file)
@@ -11,4 +11,6 @@ Disassembly of section .text:
 #...
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    -0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <foo>
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <bar>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__start_my_section>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__stop_my_section>
 #pass
index 9aff34d0b825acc0840db7573437833d3e616956..8d6cd78345451a50399da408e09e7c55af96a5fa 100644 (file)
@@ -11,4 +11,6 @@ Disassembly of section .text:
 #...
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    -0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <foo>
 [      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <bar>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__start_my_section>
+[      ]*[a-f0-9]+:    48 8d 05 ([0-9a-f]{2} ){4} *    lea    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <__stop_my_section>
 #pass
index 2a11b7a19f46ce5edf6f8255025bb3e86a9c4a5f..844129cc663903e0bb6c32fa7126c5b1547a2b7e 100644 (file)
@@ -1,6 +1,10 @@
        .text
+       .weak __start_my_section
+       .weak __stop_my_section
        .globl  _start
        .type   _start, @function
 _start:
        movq    _DYNAMIC@GOTPCREL(%rip), %rax
+       movq    __start_my_section@GOTPCREL(%rip), %rax
+       movq    __stop_my_section@GOTPCREL(%rip), %rax
        .size   _start, .-_start
index df156be1177616a8c9c06f55089fad37001f7a35..4ac6d7ea49c010373dbeaf4e4c65147ac0ecf464 100644 (file)
@@ -10,4 +10,6 @@ Disassembly of section .text:
 
 #...
 [      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+[      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+[      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
 #pass
index 2f2f6f5e5df0a9d98f654b8e98583989307f13d5..f112c1cba5b70c0f920d3feeb4e51cb211c13edc 100644 (file)
@@ -10,4 +10,6 @@ Disassembly of section .text:
 
 #...
 [      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+[      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+[      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
 #pass
index a57e1c184cd55ad9e7e5b66e1b4baa488291cc26..bb7bab1113dd9ec5a0d5f84af9352ba7acc881d2 100644 (file)
@@ -10,4 +10,6 @@ Disassembly of section .text:
 
 #...
 [      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+[      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+[      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
 #pass
index 955d33e51a57a4899f40fff18ea9abbbacc35435..794a546f86a8b5937d1cfa464061a30f934f2dd9 100644 (file)
@@ -10,4 +10,6 @@ Disassembly of section .text:
 
 #...
 [      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+[      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
+[      ]*[a-f0-9]+:    48 8b 05 ([0-9a-f]{2} ){4} *    mov    0x[a-f0-9]+\(%rip\),%rax        # [a-f0-9]+ <_DYNAMIC\+0x[a-f0-9]+>
 #pass
This page took 0.059122 seconds and 4 git commands to generate.