diff mbox series

bitbake.conf: Add -fcanon-prefix-map to DEBUG_PREFIX_MAP

Message ID 20230428032030.2047920-1-raj.khem@gmail.com
State Accepted, archived
Commit abe97fa74b10c2c71d79bc3573d4edb509b111f5
Headers show
Series bitbake.conf: Add -fcanon-prefix-map to DEBUG_PREFIX_MAP | expand

Commit Message

Khem Raj April 28, 2023, 3:20 a.m. UTC
This should help canonicalize the relative paths and symlinks
during cross compile, -fcanon-prefix-map is newly added in gcc-13+ [1]

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108464#c8
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/conf/bitbake.conf | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Martin Jansa April 28, 2023, 11:17 a.m. UTC | #1
Do you already have a follow-up change for meta-clang which seems to be
broken by this change?

clang-16: error: unknown argument: '-fcanon-prefix-map'

On Fri, Apr 28, 2023 at 5:20 AM Khem Raj <raj.khem@gmail.com> wrote:

> This should help canonicalize the relative paths and symlinks
> during cross compile, -fcanon-prefix-map is newly added in gcc-13+ [1]
>
> [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108464#c8
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  meta/conf/bitbake.conf | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index d94ffe1df9..453bef37a9 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -644,7 +644,8 @@ EXTRA_OEMAKE:prepend:task-install =
> "${PARALLEL_MAKEINST} "
>  # Optimization flags.
>  ##################################################################
>  # Beware: applied last to first
> -DEBUG_PREFIX_MAP ?=
> "-fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> +DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \
> + -fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>   -fdebug-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>   -fmacro-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>   -fdebug-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> --
> 2.40.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#180504):
> https://lists.openembedded.org/g/openembedded-core/message/180504
> Mute This Topic: https://lists.openembedded.org/mt/98551742/3617156
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> Martin.Jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Khem Raj April 28, 2023, 1:44 p.m. UTC | #2
On Fri, Apr 28, 2023 at 4:18 AM Martin Jansa <Martin.Jansa@gmail.com> wrote:
>
> Do you already have a follow-up change for meta-clang which seems to be broken by this change?
>
> clang-16: error: unknown argument: '-fcanon-prefix-map'
>
yes
https://github.com/kraj/meta-clang/pull/782

> On Fri, Apr 28, 2023 at 5:20 AM Khem Raj <raj.khem@gmail.com> wrote:
>>
>> This should help canonicalize the relative paths and symlinks
>> during cross compile, -fcanon-prefix-map is newly added in gcc-13+ [1]
>>
>> [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108464#c8
>> Signed-off-by: Khem Raj <raj.khem@gmail.com>
>> ---
>>  meta/conf/bitbake.conf | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
>> index d94ffe1df9..453bef37a9 100644
>> --- a/meta/conf/bitbake.conf
>> +++ b/meta/conf/bitbake.conf
>> @@ -644,7 +644,8 @@ EXTRA_OEMAKE:prepend:task-install = "${PARALLEL_MAKEINST} "
>>  # Optimization flags.
>>  ##################################################################
>>  # Beware: applied last to first
>> -DEBUG_PREFIX_MAP ?= "-fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>> +DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \
>> + -fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>>   -fdebug-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>>   -fmacro-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>>   -fdebug-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>> --
>> 2.40.1
>>
>>
>>
>>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#180526): https://lists.openembedded.org/g/openembedded-core/message/180526
> Mute This Topic: https://lists.openembedded.org/mt/98551742/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Jacob Kroon May 27, 2023, 5:27 a.m. UTC | #3
On 4/28/23 05:20, Khem Raj wrote:
> This should help canonicalize the relative paths and symlinks
> during cross compile, -fcanon-prefix-map is newly added in gcc-13+ [1]
> 
> [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108464#c8
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>   meta/conf/bitbake.conf | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index d94ffe1df9..453bef37a9 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -644,7 +644,8 @@ EXTRA_OEMAKE:prepend:task-install = "${PARALLEL_MAKEINST} "
>   # Optimization flags.
>   ##################################################################
>   # Beware: applied last to first
> -DEBUG_PREFIX_MAP ?= "-fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> +DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \
> + -fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>    -fdebug-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>    -fmacro-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
>    -fdebug-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> 

Maybe we can take the opportunity to also cleanup DEBUG_PREFIX_MAP by 
replacing debug/macro/canon with a single -ffile-prefix-map ?

 From the gcc 13.1.1 manpage:

> -ffile-prefix-map=old=new
>            When compiling files residing in directory old, record any references to them in the result of the
>            compilation as if the files resided in directory new instead.  Specifying this option is equivalent to
>            specifying all the individual -f*-prefix-map options.  This can be used to make reproducible builds
>            that are location independent.  Directories referenced by directives are not affected by these options.
>            See also -fmacro-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map and -fcanon-prefix-map.

Jacob
Khem Raj May 27, 2023, 7:50 a.m. UTC | #4
On Fri, May 26, 2023 at 10:27 PM Jacob Kroon <jacob.kroon@gmail.com> wrote:
>
> On 4/28/23 05:20, Khem Raj wrote:
> > This should help canonicalize the relative paths and symlinks
> > during cross compile, -fcanon-prefix-map is newly added in gcc-13+ [1]
> >
> > [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108464#c8
> > Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > ---
> >   meta/conf/bitbake.conf | 3 ++-
> >   1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> > index d94ffe1df9..453bef37a9 100644
> > --- a/meta/conf/bitbake.conf
> > +++ b/meta/conf/bitbake.conf
> > @@ -644,7 +644,8 @@ EXTRA_OEMAKE:prepend:task-install = "${PARALLEL_MAKEINST} "
> >   # Optimization flags.
> >   ##################################################################
> >   # Beware: applied last to first
> > -DEBUG_PREFIX_MAP ?= "-fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> > +DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \
> > + -fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> >    -fdebug-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> >    -fmacro-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> >    -fdebug-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> >
>
> Maybe we can take the opportunity to also cleanup DEBUG_PREFIX_MAP by
> replacing debug/macro/canon with a single -ffile-prefix-map ?

Yes, somewhere I had such a patch and I dropped it from my queue IIRC
it was for clang alone maybe
but it is not a simple replacement, we have to adjust
some recipes to this option,

>
>  From the gcc 13.1.1 manpage:
>
> > -ffile-prefix-map=old=new
> >            When compiling files residing in directory old, record any references to them in the result of the
> >            compilation as if the files resided in directory new instead.  Specifying this option is equivalent to
> >            specifying all the individual -f*-prefix-map options.  This can be used to make reproducible builds
> >            that are location independent.  Directories referenced by directives are not affected by these options.
> >            See also -fmacro-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map and -fcanon-prefix-map.
>
> Jacob
Richard Purdie May 27, 2023, 8:16 a.m. UTC | #5
On Sat, 2023-05-27 at 07:27 +0200, Jacob Kroon wrote:
> On 4/28/23 05:20, Khem Raj wrote:
> > This should help canonicalize the relative paths and symlinks
> > during cross compile, -fcanon-prefix-map is newly added in gcc-13+ [1]
> > 
> > [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108464#c8
> > Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > ---
> >   meta/conf/bitbake.conf | 3 ++-
> >   1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> > index d94ffe1df9..453bef37a9 100644
> > --- a/meta/conf/bitbake.conf
> > +++ b/meta/conf/bitbake.conf
> > @@ -644,7 +644,8 @@ EXTRA_OEMAKE:prepend:task-install = "${PARALLEL_MAKEINST} "
> >   # Optimization flags.
> >   ##################################################################
> >   # Beware: applied last to first
> > -DEBUG_PREFIX_MAP ?= "-fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> > +DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \
> > + -fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> >    -fdebug-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> >    -fmacro-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> >    -fdebug-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
> > 
> 
> Maybe we can take the opportunity to also cleanup DEBUG_PREFIX_MAP by 
> replacing debug/macro/canon with a single -ffile-prefix-map ?
> 
>  From the gcc 13.1.1 manpage:
> 
> > -ffile-prefix-map=old=new
> >            When compiling files residing in directory old, record any references to them in the result of the
> >            compilation as if the files resided in directory new instead.  Specifying this option is equivalent to
> >            specifying all the individual -f*-prefix-map options.  This can be used to make reproducible builds
> >            that are location independent.  Directories referenced by directives are not affected by these options.
> >            See also -fmacro-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map and -fcanon-prefix-map.
> 

Sadly not, I'd wondered about this too and tried it fairly recently.

From memory, the issue is that there are tools which only accept one of
these (binutils as maybe?) and if we switch, we lose some set of the
prefix mapping which causes build reproducible issues.

I'd love to do it but only once it doesn't break things. It may be
possible to pass in different options to the different tools but at
that point it started looking too complex for the time I had available
to test.

Cheers,

Richard
diff mbox series

Patch

diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index d94ffe1df9..453bef37a9 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -644,7 +644,8 @@  EXTRA_OEMAKE:prepend:task-install = "${PARALLEL_MAKEINST} "
 # Optimization flags.
 ##################################################################
 # Beware: applied last to first
-DEBUG_PREFIX_MAP ?= "-fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
+DEBUG_PREFIX_MAP ?= "-fcanon-prefix-map \
+ -fmacro-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
  -fdebug-prefix-map=${S}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
  -fmacro-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
  -fdebug-prefix-map=${B}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \