[Bug 248516] elftoolchain error when building linux_vdso.so with llvm objcopy
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Fri Aug 7 13:01:18 UTC 2020
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=248516
Bug ID: 248516
Summary: elftoolchain error when building linux_vdso.so with
llvm objcopy
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: kern
Assignee: bugs at FreeBSD.org
Reporter: arichardson at FreeBSD.org
I am seeing "strip: gelf_getshdr failed: Invalid argument"
when building linux_vdso.so (compiled with upstream clang 10 and using
llvm-objcopy).
I am not sure if this is a problem with llvm-objcopy 10 or whether we should be
passing different flags (llvm-objcopy has a --strip-all-gnu flag that produces
compatible output).
Since we invoke strip afterwards so I'm not sure if the -S flag is needed at
all.
Whatever we choose to do, I don't think elftoolchain strip should be rejecting
the file produced by llvm-objcopy?
It works just fine if I use `/usr/local/opt/llvm/bin/llvm-strip -N
_binary_linux_locore_o_size vdso.llvm-objcopy.so`, but using elftoolchain strip
gives me the error
--- vdso.elftoolchain-objcopy.so
+++ vdso.llvm-objcopy.so
├── greadelf --wide --file-header {}
│ @@ -6,15 +6,15 @@
│ OS/ABI: UNIX - System V
│ ABI Version: 0
│ Type: REL (Relocatable file)
│ Machine: Advanced Micro Devices X86-64
│ Version: 0x1
│ Entry point address: 0x0
│ Start of program headers: 0 (bytes into file)
│ - Start of section headers: 3352 (bytes into file)
│ + Start of section headers: 3328 (bytes into file)
│ Flags: 0x0
│ Size of this header: 64 (bytes)
│ Size of program headers: 0 (bytes)
│ Number of program headers: 0
│ Size of section headers: 64 (bytes)
│ - Number of section headers: 5
│ - Section header string table index: 2
│ + Number of section headers: 3
│ + Section header string table index: 1
├── greadelf --wide --sections {}
│ @@ -1,14 +1,12 @@
│ -There are 5 section headers, starting at offset 0xd18:
│ +There are 3 section headers, starting at offset 0xd00:
│
│ Section Headers:
│ [Nr] Name Type Address Off Size ES
Flg Lk Inf Al
│ [ 0] NULL 0000000000000000 000000 000000 00
0 0 0
│ - [ 1] .data PROGBITS 0000000000000000 000040 000cb0 00
WA 0 0 1
│ - [ 2] .shstrtab STRTAB 0000000000000000 000cf0 000022 00
0 0 1
│ - [ 3] .symtab SYMTAB 0000000000000000 000e58 000078 18
4 2 8
│ - [ 4] .strtab STRTAB 0000000000000000 000ed0 000055 00
0 0 1
│ + [ 1] .strtab STRTAB 0000000000000000 000040 00000f 00
0 0 1
│ + [ 2] .data PROGBITS 0000000000000000 00004f 000cb0 00
WA 0 0 1
│ Key to Flags:
│ W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
│ L (link order), O (extra OS processing required), G (group), T (TLS),
│ C (compressed), x (unknown), o (OS specific), E (exclude),
│ l (large), p (processor specific)
├── greadelf --wide --symbols {}
│ @@ -1,8 +0,0 @@
│ -
│ -Symbol table '.symtab' contains 5 entries:
│ - Num: Value Size Type Bind Vis Ndx Name
│ - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
│ - 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1
│ - 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 1
_binary_linux_locore_o_start
│ - 3: 0000000000000cb0 0 NOTYPE GLOBAL DEFAULT 1
_binary_linux_locore_o_end
│ - 4: 0000000000000cb0 0 NOTYPE GLOBAL DEFAULT ABS
_binary_linux_locore_o_size
├── strings --all --bytes=8 {}
│ @@ -24,11 +24,7 @@
│ __vdso_gettimeofday
│ __vdso_time
│ clock_gettime
│ gettimeofday
│ linux_platform
│ linux_rt_sigcode
│ _DYNAMIC
│ -.shstrtab
│ -_binary_linux_locore_o_start
│ -_binary_linux_locore_o_end
│ -_binary_linux_locore_o_size
├── greadelf --wide --decompress --hex-dump=.strtab {}
│ @@ -1,9 +1,4 @@
│
│ Hex dump of section '.strtab':
│ - 0x00000000 005f6269 6e617279 5f6c696e 75785f6c ._binary_linux_l
│ - 0x00000010 6f636f72 655f6f5f 73746172 74005f62 ocore_o_start._b
│ - 0x00000020 696e6172 795f6c69 6e75785f 6c6f636f inary_linux_loco
│ - 0x00000030 72655f6f 5f656e64 005f6269 6e617279 re_o_end._binary
│ - 0x00000040 5f6c696e 75785f6c 6f636f72 655f6f5f _linux_locore_o_
│ - 0x00000050 73697a65 00 size.
│ + 0x00000000 002e7374 72746162 002e6461 746100 ..strtab..data.
LLVM objcopy with --strip-all-gnu
--- vdso.elftoolchain-objcopy.so
+++ vdso.llvm-objcopy-strip-all-gnu.so
├── greadelf --wide --file-header {}
│ @@ -6,15 +6,15 @@
│ OS/ABI: UNIX - System V
│ ABI Version: 0
│ Type: REL (Relocatable file)
│ Machine: Advanced Micro Devices X86-64
│ Version: 0x1
│ Entry point address: 0x0
│ Start of program headers: 0 (bytes into file)
│ - Start of section headers: 3352 (bytes into file)
│ + Start of section headers: 3328 (bytes into file)
│ Flags: 0x0
│ Size of this header: 64 (bytes)
│ Size of program headers: 0 (bytes)
│ Number of program headers: 0
│ Size of section headers: 64 (bytes)
│ - Number of section headers: 5
│ - Section header string table index: 2
│ + Number of section headers: 3
│ + Section header string table index: 1
├── greadelf --wide --sections {}
│ @@ -1,14 +1,12 @@
│ -There are 5 section headers, starting at offset 0xd18:
│ +There are 3 section headers, starting at offset 0xd00:
│
│ Section Headers:
│ [Nr] Name Type Address Off Size ES
Flg Lk Inf Al
│ [ 0] NULL 0000000000000000 000000 000000 00
0 0 0
│ - [ 1] .data PROGBITS 0000000000000000 000040 000cb0 00
WA 0 0 1
│ - [ 2] .shstrtab STRTAB 0000000000000000 000cf0 000022 00
0 0 1
│ - [ 3] .symtab SYMTAB 0000000000000000 000e58 000078 18
4 2 8
│ - [ 4] .strtab STRTAB 0000000000000000 000ed0 000055 00
0 0 1
│ + [ 1] .strtab STRTAB 0000000000000000 000040 00000f 00
0 0 1
│ + [ 2] .data PROGBITS 0000000000000000 00004f 000cb0 00
WA 0 0 1
│ Key to Flags:
│ W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
│ L (link order), O (extra OS processing required), G (group), T (TLS),
│ C (compressed), x (unknown), o (OS specific), E (exclude),
│ l (large), p (processor specific)
├── greadelf --wide --symbols {}
│ @@ -1,8 +0,0 @@
│ -
│ -Symbol table '.symtab' contains 5 entries:
│ - Num: Value Size Type Bind Vis Ndx Name
│ - 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
│ - 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1
│ - 2: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 1
_binary_linux_locore_o_start
│ - 3: 0000000000000cb0 0 NOTYPE GLOBAL DEFAULT 1
_binary_linux_locore_o_end
│ - 4: 0000000000000cb0 0 NOTYPE GLOBAL DEFAULT ABS
_binary_linux_locore_o_size
├── strings --all --bytes=8 {}
│ @@ -24,11 +24,7 @@
│ __vdso_gettimeofday
│ __vdso_time
│ clock_gettime
│ gettimeofday
│ linux_platform
│ linux_rt_sigcode
│ _DYNAMIC
│ -.shstrtab
│ -_binary_linux_locore_o_start
│ -_binary_linux_locore_o_end
│ -_binary_linux_locore_o_size
├── greadelf --wide --decompress --hex-dump=.strtab {}
│ @@ -1,9 +1,4 @@
│
│ Hex dump of section '.strtab':
│ - 0x00000000 005f6269 6e617279 5f6c696e 75785f6c ._binary_linux_l
│ - 0x00000010 6f636f72 655f6f5f 73746172 74005f62 ocore_o_start._b
│ - 0x00000020 696e6172 795f6c69 6e75785f 6c6f636f inary_linux_loco
│ - 0x00000030 72655f6f 5f656e64 005f6269 6e617279 re_o_end._binary
│ - 0x00000040 5f6c696e 75785f6c 6f636f72 655f6f5f _linux_locore_o_
│ - 0x00000050 73697a65 00 size.
│ + 0x00000000 002e7374 72746162 002e6461 746100 ..strtab..data.
GNU objcopy output:
--- vdso.elftoolchain-objcopy.so
+++ vdso.gnu-objcopy.so
├── greadelf --wide --file-header {}
│ @@ -6,15 +6,15 @@
│ OS/ABI: UNIX - System V
│ ABI Version: 0
│ Type: REL (Relocatable file)
│ Machine: Advanced Micro Devices X86-64
│ Version: 0x1
│ Entry point address: 0x0
│ Start of program headers: 0 (bytes into file)
│ - Start of section headers: 3352 (bytes into file)
│ + Start of section headers: 3552 (bytes into file)
│ Flags: 0x0
│ Size of this header: 64 (bytes)
│ Size of program headers: 0 (bytes)
│ Number of program headers: 0
│ Size of section headers: 64 (bytes)
│ Number of section headers: 5
│ - Section header string table index: 2
│ + Section header string table index: 4
├── greadelf --wide --sections {}
│ @@ -1,14 +1,14 @@
│ -There are 5 section headers, starting at offset 0xd18:
│ +There are 5 section headers, starting at offset 0xde0:
│
│ Section Headers:
│ [Nr] Name Type Address Off Size ES
Flg Lk Inf Al
│ [ 0] NULL 0000000000000000 000000 000000 00
0 0 0
│ [ 1] .data PROGBITS 0000000000000000 000040 000cb0 00
WA 0 0 1
│ - [ 2] .shstrtab STRTAB 0000000000000000 000cf0 000022 00
0 0 1
│ - [ 3] .symtab SYMTAB 0000000000000000 000e58 000078 18
4 2 8
│ - [ 4] .strtab STRTAB 0000000000000000 000ed0 000055 00
0 0 1
│ + [ 2] .symtab SYMTAB 0000000000000000 000cf0 000078 18
3 2 8
│ + [ 3] .strtab STRTAB 0000000000000000 000d68 000055 00
0 0 1
│ + [ 4] .shstrtab STRTAB 0000000000000000 000dbd 000021 00
0 0 1
│ Key to Flags:
│ W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
│ L (link order), O (extra OS processing required), G (group), T (TLS),
│ C (compressed), x (unknown), o (OS specific), E (exclude),
│ l (large), p (processor specific)
├── strings --all --bytes=8 {}
│ @@ -24,11 +24,11 @@
│ __vdso_gettimeofday
│ __vdso_time
│ clock_gettime
│ gettimeofday
│ linux_platform
│ linux_rt_sigcode
│ _DYNAMIC
│ -.shstrtab
│ _binary_linux_locore_o_start
│ _binary_linux_locore_o_end
│ _binary_linux_locore_o_size
│ +.shstrtab
├── greadelf --wide --decompress --hex-dump=.shstrtab {}
│ @@ -1,6 +1,6 @@
│
│ Hex dump of section '.shstrtab':
│ - 0x00000000 00002e73 796d7461 62002e73 74727461 ...symtab..strta
│ - 0x00000010 62002e73 68737472 74616200 2e646174 b..shstrtab..dat
│ - 0x00000020 6100 a.
│ + 0x00000000 002e7379 6d746162 002e7374 72746162 ..symtab..strtab
│ + 0x00000010 002e7368 73747274 6162002e 64617461 ..shstrtab..data
│ + 0x00000020 00 .
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list