Commit a861990d by Martin Liska Committed by Martin Liska

Do not emit __gnu_lto_v1 symbol.

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
parent d1caf05a
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
......
......@@ -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"))
......
......@@ -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)
......
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
......
......@@ -115,7 +115,3 @@ pthread_once (void)
return 0;
}
#endif
#ifdef L_gnu_lto_v1
char gnu_lto_v1;
#endif
......@@ -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)
......
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.
......
......@@ -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);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment