2010-05-26 Rafael Espindola <espindola@google.com>
PR 11604 * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid adding sections the garbage collector removed. * gold/testsuite/Makefile.am: Add test. * gold/testsuite/Makefile.in: Regenerate. * gold/testsuite/plugin_test_7.sh: New. * gold/testsuite/plugin_test_7_1.c: New. * gold/testsuite/plugin_test_7_2.c: New.
This commit is contained in:
parent
947bb88ff5
commit
5e0f337e8c
@ -1,3 +1,14 @@
|
||||
2010-05-26 Rafael Espindola <espindola@google.com>
|
||||
|
||||
PR 11604
|
||||
* gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
|
||||
adding sections the garbage collector removed.
|
||||
* gold/testsuite/Makefile.am: Add test.
|
||||
* gold/testsuite/Makefile.in: Regenerate.
|
||||
* gold/testsuite/plugin_test_7.sh: New.
|
||||
* gold/testsuite/plugin_test_7_1.c: New.
|
||||
* gold/testsuite/plugin_test_7_2.c: New.
|
||||
|
||||
2010-05-26 Rafael Espindola <espindola@google.com>
|
||||
|
||||
* script-sections.cc (Output_section_definition::set_section_addresses):
|
||||
|
@ -1461,6 +1461,11 @@ Sized_relobj<size, big_endian>::do_layout_deferred_sections(Layout* layout)
|
||||
++deferred)
|
||||
{
|
||||
typename This::Shdr shdr(deferred->shdr_data_);
|
||||
// If the section is not included, it is because the garbage collector
|
||||
// decided it is not needed. Avoid reverting that decision.
|
||||
if (!this->is_section_included(deferred->shndx_))
|
||||
continue;
|
||||
|
||||
this->layout_section(layout, deferred->shndx_, deferred->name_.c_str(),
|
||||
shdr, deferred->reloc_shndx_, deferred->reloc_type_);
|
||||
}
|
||||
|
@ -1284,6 +1284,24 @@ plugin_test_6: plugin_common_test_1.syms plugin_common_test_2.syms gcctestdir/ld
|
||||
plugin_test_6.err: plugin_test_6
|
||||
@touch plugin_test_6.err
|
||||
|
||||
check_PROGRAMS += plugin_test_7
|
||||
check_SCRIPTS += plugin_test_7.sh
|
||||
check_DATA += plugin_test_7.err plugin_test_7.syms
|
||||
MOSTLYCLEANFILES += plugin_test_7.err
|
||||
plugin_test_7: plugin_test_7_1.o plugin_test_7_1.syms plugin_test_7_2.o gcctestdir/ld plugin_test.so
|
||||
$(LINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--gc-sections,--print-gc-sections plugin_test_7_1.syms plugin_test_7_2.o 2>plugin_test_7.err
|
||||
plugin_test_7.syms: plugin_test_7
|
||||
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
||||
plugin_test_7_1.o: plugin_test_7_1.c
|
||||
$(COMPILE) -DLTO -O0 -c -ffunction-sections -fdata-sections -o $@ $<
|
||||
plugin_test_7_1_orig.o: plugin_test_7_1.c
|
||||
$(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $<
|
||||
plugin_test_7_1.syms: plugin_test_7_1_orig.o
|
||||
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
||||
plugin_test_7_2.o: plugin_test_7_2.c
|
||||
$(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $<
|
||||
plugin_test_7.err: plugin_test_7
|
||||
|
||||
plugin_test.so: plugin_test.o
|
||||
$(LINK) -Bgcctestdir/ -shared plugin_test.o
|
||||
plugin_test.o: plugin_test.c
|
||||
|
@ -253,19 +253,23 @@ check_PROGRAMS = object_unittest$(EXEEXT) binary_unittest$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3 \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4 \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_5 \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6 \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_23 = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6.sh
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6.sh \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7.sh
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_24 = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6.err
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7.syms
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_25 = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_1.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_2.err \
|
||||
@ -273,6 +277,7 @@ check_PROGRAMS = object_unittest$(EXEEXT) binary_unittest$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.a \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7.err \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ unused.c
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_26 = exclude_libs_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test \
|
||||
@ -490,7 +495,8 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_3$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_4$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_5$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6$(EXEEXT)
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_6$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ plugin_test_7$(EXEEXT)
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_17 = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exclude_libs_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test$(EXEEXT) \
|
||||
@ -742,6 +748,12 @@ plugin_test_6_LDADD = $(LDADD)
|
||||
plugin_test_6_DEPENDENCIES = libgoldtest.a ../libgold.a \
|
||||
../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
plugin_test_7_SOURCES = plugin_test_7.c
|
||||
plugin_test_7_OBJECTS = plugin_test_7.$(OBJEXT)
|
||||
plugin_test_7_LDADD = $(LDADD)
|
||||
plugin_test_7_DEPENDENCIES = libgoldtest.a ../libgold.a \
|
||||
../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_protected_1_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_1.$(OBJEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_2.$(OBJEXT) \
|
||||
@ -1104,12 +1116,12 @@ SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c basic_pie_test.c \
|
||||
many_sections_r_test.c $(many_sections_test_SOURCES) \
|
||||
$(object_unittest_SOURCES) permission_test.c plugin_test_1.c \
|
||||
plugin_test_2.c plugin_test_3.c plugin_test_4.c \
|
||||
plugin_test_5.c plugin_test_6.c $(protected_1_SOURCES) \
|
||||
$(protected_2_SOURCES) $(relro_script_test_SOURCES) \
|
||||
$(relro_test_SOURCES) $(script_test_1_SOURCES) \
|
||||
$(script_test_2_SOURCES) script_test_3.c \
|
||||
$(searched_file_test_SOURCES) $(thin_archive_test_1_SOURCES) \
|
||||
$(thin_archive_test_2_SOURCES) \
|
||||
plugin_test_5.c plugin_test_6.c plugin_test_7.c \
|
||||
$(protected_1_SOURCES) $(protected_2_SOURCES) \
|
||||
$(relro_script_test_SOURCES) $(relro_test_SOURCES) \
|
||||
$(script_test_1_SOURCES) $(script_test_2_SOURCES) \
|
||||
script_test_3.c $(searched_file_test_SOURCES) \
|
||||
$(thin_archive_test_1_SOURCES) $(thin_archive_test_2_SOURCES) \
|
||||
$(tls_phdrs_script_test_SOURCES) $(tls_pic_test_SOURCES) \
|
||||
tls_pie_pic_test.c tls_pie_test.c $(tls_script_test_SOURCES) \
|
||||
$(tls_shared_gd_to_ie_test_SOURCES) \
|
||||
@ -1934,6 +1946,15 @@ object_unittest$(EXEEXT): $(object_unittest_OBJECTS) $(object_unittest_DEPENDENC
|
||||
@PLUGINS_FALSE@plugin_test_6$(EXEEXT): $(plugin_test_6_OBJECTS) $(plugin_test_6_DEPENDENCIES)
|
||||
@PLUGINS_FALSE@ @rm -f plugin_test_6$(EXEEXT)
|
||||
@PLUGINS_FALSE@ $(LINK) $(plugin_test_6_OBJECTS) $(plugin_test_6_LDADD) $(LIBS)
|
||||
@GCC_FALSE@plugin_test_7$(EXEEXT): $(plugin_test_7_OBJECTS) $(plugin_test_7_DEPENDENCIES)
|
||||
@GCC_FALSE@ @rm -f plugin_test_7$(EXEEXT)
|
||||
@GCC_FALSE@ $(LINK) $(plugin_test_7_OBJECTS) $(plugin_test_7_LDADD) $(LIBS)
|
||||
@NATIVE_LINKER_FALSE@plugin_test_7$(EXEEXT): $(plugin_test_7_OBJECTS) $(plugin_test_7_DEPENDENCIES)
|
||||
@NATIVE_LINKER_FALSE@ @rm -f plugin_test_7$(EXEEXT)
|
||||
@NATIVE_LINKER_FALSE@ $(LINK) $(plugin_test_7_OBJECTS) $(plugin_test_7_LDADD) $(LIBS)
|
||||
@PLUGINS_FALSE@plugin_test_7$(EXEEXT): $(plugin_test_7_OBJECTS) $(plugin_test_7_DEPENDENCIES)
|
||||
@PLUGINS_FALSE@ @rm -f plugin_test_7$(EXEEXT)
|
||||
@PLUGINS_FALSE@ $(LINK) $(plugin_test_7_OBJECTS) $(plugin_test_7_LDADD) $(LIBS)
|
||||
protected_1$(EXEEXT): $(protected_1_OBJECTS) $(protected_1_DEPENDENCIES)
|
||||
@rm -f protected_1$(EXEEXT)
|
||||
$(protected_1_LINK) $(protected_1_OBJECTS) $(protected_1_LDADD) $(LIBS)
|
||||
@ -2166,6 +2187,7 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_4.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_5.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_6.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_7.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_3.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_2.Po@am__quote@
|
||||
@ -3030,6 +3052,19 @@ uninstall-am:
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so" plugin_common_test_1.syms plugin_common_test_2.syms 2>plugin_test_6.err
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_6.err: plugin_test_6
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ @touch plugin_test_6.err
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7: plugin_test_7_1.o plugin_test_7_1.syms plugin_test_7_2.o gcctestdir/ld plugin_test.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--gc-sections,--print-gc-sections plugin_test_7_1.syms plugin_test_7_2.o 2>plugin_test_7.err
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7.syms: plugin_test_7
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7_1.o: plugin_test_7_1.c
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -DLTO -O0 -c -ffunction-sections -fdata-sections -o $@ $<
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7_1_orig.o: plugin_test_7_1.c
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $<
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7_1.syms: plugin_test_7_1_orig.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(TEST_READELF) -sW $< >$@ 2>/dev/null
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7_2.o: plugin_test_7_2.c
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $<
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test_7.err: plugin_test_7
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@plugin_test.so: plugin_test.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@ $(LINK) -Bgcctestdir/ -shared plugin_test.o
|
||||
|
56
gold/testsuite/plugin_test_7.sh
Executable file
56
gold/testsuite/plugin_test_7.sh
Executable file
@ -0,0 +1,56 @@
|
||||
#!/bin/sh
|
||||
|
||||
# plugin_test_7.sh -- a test case for the plugin API with GC.
|
||||
|
||||
# Copyright 2010 Free Software Foundation, Inc.
|
||||
# Written by Rafael Avila de Espindola <espindola@google.com>.
|
||||
|
||||
# This file is part of gold.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
# MA 02110-1301, USA.
|
||||
|
||||
check()
|
||||
{
|
||||
if ! grep -q "$2" "$1"
|
||||
then
|
||||
echo "Did not find expected output in $1:"
|
||||
echo " $2"
|
||||
echo ""
|
||||
echo "Actual output below:"
|
||||
cat "$1"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_not()
|
||||
{
|
||||
if grep -q "$2" "$1"
|
||||
then
|
||||
echo "Found unexpected output in $1:"
|
||||
echo " $2"
|
||||
echo ""
|
||||
echo "Actual output below:"
|
||||
cat "$1"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
check plugin_test_7.err "set_x: PREVAILING_DEF_IRONLY"
|
||||
check plugin_test_7.err "fun2: RESOLVED_EXEC"
|
||||
check plugin_test_7.err "fun1: PREVAILING_DEF_REG"
|
||||
check plugin_test_7.err "removing unused section from '.text.fun2' in file 'plugin_test_7_2.o'"
|
||||
check_not plugin_test_7.syms "fun2"
|
43
gold/testsuite/plugin_test_7_1.c
Normal file
43
gold/testsuite/plugin_test_7_1.c
Normal file
@ -0,0 +1,43 @@
|
||||
/* plugin_test_7_1.c -- a test case for the plugin API with GC.
|
||||
|
||||
Copyright 2010 Free Software Foundation, Inc.
|
||||
Written by Rafael Avila de Espindola <espindola@google.com>.
|
||||
|
||||
This file is part of gold.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
int fun1(void);
|
||||
int fun2(void);
|
||||
void set_x(int y);
|
||||
|
||||
#ifndef LTO
|
||||
static int x = 0;
|
||||
|
||||
void set_x(int y)
|
||||
{
|
||||
x = y;
|
||||
}
|
||||
#endif
|
||||
|
||||
int fun1(void)
|
||||
{
|
||||
#ifndef LTO
|
||||
if (x)
|
||||
return fun2();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
33
gold/testsuite/plugin_test_7_2.c
Normal file
33
gold/testsuite/plugin_test_7_2.c
Normal file
@ -0,0 +1,33 @@
|
||||
/* plugin_test_7_1.c -- a test case for the plugin API with GC.
|
||||
|
||||
Copyright 2010 Free Software Foundation, Inc.
|
||||
Written by Rafael Avila de Espindola <espindola@google.com>.
|
||||
|
||||
This file is part of gold.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
int fun1(void);
|
||||
void fun2(void);
|
||||
|
||||
void fun2(void)
|
||||
{
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
return fun1();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user