Do not emit __gnu_lto_v1 symbol.
authorMartin Liska <mliska@suse.cz>
Mon, 22 Jul 2019 07:34:47 +0000 (09:34 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Mon, 22 Jul 2019 07:34:47 +0000 (07:34 +0000)
2019-07-22  Martin Liska  <mliska@suse.cz>

* config/avr/avr.c (avr_asm_output_aligned_decl_common): Update
comment.
* toplev.c (compile_file): Do not emit __gnu_lto_v1 symbol.
2019-07-22  Martin Liska  <mliska@suse.cz>

* config/pa/stublib.c: Remove stub symbol __gnu_lto_v1.
* config/pa/t-stublib: Likewise.
2019-07-22  Martin Liska  <mliska@suse.cz>

* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
Do not search for gnu_lto_v1, but search for first '\0'.

From-SVN: r273662

gcc/ChangeLog
gcc/config/avr/avr.c
gcc/toplev.c
libgcc/ChangeLog
libgcc/config/pa/stublib.c
libgcc/config/pa/t-stublib
libiberty/ChangeLog
libiberty/simple-object-elf.c

index 528432f..05d8efa 100644 (file)
@@ -1,5 +1,11 @@
 2019-07-22  Martin Liska  <mliska@suse.cz>
 
+       * config/avr/avr.c (avr_asm_output_aligned_decl_common): Update
+       comment.
+       * toplev.c (compile_file): Do not emit __gnu_lto_v1 symbol.
+
+2019-07-22  Martin Liska  <mliska@suse.cz>
+
        * lto-section-in.c (lto_get_section_data):
        Use new function get_compression.
        * lto-streamer-out.c (produce_lto_section): Use
index b97faaf..760e937 100644 (file)
@@ -10163,7 +10163,7 @@ avr_asm_output_aligned_decl_common (FILE * stream,
       return;
     }
 
-  /* __gnu_lto_v1 etc. are just markers for the linker injected by toplev.c.
+  /* __gnu_lto_slim is just a marker for the linker injected by toplev.c.
      There is no need to trigger __do_clear_bss code for them.  */
 
   if (!STR_PREFIX_P (name, "__gnu_lto"))
index 2567fe2..56ef63e 100644 (file)
@@ -543,27 +543,6 @@ compile_file (void)
       process_pending_assemble_externals ();
    }
 
-  /* Emit LTO marker if LTO info has been previously emitted.  This is
-     used by collect2 to determine whether an object file contains IL.
-     We used to emit an undefined reference here, but this produces
-     link errors if an object file with IL is stored into a shared
-     library without invoking lto1.  */
-  if (flag_generate_lto || flag_generate_offload)
-    {
-#if defined ASM_OUTPUT_ALIGNED_DECL_COMMON
-      ASM_OUTPUT_ALIGNED_DECL_COMMON (asm_out_file, NULL_TREE,
-                                     "__gnu_lto_v1",
-                                     HOST_WIDE_INT_1U, 8);
-#elif defined ASM_OUTPUT_ALIGNED_COMMON
-      ASM_OUTPUT_ALIGNED_COMMON (asm_out_file, "__gnu_lto_v1",
-                                HOST_WIDE_INT_1U, 8);
-#else
-      ASM_OUTPUT_COMMON (asm_out_file, "__gnu_lto_v1",
-                        HOST_WIDE_INT_1U,
-                        HOST_WIDE_INT_1U);
-#endif
-    }
-
   /* Let linker plugin know that this is a slim object and must be LTOed
      even when user did not ask for it.  */
   if (flag_generate_lto && !flag_fat_lto_objects)
index 0a449a7..7997ad8 100644 (file)
@@ -1,3 +1,8 @@
+2019-07-22  Martin Liska  <mliska@suse.cz>
+
+       * config/pa/stublib.c: Remove stub symbol __gnu_lto_v1.
+       * config/pa/t-stublib: Likewise.
+
 2019-07-22  Stafford Horne  <shorne@gmail.com>
 
        PR target/90362
index b47afe1..7e79dbf 100644 (file)
@@ -115,7 +115,3 @@ pthread_once (void)
   return 0;
 }
 #endif
-
-#ifdef L_gnu_lto_v1
-char gnu_lto_v1;
-#endif
index 0a6223d..8004c1e 100644 (file)
@@ -3,8 +3,7 @@ LIBGCCSTUB_OBJS = rfi-stub.o dfi-stub.o ritm-stub.o ditm-stub.o \
        pthread_default_stacksize_np-stub.o \
        pthread_mutex_lock-stub.o \
        pthread_mutex_unlock-stub.o \
-       pthread_once-stub.o \
-       gnu_lto_v1-stub.o
+       pthread_once-stub.o
 
 rfi-stub.o: $(srcdir)/config/pa/stublib.c
        $(gcc_compile) -c -O2 -DL_register_frame_info $<
@@ -36,9 +35,6 @@ pthread_mutex_unlock-stub.o: $(srcdir)/config/pa/stublib.c
 pthread_once-stub.o: $(srcdir)/config/pa/stublib.c
        $(gcc_compile) -c -O2 -DL_pthread_once $<
 
-gnu_lto_v1-stub.o: $(srcdir)/config/pa/stublib.c
-       $(gcc_compile) -c -O2 -DL_gnu_lto_v1 $<
-
 libgcc_stub.a: $(LIBGCCSTUB_OBJS)
        -rm -rf $@
        $(AR) rc $@ $(LIBGCCSTUB_OBJS)
index af24257..a0508e9 100644 (file)
@@ -1,3 +1,8 @@
+2019-07-22  Martin Liska  <mliska@suse.cz>
+
+       * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
+       Do not search for gnu_lto_v1, but search for first '\0'.
+
 2019-07-18  Eduard-Mihai Burtescu  <eddyb@lyken.rs>
 
        * cplus-dem.c: Include rust-demangle.h.
index 22c9ae7..5023889 100644 (file)
@@ -1358,9 +1358,8 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj,
          return errmsg;
        }
 
-      /* If we are processing .symtab purge __gnu_lto_v1 and
-        __gnu_lto_slim symbols from it and any symbols in discarded
-        sections.  */
+      /* If we are processing .symtab purge __gnu_lto_slim symbol
+        from it and any symbols in discarded sections.  */
       if (sh_type == SHT_SYMTAB)
        {
          unsigned entsize = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
@@ -1380,14 +1379,9 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj,
                                       sobj->offset + stroff,
                                       (unsigned char *)strings,
                                       strsz, &errmsg, err);
-         /* Find gnu_lto_ in strings.  */
-         while ((gnu_lto = (char *) memchr (gnu_lto, 'g',
-                                            strings + strsz - gnu_lto)))
-           if (strncmp (gnu_lto, "gnu_lto_v1",
-                        strings + strsz - gnu_lto) == 0)
-             break;
-           else
-             gnu_lto++;
+         /* Find first '\0' in strings.  */
+         gnu_lto = (char *) memchr (gnu_lto, '\0',
+                                    strings + strsz - gnu_lto + 1);
          /* Read the section index table if present.  */
          if (symtab_indices_shndx[i - 1] != 0)
            {
@@ -1461,10 +1455,9 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj,
                         undefined and sharing the gnu_lto_ name.  */
                      bind = STB_WEAK;
                      other = STV_HIDDEN;
-                     if (gnu_lto)
-                       ELF_SET_FIELD (type_functions, ei_class, Sym,
-                                      ent, st_name, Elf_Word,
-                                      gnu_lto - strings);
+                     ELF_SET_FIELD (type_functions, ei_class, Sym,
+                                    ent, st_name, Elf_Word,
+                                    gnu_lto - strings);
                      ELF_SET_FIELD (type_functions, ei_class, Sym,
                                     ent, st_shndx, Elf_Half, SHN_UNDEF);
                    }