This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Heads-Up: early LTO debug to land, breaking Mach-O / [X]COFF
- From: Richard Biener <rguenther at suse dot de>
- To: Rainer Orth <ro at CeBiTec dot Uni-Bielefeld dot DE>
- Cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org, 10walls at gmail dot com, mikestump at comcast dot net, iain at codesourcery dot com
- Date: Thu, 24 Aug 2017 11:18:32 +0200 (CEST)
- Subject: Re: Heads-Up: early LTO debug to land, breaking Mach-O / [X]COFF
- Authentication-results: sourceware.org; auth=none
- References: <alpine.LSU.2.20.1705121115430.20726@zhemvz.fhfr.qr> <alpine.LSU.2.20.1708211247450.14191@zhemvz.fhfr.qr> <yddo9r612xa.fsf@CeBiTec.Uni-Bielefeld.DE>
On Wed, 23 Aug 2017, Rainer Orth wrote:
> Hi Richard,
>
> > On Fri, 12 May 2017, Richard Biener wrote:
> >
> >>
> >> This is a heads-up that I am in the process of implementing the last
> >> of Jasons review comments on the dwarf2out parts of early LTO debug
> >> support. I hope to post final patches early next week after thoroughly
> >> re-testing everything.
> >>
> >> Note that Mach-O and [X]COFF support in the simple-object machinery
> >> is still missing for the early LTO debug feature so I am going to
> >> break LTOing with DWARF debuginfo on Darwin and Windows (CCing
> >> maintainers). Mach-O support has been worked on a bit by Iain
> >> and myself but the simple-object piece is still missing.
> >> A workaround is to use stabs on these targets with LTO.
>
> unfortunately, the patch not only broke LTO on Darwin, but bootstrap
> completely (seen on x86_64-apple-darwin17.0.0):
>
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c: In function 'void init_sections_and_labels(bool)':
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: error: '%ld' directive writing between 1 and 10 bytes into a region of size 9 [-Werror=format-overflow=]
> init_sections_and_labels (bool early_lto_debug)
> ^~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: note: directive argument in the range [0, 4294967295]
> In file included from ./tm.h:21:0,
> from /var/gcc/src/hg/trunk/local/gcc/target.h:52,
> from /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:61:
> /var/gcc/src/hg/trunk/local/gcc/config/darwin.h:759:15: note: 'sprintf' output between 23 and 32 bytes into a destination of size 30
> sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)); \
> ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27210:4: note: in expansion of macro 'ASM_GENERATE_INTERNAL_LABEL'
> ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_line_section_label,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: error: '%ld' directive writing between 1 and 10 bytes into a region of size 7 [-Werror=format-overflow=]
> init_sections_and_labels (bool early_lto_debug)
> ^~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: note: directive argument in the range [0, 4294967295]
> In file included from ./tm.h:21:0,
> from /var/gcc/src/hg/trunk/local/gcc/target.h:52,
> from /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:61:
> /var/gcc/src/hg/trunk/local/gcc/config/darwin.h:759:15: note: 'sprintf' output between 25 and 34 bytes into a destination of size 30
> sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)); \
> ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27229:4: note: in expansion of macro 'ASM_GENERATE_INTERNAL_LABEL'
> ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_abbrev_section_label,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: error: '%ld' directive writing between 1 and 10 bytes into a region of size 9 [-Werror=format-overflow=]
> init_sections_and_labels (bool early_lto_debug)
> ^~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: note: directive argument in the range [0, 4294967295]
> In file included from ./tm.h:21:0,
> from /var/gcc/src/hg/trunk/local/gcc/target.h:52,
> from /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:61:
> /var/gcc/src/hg/trunk/local/gcc/config/darwin.h:759:15: note: 'sprintf' output between 23 and 32 bytes into a destination of size 30
> sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)); \
> ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27238:4: note: in expansion of macro 'ASM_GENERATE_INTERNAL_LABEL'
> ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_line_section_label,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: error: '%ld' directive writing between 1 and 10 bytes into a region of size 9 [-Werror=format-overflow=]
> init_sections_and_labels (bool early_lto_debug)
> ^~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: note: directive argument in the range [0, 4294967295]
> In file included from ./tm.h:21:0,
> from /var/gcc/src/hg/trunk/local/gcc/target.h:52,
> from /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:61:
> /var/gcc/src/hg/trunk/local/gcc/config/darwin.h:759:15: note: 'sprintf' output between 23 and 32 bytes into a destination of size 30
> sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)); \
> ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27245:4: note: in expansion of macro 'ASM_GENERATE_INTERNAL_LABEL'
> ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_info_section_label,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: error: '%ld' directive writing between 1 and 10 bytes into a region of size 7 [-Werror=format-overflow=]
> init_sections_and_labels (bool early_lto_debug)
> ^~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: note: directive argument in the range [0, 4294967295]
> In file included from ./tm.h:21:0,
> from /var/gcc/src/hg/trunk/local/gcc/target.h:52,
> from /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:61:
> /var/gcc/src/hg/trunk/local/gcc/config/darwin.h:759:15: note: 'sprintf' output between 25 and 34 bytes into a destination of size 30
> sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)); \
> ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27290:4: note: in expansion of macro 'ASM_GENERATE_INTERNAL_LABEL'
> ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_abbrev_section_label,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: error: '%ld' directive writing between 1 and 10 bytes into a region of size 9 [-Werror=format-overflow=]
> init_sections_and_labels (bool early_lto_debug)
> ^~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: note: directive argument in the range [0, 4294967295]
> In file included from ./tm.h:21:0,
> from /var/gcc/src/hg/trunk/local/gcc/target.h:52,
> from /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:61:
> /var/gcc/src/hg/trunk/local/gcc/config/darwin.h:759:15: note: 'sprintf' output between 23 and 32 bytes into a destination of size 30
> sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)); \
> ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27300:4: note: in expansion of macro 'ASM_GENERATE_INTERNAL_LABEL'
> ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_line_section_label,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: error: '%ld' directive writing between 1 and 10 bytes into a region of size 9 [-Werror=format-overflow=]
> init_sections_and_labels (bool early_lto_debug)
> ^~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27184:1: note: directive argument in the range [0, 4294967295]
> In file included from ./tm.h:21:0,
> from /var/gcc/src/hg/trunk/local/gcc/target.h:52,
> from /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:61:
> /var/gcc/src/hg/trunk/local/gcc/config/darwin.h:759:15: note: 'sprintf' output between 23 and 32 bytes into a destination of size 30
> sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM)); \
> ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /var/gcc/src/hg/trunk/local/gcc/dwarf2out.c:27306:4: note: in expansion of macro 'ASM_GENERATE_INTERNAL_LABEL'
> ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_info_section_label,
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> I hacked around this using the following patch:
Yeah, Uros fixed that already in exactly the same way. Wonder how it
didn't warn on x86_64 and why there isn't a target specific define
on how much ASM_GENERATE_INTERNAL_LABEL adds to whatever prefix
the caller chooses.
Richard.