Hi, I have created a new file lto-dump.c and to test if it's linked correctly, I have put a dummy function called dump which should simply print hello world after passing -dump option to lto1.
~/gnu-toolchain/gcc/master/tests$ ../stage1-build/gcc/lto1 hello.o -fdump Now while adding -fdump option in lang.opt for command line option I am getting error “unrecognised command line option '-fdump' ”. So how should I proceed with adding this new option. Please find the diff file attached. Thanks, Hrishikesh On Wed, Apr 25, 2018 at 1:35 PM, Richard Biener <richard.guent...@gmail.com> wrote: > On Wed, Apr 25, 2018 at 5:17 AM, Hrishikesh Kulkarni > <hrishikeshpa...@gmail.com> wrote: >> Hi, >> >> Thanks a lot for giving me this wonderful opportunity to work with GCC >> under your guidance and mentorship (GSOC 2018). >> >> Just a few starting queries >> >> 1. >> >> As a starting point to read lto-object file, is it sufficient to only >> link with lto-object.c or shall I need other source files too ? > > You will need a lot more source files - starting with libbackend.a is > probably easiest. As said during the initial project discussion it > remains to be seen whether a fully standalone dump tool is > best or whether the actual work is to be done by lto1 and the dump > tool shall act merely as a driver around that and they communicate > via some special (set of) options to lto1. > > IIRC we do not have any existing tool that builds trees or cgraph > nodes or reads gimple bodies, so picking pices that are required > is going to be "interesting" (and eventually will suggest some refactoring > to avoid pulling in unnecessary stuff). You'll also run into issues expecting > some initialized global state. So... > > ...for the first phase of experimenting with the code-base it's probably > easiest to add some testing option to gcc/lto/lang.opt and "do stuff" > within a if (flag_your_option) conditional from some point in > lto/lto.c:lto_main. > >> 2. >> >> Should the dump tool be under gcc or lto dir? Would I need to modify >> only gcc/Makefile.in to add entry for building the dump tool or any other >> Makefiles too ? > > I'd say it most naturally would reside in gcc/lto/ and thus its Make-lang.in > would need to be adjusted. > >> >> Also, I would proceed with copyright assignment as soon as I will receive >> the mentioned forms. >> >> >> Thanks, >> >> Hrishikesh >> >> >> On Tue, Apr 24, 2018 at 6:27 PM, Martin Jambor <mjam...@suse.cz> wrote: >> >>> Hello, >>> >>> I am pleased to announce that Hrishikesh Kulkarni will be working on >>> "Textual Representation of LTO Object Files (Textual LTO dump tool >>> project)" as his Google Summer of Code 2018 project. I believe I write >>> on behalf of everybody in the GCC community when I congratulate him and >>> wish him success in the upcoming work. Hrishikesh's mentors are Martin >>> Liška and Jan Hubička, but the plan is to have most of the conversation >>> about the project on the mailing list and so I would like to encourage >>> everyone to help him out here if they can. >>> >>> According to the schedule of GSoC, we have entered "Community Bonding >>> period" which lasts until May 14th (when the first out of three "coding" >>> periods begin). Hrishikesh, Martin and Honza will take over from me in >>> suggesting what technical things you should study/play with, but I'd >>> like to request that you make sure you get an FSF copyright assignment >>> quickly (see https://gcc.gnu.org/contribute.html#legal). David, I >>> assume that Hrishikesh does not have the assignment yet, can you please >>> send him the necessary forms? Hrishikesh, please fill them is when you >>> get and send them to FSF. If at any moment it will appear that the >>> process got stuck, please let me know sooner rather than later. >>> >>> On a general note, GCC was given two student slots which we requested >>> after receiving two high-quality student proposals. Unfortunately, >>> Sebastiaan has withdrawn from GSoC 2018 before selection was announced >>> and so we "only" have one student this year. >>> >>> I'm looking forward to the new tool, >>> >>> Martin >>>
diff --git a/gcc/lto/Make-lang.in b/gcc/lto/Make-lang.in index 4695077..465662e 100644 --- a/gcc/lto/Make-lang.in +++ b/gcc/lto/Make-lang.in @@ -22,7 +22,7 @@ # The name of the LTO compiler. LTO_EXE = lto1$(exeext) # The LTO-specific object files inclued in $(LTO_EXE). -LTO_OBJS = lto/lto-lang.o lto/lto.o lto/lto-object.o attribs.o lto/lto-partition.o lto/lto-symtab.o +LTO_OBJS = lto/lto-lang.o lto/lto.o lto/lto-object.o attribs.o lto/lto-partition.o lto/lto-symtab.o lto/lto-dump.o lto_OBJS = $(LTO_OBJS) # this is only useful in a LTO bootstrap, but this does not work right diff --git a/gcc/lto/lang.opt b/gcc/lto/lang.opt index 0a408d3..684fdb9 100644 --- a/gcc/lto/lang.opt +++ b/gcc/lto/lang.opt @@ -42,6 +42,7 @@ Enum(lto_linker_output) String(pie) Value(LTO_LINKER_OUTPUT_PIE) EnumValue Enum(lto_linker_output) String(exec) Value(LTO_LINKER_OUTPUT_EXEC) + flinker-output= LTO Report Driver Joined RejectNegative Enum(lto_linker_output) Var(flag_lto_linker_output) Init(LTO_LINKER_OUTPUT_UNKNOWN) Set linker output type (used internally during LTO optimization) @@ -63,6 +64,10 @@ fwpa= LTO Driver RejectNegative Joined Var(flag_wpa) Whole program analysis (WPA) mode with number of parallel jobs specified. +fdump +LTO Dump Tool +Call the dump function. + fresolution= LTO Joined The resolution file. diff --git a/gcc/lto/lto-dump.c b/gcc/lto/lto-dump.c new file mode 100644 index 0000000..f7ed8b9 --- /dev/null +++ b/gcc/lto/lto-dump.c @@ -0,0 +1,42 @@ +/* LTO dump tool + Copyright (C) 2009-2018 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC 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, or (at your option) any later +version. + +GCC 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 GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "target.h" +#include "function.h" +#include "basic-block.h" +#include "tree.h" +#include "gimple.h" +#include "cgraph.h" +#include "lto-streamer.h" +#include "ipa-utils.h" +#include "builtins.h" +#include "alias.h" +#include "lto-symtab.h" +#include "stringpool.h" +#include "attribs.h" +#include "stdio.h" + +void dump() +{ + + printf("Hello World!\n"); +} \ No newline at end of file diff --git a/gcc/lto/lto-dump.h b/gcc/lto/lto-dump.h new file mode 100644 index 0000000..676ba5b --- /dev/null +++ b/gcc/lto/lto-dump.h @@ -0,0 +1 @@ +void dump(); \ No newline at end of file