On 2019-03-25 18:12 +0100, Pierre Labastie via lfs-dev wrote:
> On 25/03/2019 16:05, Bruce Dubbs via lfs-dev wrote:
> > On 3/25/19 8:12 AM, Pierre Labastie via lfs-dev wrote:
> > > On 25/03/2019 10:34, Xi Ruoyao via lfs-dev wrote:
> > > > On 2019-03-24 12:49 -0500, Bruce Dubbs via lfs-dev wrote:
> > > > > On 3/24/19 12:20 PM, Xi Ruoyao via lfs-dev wrote:
> > > > > > In r11250 DJ introduced several symlinks and GCC -isystem options 
> > > > > > for Glibc
> > > > > > so
> > > > > > it will use the final system location of system headers. When I 
> > > > > > was poking
> > > > > > around Debian package build processes I found they were using 
> > > > > > -ffile-prefix-
> > > > > > map
> > > > > > to complete this goal.
> > > > > > 
> > > > > > This has serveral advantages:
> > > > > > 
> > > > > > 1. The instruction is simpler.
> > > > > > 2. No risk of forgetting to remove the symlinks.
> > > > > > 3. No /usr/include/limits.h issue.
> > > > > > 
> > > > > > Is this OK to be commited into the trunk?
> > > > > It looks OK to me.  Go ahead.  After you do, I will do a complete 
> > > > > build
> > > > > and double check.  I wan tot update the kernel and iproute anyway.
> > > > Commited at r11560. 
> > 
> > The commit did not go to the list.  It should be fixed now.
> > 
> > Just built a new LFS (overwriting my old LFS 8.1)
> > > > to make
> > > > sure it works.
> > > > 
> > > > Strange thing:  both methods (-isystem and -ffile-prefix-map) still 
> > > > left a few
> > > > paths beginning with /tools/include.  Open libc.so with vim, search 
> > > > "/tools",
> > > > then we can see them.  I'm not sure why.
> > > I'm not sure either, but, according to the doc, the mapping is done
> > > in very specific cases:
> > > - first, it is when compiling a file _residing_ in the old directory 
> > > (here, /tools).
> > >    Then any reference to the old directory is replaced by the new 
> > > directory
> > >    (here, /usr) in the _result_ of the compilation.
> > > - second, only two types of substitutions are made: (i) in debugging 
> > > information,
> > >    and (ii) when processing the "__FILE__" and "__BASE_FILE" macros, 
> > > and  also
> > >    "__builtin_FILE()" function during compilation.
> > > 
> > > So it seems that any other reference to /tools is likely to remain, 
> > > in particular,
> > > if a function whose source resides outside /tools, somehow references 
> > > /tools
> > 
> > What I found in an 8.4 build in libc-2.29.so.dbg is:
> > 
> > ./../../libgcc^@/mnt/lfs/sources/gcc-8.2.0/build/gcc/include^@
> > /tools/include/bits^@
> > /tools/include/bits/types^@
> > /tools/include^@
> > ../../../libgcc/../include^@
> > ../.././gcc^@
> > ../../../libgcc/../gcc/config/i386^@^@
> > libgcc2.c^@
> > ^A^@^@
> > stddef.h^@^B^@^@
> > types.h^@^C^@^@
> > struct_FILE.h^@^D^@^@
> > FILE.h^@^D^@^@
> > stdio.h^@^E^@^@
> > sys_errlist.h^@^C^@^@
> > errno.h^@^E^@^@
> > unistd.h^@^E^@^@
> > getopt_core.h^@^C^@^@
> > time.h^@^E^@^@
> > hashtab.h^@^F^@^@
> > insn-constants.h^@^G^@^@
> > i386.h^@^H^@^@
> > i386-opts.h^@^H^@^@
> > libgcc2.h^@
> > 
> > Where ^@ is the null character.  There were no reference to tools in 
> > libc-2.29.so.
> > 
> > It looks like that retains some of the build characteristics for 
> > debugging only.
> > 
> > 

/tools/include/bits
/tools/include/bits/types
/tools/include

Yes, these three paths are preserved.  I didn't strip libc.so so I can find them
in libc.so.

> Hmm, had you stripped the debug symbols at the end of chapter 5? I can't 
> understand how glibc in chapter 6 could know the /mnt/lfs/sources/... 
> directory. So it looks like a leftover from libgcc. I may be wrong, though.

I didn't.  I should try it next time.

I also believe it's a leftover from libgcc.  But I ran to /tools/lib/gcc/x86_64-
pc-linux-gnu and searched for a while with no result.

> To Xi Ruoyao: I did not mean that the new method is worse than the 
> previous. I just tried to find an explanation. Using gcc new options is 
> the way to go, if they do what we want...

I'm just puzzled why the previous method also leaves these three paths.  If the
previous method was better I could accept this fact :).

I've kept my libc build in /source.  It seems only libc.so and ld-2.29.so have
paths containing /tools.  And, I think they both picked up these paths from
librtld.os.  I can find the paths in librtld.os but then I can _not_ find them
in dependencies of librtld.os.  But they can't just arise from nowhere...

Go to sleep and will investigate this tomorrow...
-- 
Xi Ruoyao <xry...@mengyan1223.wang>
School of Aerospace Science and Technology, Xidian University

-- 
http://lists.linuxfromscratch.org/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to