[lfs-dev] Build method revisions

Pierre Labastie pierre.labastie at neuf.fr
Sat Mar 17 15:53:57 PDT 2012


Le 16/03/2012 07:45, Bryan Kadzban a écrit :
> Pierre Labastie wrote:
>> Le 15/03/2012 04:32, Bryan Kadzban a écrit :
>>> This may have been covered in this thread already, but I don't
>>> recall anymore -- did you do an ICA run with this change?
>> I have not taken the time to directly compare the results of the
>> current and revised build methods.
Now I have done it, but I do not fully understand what is going on.
The comparison between current build and Jeremy's is done in ICA style:
First remove all symlinks,
Then extract archives into a directory with the same name
Then stripping ".o" files from debug symbols
and all other binary files from all symbols
Then diffing the directories.
Here is the result (skipping obvious difference due to times stamps
or random bits used in groff documentation or differences in info/dir):
ASCII FILES diff:
-----------------------------------------------------------------------------------------------------
diff -ur LFS-TEST.TRUNK/usr/lib/libgmpxx.la 
LFS-TEST.SYSROOT/usr/lib/libgmpxx.la
--- LFS-TEST.TRUNK/usr/lib/libgmpxx.la  2012-03-17 15:27:52.000000000 +0100
+++ LFS-TEST.SYSROOT/usr/lib/libgmpxx.la        2012-03-17 
16:28:39.000000000 +0100
@@ -17,7 +17,7 @@
  inherited_linker_flags=''

  # Libraries that this one depends upon.
-dependency_libs=' /usr/lib/libgmp.la /usr/lib/libstdc++.la'
+dependency_libs=' /usr/lib/libgmp.la /usr/lib/../lib64/libstdc++.la'

  # Names of additional weak libraries provided by this library
  weak_library_names=''
diff -ur LFS-TEST.TRUNK/usr/lib/libmpc.la LFS-TEST.SYSROOT/usr/lib/libmpc.la
--- LFS-TEST.TRUNK/usr/lib/libmpc.la    2012-03-17 15:28:22.000000000 +0100
+++ LFS-TEST.SYSROOT/usr/lib/libmpc.la  2012-03-17 16:29:09.000000000 +0100
@@ -17,7 +17,7 @@
  inherited_linker_flags=''

  # Libraries that this one depends upon.
-dependency_libs=' /usr/lib/libmpfr.la /usr/lib/libgmp.la -lm'
+dependency_libs=' /usr/lib/libmpfr.la /usr/lib/libgmp.la 
/usr/lib/libgmp.la -lm'

  # Names of additional weak libraries provided by this library
  weak_library_names=''
---------------------------------------------------------------------------------------------------
For binary files, I only list files for which readelf -a or objdump -x 
-s differ.
First, all the grub modules differ:
Binary files LFS-TEST.TRUNK/usr/lib/grub/i386-pc/acpi.mod and 
LFS-TEST.SYSROOT/usr/lib/grub/i386-pc/acpi.mod differ
Binary files LFS-TEST.TRUNK/usr/lib/grub/i386-pc/affs.mod and 
LFS-TEST.SYSROOT/usr/lib/grub/i386-pc/affs.mod differ
Binary files LFS-TEST.TRUNK/usr/lib/grub/i386-pc/afs.mod and 
LFS-TEST.SYSROOT/usr/lib/grub/i386-pc/afs.mod differ
and so on.
A diff of objdump -x -s results give:
diff -u acpi.mod.TRUNK acpi.mod.SYSROOT
--- acpi.mod.TRUNK      2012-03-17 18:30:01.000000000 +0100
+++ acpi.mod.SYSROOT    2012-03-17 18:29:50.000000000 +0100
@@ -1,6 +1,6 @@

-LFS-TEST.TRUNK/usr/lib/grub/i386-pc/acpi.mod:     file format elf32-i386
-LFS-TEST.TRUNK/usr/lib/grub/i386-pc/acpi.mod
+LFS-TEST.SYSROOT/usr/lib/grub/i386-pc/acpi.mod:     file format elf32-i386
+LFS-TEST.SYSROOT/usr/lib/grub/i386-pc/acpi.mod
  architecture: i386, flags 0x00000000:

  start address 0x00000000
@@ -9,17 +9,17 @@
  Idx Name          Size      VMA       LMA       File off  Algn
    0 .text         00001030  00000000  00000000  00000034  2**2
                    CONTENTS, ALLOC, LOAD, READONLY, CODE
-  1 .rel.text     00000000  00000000  00000000  00001da0  2**2
+  1 .rel.text     00000000  00000000  00000000  00001064  2**2
                    CONTENTS, READONLY
    2 .rodata       00000108  00000000  00000000  00001064  2**2
                    CONTENTS, ALLOC, LOAD, READONLY, DATA
-  3 .rel.rodata   00000000  00000000  00000000  00001da0  2**2
+  3 .rel.rodata   00000000  00000000  00000000  0000116c  2**2
                    CONTENTS, READONLY
    4 .rodata.str1.1 0000054b  00000000  00000000  0000116c  2**0
                    CONTENTS, ALLOC, LOAD, READONLY, DATA
    5 .eh_frame     000003f4  00000000  00000000  000016b8  2**2
                    CONTENTS, ALLOC, LOAD, READONLY, DATA
-  6 .rel.eh_frame 00000000  00000000  00000000  00001da0  2**2
+  6 .rel.eh_frame 00000000  00000000  00000000  00001aac  2**2
                    CONTENTS, READONLY
    7 .data         00000000  00000000  00000000  00001aac  2**2
                    CONTENTS, ALLOC, LOAD, DATA

I seems that relocation data is at the end of the file in the TRUNK case
while they follow the relevant section in the SYSROOT case. I cannot say 
why...

Then some of the archives (libc_nonshared, libpthread_nonshared) 
installed by glibc contain
".oS" files, which have the same type of differences (relocation data
at the end of the file or of the section for TRUNK or SYSROOT respectively).

Then libgmpxx.so.4.2.4 has and rpath of /usr/lib/../lib64 in the SYSROOT 
case
while it has no rpath in the TRUNK case: same problem as between the first
and second build of ICA in the TRUNK case. Means the sysroot case
builds chapter 6 closer to a second TRUNK build.
At last, /var/cache/ldconfig/aux-cache differs, but not ld.so.cache.

I am not sure I fully understand this story of relocation data...

Regards
Pierre



More information about the lfs-dev mailing list