public inbox for glibc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug libc/28857] New: FAIL: elf/tst-audit24a @ 2022-02-03 14:25 danglin at gcc dot gnu.org 2022-02-03 20:17 ` [Bug libc/28857] " adhemerval.zanella at linaro dot org ` (9 more replies) 0 siblings, 10 replies; 11+ messages in thread From: danglin at gcc dot gnu.org @ 2022-02-03 14:25 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 Bug ID: 28857 Summary: FAIL: elf/tst-audit24a Product: glibc Version: 2.35 Status: NEW Severity: normal Priority: P2 Component: libc Assignee: unassigned at sourceware dot org Reporter: danglin at gcc dot gnu.org CC: drepper.fsp at gmail dot com Target Milestone: --- Host: hppa*-*-linux* Target: hppa*-*-linux* Build: hppa*-*-linux* As of commit 6c33b018438ee799c29486f21d43d8100bdbd597 plus Adhemerval Zanella's patch for tst-spawn6, we have the following new test fails on hppa: FAIL: elf/tst-audit24a FAIL: elf/tst-audit24b FAIL: elf/tst-audit24c FAIL: elf/tst-audit24d FAIL: elf/tst-audit25a FAIL: elf/tst-audit25b elf/tst-audit24a.out: Didn't expect signal from child: got `Segmentation fault' elf/tst-audit24b.out: Didn't expect signal from child: got `Segmentation fault' elf/tst-audit24c.out: No output. elf/tst-audit24d.out: No output. elf/tst-audit25a.out: tst-audit25a.c:93: error: string comparison failed left string: 231 bytes right string: 216 bytes left (evaluated from result.err.buffer): "la_symbind: 1\nla_symbind: tst_audit25mod3_func1 1\nla_symbind: tst_audit25mod1_func1 0\nla_symbind: tst_audit25mod1_func2 0\nla_symbind: tst_audit25mod2_func1 0\nla_symbind: tst_audit25mod4_func1 0\nla_symbind: tst_audit25mod2_func2 0\n" 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 33 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 31 20 30 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 32 20 30 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 31 20 30 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 34 5F 66 75 6E 63 31 20 30 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 32 20 30 0A right (evaluated from "la_symbind: tst_audit25mod3_func1 1\n" "la_symbind: tst_audit25mod1_func1 0\n" "la_symbind: tst_audit25mod1_func2 0\n" "la_symbind: tst_audit25mod2_func1 0\n" "la_symbind: tst_audit25mod4_func1 0\n" "la_symbind: tst_audit25mod2_func2 0\n"): "la_symbind: tst_audit25mod3_func1 1\nla_symbind: tst_audit25mod1_func1 0\nla_symbind: tst_audit25mod1_func2 0\nla_symbind: tst_audit25mod2_func1 0\nla_symbind: tst_audit25mod4_func1 0\nla_symbind: tst_audit25mod2_func2 0\n" 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 33 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 31 20 30 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 32 20 30 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 31 20 30 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 34 5F 66 75 6E 63 31 20 30 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 32 20 30 0A tst-audit25a.c:114: error: string comparison failed left string: 276 bytes right string: 216 bytes left (evaluated from result.err.buffer): "la_symbind: 1\nla_symbind: 1\nla_symbind: 1\nla_symbind: tst_audit25mod4_func1 1\nla_symbind: 1\nla_symbind: tst_audit25mod3_func1 1\nla_symbind: tst_audit25mod1_func1 1\nla_symbind: tst_audit25mod2_func1 1\nla_symbind: tst_audit25mod1_func2 1\nla_symbind: tst_audit25mod2_func2 1\n" 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 34 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 33 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 32 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 32 20 31 0A right (evaluated from "la_symbind: tst_audit25mod4_func1 1\n" "la_symbind: tst_audit25mod3_func1 1\n" "la_symbind: tst_audit25mod1_func1 1\n" "la_symbind: tst_audit25mod2_func1 1\n" "la_symbind: tst_audit25mod1_func2 1\n" "la_symbind: tst_audit25mod2_func2 1\n"): "la_symbind: tst_audit25mod4_func1 1\nla_symbind: tst_audit25mod3_func1 1\nla_symbind: tst_audit25mod1_func1 1\nla_symbind: tst_audit25mod2_func1 1\nla_symbind: tst_audit25mod1_func2 1\nla_symbind: tst_audit25mod2_func2 1\n" 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 34 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 33 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 32 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 32 20 31 0A error: 2 test failures elf/tst-audit25b.out: tst-audit25b.c:92: error: string comparison failed left string: 231 bytes right string: 216 bytes left (evaluated from result.err.buffer): "la_symbind: 1\nla_symbind: tst_audit25mod3_func1 1\nla_symbind: tst_audit25mod1_func1 1\nla_symbind: tst_audit25mod2_func1 1\nla_symbind: tst_audit25mod1_func2 1\nla_symbind: tst_audit25mod2_func2 1\nla_symbind: tst_audit25mod4_func1 0\n" 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 33 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 32 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 32 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 34 5F 66 75 6E 63 31 20 30 0A right (evaluated from "la_symbind: tst_audit25mod3_func1 1\n" "la_symbind: tst_audit25mod1_func1 1\n" "la_symbind: tst_audit25mod2_func1 1\n" "la_symbind: tst_audit25mod1_func2 1\n" "la_symbind: tst_audit25mod2_func2 1\n" "la_symbind: tst_audit25mod4_func1 0\n"): "la_symbind: tst_audit25mod3_func1 1\nla_symbind: tst_audit25mod1_func1 1\nla_symbind: tst_audit25mod2_func1 1\nla_symbind: tst_audit25mod1_func2 1\nla_symbind: tst_audit25mod2_func2 1\nla_symbind: tst_audit25mod4_func1 0\n" 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 33 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 32 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 32 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 34 5F 66 75 6E 63 31 20 30 0A tst-audit25b.c:113: error: string comparison failed left string: 276 bytes right string: 216 bytes left (evaluated from result.err.buffer): "la_symbind: 1\nla_symbind: 1\nla_symbind: 1\nla_symbind: tst_audit25mod4_func1 1\nla_symbind: 1\nla_symbind: tst_audit25mod3_func1 1\nla_symbind: tst_audit25mod1_func1 1\nla_symbind: tst_audit25mod2_func1 1\nla_symbind: tst_audit25mod1_func2 1\nla_symbind: tst_audit25mod2_func2 1\n" 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 34 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 33 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 32 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 32 20 31 0A right (evaluated from "la_symbind: tst_audit25mod4_func1 1\n" "la_symbind: tst_audit25mod3_func1 1\n" "la_symbind: tst_audit25mod1_func1 1\n" "la_symbind: tst_audit25mod2_func1 1\n" "la_symbind: tst_audit25mod1_func2 1\n" "la_symbind: tst_audit25mod2_func2 1\n"): "la_symbind: tst_audit25mod4_func1 1\nla_symbind: tst_audit25mod3_func1 1\nla_symbind: tst_audit25mod1_func1 1\nla_symbind: tst_audit25mod2_func1 1\nla_symbind: tst_audit25mod1_func2 1\nla_symbind: tst_audit25mod2_func2 1\n" 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 34 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 33 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 31 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 31 5F 66 75 6E 63 32 20 31 0A 6C 61 5F 73 79 6D 62 69 6E 64 3A 20 74 73 74 5F 61 75 64 69 74 32 35 6D 6F 64 32 5F 66 75 6E 63 32 20 31 0A error: 2 test failures -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org @ 2022-02-03 20:17 ` adhemerval.zanella at linaro dot org 2022-02-03 20:49 ` dave.anglin at bell dot net ` (8 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: adhemerval.zanella at linaro dot org @ 2022-02-03 20:17 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 Adhemerval Zanella <adhemerval.zanella at linaro dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |adhemerval.zanella at linaro dot o | |rg --- Comment #1 from Adhemerval Zanella <adhemerval.zanella at linaro dot org> --- I will need some help on this one, I think the HPPA function descriptor requires some more setup on either sysdeps/hppa/dl-lookupcfg.h or elf/dl-audit.c that I am not really getting. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org 2022-02-03 20:17 ` [Bug libc/28857] " adhemerval.zanella at linaro dot org @ 2022-02-03 20:49 ` dave.anglin at bell dot net 2022-02-04 18:53 ` adhemerval.zanella at linaro dot org ` (7 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: dave.anglin at bell dot net @ 2022-02-03 20:49 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 --- Comment #2 from dave.anglin at bell dot net --- Is it DL_FIXUP_ADDR_VALUE that's problematic? Maybe it should be defined to _dl_lookup_address()? On 32-bit hppa, a pointer to a function descriptor has the plabel bit set (bit 30). This must be cleared to get the actual address of the descriptor ((unsigned int)addr & ~2). If the descriptor has been bound, the first word of the descriptor is the physical address of the function. If it hasn't been bound, the first word of the descriptor points to a trampoline in the PLT. It will fixup the descriptor on the first call to the function. _dl_lookup_address() in dl-fptr.c resolves the descriptor and returns the actual function address. If that's not required, maybe DL_FIXUP_ADDR_VALUE(addr) should be: #define DL_FIXUP_ADDR_VALUE(addr) (*(struct fdesc *) ((unsigned int)addr & ~2)) DL_FIXUP_BINDNOW_RELOC looks questionable as well. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org 2022-02-03 20:17 ` [Bug libc/28857] " adhemerval.zanella at linaro dot org 2022-02-03 20:49 ` dave.anglin at bell dot net @ 2022-02-04 18:53 ` adhemerval.zanella at linaro dot org 2022-02-05 0:33 ` dave.anglin at bell dot net ` (6 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: adhemerval.zanella at linaro dot org @ 2022-02-04 18:53 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 --- Comment #3 from Adhemerval Zanella <adhemerval.zanella at linaro dot org> --- (In reply to dave.anglin from comment #2) > Is it DL_FIXUP_ADDR_VALUE that's problematic? Maybe it should be defined to > _dl_lookup_address()? I think you mean DL_FIXUP_BINDNOW_ADDR_VALUE, but I don't this is the issue since it is just used for pointer equality to see the symbind does change the binding. > > On 32-bit hppa, a pointer to a function descriptor has the plabel bit set > (bit 30). This must be cleared to > get the actual address of the descriptor ((unsigned int)addr & ~2). If the > descriptor has been bound, > the first word of the descriptor is the physical address of the function. > If it hasn't been bound, the first > word of the descriptor points to a trampoline in the PLT. It will fixup the > descriptor on the first call to > the function. > > _dl_lookup_address() in dl-fptr.c resolves the descriptor and returns the > actual function address. > > If that's not required, maybe DL_FIXUP_ADDR_VALUE(addr) should be: > #define DL_FIXUP_ADDR_VALUE(addr) (*(struct fdesc *) ((unsigned int)addr & > ~2)) > DL_FIXUP_BINDNOW_RELOC looks questionable as well. The _dl_lookup_address seems to be indeed required and I also think we should only updated the binding if la_symbind actually acts uppon it. The following patch fixes the tests on hppa: diff --git a/elf/Makefile b/elf/Makefile index 5bdf0a383d..7372cb191c 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -2210,7 +2210,7 @@ $(objpfx)tst-audit24c.out: $(objpfx)tst-auditmod24c.so $(objpfx)tst-audit24c: $(objpfx)tst-audit24amod1.so \ $(objpfx)tst-audit24amod2.so tst-audit24c-ENV = LD_BIND_NOW=1 LD_AUDIT=$(objpfx)tst-auditmod24c.so -LDFLAGS-tst-audit24b = -Wl,-z,lazy +LDFLAGS-tst-audit24c = -Wl,-z,lazy $(objpfx)tst-audit24d.out: $(objpfx)tst-auditmod24d.so $(objpfx)tst-audit24d: $(objpfx)tst-audit24dmod1.so \ diff --git a/elf/dl-audit.c b/elf/dl-audit.c index 794bfd45cd..efc0492474 100644 --- a/elf/dl-audit.c +++ b/elf/dl-audit.c @@ -257,7 +257,8 @@ _dl_audit_symbind (struct link_map *l, struct reloc_result *reloc_result, reloc_result->flags = flags; } - DL_FIXUP_BINDNOW_RELOC (value, new_value, sym.st_value); + if (flags & LA_SYMB_ALTVALUE) + DL_FIXUP_BINDNOW_RELOC (value, new_value, sym.st_value); } void diff --git a/elf/tst-auditmod24a.c b/elf/tst-auditmod24a.c index d8e88f3984..3075dfae2f 100644 --- a/elf/tst-auditmod24a.c +++ b/elf/tst-auditmod24a.c @@ -110,5 +110,7 @@ la_symbind32 (Elf32_Sym *sym, unsigned int ndx, return sym->st_value; } - abort (); + if (symname[0] != '\0') + abort (); + return sym->st_value; } diff --git a/elf/tst-auditmod24d.c b/elf/tst-auditmod24d.c index 8c803ecc0a..badc6be451 100644 --- a/elf/tst-auditmod24d.c +++ b/elf/tst-auditmod24d.c @@ -116,5 +116,7 @@ la_symbind32 (Elf32_Sym *sym, unsigned int ndx, } } - abort (); + if (symname[0] != '\0') + abort (); + return sym->st_value; } diff --git a/elf/tst-auditmod25.c b/elf/tst-auditmod25.c index 526f5c54bc..20640a8daf 100644 --- a/elf/tst-auditmod25.c +++ b/elf/tst-auditmod25.c @@ -72,7 +72,7 @@ la_symbind32 (Elf32_Sym *sym, unsigned int ndx, unsigned int *flags, const char *symname) #endif { - if (*refcook != -1 && *defcook != -1) + if (*refcook != -1 && *defcook != -1 && symname[0] != '\0') fprintf (stderr, "la_symbind: %s %u\n", symname, *flags & (LA_SYMB_NOPLTENTER | LA_SYMB_NOPLTEXIT) ? 1 : 0); return sym->st_value; diff --git a/sysdeps/hppa/dl-fptr.c b/sysdeps/hppa/dl-fptr.c index 2584557c4f..4cc2cb21b1 100644 --- a/sysdeps/hppa/dl-fptr.c +++ b/sysdeps/hppa/dl-fptr.c @@ -407,3 +407,4 @@ _dl_lookup_address (const void *address) return (ElfW(Addr)) desc[0]; } +rtld_hidden_def (_dl_lookup_address) diff --git a/sysdeps/hppa/dl-lookupcfg.h b/sysdeps/hppa/dl-lookupcfg.h index 8da2412fea..3929fc84ae 100644 --- a/sysdeps/hppa/dl-lookupcfg.h +++ b/sysdeps/hppa/dl-lookupcfg.h @@ -30,6 +30,7 @@ rtld_hidden_proto (_dl_symbol_address) #define DL_SYMBOL_ADDRESS(map, ref) _dl_symbol_address(map, ref) Elf32_Addr _dl_lookup_address (const void *address); +rtld_hidden_proto (_dl_lookup_address) #define DL_LOOKUP_ADDRESS(addr) _dl_lookup_address ((const void *) addr) @@ -81,5 +82,8 @@ void attribute_hidden _dl_unmap (struct link_map *map); #define DL_FIXUP_VALUE_ADDR(value) ((uintptr_t) &(value)) #define DL_FIXUP_ADDR_VALUE(addr) (*(struct fdesc *) (addr)) #define DL_FIXUP_BINDNOW_ADDR_VALUE(addr) (addr) -#define DL_FIXUP_BINDNOW_RELOC(value, new_value, st_value) \ - (*value) = *(struct fdesc *) (st_value) +#define DL_FIXUP_BINDNOW_RELOC(value, new_value, st_value) \ + ({ \ + value->ip = _dl_lookup_address ((void *) new_value); \ + value->gp = ((struct fdesc *) (new_value))->gp; \ + }) I had to add a workaround on tests because on hppa (and it seems to be the only ABI I have see it), some shared library adds a dynamic PLT relocation that I am not sure why it is required: $ readelf -r elf/tst-audit25mod1.so [...] Relocation section '.rela.plt' at offset 0x464 contains 6 entries: Offset Info Type Sym.Value Sym. Name + Addend 00002008 00000081 R_PARISC_IPLT 508 It breaks some assumptions on the test, where a symbol with an empty name ("") is passed on la_symbind. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org ` (2 preceding siblings ...) 2022-02-04 18:53 ` adhemerval.zanella at linaro dot org @ 2022-02-05 0:33 ` dave.anglin at bell dot net 2022-02-05 23:29 ` dave.anglin at bell dot net ` (5 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: dave.anglin at bell dot net @ 2022-02-05 0:33 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 --- Comment #4 from dave.anglin at bell dot net --- On 2022-02-04 1:53 p.m., adhemerval.zanella at linaro dot org wrote: > I had to add a workaround on tests because on hppa (and it seems to be the only > ABI I have see it), some shared library adds a dynamic PLT relocation that I am > not sure why it is required: > > $ readelf -r elf/tst-audit25mod1.so > [...] > Relocation section '.rela.plt' at offset 0x464 contains 6 entries: > Offset Info Type Sym.Value Sym. Name + Addend > 00002008 00000081 R_PARISC_IPLT 508 > > It breaks some assumptions on the test, where a symbol with an empty name ("") > is passed on la_symbind. I think we need to look at the assembler output causing this. It would seem we have a P' relocation without a symbol name. Thanks for the patch. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org ` (3 preceding siblings ...) 2022-02-05 0:33 ` dave.anglin at bell dot net @ 2022-02-05 23:29 ` dave.anglin at bell dot net 2022-02-07 12:11 ` adhemerval.zanella at linaro dot org ` (4 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: dave.anglin at bell dot net @ 2022-02-05 23:29 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 --- Comment #5 from dave.anglin at bell dot net --- On 2022-02-04 1:53 p.m., adhemerval.zanella at linaro dot org wrote: > The _dl_lookup_address seems to be indeed required and I also think we should > only updated the binding if la_symbind actually acts uppon it. The following > patch fixes the tests on hppa: Attached is an updated patch. The change to DL_FIXUP_BINDNOW_RELOC was not correct. As far as I can tell, it is not necessary to call _dl_lookup_address. But we do need to clear the plabel bit from new_value or st_value. I think the same issue could also potentially occur with DL_FIXUP_ADDR_VALUE. I also hacked things a bit to fix warning from dl-fptr.c. I'm still not sure where the nameless R_PARISC_IPLT relocation comes from. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org ` (4 preceding siblings ...) 2022-02-05 23:29 ` dave.anglin at bell dot net @ 2022-02-07 12:11 ` adhemerval.zanella at linaro dot org 2022-02-07 12:50 ` adhemerval.zanella at linaro dot org ` (3 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: adhemerval.zanella at linaro dot org @ 2022-02-07 12:11 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 --- Comment #6 from Adhemerval Zanella <adhemerval.zanella at linaro dot org> --- (In reply to dave.anglin from comment #5) > Created attachment 13960 [details] > libc_28857-v2.d > > On 2022-02-04 1:53 p.m., adhemerval.zanella at linaro dot org wrote: > > The _dl_lookup_address seems to be indeed required and I also think we should > > only updated the binding if la_symbind actually acts uppon it. The following > > patch fixes the tests on hppa: > Attached is an updated patch. The change to DL_FIXUP_BINDNOW_RELOC was not > correct. > As far as I can tell, it is not necessary to call _dl_lookup_address. But > we do need to clear the > plabel bit from new_value or st_value. I think the same issue could also > potentially occur with > DL_FIXUP_ADDR_VALUE. > > I also hacked things a bit to fix warning from dl-fptr.c. > > I'm still not sure where the nameless R_PARISC_IPLT relocation comes from. I will update the patch by just masking off the plabel bit as you suggested. I am not sure about DL_FIXUP_ADDR_VALUE change since it is unrelated to this issue, but it does seem reasonable. The dl-fptr.c warning fixes I would prefer to send in a different path. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org ` (5 preceding siblings ...) 2022-02-07 12:11 ` adhemerval.zanella at linaro dot org @ 2022-02-07 12:50 ` adhemerval.zanella at linaro dot org 2022-02-07 15:16 ` dave.anglin at bell dot net ` (2 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: adhemerval.zanella at linaro dot org @ 2022-02-07 12:50 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 --- Comment #7 from Adhemerval Zanella <adhemerval.zanella at linaro dot org> --- I have sent an updated version https://sourceware.org/pipermail/libc-alpha/2022-February/136230.html -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org ` (6 preceding siblings ...) 2022-02-07 12:50 ` adhemerval.zanella at linaro dot org @ 2022-02-07 15:16 ` dave.anglin at bell dot net 2022-02-09 12:13 ` adhemerval.zanella at linaro dot org 2023-01-17 18:57 ` sam at gentoo dot org 9 siblings, 0 replies; 11+ messages in thread From: dave.anglin at bell dot net @ 2022-02-07 15:16 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 --- Comment #8 from dave.anglin at bell dot net --- On 2022-02-07 7:11 a.m., adhemerval.zanella at linaro dot org wrote: > The dl-fptr.c warning fixes I would prefer to send in a different path. That's okay. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org ` (7 preceding siblings ...) 2022-02-07 15:16 ` dave.anglin at bell dot net @ 2022-02-09 12:13 ` adhemerval.zanella at linaro dot org 2023-01-17 18:57 ` sam at gentoo dot org 9 siblings, 0 replies; 11+ messages in thread From: adhemerval.zanella at linaro dot org @ 2022-02-09 12:13 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 Adhemerval Zanella <adhemerval.zanella at linaro dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Target Milestone|--- |2.36 Status|NEW |RESOLVED --- Comment #9 from Adhemerval Zanella <adhemerval.zanella at linaro dot org> --- Fixed on 2.36. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug libc/28857] FAIL: elf/tst-audit24a 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org ` (8 preceding siblings ...) 2022-02-09 12:13 ` adhemerval.zanella at linaro dot org @ 2023-01-17 18:57 ` sam at gentoo dot org 9 siblings, 0 replies; 11+ messages in thread From: sam at gentoo dot org @ 2023-01-17 18:57 UTC (permalink / raw) To: glibc-bugs https://sourceware.org/bugzilla/show_bug.cgi?id=28857 Sam James <sam at gentoo dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |sam at gentoo dot org -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-01-17 18:57 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-02-03 14:25 [Bug libc/28857] New: FAIL: elf/tst-audit24a danglin at gcc dot gnu.org 2022-02-03 20:17 ` [Bug libc/28857] " adhemerval.zanella at linaro dot org 2022-02-03 20:49 ` dave.anglin at bell dot net 2022-02-04 18:53 ` adhemerval.zanella at linaro dot org 2022-02-05 0:33 ` dave.anglin at bell dot net 2022-02-05 23:29 ` dave.anglin at bell dot net 2022-02-07 12:11 ` adhemerval.zanella at linaro dot org 2022-02-07 12:50 ` adhemerval.zanella at linaro dot org 2022-02-07 15:16 ` dave.anglin at bell dot net 2022-02-09 12:13 ` adhemerval.zanella at linaro dot org 2023-01-17 18:57 ` sam at gentoo dot org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).